about summary refs log tree commit diff
path: root/web/atward/src/index.html
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-05-12T11·54+0200
committertazjin <mail@tazj.in>2021-05-12T13·19+0000
commitebf630194148b1f15b6c0144ce868a45fce5cd47 (patch)
tree0e11287e391a004ebe1b79a90132b079743630ca /web/atward/src/index.html
parent2a97eda3b3cb61e74b9fe9641380cc77c15c766c (diff)
feat(atward): Support reading configuration from cookies r/2583
Adds support for reading configuration (currently only the `cs`
parameter) from cookies and from URL query parameters. The latter take
precedence if set explicitly.

This is useful for users which can not edit their search query
parameters.

To make this easier to use the atward landing page has been updated
with a simple form where settings can be toggled. This requires
Javascript, but the script is small, embedded and MIT licensed (as is
the rest of this project). Users without Javascript will be shown a
notice about this.

It is of course possible to set the cookies manually, too.

Change-Id: Ie9a9dbeab4d9a97a349d7988e21f1b46037e1f72
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3110
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'web/atward/src/index.html')
-rw-r--r--web/atward/src/index.html49
1 files changed, 43 insertions, 6 deletions
diff --git a/web/atward/src/index.html b/web/atward/src/index.html
index 286bc6e546..a62d168bda 100644
--- a/web/atward/src/index.html
+++ b/web/atward/src/index.html
@@ -6,7 +6,28 @@
 <link rel="icon" type="image/webp" href="https://tvl.fyi/static/favicon.webp">
 <link rel="search" type="application/opensearchdescription+xml" title="TVL Search" href="https://at.tvl.fyi/opensearch.xml">
 <title>TVL Search</title>
-<body class="light">
+<script>
+  /* Initialise the state of all settings. */
+  function loadSettings() {
+      loadSetting(document.getElementById('cs-setting'), 'cs');
+  }
+
+  /* Initialise the state of a setting from a cookie. */
+  function loadSetting(checkbox, name) {
+      if (document.cookie.split(';').some(function(cookie) {
+          return cookie.indexOf(`${name}=true`) >= 0;
+      })) {
+          checkbox.checked = true;
+      }
+  }
+
+  /* Persist the state of a checkbox in a cookie */
+  function saveSetting(checkbox, name) {
+      console.log(`setting atward parameter '${name}' to ${checkbox.checked.toString()}`);
+      document.cookie = `${name}=${checkbox.checked.toString()};`;
+  }
+</script>
+<body class="light" onload="loadSettings();">
   <header>
     <h1><a class="blog-title" href="/">atward</a></h1>
     <hr/>
@@ -47,12 +68,28 @@
       <li><kbd>cs=true</kbd> - use Sourcegraph instead of cgit to view code</li>
     </ul>
   </p>
-  <p class="cheddar-callout cheddar-todo">
-    In <b>Firefox</b>, configuring query parameters is difficult as
-    users can not edit search engines directly. There are browser
-    extensions and other workarounds for this issue, but we do not
-    recommend any particular one.
+  <p>
+    In some browsers (like Firefox) users can not edit query
+    parameters for search engines. As an alternative configuration can
+    be supplied via cookies with the same names as the configuration
+    parameters.
+  </p>
+  <p>
+    The form below can set this configuration:
+    <form class="cheddar-callout cheddar-todo">
+      <input type="checkbox"
+             id="cs-setting"
+             onchange="saveSetting(this, 'cs');"
+             > Use Sourcegraph instead of cgit</input>
+    </form>
   </p>
+  <noscript>
+    <p class="cheddar-callout cheddar-warning">
+      The form above only works with Javascript enabled. Only a few
+      lines of Javascript are used, and they are licensed under a
+      free-software license (MIT).
+    </p>
+  </noscript>
 
   <h3>Source code</h3>
   <p>