Commit graph

99 commits

Author SHA1 Message Date
Peter Goodhall
4fe8ca4093 Handle AMSAT override for OscarWatch
Add a persisted `force_amsat` OscarWatch user option, expose it on the user edit form, and keep the AMSAT upload setting in sync when OscarWatch status uploads are enabled. The controller now defaults unchecked values correctly and shows a notice when OscarWatch disables direct AMSAT uploads or when the override keeps both enabled.
2026-08-04 13:15:01 +01:00
Peter Goodhall
9e1b10169e Add OscarWatch status upload controls
Adds full user-setting support for OscarWatch SAT status uploads: new per-user `status_upload` option initialization, save/load wiring, and session hydration. The user edit page now includes an enable/disable selector plus a “Test Token” action that calls a new `validate_oscarwatch_token` controller endpoint to verify tokens against OscarWatch and return clear JSON status messages. Logbook SAT upload logic is updated so AMSAT and OscarWatch uploads are handled independently based on their respective user toggles.
2026-08-03 14:51:19 +01:00
Peter Goodhall
8e0e28cd84 Add OscarWatch SAT status upload support
This adds optional OscarWatch integration for SAT QSOs: users can store an OscarWatch API token in account settings, and Cloudlog now reports SAT status uploads to OscarWatch alongside AMSAT uploads when enabled. It includes payload building, mode remapping for common satellites/modes, timestamp/grid handling, and error logging for failed submissions. The edit flow was also updated to load/save these options for the correct edited user, and the account label was generalized from “AMSAT Status Upload” to “Satellite Status Upload.”
2026-08-03 14:45:59 +01:00
Peter Goodhall
1f7c130c46 Encrypt stored eQSL passwords at rest
Adds migration 275 to convert eQSL password columns to TEXT and encrypt existing user/mapping passwords with an `enc:` prefix. Updates eQSL controller/model flows to decrypt on read, encrypt on create/update, and keep plaintext backward compatibility for legacy rows. User profile updates now avoid reusing stored ciphertext when no new password is submitted, and mapping updates report a clear error if secure password storage fails.
2026-07-18 22:53:51 +01:00
Peter Goodhall
769837ce09 Apply user remote_operation option and messaging
Load and interpret the 'remote_operation' user option when no POST value is provided, converting stored 'true'/'1' to 1 and falling back to the existing database value or 0. Ensure post_data always has a default 'user_remote_operation' of '0'. Use a strict check on $post_data['user_remote_operation'] === '1' when persisting the option via user_options_model, and append a concise enabled/disabled status to the success flash message after editing the user.
2026-05-16 16:01:12 +01:00
Peter Goodhall
7c0c7515a5 Add experimental Remote Operation feature
Introduce an experimental browser-based remote audio feature: bump migration version to 270 and add a migration to add a remote_operation flag to the users table. Add server-side support to User and QSO controllers/models to read/save the remote_operation option (stored via user_options_model) and expose isRemoteOperationEnabled to views and session updates. Add UI: a Remote Operation card on the QSO page, a modal component for detailed settings, a toggle in the user edit page, and conditional loading of assets/js/remote-operation.js. Add a large client-side implementation (assets/js/remote-operation.js) implementing WebRTC signalling, device selection, level meters and diagnostics. Minor session/session-update and helper changes to keep UI state in sync.
2026-05-16 13:44:09 +01:00
Peter Goodhall
e197a5c1f2 Add toggle for QSL Cards menu item
Introduce a user-controllable option to show/hide the "View QSL Cards" link in the Logbook menu. Controller: initialize menu_show_qsl_cards, load/save the 'show_qsl_cards' menu option and sync it to the session during profile updates. Model: fetch the 'show_qsl_cards' option and expose user_show_qsl_cards in the user data. Views: add a checkbox in the user edit form to control the setting, remove the duplicate SSTV storage card UI, and update the header to robustly read the session value and conditionally render the QSL menu item. Defaults to showing the menu item when the option is unset.
2026-04-08 22:26:05 +01:00
Peter Goodhall
297ff0af42 Add SSTV menu toggle for users
Introduce a user preference to show or hide the "View SSTV Images" menu item. Controller: initialize menu_show_sstv_images, load/save the 'menu:show_sstv_images' option and set session user_show_sstv_images when profile is saved. Model: fetches the menu option and exposes user_show_sstv_images (and has_eqsl_credentials) in the returned user data. Views: add a checkbox to the user edit form to toggle the setting, and conditionally render the eQSL/SSTV menu items in the header based on session flags. This lets users control visibility of the SSTV menu entry from their profile.
2026-04-08 22:18:02 +01:00
Peter Goodhall
ac23397727 Add DX Cluster tab to QSO interface
Introduce a DX Cluster tab to the QSO view and user settings. This change:

