Skip to content

2.8.9#3419

Merged
magicbug merged 32 commits intomasterfrom
dev
Mar 12, 2026
Merged

2.8.9#3419
magicbug merged 32 commits intomasterfrom
dev

Conversation

@magicbug
Copy link
Copy Markdown
Owner

No description provided.

dependabot bot and others added 30 commits January 21, 2026 23:03
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [qs](https://github.com/ljharb/qs) from 6.14.1 to 6.14.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.14.1...v6.14.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Adds migration 251_add_ft2_submode.php which inserts a new 'FT2' submode under mode 'MFSK' into the adif_modes table (qrgmode='DATA', active=1) if it doesn't already exist, and provides a down() to remove it. Also bumps application migration_version to 251. Note: FT2 is not part of the ADIF spec yet.
…-4.17.23

Bump lodash from 4.17.21 to 4.17.23
Fixes a bug where the wrong array key was checked when determining if an eQSL was received. The code previously used $record['qsl_sent']; it now checks $record['eqsl_qsl_rcvd'] to set $qsl_rcvd (or an empty string) using config['eqsl_rcvd_mark'], ensuring imports correctly mark received eQSLs.
Introduce public Station Diary functionality: add global config flag, routes, controller, model changes, views and DB migrations. New migrations (252-254) add is_public/include_qso_summary, diary_images table and logbook_id on notes. Notes model updated to handle public flags, diary images, qso summaries, caching (per-user cache version), and helper methods for listing/counting public diary entries. New Stationdiary controller serves paginated public pages and RSS feed with caching. Notes controller updated to handle image uploads, attach images to diary entries, and provide an AJAX endpoint to delete images. Views updated to support public visibility options, logbook selector, image upload UI and Quill editor assets; routes and migration version bumped accordingly. Includes file upload example added to uploads/diary.
Add numeric band sorting in Note model and make logbook selection required when including a QSO summary. Note model: select COL_BAND+0 as band_num and order by band_num to ensure proper numeric ordering. Views (notes/add, notes/edit, view_log/index): update labels and placeholder option text, mark the logbook <select> as required, adjust helper text, and add JS to toggle the required attribute and visibility based on the "Include QSO summary" checkbox (including setting initial state for validation).
Add a dedicated footer message container and client-side logic to mirror form messages into the modal footer. Removed the `required` attribute from the quick logbook select, introduced `#diaryFormFooterMessages`, and added a MutationObserver + htmx:afterSwap listener to copy content from `#diaryFormMessages` to the footer. Also consolidated error rendering into a single HTML snippet and clear both message areas when the modal closes. This surfaces HTMX/server messages in the modal footer for better visibility and avoids duplicated message handling.
Controller: pass a 'feed_url' value into the RSS view (site_url for the feed). RSS view: compute the current request URL (respecting HTTPS) and use it for the atom:link self href. Public view: load Google Fonts (Merriweather & Lora), add preconnect hints, switch typography to the new fonts, increase line-height and adjust font-weights/sizes for headings and body to improve readability.
Introduce Public Station Diary feature and QSO filtering support.

- Add migrations: 255 adds public_station_diary_enabled option (default enabled), 256 adds qso_date_start, qso_date_end, qso_satellite_only columns to notes.
- Bump migration version to 256.
- Add controller actions (Options::public_diary, public_diary_save) and new options view to manage the public diary setting; add sidebar link.
- Extend Note model to persist QSO filter fields and provide new methods to fetch QSO lists/summaries for date ranges and satellite-only filtering; wire filter usage into summary generation.
- Update notes add/edit views to include QSO Summary Filters (date range + satellite-only).
- Add translations for the new options keys across multiple language files.
- Update public station diary listing view styling/path and minor content cleanup; other views updated to support feature.
- Remove obsolete cache files (.htaccess, index.html).

These changes enable admins to toggle a public station diary and let note authors control which QSOs are included in summaries via date ranges and SAT-only filtering.
Moved the <hr> divider into the QSO summary conditional so the rule is rendered only when include_qso_summary is true and qso_summary.total_qsos > 0. This prevents an empty divider from appearing when no QSO summary is present.
Only output the diary <hr> divider when the entry has content to separate: either include_qso_summary is enabled and qso_summary.total_qsos > 0, or the entry has images. This avoids showing an unnecessary rule for empty entries and includes a small whitespace cleanup.
Add a closing </article> and adjust the surrounding conditionals so the pagination nav is rendered outside the entry loop. This fixes HTML nesting and ensures the HR/summary/images remain part of each entry while pagination appears once below the list in the station diary public index view.
Support inline diary images via shortcodes and improve notes UI. Introduces a Note::process_image_shortcodes() method (ID/caption lookup and modifiers like left/right/center/small/medium/large), and updates station diary rendering to process shortcodes and avoid duplicate image output. Adds an AJAX endpoint notes/update_image_caption with ownership checks to save image captions, plus client-side JS to edit/save captions from the note edit view. Refactors notes add/edit views: reorganized form into sections/accordion, Quill editor min-height, image upload tips, improved buttons and layout, and QSO summary layout tweaks.
Strip empty <p><br></p> tags and remove stray <br> between paragraphs in station diary views. public_index.php: after processing image shortcodes, remove empty paragraph placeholders and collapse <br> placed between </p> and <p>. rss.php: process image shortcodes for each entry (using $entry->images ?? []), clean the note content the same way, and output the cleaned content in the RSS <description>. This prevents extraneous blank lines and redundant breaks in rendered HTML and RSS feeds.
Extend image shortcode parsing to accept multiple colon-separated modifiers (e.g. [image:ID:left:small]). Updated the regex to capture optional modifier strings and renamed the variable to $modifierString. Modifiers are split and processed so alignment (left/right/center) and size (small/medium/large) can be applied together; alignment sets wrapper classes and a default max-width only if not already set, while size modifiers set explicit max-widths. Minor refactor preserves existing behavior and tracks used image IDs.
Load and render station diary images inline and separately, and make cache handling more robust. Notes controller: load diary_images for print view and invalidate public diary cache when an image caption is updated. Stationdiary controller: include a render-version token in the public diary cache key to force re-renders when markup changes. Note model: make touch_public_diary_cache_version more resilient (unique value, fallback to file_put_contents and cache clean), add invalidate_public_diary_cache_for_note helper, and enhance process_image_shortcodes to handle encoded brackets, tolerant shortcode spacing, modifiers (alignment and size) with deterministic styling, and return used image ids. Views: update station_diary_print and note view to process shortcodes, remove empty paragraph artifacts, show inline images via shortcodes, and display remaining images with captions and improved print CSS.
When a QSO is a satellite contact (PROP_MODE 'SAT' or COL_SAT_NAME present), display the satellite name (or 'SAT' if no name) in the Band column instead of the RF band. Changes apply to both server-side PHP rendering and the client-side JS template, with existing fallbacks ('-' when no band) and HTML-escaping preserved for safety.
Update Note model SELECT lists to include COL_PROP_MODE, COL_SAT_NAME and COL_SAT_MODE so propagation and satellite metadata are returned for single-day and date-range queries in application/models/Note.php.
Add support for viewing individual public Station Diary entries. Adds a new route for /station-diary/:callsign/entry/:id, a Stationdiary::entry controller method with caching (per-call sign + entry + cache version, 86400s TTL), and a Note model method get_public_station_diary_entry() that loads images and optional QSO summaries/lists. Update public_index view to link entry titles to their permalink and include entry IDs in article IDs, and update RSS feed to use the entry permalink/guid. Also include small CSS tweaks for entry title links.
Add handling for public QSO datetime formatting and single-entry sharing. Introduce get_public_qso_datetime_format() in Stationdiary controller (defaults and appends time if missing) and pass qso_datetime_format, is_single_entry and current_entry_permalink to the public view. Update Note model to select and return user_date_format from auth table so user preferences flow through. Update public_index view to use the public QSO datetime format for QSO rows and add social share buttons (Facebook, X, Bluesky) when viewing a single entry.
Add a fallback in Note::process_image_shortcodes to treat numeric identifiers as 1-based positions into the $images array when no image was found by earlier lookups. Validates the position is within range and converts it to zero-based indexing, enabling shortcodes like [image:1] to reference the first image.
Introduce a reactions feature for public station diary entries. Adds a migration to create station_diary_reactions with indexes and a unique (diary_id, visitor_hash) constraint; bumps migration version to 257 and registers a new route for /entry/:id/react. Controller: implements visitor token/hash creation, a react() endpoint to accept POSTed reactions (like, love, fire), increments/updates reactions, invalidates cache and returns totals and visitor reaction. Model: new methods to get totals, fetch visitor reaction and save/update reactions. View: UI, styles and client-side JS for reaction buttons, counts, and copy/share enhancements; integrates totals and visitor state into the single-entry view.
Update image processing for uploads to improve optimization: set quality to 70%, change master_dim to auto, and target a max dimension of 1080x1080. Add logic to only resize when an image exceeds 1080px on any side while still reprocessing (calling resize) for compression even when dimensions are within limits. Minor formatting/cleanup of image library initialization.
Add interactive QSO map support for public station diary entries. Controller: add stationdiary::get_qso_map_data() to return JSON map data for a given entry/date range/logbook with station location. Models: Note::get_public_entry_user_id() to resolve the entry owner; Logbook_model: get_qsos_for_public_map() to query QSOs for the map, set a default stn_loc fallback, and skip markers with invalid 0,0 coordinates. View: public_index.php includes Leaflet CSS/JS, a Show/Hide QSO Map toggle, map container per entry, client-side map initialization and marker/popups loaded via POST to the new endpoint. These changes ensure public diary entries can display QSO locations and the station marker while avoiding bogus markers and limiting results to the correct user/logbook context.
Add comprehensive Quill .ql-editor CSS (typography, spacing, headings, lists, blockquotes, pre/code, tables, images, links, hr) to notes/add.php, notes/edit.php and view_log/index.php to improve editor and rendered content readability and ensure consistent styling. Note: the inserted CSS in notes/edit.php appears to have a missing/ mis-nested closing brace which may break the stylesheet and should be corrected.
Enhance created_at parsing to accept date-only inputs (YYYY-MM-DD). If only a date is provided, append a time part: reuse the existing note's time if available and valid, otherwise use the current time. For other input formats, attempt to parse with strtotime and normalize to Y-m-d H:i:s. All stored values are xss_clean()-sanitized and invalid/unparsable inputs are ignored.
AMSAT has decided to change value names so this fixes it
Bump migration_version to 258 and add Migration_tag_2_8_9. The migration sets the stored app version to 2.8.9, resets users' 'version_dialog' confirmed flag to false to trigger the version info dialog, and includes a down() to revert the stored version to 2.8.8.
@magicbug magicbug merged commit c315baa into master Mar 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant