Changeset 469


Ignore:
Timestamp:
May 23, 2025, 8:38:24 PM (7 months ago)
Author:
roby
Message:
  • ADMIN

-- modifica al file di modifica della configurazione
-- modifica al file di gestione dei raggruppamenti e referendum

  • CLIENT

-- inserita la visualizzazione delle mappe memorizzate nel db per il tema bootstrap

Location:
trunk
Files:
8 added
23 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/modules/Elezioni/ele_configurazione.php

    r468 r469  
    4444if (isset($param['siteistat'])) $siteistat=addslashes($param['siteistat']); else $siteistat='';
    4545if (isset($param['language2'])) $language2=addslashes($param['language2']); else $language2='';
    46 if (isset($param['flash2'])) $flash2=addslashes($param['flash2']); else $flash2='';
     46if (isset($param['flash2'])) $flash2=addslashes($param['flash2']); else $flash2='0';
    4747if (isset($param['displayerrors'])) $displayerrors=intval($param['displayerrors']); else $displayerrors='0';
    4848
     
    148148##########
    149149        echo "<td><b>"._LANGUAGE."</b></td><td><input type=\"text\" name=\"language2\" value=\"".$gru['language']."\"></td></tr>";
    150         $sel= ($gru['googlemaps']==1) ? "selected":"";
    151         echo "<tr><td><b>"._GOOGLEMAPS."</b></td><td><select name=\"googlemaps\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
     150        // modifica alex
     151        //rinominare googlemaps in maps_provider per maggiore chiarezza
     152        // Se $gru['googlemaps'] non Ú impostato o Ú vuoto, usa 'openstreetmap' come default
     153        $maps_provider = !empty($gru['googlemaps']) ? $gru['googlemaps'] : 'openstreetmap';
     154$google_api_key = !empty($gru['google_api_key']) ? htmlspecialchars($gru['google_api_key']) : '';
     155
     156$maps_provider = !empty($gru['googlemaps']) ? $gru['googlemaps'] : 'openstreetmap';
     157$google_api_key = !empty($gru['google_api_key']) ? htmlspecialchars($gru['google_api_key']) : '';
     158
     159echo "<tr><td><b>Provider Mappa</b></td><td>
     160      <select name=\"googlemaps\" id=\"maps_provider\" onchange=\"toggleApiKeyField()\">
     161        <option value=\"openstreetmap\" " . ($maps_provider === 'openstreetmap' ? 'selected' : '') . ">OpenStreetMap</option>
     162        <option value=\"google\" " . ($maps_provider === 'google' ? 'selected' : '') . ">Google Maps</option>
     163      </select>
     164    <span style=\"
     165    display:inline-block;
     166    margin-left:8px;
     167    color:#007bff;
     168    font-weight:bold;
     169    cursor: help;
     170    font-size: 18px;
     171    \"
     172    title=\"Seleziona il provider delle mappe da utilizzare esclusivamente nell'interfaccia di amministrazione della sede elettorale.&#10;OpenStreetMap Ú gratuito e non richiede chiavi API.&#10;Google Maps offre funzionalità avanzate, ma può richiedere una chiave API e comportare costi in base all'utilizzo.\"
     173>&#x2753;</span>
     174
     175    </td></tr>";
     176
     177echo "<tr id=\"apikey_row\" style=\"" . ($maps_provider === 'google' ? '' : 'display:none;') . "\">
     178        <td><b>Google Maps API Key</b></td>
     179        <td>
     180            <input type=\"text\" name=\"google_api_key\" value=\"$google_api_key\" style=\"width:100%;\">
     181            <span style=\"
     182                display:inline-block;
     183                margin-left:8px;
     184                color:#007bff;
     185                font-weight:bold;
     186                font-size: 18px;
     187                cursor: help;
     188                \"
     189                title=\"Inserisci qui la tua Google Maps API Key. Puoi ottenerla dalla Google Cloud Console. Assicurati di abilitare le API Maps e configurare correttamente le restrizioni per la sicurezza.\"
     190            >&#x2753;</span>
     191            <a href=\"https://console.cloud.google.com/apis/credentials\" target=\"_blank\" style=\"
     192                margin-left:6px;
     193                font-size: 13px;
     194                color: #007bff;
     195                text-decoration: none;
     196            \">[Vai alla Google Cloud Console]</a>
     197        </td>
     198    </tr>";
     199
     200echo "<script>
     201function toggleApiKeyField() {
     202    const provider = document.getElementById('maps_provider').value;
     203    const row = document.getElementById('apikey_row');
     204    row.style.display = (provider === 'google') ? '' : 'none';
     205}
     206document.addEventListener('DOMContentLoaded', toggleApiKeyField);
     207</script>";
     208
     209
     210
     211
     212
     213        // $sel= ($gru['googlemaps']==1) ? "selected":"";
     214        // echo "<tr><td><b>"._GOOGLEMAPS."</b></td><td><select name=\"googlemaps\"><option value=\"0\">No<option value=\"1\" $sel>Si</select></td>";
    152215        /* tolta la chiave
    153216        echo "<td><b>"._GKEY."</b></td><td><input type=\"text\" name=\"gkey\" value=\"".$gru['gkey']."\"></td></tr>";
  • trunk/admin/modules/Elezioni/ele_gruppo.php

    r468 r469  
    4848if (isset($param['cg'])) $cg=addslashes($param['cg']); else $cg='';
    4949if (isset($param['colore_id'])) $colore_id=intval($param['colore_id']); else $colore_id=0;
    50 echo "TEST: $colore_id";
    5150/******************************************************/
    5251/*Funzione di visualizzazione globale                 */
     
    7776        echo "<center><font class=\"title\"><b>"._GRUPPO."</b></font><br>";
    7877       
    79         echo "<table border=\"0\" width=\"100%\"><tr bgcolor=\"$bgcolor1\"><td colspan=\"5\">";
     78        echo "<table border=\"0\" width=\"100%\"><tr bgcolor=\"$bgcolor1\"><td colspan=\"7\">";
    8079        echo "<form name=\"gruppo2\" enctype=\"multipart/form-data\" action=\"admin.php\" method=\"post\">"
    8180        ."<input type=\"hidden\" name=\"op\" value=\"gruppo\">";
     
    8887}
    8988
    90 echo "<td align=\"center\" width=\"5%\"><b>" . _SIMBOLO . "</b></td>";
    91 
     89        echo "<td align=\"center\" width=\"5%\"><b>" . _SIMBOLO . "</b>";
    9290        if ($do=='modify')
    9391                echo "<br><input type=\"checkbox\" name=\"delsimb\" value=\"false\"> "._DELETE;
     
    277275                //fine
    278276                echo "<td align=\"center\"><b>
    279                 <img  src=\"admin.php?op=foto&amp;id_gruppo=$id_gruppo\" width=\"50%\" alt=\"foto\"></b></td>";
     277                <img  src=\"admin.php?op=foto&amp;id_gruppo=$id_gruppo\" width=\"50px\" alt=\"foto\"></b></td>";
    280278                if ($tipo_cons!=2)
    281279                        echo "<td width=\"100\">$prognome</td>";
  • trunk/admin/modules/Elezioni/mappa_popup.php

    r468 r469  
     1<?php
     2$maps_provider = 'openstreetmap'; // utillizzare 'openstreetmap' oppure 'google'
     3
     4if ($maps_provider === 'google') {
     5    $google_maps_api_key = "LA_TUA_API_KEY_DAL_DB_O_CONFIG";
     6} else {
     7    $google_maps_api_key = null;
     8}
     9if ($maps_provider !== 'google' || empty($google_maps_api_key)) {
     10    $maps_provider = 'openstreetmap';
     11}
     12?>
    113<style>
    214  #mapPopup {
     
    2234</style>
    2335
    24 <!-- Leaflet CSS & JS -->
    2536<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
    2637<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
     38
     39<?php if ($maps_provider === 'google' && $google_maps_api_key): ?>
     40<script src="https://maps.googleapis.com/maps/api/js?key=<?php echo htmlspecialchars($google_maps_api_key); ?>&callback=initMap" async defer></script>
     41<?php endif; ?>
    2742
    2843<div id="mapPopup">
     
    3752
    3853<script>
     54  const maps_provider = <?= json_encode($maps_provider) ?>;
    3955  const mapPopup = document.getElementById('mapPopup');
    4056  const closeMapBtn = document.getElementById('closeMap');
     
    4258  const mapDiv = document.getElementById('map');
    4359
    44   let map, marker, popupMarker;
     60  let map, marker, popupMarker, gmap, gmarker, ginfoWindow;
    4561  let currentInputs = null;
    46   let currentLatLng = null; // salvo lat/lng correnti del marker senza aggiornare input
     62  let currentLatLng = null;
    4763
    4864  document.querySelectorAll('.btnApriMappa').forEach(button => {
     
    5571
    5672      const comune = comuneInput ? comuneInput.value.trim() : "";
    57 
    58       if (!indir) {
    59         alert('Input indirizzo non trovato.');
    60         return;
    61       }
    62 
     73      if (!indir) return alert('Input indirizzo non trovato.');
    6374      const query = indir.value.trim();
    64       if (!query) {
    65         alert("Inserisci un indirizzo o nome da cercare.");
    66         return;
    67       }
     75      if (!query) return alert("Inserisci un indirizzo o nome da cercare.");
    6876
    6977      const fullQuery = comune ? `${query}, ${comune}` : query;
    70 
    7178      currentInputs = { indir, lat, lng };
    7279
     
    7481        .then(res => res.json())
    7582        .then(results => {
    76           if (results.length === 0) {
    77             alert('Nessun risultato trovato per "' + fullQuery + '". Puoi modificare manualmente.');
    78             return;
    79           }
     83          if (results.length === 0) return alert('Nessun risultato trovato per "' + fullQuery + '".');
    8084          apriMappa(results[0]);
    81         });
     85        }).catch(() => alert('Errore durante la ricerca dell\'indirizzo.'));
    8286    });
    8387  });
     
    8690    const lat = parseFloat(result.lat);
    8791    const lon = parseFloat(result.lon);
    88 
     92    currentLatLng = { lat, lon };
    8993    mapPopup.style.display = 'block';
    9094
    91     if (!map) {
    92       map = L.map('map').setView([lat, lon], 16);
    93       L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    94         attribution: '&copy; OpenStreetMap contributors'
    95       }).addTo(map);
    96     } else {
    97       map.setView([lat, lon], 16);
     95    if (maps_provider === 'google') {
     96      if (!gmap) {
     97        gmap = new google.maps.Map(mapDiv, {
     98          center: { lat, lng: lon },
     99          zoom: 16
     100        });
     101        gmarker = new google.maps.Marker({
     102          position: { lat, lng: lon },
     103          map: gmap,
     104          draggable: true
     105        });
     106        ginfoWindow = new google.maps.InfoWindow();
     107
     108        gmarker.addListener('drag', () => {
     109          const pos = gmarker.getPosition();
     110          currentLatLng = { lat: pos.lat(), lon: pos.lng() };
     111        });
     112
     113        gmarker.addListener('dragend', () => {
     114          const pos = gmarker.getPosition();
     115          currentLatLng = { lat: pos.lat(), lon: pos.lng() };
     116          aggiornaIndirizzo(pos.lat(), pos.lng()).then(info => {
     117            ginfoWindow.setContent(`<strong>${info.address}</strong><br>Lat: ${info.lat.toFixed(6)}, Lon: ${info.lon.toFixed(6)}`);
     118            ginfoWindow.open(gmap, gmarker);
     119          });
     120        });
     121      } else {
     122        gmap.setCenter({ lat, lng: lon });
     123        gmarker.setPosition({ lat, lng: lon });
     124      }
     125
     126      aggiornaIndirizzo(lat, lon).then(info => {
     127        ginfoWindow.setContent(`<strong>${info.address}</strong><br>Lat: ${info.lat.toFixed(6)}, Lon: ${info.lon.toFixed(6)}`);
     128        ginfoWindow.open(gmap, gmarker);
     129      });
     130
     131    } else { // openstreetmap (Leaflet)
     132      if (!map) {
     133        map = L.map('map').setView([lat, lon], 16);
     134        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
     135          attribution: '&copy; OpenStreetMap contributors'
     136        }).addTo(map);
     137      } else {
     138        map.setView([lat, lon], 16);
     139      }
     140
     141      if (marker) {
     142        marker.setLatLng([lat, lon]);
     143      } else {
     144        marker = L.marker([lat, lon], { draggable: true }).addTo(map);
     145        marker.on('drag', e => {
     146          const pos = e.target.getLatLng();
     147          currentLatLng = { lat: pos.lat, lon: pos.lng };
     148        });
     149        marker.on('dragend', e => {
     150          const pos = e.target.getLatLng();
     151          currentLatLng = { lat: pos.lat, lon: pos.lng };
     152          aggiornaIndirizzo(pos.lat, pos.lng).then(info => {
     153            mostraPopup(info.address, info.lat, info.lon);
     154          });
     155        });
     156      }
     157
     158      if (!popupMarker) {
     159        popupMarker = L.popup({ closeButton: false, offset: [0, -30] });
     160      }
     161
     162      aggiornaIndirizzo(lat, lon).then(info => {
     163        mostraPopup(info.address, info.lat, info.lon);
     164      });
    98165    }
    99 
    100     if (marker) {
    101       marker.setLatLng([lat, lon]);
    102     } else {
    103       marker = L.marker([lat, lon], { draggable: true }).addTo(map);
    104       marker.on('dragend', onMarkerDragEnd);
    105       marker.on('drag', onMarkerDrag);
    106     }
    107 
    108     if (!popupMarker) {
    109       popupMarker = L.popup({ closeButton: false, offset: [0, -30] });
    110     }
    111 
    112     currentLatLng = { lat, lon };  // aggiorno solo questa variabile
    113 
    114     aggiornaIndirizzo(lat, lon).then(info => {
    115       mostraPopup(info.address, info.lat, info.lon);
    116     });
    117   }
    118 
    119   function onMarkerDrag(e) {
    120     const pos = e.target.getLatLng();
    121     currentLatLng = { lat: pos.lat, lon: pos.lng }; // aggiorno solo variabile, non input
    122   }
    123 
    124   function onMarkerDragEnd(e) {
    125     const pos = e.target.getLatLng();
    126     currentLatLng = { lat: pos.lat, lon: pos.lng }; // aggiorno solo variabile
    127 
    128     aggiornaIndirizzo(pos.lat, pos.lng).then(info => {
    129       mostraPopup(info.address, info.lat, info.lon);
    130     });
    131166  }
    132167
     
    135170      ? `<strong>${address}</strong><br>Lat: ${lat.toFixed(6)}, Lon: ${lon.toFixed(6)}`
    136171      : `Lat: ${lat.toFixed(6)}, Lon: ${lon.toFixed(6)}`;
    137     popupMarker
    138       .setLatLng([lat, lon])
    139       .setContent(content)
    140       .openOn(map);
     172    if (maps_provider === 'openstreetmap') {
     173      popupMarker.setLatLng([lat, lon]).setContent(content).openOn(map);
     174    }
    141175  }
    142176
    143177  function aggiornaIndirizzo(lat, lon) {
    144     if (!currentInputs) return Promise.resolve({ address: null, lat, lon });
    145 
    146178    return fetch(`https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${lon}`)
    147179      .then(res => res.json())
     
    151183        const num = data.address?.house_number || "";
    152184        const indirizzoCompleto = [nome, via, num].filter(Boolean).join(" - ");
    153 
    154         // qui non aggiorno più l'indirizzo input automaticamente per evitare modifiche in corso
    155         // l'utente deve confermare premendo "Usa questa posizione"
    156        
    157185        return { address: indirizzoCompleto, lat, lon };
    158       })
    159       .catch(() => ({ address: null, lat, lon }));
     186      }).catch(() => ({ address: null, lat, lon }));
    160187  }
    161188
    162189  closeMapBtn.addEventListener('click', () => {
    163190    if (currentInputs && currentLatLng) {
    164       // aggiorno solo al click su "Usa questa posizione"
    165191      currentInputs.lat.value = currentLatLng.lat.toFixed(6);
    166192      currentInputs.lng.value = currentLatLng.lon.toFixed(6);
    167 
    168       // opzionale: aggiorno anche l'indirizzo input con il valore popup corrente
    169193      aggiornaIndirizzo(currentLatLng.lat, currentLatLng.lon).then(info => {
    170194        if (currentInputs.indir && info.address) {
    171   const cleanedAddress = info.address.replace(/"/g, '').trim();
    172   currentInputs.indir.value = cleanedAddress;
    173 }
    174 
     195          const cleanedAddress = info.address.replace(/"/g, '').trim();
     196          currentInputs.indir.value = cleanedAddress;
     197        }
    175198      });
    176199    }
  • trunk/admin/versione.php

    r468 r469  
    11<?php
    22
    3 $versione = "3.0 rev 468";
     3$versione = "3.0 rev 469";
    44$version_number = $versione;
    5 $datarel = "19 maggio 2025";
     5$datarel = "23 maggio 2025";
    66$version = "Eleonline $version_number (<i>Data Release: $datarel</i>)";
    77
  • trunk/client/modules/Elezioni/consiglieri.php

    r468 r469  
    692692        $fmin=2;
    693693   ob_start();
    694         echo "<table class=\"table-docs\" style=\"border-spacing: 0; padding: 2px; border: 1px solid;\">";
    695         echo "<caption style=\"caption-side: top;\"><br>Tabella dei consiglieri di maggioranza</caption>";
     694        echo "<table width=\"100%\" summary=\"Tabella dei consiglieri di maggioranza\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
     695#       echo "<caption style=\"caption-side: top;\"><br>Tabella dei consiglieri di maggioranza</caption>";
    696696                $y=1;$i='';$e=0;
    697697                foreach ($ar as $riga) {
     
    701701                                $fmin=1;               
    702702                                echo "</table>";
    703                                 echo "<table class=\"table-docs\" style=\"padding: 2px; border-spacing: 0; border: 1px solid;\">";
    704                                 echo "<caption style=\"caption-side: top;page-break-before: always;\"><br>Tabella dei candidati alla carica di sindaco eletti consigliere</caption>";
     703#   echo "</div><div class=\"row\">";
     704                                echo "<table summary=\"Tabella dei candidati a sindaco eletti consigliere\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
     705#                               echo "<caption style=\"caption-side: top;page-break-before: always;\"><br>Tabella dei candidati alla carica di sindaco eletti consigliere</caption>";
    705706                                echo "<tr class=\"bggray\"><td colspan=\"2\"><b>";
    706707                                echo $csin;
     
    711712                        {       $fmin=0;               
    712713                                echo "</table>";
    713                                 echo "<table class=\"table-docs\" style=\"padding: 2px; border-spacing: 0; border: 1px solid;\">";
    714         echo "<caption style=\"caption-side: top;\"><br>Tabella dei consiglieri di minoranza</caption>";
     714#   echo "</div><div class=\"row\">";
     715                                echo "<table summary=\"Tabella dei consiglieri di minoranza\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
     716#       echo "<caption style=\"caption-side: top;\"><br>Tabella dei consiglieri di minoranza</caption>";
    715717#                               echo "<tr class=\"bggray\"><td colspan=\"6\"><b>";
    716718#                               echo $cmin;
     
    745747                }
    746748                echo "</table>";
     749#   echo "</div>";
    747750#       $stampa=ob_get_contents();
    748751        $tmpstampa=ob_get_clean();
  • trunk/client/modules/Elezioni/crea_paginaphp7.php

    r460 r469  
    3333        if ($xls==1) {
    3434                $nomefile=strip_tags(str_replace(array('"', "'", ' ', ','), "_", $datipdf).".xls");
    35                 if(!$nomefile) $nomefile="$descr_cons.xls";
    3635                header ("Content-Type: application/vnd.ms-excel");
    3736                header ("Content-Disposition: inline; filename=$nomefile");
     
    218217                        $nomefile=str_replace(" ", "_",$nomefile);
    219218                        // conversion HTML => PDF
     219                #       die("TEST: $style");
    220220                        $html2pdf = new Html2Pdf($orienta,$formato, 'it');
    221221                        $html2pdf->WriteHTML($style, isset($_GET['vuehtml']));
  • trunk/client/modules/Elezioni/gruppo.php

    r431 r469  
    374374                        }
    375375                        echo "</select>";
    376                         echo "&nbsp;&nbsp;"._A.":&nbsp; <select name=\"offset\" class=\"modulo\">";
     376                        echo "&nbsp;&nbsp;"._A.":&nbsp; <select name=\"offset\" class=\"modulo\"></p>";
    377377                        $res_cand = $dbi->prepare("$sqlc");
    378378                        $res_cand->execute();
     
    390390                        if(!$circo){
    391391                                echo "<p>"._SCEGLI." $tipo1 n. <input  name=\"minsez\" value=\"$minsez\" size=\"4\" ></input>";
    392                                 echo _A." n. <input  name=\"offsetsez\" value=\"$offsetsez\" size=\"4\" ></input> (max. $numsezmax)";
     392                                echo _A." n. <input  name=\"offsetsez\" value=\"$offsetsez\" size=\"4\" ></input> (max. $numsezmax)</p>";
    393393                        }
    394394                        # pagine
     
    427427                                echo "></input><br/>";
    428428                        }                       
    429                         echo "<p>";
     429                        echo "</p><p>";
    430430                        if (!strstr( $op,'candidato')) {
    431431                                echo ""._VIS_PERC.": <input type=\"checkbox\" name=\"perc\" value=\"true\"";
     
    433433                                echo "></input><br/>";
    434434                        }
    435                         echo "";
     435                        echo "</p>";
    436436                        if($circo)
    437437                                echo "<input type=\"hidden\" name=\"id_circ\" value=\"$id_circ\"></input>";     
     
    537537                        $nomefile.="$descr_cons $tab15";
    538538                        $_SESSION['nomefile']=strip_tags(str_replace(" ", "_", $nomefile));
    539                         $datipdf="<b>"._COMUNE." $descr_comune</b> - "._RISULTATI.": $descr_cons<br/><b>$pagina</b><br/><br/>$list1 $list2 $list3";
     539                        $datipdf="<table style=\"text-align:center;margin-right:0px;border-top : 1px solid Blue;width: 800px;\"><tr style=\" background:#eceff5;\"><td>";
     540                        $datipdf.="<b><h2>"._COMUNE." $descr_comune</h2></b></td></tr><tr><td>"._RISULTATI.": $descr_cons</td></tr><tr><td><b>$pagina</b></td></tr><tr><td>$list1 $list2 $list3</td></tr></table>";
     541                                $datipdf="<b>"._COMUNE." $descr_comune</b> - "._RISULTATI.": $descr_cons<br/><b>$pagina</b><br/><br/> ";
     542                                $datipdf .="<br/><b>$list1 $list2 $list3</b>";
     543                    $datipdf=str_replace('"',"'",$datipdf);
     544
    540545                        $_SESSION['datipdf']= $datipdf;
    541546                        if (!$csv){
  • trunk/client/temi/bootstrap/pagine/datigeneralisezioni.php

    r468 r469  
    9999                                        <td><?php echo $row2[0][5];?></td>
    100100                                        <td>
    101                                                 <?php if(strlen($row2[0]['latitudine'])>0 and strlen($row2[0]['longitudine'])>0) $indirizzo='@'.$row2[0]['latitudine'].",".$row2[0]['longitudine'].'z';
     101                                                <?php if(strlen($row2[0]['latitudine'])>0 and strlen($row2[0]['longitudine'])>0) $indirizzo=$row2[0]['latitudine'].",".$row2[0]['longitudine'];
    102102                                                else
    103                                                 $indirizzo=strtr($row2[0][3]," ","+")."+".strtr($sitename," ","+");?>
    104                                                 <a href="https://maps.google.com/maps/search/<?php echo $indirizzo;?>" target="_blank"><span>MAPPA</span></a>
     103                                                $indirizzo=$row2[0][3]." ".$sitename;?>
     104                                                <a href="https://maps.google.com/maps/search/<?php echo urlencode($indirizzo);?>" target="_blank"><span>MAPPA</span></a>
    105105                                        </td>
    106106                                </tr>
     
    133133<div class="d-flex justify-content-center">
    134134        <div class="table-responsive  overflow-x">
     135        <?php if(strlen($row2[0]['filemappa'])>0) { ?>
     136        <img src="modules.php?name=Elezioni&amp;file=foto&amp;id_sede=<?php echo $id_sede;?>" alt=\"mappa\" >
     137        <?php } ?>
    135138                <table class="table table-striped table-bordered table-sm align-middle">
    136139                        <thead class="table-light mx-auto">
  • trunk/client/versione.php

    r468 r469  
    11<?php
    2 $versione = "3.0 rev 468";
     2$versione = "3.0 rev 469";
    33$version_number = $versione;
    4 $datarel = "19 maggio 2025";
     4$datarel = "23 maggio 2025";
    55$version = "Eleonline $version_number (<i>Data Release: $datarel</i>)";
    66
Note: See TracChangeset for help on using the changeset viewer.