aboutsummaryrefslogtreecommitdiff
path: root/list.php
diff options
context:
space:
mode:
Diffstat (limited to 'list.php')
-rw-r--r--list.php91
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>