- Enables a new qso_form option 'dxcluster_tab' in controllers (Qso.php, User.php) so the tab can be toggled per-user.
- Adds a user preference toggle in the user edit view to show/hide the DX Cluster tab.
- Implements the DX Cluster UI in the QSO index view: tab button, controls (band select, hide RBN), spot table and click-to-fill behavior.
- Adds client-side JS to manage a WebSocket to wss://dxc.cloudlog.org, maintain and render recent spots in a DataTable, persist filter preferences, sync band selection with the QSO form/radio, and batch-check worked status via the dxcluster/check_worked endpoint.

Files changed: application/controllers/Qso.php, application/controllers/User.php, application/views/qso/index.php, application/views/user/edit.php.
2026-03-27 22:29:25 +00:00
Peter Goodhall
20570ba343 Add configurable QSO form field visibility
Introduce per-user visibility settings for QSO form fields and tabs. Load qso_form options in QSO and User controllers (with sensible defaults), apply them to the qso view to conditionally render fields/tabs, and save changes from the user edit form. Add a QSO Form accordion in user/edit.php exposing switches for each field/tab, update user save logic to persist each option, and include client-side JS in qso/index.php to toggle USA state/county and DOK fields based on DXCC selection. Files changed: application/controllers/Qso.php, application/controllers/User.php, application/views/qso/index.php, application/views/user/edit.php.
2026-03-27 18:11:22 +00:00
Peter Goodhall
bcae0c8782 Add optional map greyline layer (terminator)
Add a day/night greyline (terminator) overlay to the dashboard map.

- New assets/js/leaflet/L.Terminator.js: a Leaflet polygon plugin that computes the solar terminator for a given time and exposes L.terminator().
- Load the terminator script in the footer and register a Greyline overlay layer with start/stop interval updates (refreshes every minute). Updates are managed when the overlay is added/removed or when the map unloads to avoid orphaned timers.
- Expose the greyline as a toggleable overlay in the map layer control and add markers to a dedicated markersLayer overlay (instead of adding them directly to the map).
- Add a user preference checkbox to application/views/user/edit.php (Enable Dashboard Map Greyline Layer) and wire saving/reading of the dashboard_map_greyline option in application/controllers/User.php and application/controllers/Dashboard.php. Default behavior is enabled when not set.

