{"id":"6a2eeea32b0eb428f72c023f","title":"2026 06 14","path":"how-to/committee/release-notes/2026-06-14","contentMarkdown":"# 14-Jun-2026 — full-text site search, site map page and clickable images [ref #203](https://github.com/nbarrett/ngx-ramblers/issues/203)\n\n## [build 694](https://github.com/nbarrett/ngx-ramblers/actions/runs/27507227911) — [commit 248f234](https://github.com/nbarrett/ngx-ramblers/commit/248f234f65246fd7639271a211d3801aaf41b118)\n\n_____\n\nThis release adds three things to every NGX-Ramblers site: a search you can reach\nfrom anywhere in the header, a browsable site map, and the ability to turn any\ncontent image into a clickable link.\n\n## Searching the site\n\nClick the magnifying glass in the header, next to the group logo, and a search\npanel opens across the width of the page. Start typing and results appear as you\ngo, grouped under Pages, Walks and Events with a count beside each heading. Every\nresult shows its title, where it sits in the site and a short snippet with your\nwords highlighted; click one to go straight there, or step through them with the\narrow keys and press Enter.\n\nSearch covers the whole site by default. When you open it while reading a\nparticular section, a second choice appears under \"Search in:\" offering that\nsection and everything below it, so you can narrow down to the part of the site\nyou are in. As soon as you type more than one word a \"Match\" choice also appears:\n\"Any words\" finds anything containing at least one of your words and ranks the\nfullest matches first, while \"Exact phrase\" finds only the pages where your words\nappear together. You can force an exact phrase at any time by wrapping it in\ndouble quotes. When the box is empty your last few searches are offered, so you\ncan repeat one with a single click.\n\nChoosing \"View all results\", or pressing Enter, opens the full search page with\neverything grouped by type and the same choices along the top. The page records\nyour search in its web address, so a search can be bookmarked or sent to another\ncommittee member and it reopens exactly as you left it. Throughout, the access\nlevels set on the content are respected: people who are not logged in only find\npublic content, and members only find what their login allows.\n\nWant to try this yourself? The examples below were all run from the Kent group's Publications page at [www.kent.ngx-ramblers.org.uk/publications](https://www.kent.ngx-ramblers.org.uk/publications). Open that page, click the magnifying glass in the header, and run the same searches: because you start inside Publications, you can compare searching the whole site against just that section.\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/7fb214ad-328e-4442-89bf-747bee722de5.jpeg)\n\n*Searching \"solar array\" across the Whole site with Any words: 24 matches, Annual Review articles and walks alike.*\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/eef88281-16e8-4675-b5e1-6df1b39d740e.png)\n\n*The same search switched to \"Publications and below\": narrowed to the 8 results within that section.*\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/4e7eaa5d-59d0-4a11-a6b0-57444c449991.png)\n\n*\"solar array\" as an Exact phrase: just the single page where the two words sit together.*\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/0ba37732-dffe-4994-8e7d-ceaa4784b831.png)\n\n*Adding a word widens an Any-words search: \"solar array farm\" matches 751 pages because \"farm\" is common.*\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/2b42237d-cdde-4455-819d-17967b30dc08.png)\n\n*The same words as an Exact phrase: nothing uses that exact wording, so no results.*\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/24f145b5-0e80-4cb7-82ce-3b8e324d2cd6.png)\n\n*When the search box is empty, your recent searches are listed so you can pick one up again with a single click.*\n\n## The site map\n\nA new Site map page gives a bird's-eye view of the whole site. Each top-level\nsection appears as a card showing how many pages it holds and a short preview of\nwhat is inside; expand a card to open a tree of every page beneath it, right down\nto the deepest level, and use the filter box to jump to a page by name. It is\nreached from the \"Site map\" link in the footer, or directly at /site-map, and\nlike search it only shows the pages a visitor is allowed to see.\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/ac47fcbb-0905-4ddb-9ceb-36c78160edf2.png)\n\n*The Site map page lists every section as a card, with its page count and a preview of what is inside.*\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/eff41fbb-7819-4fe6-81e2-52fbd9cc99bb.png)\n\n*Expand a card to drill down through the full tree of pages, right to the deepest level, and open any of them.*\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/568cc06a-8a70-4cfb-b00c-a707257df7a0.png)\n\n*Type in the filter box to jump straight to a page by name; matches are highlighted wherever they sit in the tree.*\n\n## Clickable images\n\nAny image in a content column can now act as a link, so a book cover, a poster or\na thumbnail can take the reader straight to the relevant page.\n\nTo set one up, edit the page, click Edit on the column with the image and fill in\nthe new \"Link when clicked\" box with either a page on this site, written as its\npath such as publications/the-wealdway, or a full web address. Fill in Alt Text\nwith a short description of the image; this is read aloud by screen readers and\nshown if the image ever fails to load. If you want the image on its own as a\nclickable tile with no caption underneath, simply leave the text box empty.\n\nPages that already hold the link inside the column's caption text keep working\nwithout any change: the image uses the first link in the text and takes its alt\ntext from the wording of that link. Moving the link into the \"Link when clicked\"\nbox and clearing the text just gives the tidier image-only tile. Image links are\nswitched off while you are editing, so clicking an image still selects it for\nediting rather than navigating away.\n\nYou can try this on the Kent group's website. At the foot of the [Saxon Shore Way walk](https://www.kent.ngx-ramblers.org.uk/walks/routes/long-distance-paths/saxon-shore-way) sit the four walking-guide covers shown below, each one a link straight to its guide. Give one a click.\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/b6dda3e8-353c-4eb6-b2bb-f9d25ba7131d.png)\n\n*The four guide covers at the foot of a Kent walk page. They come from the shared \"four popular walking guides\" fragment, and each cover is a clickable link to its guide.*\n\n## For administrators\n\nSearch needs no configuration. The first time anyone searches, the site builds a\nsearch index in memory and later searches are instant; the index refreshes itself\nwithin thirty minutes of a change, on the next search, so new and edited content\nbecomes findable with no manual step. The \"Site map\" link in the footer is added\nautomatically by a database migration when this release is deployed to an\nenvironment.\n\n## For developers\n\nThe search index covers pages, walks and events with relevance ranking,\nexact-phrase support and markdown-aware snippets, served through the public\n/api/database/search endpoints, alongside a /site-map endpoint and the\nfooter-link migration. The client adds a header search component, a /search\nresults page, a /site-map page, a \"Link when clicked\" field on the image column\neditor and clickable images in dynamic content. Shared, dependency-free string\nhelpers (plainText, isQuoted, unquote, firstLinkHref, firstLinkText) are used by\nboth client and server and covered by unit tests, and the search matching logic\nlives in its own tested module.","contentHtml":"<h1>14-Jun-2026 — full-text site search, site map page and clickable images <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/203\">ref #203</a></h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/actions/runs/27507227911\">build 694</a> — <a href=\"https://github.com/nbarrett/ngx-ramblers/commit/248f234f65246fd7639271a211d3801aaf41b118\">commit 248f234</a></h2>\n<hr>\n<p>This release adds three things to every NGX-Ramblers site: a search you can reach\nfrom anywhere in the header, a browsable site map, and the ability to turn any\ncontent image into a clickable link.</p>\n<h2>Searching the site</h2>\n<p>Click the magnifying glass in the header, next to the group logo, and a search\npanel opens across the width of the page. Start typing and results appear as you\ngo, grouped under Pages, Walks and Events with a count beside each heading. Every\nresult shows its title, where it sits in the site and a short snippet with your\nwords highlighted; click one to go straight there, or step through them with the\narrow keys and press Enter.</p>\n<p>Search covers the whole site by default. When you open it while reading a\nparticular section, a second choice appears under &quot;Search in:&quot; offering that\nsection and everything below it, so you can narrow down to the part of the site\nyou are in. As soon as you type more than one word a &quot;Match&quot; choice also appears:\n&quot;Any words&quot; finds anything containing at least one of your words and ranks the\nfullest matches first, while &quot;Exact phrase&quot; finds only the pages where your words\nappear together. You can force an exact phrase at any time by wrapping it in\ndouble quotes. When the box is empty your last few searches are offered, so you\ncan repeat one with a single click.</p>\n<p>Choosing &quot;View all results&quot;, or pressing Enter, opens the full search page with\neverything grouped by type and the same choices along the top. The page records\nyour search in its web address, so a search can be bookmarked or sent to another\ncommittee member and it reopens exactly as you left it. Throughout, the access\nlevels set on the content are respected: people who are not logged in only find\npublic content, and members only find what their login allows.</p>\n<p>Want to try this yourself? The examples below were all run from the Kent group&#39;s Publications page at <a href=\"https://www.kent.ngx-ramblers.org.uk/publications\">www.kent.ngx-ramblers.org.uk/publications</a>. Open that page, click the magnifying glass in the header, and run the same searches: because you start inside Publications, you can compare searching the whole site against just that section.</p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/7fb214ad-328e-4442-89bf-747bee722de5.jpeg\" alt=\"\"></p>\n<p><em>Searching &quot;solar array&quot; across the Whole site with Any words: 24 matches, Annual Review articles and walks alike.</em></p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/eef88281-16e8-4675-b5e1-6df1b39d740e.png\" alt=\"\"></p>\n<p><em>The same search switched to &quot;Publications and below&quot;: narrowed to the 8 results within that section.</em></p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/4e7eaa5d-59d0-4a11-a6b0-57444c449991.png\" alt=\"\"></p>\n<p><em>&quot;solar array&quot; as an Exact phrase: just the single page where the two words sit together.</em></p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/0ba37732-dffe-4994-8e7d-ceaa4784b831.png\" alt=\"\"></p>\n<p><em>Adding a word widens an Any-words search: &quot;solar array farm&quot; matches 751 pages because &quot;farm&quot; is common.</em></p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/2b42237d-cdde-4455-819d-17967b30dc08.png\" alt=\"\"></p>\n<p><em>The same words as an Exact phrase: nothing uses that exact wording, so no results.</em></p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/24f145b5-0e80-4cb7-82ce-3b8e324d2cd6.png\" alt=\"\"></p>\n<p><em>When the search box is empty, your recent searches are listed so you can pick one up again with a single click.</em></p>\n<h2>The site map</h2>\n<p>A new Site map page gives a bird&#39;s-eye view of the whole site. Each top-level\nsection appears as a card showing how many pages it holds and a short preview of\nwhat is inside; expand a card to open a tree of every page beneath it, right down\nto the deepest level, and use the filter box to jump to a page by name. It is\nreached from the &quot;Site map&quot; link in the footer, or directly at /site-map, and\nlike search it only shows the pages a visitor is allowed to see.</p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/ac47fcbb-0905-4ddb-9ceb-36c78160edf2.png\" alt=\"\"></p>\n<p><em>The Site map page lists every section as a card, with its page count and a preview of what is inside.</em></p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/eff41fbb-7819-4fe6-81e2-52fbd9cc99bb.png\" alt=\"\"></p>\n<p><em>Expand a card to drill down through the full tree of pages, right to the deepest level, and open any of them.</em></p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/568cc06a-8a70-4cfb-b00c-a707257df7a0.png\" alt=\"\"></p>\n<p><em>Type in the filter box to jump straight to a page by name; matches are highlighted wherever they sit in the tree.</em></p>\n<h2>Clickable images</h2>\n<p>Any image in a content column can now act as a link, so a book cover, a poster or\na thumbnail can take the reader straight to the relevant page.</p>\n<p>To set one up, edit the page, click Edit on the column with the image and fill in\nthe new &quot;Link when clicked&quot; box with either a page on this site, written as its\npath such as publications/the-wealdway, or a full web address. Fill in Alt Text\nwith a short description of the image; this is read aloud by screen readers and\nshown if the image ever fails to load. If you want the image on its own as a\nclickable tile with no caption underneath, simply leave the text box empty.</p>\n<p>Pages that already hold the link inside the column&#39;s caption text keep working\nwithout any change: the image uses the first link in the text and takes its alt\ntext from the wording of that link. Moving the link into the &quot;Link when clicked&quot;\nbox and clearing the text just gives the tidier image-only tile. Image links are\nswitched off while you are editing, so clicking an image still selects it for\nediting rather than navigating away.</p>\n<p>You can try this on the Kent group&#39;s website. At the foot of the <a href=\"https://www.kent.ngx-ramblers.org.uk/walks/routes/long-distance-paths/saxon-shore-way\">Saxon Shore Way walk</a> sit the four walking-guide covers shown below, each one a link straight to its guide. Give one a click.</p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/b6dda3e8-353c-4eb6-b2bb-f9d25ba7131d.png\" alt=\"\"></p>\n<p><em>The four guide covers at the foot of a Kent walk page. They come from the shared &quot;four popular walking guides&quot; fragment, and each cover is a clickable link to its guide.</em></p>\n<h2>For administrators</h2>\n<p>Search needs no configuration. The first time anyone searches, the site builds a\nsearch index in memory and later searches are instant; the index refreshes itself\nwithin thirty minutes of a change, on the next search, so new and edited content\nbecomes findable with no manual step. The &quot;Site map&quot; link in the footer is added\nautomatically by a database migration when this release is deployed to an\nenvironment.</p>\n<h2>For developers</h2>\n<p>The search index covers pages, walks and events with relevance ranking,\nexact-phrase support and markdown-aware snippets, served through the public\n/api/database/search endpoints, alongside a /site-map endpoint and the\nfooter-link migration. The client adds a header search component, a /search\nresults page, a /site-map page, a &quot;Link when clicked&quot; field on the image column\neditor and clickable images in dynamic content. Shared, dependency-free string\nhelpers (plainText, isQuoted, unquote, firstLinkHref, firstLinkText) are used by\nboth client and server and covered by unit tests, and the search matching logic\nlives in its own tested module.</p>\n"}