{"id":"68fe9817d85440d4c403ed8f","title":"2025 10 11","path":"how-to/committee/release-notes/2025-10-11","contentMarkdown":"# 11th October 2024 — Content management enhancements [#65](https://github.com/nbarrett/ngx-ramblers/issues/65)\n## [build 333](https://github.com/nbarrett/ngx-ramblers/actions/runs/18823789797) ([6730c2a](https://github.com/nbarrett/ngx-ramblers/commit/6730c2a))\n\n## Markdown Formatting Toolbar Added\n- In site edit mode, when any text item is edited, a formatting toolbar is now displayed above the text area as shown in the screenshot below. The purpose of the toolbar is to help users apply formatting to text without having to remember all of the markdown codes: \n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/afc91ec0-28e2-402c-8f45-48404f295f9b.jpeg)\n\n**Key to toolbar buttons:**\n \n**↻ (Revert)** — Undoes all changes and reverts content back to the last saved version\n\n**H (Heading)** — Make selection a Heading: Dropdown menu to convert selected text to Heading 1-6\n\n **B (Bold)** — Make selection Bold: Wraps selected text in **bold** markdown syntax\n \n**I (Italic)** — Make selection Italic: Wraps selected text in _italic_ markdown syntax\n \n**<> (Code)** — Make selection Code: Wraps selected text in `code` markdown syntax for inline code\n\n **\" (Quote Right)** — Make selection a Quotation: Adds >  prefix to selected lines to create a blockquote\n \n**• (List Unordered)** — Make selection a Bulleted List: Adds -  prefix to selected lines to create a bulleted list\n \n**1. (List Ordered)** — Make selection a Numbered List: Adds 1.  (2., 3., etc.) prefix to selected lines to create a numbered list\n \n**🔗 (Link)** — Make selection a Link: Converts selection to [selection](https://ngx-ramblers.org.uk/url) markdown link format (auto-detects URL from clipboard if available)\n\n**✂ (Scissors)** — Split text into new row below: Splits content at cursor or selection into a new row below the current one\n\n **🖼 (Image)** — Convert content into rows: Appears only when markdown images are detected in the content; converts markdown with images into multiple separate rows\n\n## Drag and Drop\nColumns and rows can now be dragged one one location to another by clicking on the drag anchor to the right of the frame text: \n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/6a754d38-df4d-4bb5-afe5-a355e5c8d3f3.jpeg)\n\n- Column drag also works within nested rows\n- Column drop targets support before/after via half-split hover with tooltip\n- Realtime tooltips provide feedback as to the destination from the potential drop operation\n\n## Shared Fragments\nA Shared Fragment is a piece of content defined once, and then referenced any number of times from other pages. An example of a use for Shared Fragments is to provide a consistent navigation back to a parent page, or embedding repeating content on many pages.  \n- To create a Shared Fragment,  when one or more rows are selected, a new **Row Actions** section appears above the top-most selected row:\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/602e78e8-906a-498a-80bf-4fec3b3cfbb7.jpeg)\n\n\n- Once a shared fragment has been created it can then be included in any other page by creating  new row of type **Shared Fragment** and selecting it from a dropdown: \n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/24b9be7c-babc-41d5-851a-2668d0ab749b.jpeg)\n\n\n\n-  A Shared Fragment can be added to both a normal row and also within a nested Row\n- Shared Fragments can be viewed and edited from the `/admin/fragment-index` page along with their usages.\n\n## Paste Image Flow\n- Pasting an image into Image Source triggers inline editor with preload\n- Auto-generate original filename as '<date and time> pasted content.<ext>' (const + ternary)\n- Fix alert showing 'null'; initial crop triggers controls\n- Preserve HEIC conversion and AWS naming flow on save\n\n","contentHtml":"<h1>11th October 2024 — Content management enhancements <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/65\">#65</a></h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/actions/runs/18823789797\">build 333</a> (<a href=\"https://github.com/nbarrett/ngx-ramblers/commit/6730c2a\">6730c2a</a>)</h2>\n<h2>Markdown Formatting Toolbar Added</h2>\n<ul>\n<li>In site edit mode, when any text item is edited, a formatting toolbar is now displayed above the text area as shown in the screenshot below. The purpose of the toolbar is to help users apply formatting to text without having to remember all of the markdown codes:</li>\n</ul>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/afc91ec0-28e2-402c-8f45-48404f295f9b.jpeg\" alt=\"\"></p>\n<p><strong>Key to toolbar buttons:</strong></p>\n<p><strong>↻ (Revert)</strong> — Undoes all changes and reverts content back to the last saved version</p>\n<p><strong>H (Heading)</strong> — Make selection a Heading: Dropdown menu to convert selected text to Heading 1-6</p>\n<p> <strong>B (Bold)</strong> — Make selection Bold: Wraps selected text in <strong>bold</strong> markdown syntax</p>\n<p><strong>I (Italic)</strong> — Make selection Italic: Wraps selected text in <em>italic</em> markdown syntax</p>\n<p><strong>&lt;&gt; (Code)</strong> — Make selection Code: Wraps selected text in <code>code</code> markdown syntax for inline code</p>\n<p> <strong>&quot; (Quote Right)</strong> — Make selection a Quotation: Adds &gt;  prefix to selected lines to create a blockquote</p>\n<p><strong>• (List Unordered)</strong> — Make selection a Bulleted List: Adds -  prefix to selected lines to create a bulleted list</p>\n<p><strong>1. (List Ordered)</strong> — Make selection a Numbered List: Adds 1.  (2., 3., etc.) prefix to selected lines to create a numbered list</p>\n<p><strong>🔗 (Link)</strong> — Make selection a Link: Converts selection to <a href=\"https://ngx-ramblers.org.uk/url\">selection</a> markdown link format (auto-detects URL from clipboard if available)</p>\n<p><strong>✂ (Scissors)</strong> — Split text into new row below: Splits content at cursor or selection into a new row below the current one</p>\n<p> <strong>🖼 (Image)</strong> — Convert content into rows: Appears only when markdown images are detected in the content; converts markdown with images into multiple separate rows</p>\n<h2>Drag and Drop</h2>\n<p>Columns and rows can now be dragged one one location to another by clicking on the drag anchor to the right of the frame text: </p>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/6a754d38-df4d-4bb5-afe5-a355e5c8d3f3.jpeg\" alt=\"\"></p>\n<ul>\n<li>Column drag also works within nested rows</li>\n<li>Column drop targets support before/after via half-split hover with tooltip</li>\n<li>Realtime tooltips provide feedback as to the destination from the potential drop operation</li>\n</ul>\n<h2>Shared Fragments</h2>\n<p>A Shared Fragment is a piece of content defined once, and then referenced any number of times from other pages. An example of a use for Shared Fragments is to provide a consistent navigation back to a parent page, or embedding repeating content on many pages.  </p>\n<ul>\n<li>To create a Shared Fragment,  when one or more rows are selected, a new <strong>Row Actions</strong> section appears above the top-most selected row:</li>\n</ul>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/602e78e8-906a-498a-80bf-4fec3b3cfbb7.jpeg\" alt=\"\"></p>\n<ul>\n<li>Once a shared fragment has been created it can then be included in any other page by creating  new row of type <strong>Shared Fragment</strong> and selecting it from a dropdown:</li>\n</ul>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/24b9be7c-babc-41d5-851a-2668d0ab749b.jpeg\" alt=\"\"></p>\n<ul>\n<li>A Shared Fragment can be added to both a normal row and also within a nested Row</li>\n<li>Shared Fragments can be viewed and edited from the <code>/admin/fragment-index</code> page along with their usages.</li>\n</ul>\n<h2>Paste Image Flow</h2>\n<ul>\n<li>Pasting an image into Image Source triggers inline editor with preload</li>\n<li>Auto-generate original filename as &#39;<date and time> pasted content.<ext>&#39; (const + ternary)</li>\n<li>Fix alert showing &#39;null&#39;; initial crop triggers controls</li>\n<li>Preserve HEIC conversion and AWS naming flow on save</li>\n</ul>\n"}