This change lets users enable/disable the visual day/night terminator on the dashboard map and ensures proper lifecycle handling for updates and marker layering.
2026-03-26 22:39:04 +00:00
Peter Goodhall
36757e3e34 Add option to count satellite QSOs in DXPeditions
Introduce a user preference to treat satellite QSOs as "worked" for DXPedition status and wire it through the UI, controller, and model. Changes: add dashboard_dxpedition_sat_worked default and POST handling in User controller, add checkbox to user settings view to toggle the option, update Workabledxcc_model to optionally include satellite results when computing workedBefore via a new shouldIncludeSatelliteWorked() helper, and tweak upcoming_dxccs view styling and row classes to visually indicate worked vs needed DXPeditions. This makes DXPedition cards respect users' preference for counting satellite contacts.
2026-03-26 15:00:56 +00:00
Peter Goodhall
6e43503116 Enforce unique callsigns and protect last admin
Add callsign uniqueness checks and prevent demotion of the last admin. Introduces ECALLSIGNEXISTS and ELASTADMIN constants, new model methods (exists_by_callsign, count_admin_users, would_remove_last_admin) and integrates checks into add/update flows to return appropriate error codes. Update User controller to add validation callbacks (check_unique_callsign, check_last_admin_role) and wire errors into multiple user actions. Update signup/edit views to display callsign and usertype validation feedback using Bootstrap invalid-feedback and improve alert layout.
2026-03-26 14:22:02 +00:00
Peter Goodhall
0848a9b4c0 Add open registration and public signup feature
Introduces open registration settings in the options area, allowing administrators to enable or disable public user signup. Adds a registration options page, updates sidebar navigation, and implements a public signup form and controller logic. Also refines user model to ensure correct data types for user fields and updates language strings for registration. The login page now links to signup when open registration is enabled.
2025-12-02 18:10:37 +00:00
Peter Goodhall
ac27e6a653 Add welcome email feature for new and existing users
Introduces functionality to send a welcome email with credentials to new users upon creation and allows admins to resend a reminder email (without password) to existing users. Adds email templates, UI options for sending emails, and improves user management interface with new actions and enhanced layout.
2025-11-22 15:23:47 +00:00
Peter Goodhall
e6ecfa4f1b Require Clublog username to be a valid email address
Enforces that Clublog usernames are valid email addresses throughout the application, reflecting Clublog's policy change to no longer accept callsigns as usernames. Updates validation in controllers, models, and views, adds a migration to clear non-email usernames, and updates language files in multiple languages to clarify the requirement.
2025-10-13 13:40:56 +01:00
Peter Goodhall
4d10db1fc0 Fixed winkey state errors 2025-07-15 14:23:53 +01:00
Peter Goodhall
7156b185e1 add option to turn on websockets for winkey 2025-05-28 13:38:25 +01:00
Peter Goodhall
191f5591ba Improved handling of Callbook Data 2024-10-30 15:13:58 +00:00
Peter Goodhall
b36c8a4cd1 [Callbooks] Login information stored in user account
this is a breaking change you need to update your callbook preferences in your account under third party services
2024-10-03 14:46:11 +01:00
Peter Goodhall
c33ce3fdbb Cleaned up code a bit 2024-05-02 13:48:45 +01:00
Peter Goodhall
9037bf8dad Catch any errors 2024-05-02 12:12:40 +01:00
Peter Goodhall
f60e909459 improved encryption 2024-05-01 21:57:25 +01:00
Peter Goodhall
6aadfbf74a Update User.php 2024-05-01 10:53:51 +01:00
Peter Goodhall
6120574bd3 Remember Me: pickup the cookie prefix if one is there 2024-05-01 10:47:00 +01:00
Peter Goodhall
2c0e9b8c5d set a debug message 2024-04-30 17:26:26 +01:00
Peter Goodhall
471c83a8b8 Impliments a simple remember me feature for 14 days
Starts to impliment #3087 this has a remember me for 14 days
2024-04-30 14:48:47 +01:00
Peter Goodhall
c7718d675c Impliments HTMX for the user delete so that you never leave the main table display 2024-04-10 15:15:54 +01:00
Peter Goodhall
0bc7f44e26 fixes issues with card enabling when creating new user 2024-04-10 15:04:07 +01:00
Peter Goodhall
abda7fb663 [Dashboard|User] Control over what cards are shown on the dashboard 2024-03-19 14:38:33 +00:00
Antony Bailey
1eb655b5a2
Merge branch 'dev' into patch-1 2024-03-13 16:44:52 +00:00
Antony Bailey
7b45746481
Remove extra comma causing error 2024-03-13 16:21:06 +00:00
Peter Goodhall
1818530c9d Returns the correct hamsat user fields 2024-03-11 18:31:23 +00:00
Peter Goodhall
c2b1777590 Fixes errors when the fields arent there 2024-03-11 18:15:23 +00:00
phl0
9a79cbcfcd
Add option to configure private feed key and show only workable passe 2024-03-09 08:49:12 +01:00
xssfox
db3c5e9f24 remove gendered language 2024-02-08 16:20:32 +11:00
HB9HIL
194793e3ae back to plain text email 2024-01-01 12:49:24 +01:00
HB9HIL
c001b66364 comments 2024-01-01 02:44:03 +01:00
HB9HIL
1697e9863f set last login timestamp when login 2024-01-01 02:08:12 +01:00
HB9HIL
774c6f5236 password reset flash messages 2024-01-01 01:30:40 +01:00
HB9HIL
c7367844d2 admin passwort reset 2024-01-01 01:01:10 +01:00
abarrau
cbb93e89de change edit view for use on add view 2023-12-17 19:16:23 +01:00
int2001
f56acc7765
Included QRZ.com to choser at maps and at default-QSL-Settings 2023-12-08 07:17:01 +00:00
abarrau
6244681069 Map custom function (eng lang) 2023-11-30 18:11:22 +01:00
HB9HIL
61d4c15ec0 crlf and newline bugfix 2023-11-22 14:51:45 +01:00
HB9HIL
8b52d06df2 removed crlf and newline (not needed) 2023-11-21 22:15:05 +01:00
HB9HIL
9d020aca84 email fix 2023-11-21 10:22:14 +01:00
HB9HIL
a2c4a8e743 added user_quicklog_enter 2023-11-05 12:29:59 +01:00
HB9HIL
6be6309d0f added quicklog to User Controller 2023-11-04 18:31:46 +01:00
HB9HIL
671ae9f4ce added translation for user edited success banner 2023-11-02 21:24:18 +01:00