<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/public, branch erdgeist-revive-events</title>
<subtitle>[no description]</subtitle>
<id>https://erdgeist.org/gitweb/cccms/atom?h=erdgeist-revive-events</id>
<link rel='self' href='https://erdgeist.org/gitweb/cccms/atom?h=erdgeist-revive-events'/>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/'/>
<updated>2026-06-30T15:29:12Z</updated>
<entry>
<title>Replace installing click event handler with non-jquery code</title>
<updated>2026-06-30T15:29:12Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-30T15:22:20Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=fe00d5bb8e872535149d2d7017b59ad28813e012'/>
<id>urn:sha1:fe00d5bb8e872535149d2d7017b59ad28813e012</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace Shadowbox with GLightbox, drop jQuery from public site</title>
<updated>2026-06-30T15:29:12Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-30T15:11:32Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=3e87925a35f73aa2261eb66df3ef4ca11b64eeea'/>
<id>urn:sha1:3e87925a35f73aa2261eb66df3ef4ca11b64eeea</id>
<content type='text'>
Vendors GLightbox 3.3.1 (MIT, dependency-free) as static files in
public/javascripts and public/stylesheets, replacing the Shadowbox
2009 vendor tree and its jQuery adapter. Public site no longer loads
jQuery at all.

- app/views/layouts/application.html.erb: swap Shadowbox script/style
  includes and the public_bundle (jQuery) include for GLightbox's
  CSS/JS
- app/views/content/_headline_image.html.erb: headline image is now
  itself a GLightbox trigger; additional images are direct
  a.glightbox links sharing a per-page data-gallery group, replacing
  the hidden shadowbox_images div and its click-forwarding trigger
- public/javascripts/public.js: replace Shadowbox.init/setup and the
  click-forwarding handler with a single GLightbox() init call;
  remove the unused image_handler object
- Remove public/javascripts/shadowbox/ (including vendored Sizzle,
  swfobject, and unused video/Flash players) and
  public/stylesheets/shadowbox.css
- Remove app/assets/javascripts/public_bundle.js (jquery require)
</content>
</entry>
<entry>
<title>Unify jQuery: serve public site jQuery via asset pipeline</title>
<updated>2026-06-30T15:29:12Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-30T02:58:37Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=b97466cdfbcb5b02d4eaf38661c051d1a095838e'/>
<id>urn:sha1:b97466cdfbcb5b02d4eaf38661c051d1a095838e</id>
<content type='text'>
Remove vendored jquery-1.3.2.min.js, jquery-ui-1.7.2.custom.min.js,
and the unreferenced duplicate jquery.hotkeys.js from public/javascripts/.

Public layout now loads jQuery via a small public_bundle.js manifest
through the asset pipeline, same mechanism already used for the admin
interface (admin_bundle.js). This brings the public site from jQuery
1.3.2 (2009) to the current jquery-rails-provided version (3.7.x).

Shadowbox's jQuery adapter (shadowbox-jquery.js) only uses stable APIs
(.css, .remove, .bind, .unbind, .append, .extend) unchanged across this
version span. Verified by manual click-test: gallery image opens,
displays, and dismisses correctly.

public.js required no changes — all jQuery APIs used
(.ready, .bind, .trigger, .length) are stable across versions.
</content>
</entry>
<entry>
<title>Improve admin search overlay layout and behaviour</title>
<updated>2026-06-30T01:44:44Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-30T01:36:51Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=97f51a73d4a2e7fb42ccf1107abf07e985cfa13a'/>
<id>urn:sha1:97f51a73d4a2e7fb42ccf1107abf07e985cfa13a</id>
<content type='text'>
- Widen overlay (300px -&gt; min(520px, 90vw)), centre instead of
  hardcoded left:400px, so it scales from mobile to desktop
- Split title and unique_name into separate JSON fields and DOM
  elements; two-line result layout (bold title, small grey
  monospace path) instead of "Title (path)" wrapping awkwardly
- Add small margin between title and path line
- Fix event handler stacking: keyup/escape/outside-click handlers
  were being rebound on every display_toggle call. Moved all
  bindings to initialize(), display_toggle() now only shows/hides
- Switch search input from keyup to input event, catching paste
  and cut via mouse which keyup misses
- Add Escape key and outside-click to dismiss the overlay
- Stop clearing search box and results on close; reopening now
  preserves prior search, matching standard search UI behaviour
- Link search results to node_path instead of edit_node_path,
  since opening edit auto-locks the node
- Add "press Enter to see all results" hint in dropdown
- Disable browser autocomplete on search input
</content>
</entry>
<entry>
<title>Remove debug output for admin search</title>
<updated>2026-06-29T02:40:24Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-29T02:40:02Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=efc802b22eae15de5fc18465182628e379caf099'/>
<id>urn:sha1:efc802b22eae15de5fc18465182628e379caf099</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Restore and improve admin node search</title>
<updated>2026-06-29T02:30:22Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-29T02:28:55Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=191a77b2f7c280e00f7348507c13a173c704fcf9'/>
<id>urn:sha1:191a77b2f7c280e00f7348507c13a173c704fcf9</id>
<content type='text'>
- Admin search broke when routing-filter was removed: hardcoded /admin/search
and /admin/menu_search URLs in admin_search.js no longer matched the
locale-scoped routes. Fix by emitting locale-aware URLs from the layout
as JS variables.

- Also fixes form submission (POST -&gt; GET, missing = on form_tag), jQuery
.attr("value") -&gt; .val() for typeahead input reading, and template name
for Rails 8 compatibility.

