diff options
Diffstat (limited to 'list.php')
-rw-r--r-- | list.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/list.php b/list.php new file mode 100644 index 0000000..b942fa6 --- /dev/null +++ b/list.php @@ -0,0 +1,91 @@ +<!DOCTYPE html> +<html> +<head> + <title>Events</title> + <link rel="stylesheet" type="text/css" href="style.css"/> +</head> +<body> +<h1>HebrewTools Events List</h1> +Select <a href="#" onclick="check_all_keywords(true);">all</a> / <a href="#" onclick="check_all_keywords(false);">no</a> filters. +<div id="keyword-filters"> +<?php +require_once ('db.php'); + +function htmlid ($str) +{ + return preg_replace ('/\W/','-',$str); +} + +$selected_keywords=isset ($_GET['keywords']) ? explode(',',$_GET['keywords']) : null; + +$keywords=get_keywords(); +foreach ($keywords as $record){ + $keyword=$record['keyword']; + $checked=is_null ($selected_keywords) || in_array($keyword,$selected_keywords); + $checked=$checked ? 'checked="checked"' : ''; + echo '<label for="kw-'.htmlid ($keyword).'">'; + echo '<input type="checkbox" class="keyword" value="'.$keyword.'" id="kw-'.htmlid ($keyword).'" '.$checked.'/>'; + echo ' '.$keyword.' ('.$record['count'].')</label><br/>'; +} + +$ical_url='https://'.$_SERVER['HTTP_HOST'].'/ical.php'; +if (isset ($_GET['keywords']) && count ($_GET['keywords']) != count ($keywords)) + $ical_url.='?keywords='.$_GET['keywords']; +?> +</div> +<br/> +<form action="list.php" method="get"> +<input type="hidden" name="keywords" value=""/> +<input type="submit" value="Update filters"/> +</form> +<p>Export this calendar in <a href="<?=$ical_url?>">iCal</a> format.</p> +<table> +<tr> + <th>Date(s)</th> + <th>Location</th> + <th>Title</th> + <th>Keywords</th> +</tr> +<?php +$events=is_null ($selected_keywords) ? get_events() : get_events ($selected_keywords); +foreach ($events as $event){ + echo '<tr>'; + echo '<td>'.date ('D j M Y',strtotime ($event['start_date'])); + if ($event['end_date']!=$event['start_date']) + echo ' to '.date ('j M',strtotime ($event['end_date'])); + echo '</td>'; + echo '<td>'.htmlspecialchars ($event['location']).'</td>'; + echo '<td>'.htmlspecialchars ($event['title']).'</td>'; + foreach ($event['keywords'] as $i => $kw){ + if (!is_null ($selected_keywords) && !in_array ($kw,$selected_keywords)) + $event['keywords'][$i]='<span class="filtered-keyword">'.htmlspecialchars ($kw).'</span>'; + else + $event['keywords'][$i]=htmlspecialchars ($kw); + } + echo '<td>'.implode (', ',$event['keywords']).'</td>'; + echo '</tr>'; +} +?> +</table> +<script type="text/javascript"> +let checkboxes=Array.from (document.getElementsByClassName ('keyword')); + +function update_keywords_field () +{ + var keywords=checkboxes.filter (cb => cb.checked).map (cb => cb.value); + var elem=document.getElementsByName ('keywords')[0]; + elem.value=keywords.join (','); +} + +function check_all_keywords (check) +{ + checkboxes.map (cb => cb.checked=check); + update_keywords_field(); + return false; +} + +update_keywords_field(); +checkboxes.map (cb => cb.onchange=update_keywords_field); +</script> +</body> +</html> |