diff --git a/web/admin/dafa.txt b/web/admin/dafa.txt index 79a0229..c6af2df 100644 --- a/web/admin/dafa.txt +++ b/web/admin/dafa.txt @@ -5,9 +5,10 @@ - index.php: lunghezza automatica di username - crawler.php: ricorsivizzarlo? +- crawler.php: deve controllare se nella tabella Instances OurAdmID è definito; se è definito deve aggiornare l'account "guest" corrispettivo in Admins con la mail e il nome utente attuali - instances.php: tradurre tutto in inglese -- instances.php: icona della lente in qualche modo diversa se è attivo un filtro/ordinamento -* instances.php: i criteri di ricerca e ordinamento "volanti" vanno salvati sempre in un preset "di battaglia" (uno per ogni admin) in modo che, per esempio, al ritorno da edinst*.php si possa vedere ciò che si vedeva prima (forse la cosa più agevole è fare due tabelle ad-hoc uguali a PresFiltConds e PresOrdConds dove invece di PresID si ha AdminID) +* instances.php: icona della lente in qualche modo diversa se è attivo un filtro/ordinamento +* instances.php: i criteri di ricerca e ordinamento "volanti" vanno salvati sempre in un preset "di battaglia" (uno per ogni admin) in modo da poter slegare il cambio pagina dal submittare i filtri/ordinamenti e in modo che, per esempio, al ritorno da edinst*.php si possa vedere ciò che si vedeva prima (forse la cosa più agevole è fare due tabelle ad-hoc uguali a PresFiltConds e PresOrdConds dove invece di PresID si ha AdminID) * instances.php, edinst*.php: implementare la faccenda della lingua del browser: se è tra quelle supportate (o una variante delle stesse) impostare la ricerca e la visualizzazione dei campi multilingua nella lingua supportata; altrimenti in inglese - tutto: possibilità di *scegliere* la lingua da usare tra quelle supportate - instances.php: rendere funzione il codice che crea una tabella-istanza; usare la funzione in edinst.php (?) e in edinstres.php diff --git a/web/admin/edinst.php b/web/admin/edinst.php index 3352f17..ff42dda 100644 --- a/web/admin/edinst.php +++ b/web/admin/edinst.php @@ -3,15 +3,19 @@ require('include/glob.php'); require('include/muoribene.php'); require('include/sessionstart.php'); - -require('include/menu.php'); -$menu['istanze']['href']=null; -$menu['istanze']['selected']=true; -$menu['istanze']['submenu']['modifica']['href']=null; -$menu['istanze']['submenu']['modifica']['selected']=true; -buildmenu($menu); - require('include/myconn.php'); +require('include/getadmacc.php'); + +if ($account['Level']!='guest') { + require('include/menu.php'); + $menu['istanze']['href']=null; + $menu['istanze']['selected']=true; + $menu['istanze']['submenu']['modifica']['href']=null; + $menu['istanze']['submenu']['modifica']['selected']=true; + buildmenu($menu); +} else { + $menuout=''; +} $dbg=''; @@ -26,16 +30,23 @@ $dbg.=$dlang.'
'.N; $dbg.='
'.print_r($_GET,1).'
'; if (array_key_exists('id',$_GET) && preg_match('/^[0-9]+$/',$_GET['id'])===1) { + $_GET['id']+=0; + if ($account['Level']=='guest' && !in_array($_GET['id'],$account['Insts'])) + muoribene('You can’t edit data for an instance you don’t own.',true); $res=mysqli_query($link,'SELECT * FROM Instances WHERE ID='.$_GET['id']) or muoribene(__LINE__.': '.mysqli_error($link),true); if (mysqli_num_rows($res)!=1) - muoribene(__LINE__.': There is no instance with ID='.$_GET['ID'].'.'); + muoribene(__LINE__.': There is no instance with ID='.$_GET['ID'].'.',true); $inst=mysqli_fetch_assoc($res); +} else { + muoribene('Malformed input.',true); } function check($row,$col) { if ($row[$col]>0) - echo(' checked'); + return(' checked'); + else + return(''); } ?> @@ -287,18 +298,21 @@ function ckf() { - - - - - + + + + +
 >
 >
 >
 >
 
 
 
 
