edinst.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. <?php
  2. require('include/glob.php');
  3. require('include/muoribene.php');
  4. require('include/sessionstart.php');
  5. require('include/myconn.php');
  6. require('include/getadmacc.php');
  7. if ($account['Level']!='guest') {
  8. require('include/menu.php');
  9. $menu['istanze']['href']=null;
  10. $menu['istanze']['selected']=true;
  11. $menu['istanze']['submenu']['modifica']['href']=null;
  12. $menu['istanze']['submenu']['modifica']['selected']=true;
  13. buildmenu($menu);
  14. } else {
  15. $menuout='';
  16. }
  17. $dbg='';
  18. use function mysqli_real_escape_string as myesc;
  19. // praticamente una macro
  20. function hspech($str) {
  21. return(htmlspecialchars($str,ENT_QUOTES|ENT_HTML5,'UTF-8'));
  22. }
  23. $dbg.=$dlang.'<br>'.N;
  24. $dbg.='<pre>'.print_r($_GET,1).'</pre>';
  25. if (array_key_exists('id',$_GET) && preg_match('/^[0-9]+$/',$_GET['id'])===1) {
  26. $_GET['id']+=0;
  27. if ($account['Level']=='guest' && !in_array($_GET['id'],$account['Insts']))
  28. muoribene('You can’t edit data for an instance you don’t own.',true);
  29. $res=mysqli_query($link,'SELECT * FROM Instances WHERE ID='.$_GET['id'])
  30. or muoribene(__LINE__.': '.mysqli_error($link),true);
  31. if (mysqli_num_rows($res)!=1)
  32. muoribene(__LINE__.': There is no instance with ID='.$_GET['ID'].'.',true);
  33. $inst=mysqli_fetch_assoc($res);
  34. } else {
  35. muoribene('Malformed input.',true);
  36. }
  37. $dbg.='<pre>'.print_r($inst,1).'</pre>'.N;
  38. function check($row,$col) {
  39. if ($row[$col]>0)
  40. return(' checked');
  41. else
  42. return('');
  43. }
  44. ?>
  45. <!DOCTYPE HTML>
  46. <html lang="en">
  47. <head>
  48. <title>Mastodon Startpage Admin - Editing «<?php echo($inst['URI']); ?>» form</title>
  49. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  50. <meta name="description" content="Admin pages for Mastodon Startpage">
  51. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  52. <link rel="icon" type="image/png" href="imgs/icona-32.png" sizes="32x32">
  53. <link rel="icon" type="image/png" href="imgs/icona-192.png" sizes="192x192">
  54. <link rel="icon" type="image/png" href="imgs/icona-512.png" sizes="512x512">
  55. <link rel="apple-touch-icon-precomposed" href="imgs/icona-180.png">
  56. <script language="JavaScript" src="js/menu.js?v=<?php echo($cjrand); ?>"></script>
  57. <script language="JavaScript" src="js/confirma.js?v=<?php echo($cjrand); ?>"></script>
  58. <script language="JavaScript" src="js/alerta.js?v=<?php echo($cjrand); ?>"></script>
  59. <link rel="stylesheet" type="text/css" href="theme.css?v=<?php echo($cjrand); ?>">
  60. <script language="JavaScript">
  61. <!--
  62. function getselarr(selid) {
  63. var sel=document.getElementById(selid), selc=sel.length, i, arr=[];
  64. for (i=0; i<selc; i++)
  65. arr.push([sel.options[i].text,sel.options[i].value,sel.options[i].selected]);
  66. return arr;
  67. }
  68. function updselarr(selid,selarr) {
  69. var sel=document.getElementById(selid), selc=sel.length, selarrc=selarr.length, i, ii;
  70. sel=sel.options;
  71. ii=0;
  72. for (i=0; i<selc; i++) {
  73. while (ii<selarrc) {
  74. if (selarr[ii][1]==sel[i].value) {
  75. (sel[i].selected) ? selarr[ii][2]=true : selarr[ii][2]=false;
  76. break;
  77. }
  78. ii++;
  79. }
  80. }
  81. return selarr;
  82. }
  83. function filtsel(selarr,filt,selid,recbid,inpid,ocol,ecol) {
  84. var sel=document.getElementById(selid), selarrc=selarr.length, i, ii, go=true;
  85. if (!document.getElementById(recbid).checked) {
  86. filt=filt.replace(/([.?*+^$[\]\\(){}|-])/g,'\\$1');
  87. } else {
  88. try { (RegExp(filt)); }
  89. catch(e) { go=false; }
  90. }
  91. if (go) {
  92. sel.length=0;
  93. for (i=0; i<selarrc; i++) {
  94. if (RegExp(filt,'i').test(selarr[i][0]))
  95. sel.options.add(new Option(selarr[i][0],selarr[i][1],false,selarr[i][2]));
  96. }
  97. if (ocol!=null)
  98. document.getElementById(inpid).style.backgroundColor=ocol;
  99. } else if (ecol!=null) {
  100. document.getElementById(inpid).style.backgroundColor=ecol;
  101. }
  102. }
  103. function selup(selid) {
  104. var sel=document.getElementById(selid), len=sel.length, i, prevopt, curopt;
  105. if (sel.selectedIndex>0) {
  106. for (i=0; i<len; i++) {
  107. if (sel.options[i].selected) {
  108. prevopt=sel.options[i-1];
  109. curopt=sel.options[i];
  110. sel.remove(i-1);
  111. sel.remove(i-1);
  112. sel.add(curopt,i-1);
  113. sel.add(prevopt,i);
  114. }
  115. }
  116. }
  117. }
  118. function seltop(selid) {
  119. var sel=document.getElementById(selid);
  120. while (sel.selectedIndex>0)
  121. selup(selid);
  122. }
  123. function seldown(selid) {
  124. var sel=document.getElementById(selid), len=sel.length, i, nextopt, curopt;
  125. if (!sel.options[len-1].selected) {
  126. for (i=len-1; i>-1; i--) {
  127. if (sel.options[i].selected) {
  128. curopt=sel.options[i];
  129. nextopt=sel.options[i+1];
  130. sel.remove(i);
  131. sel.remove(i);
  132. sel.add(curopt,i);
  133. sel.add(nextopt,i);
  134. }
  135. }
  136. }
  137. }
  138. function selbot(selid) {
  139. var sel=document.getElementById(selid), len=sel.length;
  140. if (sel.selectedIndex>=0) {
  141. while (!sel.options[len-1].selected)
  142. seldown(selid);
  143. }
  144. }
  145. function selonebyval(refarr,val) {
  146. var len=refarr.length, i;
  147. for (i=len-1; i>-1; i--)
  148. (refarr[i][1]==val) ? refarr[i][2]=true : refarr[i][2]=false;
  149. return refarr;
  150. }
  151. function rmelbyval(refarr,val) {
  152. var len=refarr.length, i;
  153. for (i=len-1; i>-1; i--) {
  154. if (refarr[i][1]==val) {
  155. refarr.splice(i,1);
  156. break;
  157. }
  158. }
  159. return refarr;
  160. }
  161. // usato da edinsth.php
  162. function cheltxtbyval(refarr,val,ntxt) {
  163. var len=refarr.length, i;
  164. for (i=len-1; i>-1; i--) {
  165. if (refarr[i][1]==val) {
  166. refarr[i][0]=ntxt;
  167. break;
  168. }
  169. }
  170. return refarr;
  171. }
  172. // usato da edinsth.php
  173. function chelvalbyval(refarr,val,nval) {
  174. var len=refarr.length, i;
  175. for (i=len-1; i>-1; i--) {
  176. if (refarr[i][1]==val) {
  177. refarr[i][1]=nval;
  178. break;
  179. }
  180. }
  181. return refarr;
  182. }
  183. function seladd(fromselid,toselid,refarr) {
  184. var fromsel=document.getElementById(fromselid), fslen=fromsel.length, tosel=document.getElementById(toselid), i;
  185. // farlo a scalare invece che a crescere inverte nella select di destinazione l'ordine delle opzioni scelte in quella di origine, perciò lo faccio a crescere
  186. for (i=0; i<fslen; i++) {
  187. if (fromsel.options[i].selected) {
  188. refarr=rmelbyval(refarr,fromsel.options[i].value);
  189. tosel.add(fromsel.options[i]);
  190. fslen--;
  191. i--;
  192. }
  193. }
  194. return refarr;
  195. }
  196. function sortByKey(array, key) {
  197. return array.sort(function(a, b) {
  198. var x = a[key].toLowerCase(); var y = b[key].toLowerCase();
  199. return ((x < y) ? -1 : ((x > y) ? 1 : 0));
  200. });
  201. }
  202. function selrem(fromselid,toselid,refarr,searchid,regexcbid) {
  203. var fromsel=document.getElementById(fromselid), fslen=fromsel.length, tosel=document.getElementById(toselid), i;
  204. for (i=fslen-1; i>-1; i--) {
  205. if (fromsel.options[i].selected) {
  206. refarr.push([fromsel.options[i].text,fromsel.options[i].value,true]);
  207. fromsel.remove(i);
  208. }
  209. }
  210. refarr=sortByKey(refarr,0);
  211. filtsel(refarr, document.getElementById(searchid).value, toselid, regexcbid, searchid, 'white', '#ff8080');
  212. return refarr;
  213. }
  214. function selordalf(selid) {
  215. var sel=document.getElementById(selid), len=sel.length, arr=[], i;
  216. for (i=0; i<len; i++)
  217. arr.push([sel.options[i].text,sel.options[i].value,sel.options[i].selected]);
  218. arr=sortByKey(arr,0);
  219. sel.length=0;
  220. for (i=0; i<len; i++)
  221. sel.add(new Option(arr[i][0],arr[i][1],false,arr[i][2]));
  222. }
  223. function selordinv(selid) {
  224. var sel=document.getElementById(selid), len=sel.length, arr=[], i;
  225. for (i=0; i<len; i++)
  226. arr.push([sel.options[i].text,sel.options[i].value,sel.options[i].selected]);
  227. arr=arr.reverse();
  228. sel.length=0;
  229. for (i=0; i<len; i++)
  230. sel.add(new Option(arr[i][0],arr[i][1],false,arr[i][2]));
  231. }
  232. function closeinpup() {
  233. document.getElementById('inpopup').innerHTML='<div id="popupcont">...</div>';
  234. document.getElementById('popup').style.display='none';
  235. }
  236. function edit(selid,what,mode) {
  237. var act='', id=0;
  238. if (mode=='edit')
  239. act={0:'Editing',1:'edit'};
  240. else if (mode=='add')
  241. act={0:'Adding',1:'add'};
  242. else if (mode=='remove')
  243. act={0:'Removing',1:'remove'};
  244. var sel=document.getElementById(selid);
  245. if ((mode=='edit' || mode=='remove') && sel.selectedIndex<0) {
  246. alerta('<p>You have to select an entry to '+act[1]+' ;-)</p>',true);
  247. } else {
  248. if (mode=='edit' || mode=='remove')
  249. id=sel.options[sel.selectedIndex].value;
  250. document.getElementById('inpopup').innerHTML='<div class="hiftit"><img src="imgs/p.png" style="float:left;width:24px;height:24px">'+act[0]+' «'+what+'» entry<img src="imgs/close.svg" class="imgbut" style="float:right;" onclick="closeinpup()"></div><iframe src="edinsth.php?w='+selid+'&i='+id+'&m='+mode+'" class="hiframe"></iframe>';
  251. document.getElementById('popup').style.display='table';
  252. }
  253. }
  254. function ckf() {
  255. var selids=['ChosenLangs[]','ChosenFinModes[]','ChosenPolicies[]','ChosenTags[]'], len=selids.length, i, sel, ii;
  256. for (i=0; i<len; i++) {
  257. sel=document.getElementById(selids[i]).options;
  258. for (ii=0; ii<sel.length; ii++)
  259. sel[ii].selected=true;
  260. }
  261. document.getElementById('f').submit();
  262. }
  263. //-->
  264. </script>
  265. </head>
  266. <body>
  267. <nav>
  268. <div id="hmenu">
  269. <ul>
  270. <?php echo($menuout); ?>
  271. </ul>
  272. <div class="mtit">Editing «<?php echo($inst['URI']); ?>»</div>
  273. <div id="rightdiv">
  274. <a href="logout.php" class="rlinks"><img src="imgs/esci.svg" title="Sign out"></a>
  275. </div>
  276. </div>
  277. </nav>
  278. <div id="popup">
  279. <div id="inpopup">
  280. <div id="popupcont">
  281. ...
  282. </div>
  283. </div>
  284. </div>
  285. <!-- <div id="footer">
  286. </div> -->
  287. <div id="fullscreen">
  288. <div id="middlerow">
  289. <form action="edinstres.php" method="post" id="f" onsubmit="return ckf();">
  290. <input type="hidden" id="id" name="id" value="<?php echo($_GET['id']+0); ?>">
  291. <table class="edtab">
  292. <tr><td class="insthead"><?php echo($inst['URI']); ?></td></tr>
  293. <tr><td>
  294. <?php
  295. if ($account['Level']!='guest')
  296. echo('<table class="cbtab">
  297. <tr><td><label for="Blacklisted">Blacklisted:</label></td><td>&nbsp;<input type="checkbox" name="Blacklisted" id="Blacklisted"'.check($inst,'Blacklisted').'></td></tr>
  298. <tr><td><label for="New">New:</label></td><td>&nbsp;<input type="checkbox" name="New" id="New"'.check($inst,'New').'></td></tr>
  299. <tr><td><label for="Chosen">Chosen:</label></td><td>&nbsp;<input type="checkbox" name="Chosen" id="Chosen"'.check($inst,'Chosen').'></td></tr>
  300. <tr><td><label for="Visible">Visible:</label></td><td>&nbsp;<input type="checkbox" name="Visible" id="Visible"'.check($inst,'Visible').'></td></tr>
  301. </table>
  302. <div class="ruler"></div>'.N);
  303. ?>
  304. <div class="tit"><label for="OurDesc">Our description (original language)</label></div>
  305. <textarea name="OurDesc" id="OurDesc" rows="10" class="tarea"><?php echo(hspech($inst['OurDesc'])); ?></textarea>
  306. <div class="ruler"></div>
  307. <div class="tit"><label for="OurDescEN">Our description (english)</label></div>
  308. <textarea name="OurDescEN" id="OurDescEN" rows="10" class="tarea"><?php echo(hspech($inst['OurDescEN'])); ?></textarea>
  309. <?php
  310. function selbox($o) {
  311. global $link;
  312. ($o['multi']) ? $seladdprops=' multiple' : $seladdprops=' name="'.$o['dispselid'].'"';
  313. echo('<div class="ruler"></div>
  314. <div class="tit"><label for="'.$o['dispselid'].'">'.$o['title'].'</label></div>
  315. <table class="picktab"><tr>
  316. <td style="width:98%"><input type="text" placeholder="Filter ..." class="search" title="'.$o['searchtit'].'" id="'.$o['searchid'].'" onkeyup="filtsel('.$o['disparr'].', this.value, \''.$o['dispselid'].'\', \''.$o['regexcbid'].'\', \''.$o['searchid'].'\', \'white\', \'#ff8080\')"></td>
  317. <td style="width:1%;padding-left:3px;padding-right:3px;"><label for="'.$o['regexcbid'].'" title="Use regular espression">RegEx:</label></td>
  318. <td style="width:1%"><input type="checkbox" id="'.$o['regexcbid'].'" style="float:right;" title="Use regular espression" onchange="filtsel('.$o['disparr'].', document.getElementById(\''.$o['searchid'].'\').value, \''.$o['dispselid'].'\', \''.$o['regexcbid'].'\', \''.$o['searchid'].'\', \'white\', \'#ff8080\')"></td>
  319. </tr></table>
  320. <table class="picktab">
  321. <tr>
  322. <td style="width:99%;">
  323. <select id="'.$o['dispselid'].'"'.$seladdprops.' size="8" class="mselect" onchange="'.$o['disparr'].'=updselarr(\''.$o['dispselid'].'\','.$o['disparr'].')">'.N);
  324. $res=mysqli_query($link,$o['dispque'])
  325. or muoribene(__LINE__.': '.mysqli_error($link),true);
  326. while ($row=mysqli_fetch_assoc($res)) {
  327. $selected='';
  328. if (!$o['multi'] && $row[$o['valcol']]==$o['instselid']) $selected=' selected';
  329. echo('<option value="'.$row[$o['valcol']].'"'.$selected.'>'.hspech($row[$o['txtcol']]).'</option>'.N);
  330. }
  331. echo('</select>
  332. <script type="text/javascript">
  333. <!--
  334. selordalf(\''.$o['dispselid'].'\');
  335. var '.$o['disparr'].'=getselarr(\''.$o['dispselid'].'\');
  336. //-->
  337. </script>
  338. </td>
  339. <td style="width:1%;">'.N);
  340. if (!array_key_exists('edavail',$o) || $o['edavail'])
  341. echo('<div class="butdiv"><img src="imgs/edit.svg" class="imgbut" title="Edit first selected entry" onclick="edit(\''.$o['dispselid'].'\',\''.$o['title'].'\',\'edit\')"></div>'.N);
  342. if (!array_key_exists('addavail',$o) || $o['addavail'])
  343. echo('<div class="butdiv"><img src="imgs/plus.svg" class="imgbut" title="Add an entry" onclick="edit(\''.$o['dispselid'].'\',\''.$o['title'].'\',\'add\')"></div>'.N);
  344. if (!array_key_exists('remavail',$o) || $o['remavail'])
  345. echo('<div class="butdiv"><img src="imgs/minus.svg" class="imgbut" title="Remove first selected entry" onclick="edit(\''.$o['dispselid'].'\',\''.$o['title'].'\',\'remove\')"></div>'.N);
  346. echo('</td>
  347. </tr>'.N);
  348. if ($o['multi']) {
  349. echo('<tr>
  350. <td style="width:99%;">
  351. <div class="move">'.$o['dida'].'
  352. <img src="imgs/fresu.svg" class="imgbut" style="float:left;" title="Move selected entries from chosen list to available list" onclick="'.$o['disparr'].'=selrem(\''.$o['chosenselid'].'\', \''.$o['dispselid'].'\', '.$o['disparr'].', \''.$o['searchid'].'\', \''.$o['regexcbid'].'\')">
  353. <img src="imgs/fregiu.svg" class="imgbut" style="float:right;" title="Move selected entries from available list to chosen list" onclick="'.$o['disparr'].'=seladd(\''.$o['dispselid'].'\', \''.$o['chosenselid'].'\', '.$o['disparr'].')">
  354. </div>
  355. </td>
  356. <td style="width:1%;">
  357. </td>
  358. </tr>
  359. <tr>
  360. <td style="width:99%;">
  361. <select id="'.$o['chosenselid'].'" name="'.$o['chosenselid'].'" multiple size="12" class="mselect">'.N);
  362. $res=mysqli_query($link,$o['chosenque'])
  363. or muoribene(__LINE__.': '.mysqli_error($link),true);
  364. while ($row=mysqli_fetch_assoc($res)) {
  365. echo('<option value="'.$row[$o['chosenvalcol']].'">'.hspech($row[$o['txtcol']]).'</option>'.N);
  366. }
  367. echo('</select>
  368. </td>
  369. <td style="width:1%;">
  370. <div class="butdiv"><img src="imgs/fresucim.svg" class="imgbut" title="Move to top" onclick="seltop(\''.$o['chosenselid'].'\')"></div>
  371. <div class="butdiv"><img src="imgs/fresu.svg" class="imgbut" title="Move up" onclick="selup(\''.$o['chosenselid'].'\')"></div>
  372. <div class="butdiv"><img src="imgs/fregiu.svg" class="imgbut" title="Move down" onclick="seldown(\''.$o['chosenselid'].'\')"></div>
  373. <div class="butdiv"><img src="imgs/fregiufon.svg" class="imgbut" title="Move to bottome" onclick="selbot(\''.$o['chosenselid'].'\')"></div>
  374. <div class="butdiv"><img src="imgs/alph.svg" class="imgbut" title="Sort alphabetically" onclick="selordalf(\''.$o['chosenselid'].'\')"></div>
  375. <div class="butdiv"><img src="imgs/invert.svg" class="imgbut" title="Invert sort" onclick="selordinv(\''.$o['chosenselid'].'\')"></div>
  376. </td>
  377. </tr>'.N);
  378. }
  379. echo('</table>'.N);
  380. }
  381. selbox(array(
  382. 'multi'=>false,
  383. 'dispselid'=>'LocalityID',
  384. 'instselid'=>$inst['LocalityID'],
  385. 'title'=>'Locality',
  386. 'searchid'=>'locsearch',
  387. 'searchtit'=>'Filter available localities',
  388. 'disparr'=>'locselarr',
  389. 'regexcbid'=>'locselre',
  390. 'dispque'=>'SELECT ID, Name'.$dlang.' FROM Localities ORDER BY NameOrig ASC',
  391. 'valcol'=>'ID',
  392. 'txtcol'=>'Name'.$dlang));
  393. $o=array(
  394. 'multi'=>true,
  395. 'dispselid'=>'DispLangs',
  396. 'title'=>'Languages',
  397. 'searchid'=>'langsearch',
  398. 'searchtit'=>'Filter available languages',
  399. 'disparr'=>'langselarr',
  400. 'regexcbid'=>'langselre',
  401. 'dispque'=>'SELECT ID, CONCAT(Name'.$dlang.'," [",Code,"]") AS Txt FROM Languages WHERE ID NOT IN (SELECT OurLangID FROM InstOurLangs WHERE InstID='.$inst['ID'].') ORDER BY Name'.$dlang.' ASC',
  402. 'valcol'=>'ID',
  403. 'txtcol'=>'Txt',
  404. 'dida'=>'Above: available languages; below: chosen languages',
  405. 'chosenselid'=>'ChosenLangs[]',
  406. 'chosenque'=>'SELECT OurLangID, CONCAT(Name'.$dlang.'," [",Code,"]") AS Txt FROM InstOurLangs LEFT JOIN Languages ON Languages.ID=OurLangID WHERE InstID='.$inst['ID'].' ORDER BY Pos ASC',
  407. 'chosenvalcol'=>'OurLangID');
  408. if ($account['Level']=='guest') {
  409. $o['edavail']=false;
  410. $o['addavail']=false;
  411. $o['remavail']=false;
  412. }
  413. selbox($o);
  414. ?>
  415. <table class="cbtab">
  416. <tr><td><label for="OurLangsLock" title="Prevent languages from being overwritten on next crawler run">Lock this list:&nbsp;</label></td><td><input type="checkbox" id="OurLangsLock" name="OurLangsLock" title="Prevent languages from being overwritten on next crawler run"<?php if ($account['Level']=='guest') echo(' checked'); else echo(check($inst,'OurLangsLock')); ?>></td></tr>
  417. </table>
  418. <?php
  419. selbox(array(
  420. 'multi'=>true,
  421. 'dispselid'=>'DispFinModes',
  422. 'title'=>'Financing methods',
  423. 'searchid'=>'finsearch',
  424. 'searchtit'=>'Filter available financing methods',
  425. 'disparr'=>'finselarr',
  426. 'regexcbid'=>'finselre',
  427. 'dispque'=>'SELECT * FROM Financing WHERE ID NOT IN (SELECT FinID FROM InstFinancing WHERE InstID='.$inst['ID'].') ORDER BY Type ASC',
  428. 'valcol'=>'ID',
  429. 'txtcol'=>'Type',
  430. 'dida'=>'Above: available fin. methods; below: chosen fin. methods',
  431. 'chosenselid'=>'ChosenFinModes[]',
  432. 'chosenque'=>'SELECT * FROM InstFinancing LEFT JOIN Financing ON Financing.ID=FinID WHERE InstID='.$inst['ID'].' ORDER BY Pos ASC',
  433. 'chosenvalcol'=>'FinID'));
  434. selbox(array(
  435. 'multi'=>true,
  436. 'dispselid'=>'DispPolicies',
  437. 'title'=>'Policies',
  438. 'searchid'=>'polsearch',
  439. 'searchtit'=>'Filter policies',
  440. 'disparr'=>'polselarr',
  441. 'regexcbid'=>'polselre',
  442. 'dispque'=>'SELECT * FROM Policies WHERE ID NOT IN (SELECT PolID FROM InstPolicies WHERE InstID='.$inst['ID'].') ORDER BY Name ASC',
  443. 'valcol'=>'ID',
  444. 'txtcol'=>'Name',
  445. 'dida'=>'Above: available policies; below: chosen policies',
  446. 'chosenselid'=>'ChosenPolicies[]',
  447. 'chosenque'=>'SELECT * FROM InstPolicies LEFT JOIN Policies ON Policies.ID=PolID WHERE InstID='.$inst['ID'].' ORDER BY Pos ASC',
  448. 'chosenvalcol'=>'PolID'));
  449. selbox(array(
  450. 'multi'=>true,
  451. 'dispselid'=>'DispTags',
  452. 'title'=>'Tags',
  453. 'searchid'=>'tagsearch',
  454. 'searchtit'=>'Filter tags',
  455. 'disparr'=>'tagselarr',
  456. 'regexcbid'=>'tagselre',
  457. 'dispque'=>'SELECT * FROM Tags WHERE ID NOT IN (SELECT TagID FROM InstTags WHERE InstID='.$inst['ID'].') ORDER BY Name ASC',
  458. 'valcol'=>'ID',
  459. 'txtcol'=>'Name',
  460. 'dida'=>'Above: available tags; below: chosen tags',
  461. 'chosenselid'=>'ChosenTags[]',
  462. 'chosenque'=>'SELECT * FROM InstTags LEFT JOIN Tags ON Tags.ID=TagID WHERE InstID='.$inst['ID'].' ORDER BY Pos ASC',
  463. 'chosenvalcol'=>'TagID'));
  464. ?>
  465. <div class="ruler"></div>
  466. <input type="button" value="Save" class="button" onclick="ckf()">
  467. </td></tr>
  468. </table>
  469. </form>
  470. </div>
  471. </div>
  472. <div id="debug">
  473. <?php echo($dbg); ?>
  474. </div>
  475. </body>
  476. </html>
  477. <?php
  478. mysqli_close($link);
  479. ?>