- Adds a visible "search" link to the admin menu so editors can discover
the feature without knowing the Alt+F shortcut. Search results now show
node path alongside title and link directly to the edit view.

Named route admin_menu_search added to routes.rb.
</content>
</entry>
<entry>
<title>Fix tag list rendering in node editor</title>
<updated>2026-06-28T14:37:20Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-28T02:56:08Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=c96fbbb701ec97f9f6c69ca0d51ed3cd895b260e'/>
<id>urn:sha1:c96fbbb701ec97f9f6c69ca0d51ed3cd895b260e</id>
<content type='text'>
tag_list.to_s produces space-separated output which acts-as-taggable-on
13.0.0 (comma delimiter only) treats as a single tag on re-save.
Use join(', ') to render comma-separated tags in the input field.
</content>
</entry>
<entry>
<title>Stage 7 click-testing fixes</title>
<updated>2026-06-27T19:14:48Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-27T19:14:48Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=a627a650fda4e22107245a3269465347bb778258'/>
<id>urn:sha1:a627a650fda4e22107245a3269465347bb778258</id>
<content type='text'>
- aggregate: switch to shortcode syntax [aggregate ...]; fix paragraph
  wrapping by excising the shortcode and its surrounding &lt;p&gt; before
  sanitize, concatenating collection output outside sanitized content
- page.rb: remove aggregate XML unwrapping from rewrite_links_in_body
  (no longer needed with shortcode approach)
- rss builders: explicit CGI.escapeHTML on title/abstract; Builder 3.3.0
  does not escape when target buffer is html_safe (ActionView default)
- tinymce: disable menubar and promotion nag; add code plugin, remove
  paste plugin (built into TinyMCE 8 core); configure via admin_interface.js
  directly (config/tinymce.yml affects tinymce() helper only, not tinymce.init)
</content>
</entry>
<entry>
<title>Stage 7: Rails 7.2 → 8.1 on Ruby 3.2.11</title>
<updated>2026-06-27T14:58:53Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-27T14:58:53Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=420506e58fdfc84f1a5bede0a01dedf0af3bb4f3'/>
<id>urn:sha1:420506e58fdfc84f1a5bede0a01dedf0af3bb4f3</id>
<content type='text'>
- Bump Rails to 8.1.3 (Ruby unchanged at 3.2.11, new gemset rails8-upgrade)
- config.load_defaults 8.1; merge app:update diffs for all environment files
- Remove routing-filter 0.7.0; replace with native scope '(:locale)' in
  routes.rb and default_url_options in ApplicationController
- Delete config/initializers/routing_filter_rails71_patch.rb
- Replace vendored TinyMCE 3.x (~200 files) with tinymce-rails ~&gt; 8.3;
  migrate admin_interface.js from jQuery .tinymce()/advanced theme to
  tinymce.init(); add config/tinymce.yml; note: TinyMCE 7+ is GPL
- rails-i18n ~&gt; 8.0 added explicitly (previously indirect dependency)
- awesome_nested_set, acts-as-taggable-on pinned to git main/master
  (gemspec activerecord &lt; 8.1 ceiling; no functional incompatibility;
  repin to version once upstream releases updated gemspecs)
- globalize ~&gt; 7.0, libxml-ruby ~&gt; 5.0, nokogiri ~&gt; 1.18, pg ~&gt; 1.5
- sass-rails, coffee-rails, uglifier moved from :assets group to main
  (Sprockets 4 convention; :assets group no longer meaningful)
- Node: head, draft, lock_owner marked belongs_to optional: true
- Page: node, user, editor marked belongs_to optional: true
- Static assets in public/images/ and public/javascripts/ referenced via
  plain HTML tags; Rails 8 load_defaults raises on pipeline helpers for
  undeclared assets
- sessions_controller_test.rb: remove stale require and dead rescue_action
- users_controller_test.rb: assert button[type=submit] not input[type=submit]
  (Rails 8 button_to renders &lt;button&gt; not &lt;input&gt;)
- test_helper.rb: node.reload after children.create! (awesome_nested_set
  3.9.0 does not refresh parent in memory after callback)
- 129 runs, 339 assertions, 3 failures, 0 errors — identical baseline to 7.2
</content>
</entry>
<entry>
<title>Stage 6 click-testing fixes and production setup</title>
<updated>2026-06-27T00:39:55Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-27T00:39:55Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=b4f850e97aeb12369399d8e1ab354f66d3b88e40'/>
<id>urn:sha1:b4f850e97aeb12369399d8e1ab354f66d3b88e40</id>
<content type='text'>
- file_attachment.rb: delete old upload directory before writing replacement
  files; fixes orphaned variants when filename or mime type changes
- assets/edit.html.erb: add file upload field and current file display;
  the form was previously empty and non-functional
- admin.css: fix button_to hover styling; buttons now show orange hover
  to signal interactivity
- test/controllers/users_controller_test.rb: assert input[type=submit]
  not anchor tag for destroy action (button_to change)
- test/test_helper.rb: add I18n.locale reset in setup block
- doc/rc.d_cccms: fix cccms_chdir, add start_precmd for log/pid dirs,
  PATH export for bash wrapper, user/pid/tcp_nopush unicorn fixes
- doc/INSTALL.md: new installation guide covering all non-obvious steps
- Remove parked search migration from doc/ (now in db/migrate/)
</content>
</entry>
</feed>