+
'.N); +?> -
-
+
@@ -333,11 +347,14 @@ var '.$o['disparr'].'=getselarr(\''.$o['dispselid'].'\'); //--> - -
-
-
- +'.N); + if (!array_key_exists('edavail',$o) || $o['edavail']) + echo('
'.N); + if (!array_key_exists('addavail',$o) || $o['addavail']) + echo('
'.N); + if (!array_key_exists('remavail',$o) || $o['remavail']) + echo('
'.N); +echo(' '.N); if ($o['multi']) { echo(' @@ -400,7 +417,10 @@ selbox(array( 'dida'=>'Above: available languages; below: chosen languages', 'chosenselid'=>'ChosenLangs[]', 'chosenque'=>'SELECT * FROM InstOurLangs LEFT JOIN Languages ON Languages.ID=OurLangID WHERE InstID='.$inst['ID'].' ORDER BY Pos ASC', - 'chosenvalcol'=>'OurLangID')); + 'chosenvalcol'=>'OurLangID', + 'edavail'=>false, + 'addavail'=>false, + 'remavail'=>false)); ?> diff --git a/web/admin/edinsth.php b/web/admin/edinsth.php index 89725d4..457e834 100644 --- a/web/admin/edinsth.php +++ b/web/admin/edinsth.php @@ -99,10 +99,10 @@ if (array_key_exists('w',$_GET) && array_key_exists('i',$_GET) && preg_match('/^ $fout=buildform($id,'Localities','Name'.$dlang,'Locality name','Instances','LocalityID'); $exvalsjsarr=setjsarr('Localities','Name'.$dlang); break; - case 'DispLangs': + /*case 'DispLangs': $fout=buildform($id,'Languages','Name'.$dlang,'Language','InstOurLangs','OurLangID'); $exvalsjsarr=setjsarr('Languages','Name'.$dlang); - break; + break;*/ case 'DispFinModes': $fout=buildform($id,'Financing','Type','Financing method','InstFinancing','FinID'); $exvalsjsarr=setjsarr('Financing','Type'); @@ -183,8 +183,8 @@ if (array_key_exists('w',$_GET) && array_key_exists('i',$_GET) && preg_match('/^ } else { $fout='

Couldn’t fetch OpenStreetMap search data.

'.N; } - } elseif ($_POST['t']=='Languagues') { - edaddrem($link,$morejs,$id,'Languages','Name'.$langd,'langselarr','InstOurLangs','OurLangID','langsearch','DispLangs','langselre'); + /*} elseif ($_POST['t']=='Languagues') { + edaddrem($link,$morejs,$id,'Languages','Name'.$langd,'langselarr','InstOurLangs','OurLangID','langsearch','DispLangs','langselre');*/ } elseif ($_POST['t']=='Financing') { edaddrem($link,$morejs,$id,'Financing','Type','finselarr','InstFinancing','FinID','finsearch','DispFinModes','finselre'); } elseif ($_POST['t']=='Policies') { @@ -202,13 +202,20 @@ if (array_key_exists('w',$_GET) && array_key_exists('i',$_GET) && preg_match('/^ } function buildform($id,$table,$column,$title,$lntable,$lncolumn) { - global $tables, $link; + global $account, $tables, $link; $fout=''; if ($_GET['m']=='edit' || $_GET['m']=='remove') { $res=mysqli_query($link,'SELECT * FROM '.$table.' WHERE ID='.$id) or muoribene(__LINE__.': '.mysqli_error($link),true); if (mysqli_num_rows($res)==1) { $row=mysqli_fetch_assoc($res); + /*if ($account['Level']=='guest') { + if ($row['AddedBy']!=$account['ID'] + $rres=mysqli_query($link,'SELECT * FROM '.$lntable.' WHERE '.$lncolumn.'='.$id.' AND InstID!='.$account['OwnInstID']) or muoribene(__LINE__.': '.mysqli_error($link),true); + if ($ + } + $rres='SELECT * FROM '.$lntable.' WHERE '.$lncolumn.'='.$id.' AND InstID!= + if ($account['Level']!='guest' || ($row['AddedBy']==$account['ID']*/ if ($_GET['m']=='edit') { $fout.='
'.N; $fout.=''.N; diff --git a/web/admin/imgs/cerca_act_off.svg b/web/admin/imgs/cerca_act_off.svg new file mode 100644 index 0000000..31dfa1d --- /dev/null +++ b/web/admin/imgs/cerca_act_off.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/web/admin/imgs/cerca_act_on.svg b/web/admin/imgs/cerca_act_on.svg new file mode 100644 index 0000000..71b4cb1 --- /dev/null +++ b/web/admin/imgs/cerca_act_on.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/web/admin/include/getadmacc.php b/web/admin/include/getadmacc.php index b7ab9a3..77f9cd2 100644 --- a/web/admin/include/getadmacc.php +++ b/web/admin/include/getadmacc.php @@ -1,10 +1,18 @@ diff --git a/web/admin/instances.php b/web/admin/instances.php index 2a0f31b..ba0f588 100644 --- a/web/admin/instances.php +++ b/web/admin/instances.php @@ -3,7 +3,10 @@ require('include/glob.php'); require('include/muoribene.php'); require('include/sessionstart.php'); - +require('include/myconn.php'); +require('include/getadmacc.php'); +if ($account['Level']=='guest') + muoribene('Sorry, you are not authorized.',true); require('include/menu.php'); $menu['istanze']['href']=null; $menu['istanze']['selected']=true; @@ -11,9 +14,6 @@ $menu['istanze']['submenu']['elenco']['href']=null; $menu['istanze']['submenu']['elenco']['selected']=true; buildmenu($menu); -require('include/myconn.php'); -require('include/getadmacc.php'); - $dbg=''; $dbg.='$account:
'.print_r($account,1).'
'.N; @@ -325,6 +325,7 @@ if (array_key_exists('filt',$_POST) && $_POST['filt']=='filt') { $fi=0; $ji=0; $oi=0; +$filtordon=false; $jsaddrows=''; $jssetrows=''; $jsordaddrows=''; @@ -337,6 +338,7 @@ $order=''; $res=mysqli_query($link,'SELECT * FROM PresFiltCondsAdm WHERE AdmID='.$account['ID'].' ORDER BY Pos ASC') or muoribene(__LINE__.': '.mysqli_error($link)); $blocks=mysqli_num_rows($res); +if ($blocks>0) $filtordon=true; while ($row=mysqli_fetch_assoc($res)) { $fi++; if (preg_match('/^\(+$/',$row['OpenPar'])===1) { @@ -407,6 +409,7 @@ while ($row=mysqli_fetch_assoc($res)) { $res=mysqli_query($link,'SELECT * FROM PresOrdCondsAdm WHERE AdmID='.$account['ID'].' ORDER BY Pos ASC') or muoribene(__LINE__.': '.mysqli_error($link)); +if (mysqli_num_rows($res)>0) $filtordon=true; while ($row=mysqli_fetch_assoc($res)) { preg_match('/^(.+):(.+):(.+)$/',$row['Field'],$buf); $oi++; @@ -709,6 +712,14 @@ while ($row=mysqli_fetch_assoc($res)) { mysqli_close($link); +if ($filtordon) { + $filtordimgoff='imgs/cerca_act_off.svg'; + $filtordimgon='imgs/cerca_act_on.svg'; +} else { + $filtordimgoff='imgs/cerca_off.svg'; + $filtordimgon='imgs/cerca_on.svg'; +} + ?> @@ -732,11 +743,11 @@ function shideplancia() { var plctrl=document.getElementById('lente'); if (plancia.style.display=='block') { plancia.style.display='none'; - lente.src='imgs/cerca_off.svg'; + lente.src=''; lente.title='Mostra il pannello di ricerca e ordinamento'; } else { plancia.style.display='block'; - lente.src='imgs/cerca_on.svg'; + lente.src=''; lente.title='Nascondi il pannello di ricerca e ordinamento'; } } @@ -1285,7 +1296,7 @@ function pupoff() {
- +
diff --git a/web/admin/loadsaverempres.php b/web/admin/loadsaverempres.php index 6b733b9..b270e1a 100644 --- a/web/admin/loadsaverempres.php +++ b/web/admin/loadsaverempres.php @@ -9,17 +9,30 @@ require('include/myconn.php'); use function mysqli_real_escape_string as myesc; +function nulltonull($arr) { + $newarr=array(); + foreach ($arr as $key=>$val) + if (is_null($val)) + if ($key!='AndOr') + $newarr[$key]='null'; + else + $newarr[$key]='AND'; + else + $newarr[$key]=$val; + return($newarr); +} + if (array_key_exists('act',$_POST)) { if ($_POST['act']=='load' && array_key_exists('pid',$_POST) && preg_match('/^[0-9]+$/',$_POST['pid'])===1) { $res=mysqli_query($link,'SELECT * FROM PresFiltConds WHERE PresID='.$_POST['pid'].' ORDER BY Pos ASC') or muoribene(mysqli_error($link),true); $buf=array('f'=>array(),'o'=>array()); while ($row=mysqli_fetch_assoc($res)) - $buf['f'][]=$row; + $buf['f'][]=nulltonull($row); $res=mysqli_query($link,'SELECT * FROM PresOrdConds WHERE PresID='.$_POST['pid'].' ORDER BY Pos ASC') or muoribene(mysqli_error($link),true); while ($row=mysqli_fetch_assoc($res)) - $buf['o'][]=$row; + $buf['o'][]=nulltonull($row); echo(json_encode($buf)); } elseif ($_POST['act']=='save' && array_key_exists('txt',$_POST)) { $fi=-1; diff --git a/web/admin/zzz-materiali/mastostart_struttura.sql.gz b/web/admin/zzz-materiali/mastostart_struttura.sql.gz index 627d53e..1fe2a03 100644 Binary files a/web/admin/zzz-materiali/mastostart_struttura.sql.gz and b/web/admin/zzz-materiali/mastostart_struttura.sql.gz differ diff --git a/web/admin/zzz-materiali/mastostart_struttura_e_dati.sql.gz b/web/admin/zzz-materiali/mastostart_struttura_e_dati.sql.gz index 979d844..41c1d76 100644 Binary files a/web/admin/zzz-materiali/mastostart_struttura_e_dati.sql.gz and b/web/admin/zzz-materiali/mastostart_struttura_e_dati.sql.gz differ