Commit Graph
111 Commits
Author SHA1 Message Date
Isaac ConnorandClaude Opus 5 bf8a73e9fb feat: remove Libvlc from the web ui, api and config help
Follows the daemons: no monitor can be type Libvlc any more, so the ui
should not offer it or carry text describing it.

Drops the source-type option and its deprecation notice, the Libvlc arm
of the Source Path and console source-column branches, the entry in the
control-capability type list, and the value from the api's Type
validation list. The OPTIONS_LIBVLC help block goes from all 25 language
files: monitor.php builds that key as OPTIONS_ plus the monitor type, so
it became unreachable the moment the type did. The Libvlc source-type
label goes from the 22 files that carried it.

SourceTypeDeprecated and Deprecated lose their last caller and are
removed. RemoteRtspDeprecated and Removed stay -- the rtsp protocol
option is still shown to monitors already set to it.

The WEB_FILTER_SOURCE help listed the affected source types; corrected
in ConfigData.pm.in and in the one translation that had localised it.

All 25 language files and the four edited php files parse clean under
php -l, and the config module parses under perl -c. No javascript
changed, so eslint has nothing to say here -- it cannot run in this
worktree anyway, which has no node_modules.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015Y6FieTwEXuLhhR4e2yiax
2026-10-10 09:32:17 -04:00
Isaac ConnorandClaude Opus 5 af0d6ddc32 refactor: remove RTSPDescribe, which lost its reader with the rtsp client
RTSPDescribe chose whether to take the media url from the DESCRIBE
response rather than the configured path. That was a quirk of
ZoneMinder's own rtsp implementation; ffmpeg decides it itself. Removing
that client left the setting with nothing behind it -- the monitor form
still drew the checkbox and the save path still wrote the column, but no
code read it, so the only thing it could do was mislead whoever ticked
it.

Drops the form row and the Remote-only block that existed to hold it,
the javascript that showed and hid it as the protocol changed, the field
in the php and perl monitor models, the default in the save action, the
column from the schema, and the label and help text from all the
language files carrying them.

The 1.39.37 migration drops the column behind an information_schema
guard scoped to DATABASE(), so the file stays re-runnable.

Verified by building a pre-upgrade database from upstream/master's own
schema and applying the migration: the column goes, and Monitors matches a fresh install of this
branch column for column. Migration applied three times with no error.
php -l clean on the four edited files and all 28 language files, perl -c
clean, build clean, 154 test cases pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015Y6FieTwEXuLhhR4e2yiax
2026-10-10 09:32:17 -04:00
IgorA100 eb1d176790 Russian translation update 2026-09-30 17:46:22 +03:00
Isaac ConnorandClaude Opus 5 f36645dfd9 fix: point the audioMotion-analyzer install instructions at the ES module
The library is AGPL-3.0-or-later so it is not shipped, and the admin installs
it at skins/<skin>/assets/audioMotion-analyzer/src/audioMotion-analyzer.js.
The instructions for doing that had drifted from what the code loads:

- help.txt and the OPTIONS_WHATTODISPLAY help gave the bare
  https://cdn.jsdelivr.net/npm/audiomotion-analyzer@X.X.X URL, which resolves
  to the package's "main" entry, the minified UMD bundle dist/index.js. The
  install path is the package's src/ ES module, so the URL needs the explicit
  /src/audioMotion-analyzer.js suffix. Same for the download links in the
  AudioMotionVersionNotInstalled and AudioMotionVersionWrongVersion messages.
- The install path was written as /skins/MySkin/..., a placeholder that does
  not correspond to any skin.
- RequiresAudioMotionEnabled named only the file, not where it goes.
- assets/version documented every other asset in that directory but not this
  one, leaving no explanation for the otherwise empty directory.

help.txt no longer restates the required version, so 4.5.4 stays declared only
by SUPPORTED_AUDIO_MOTION_ANALYZER_VERSION as intended, and assets/version
points at that constant rather than duplicating it.

Add tests/js/audiomotion-paths.test.js to hold the PHP feature probe, the
dynamic import, help.txt and both lang catalogues to the same path, the same
download URL and the same version.

Also gitignore the installed library so a local install is not committed back
into a GPL-2.0 tree.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JpiSWBmtQkR5bcgpHWY4ME
2026-09-20 18:17:43 -05:00
Isaac Connor c647e82cf8 Merge pull request #5087 from IgorA100/patch-373528
Fix: Removed duplicate translations of "Scale" in Russian.
2026-09-03 21:43:31 -04:00
singhharsh1708 aad6c4bfcb refactor: retire the FrameSkip column refs #3570 2026-09-02 20:28:37 +05:30
IgorA100 fb5a9911af Fix: Removed duplicate translations of "Scale" in Russian.
Duplicates were found in #5086.
2026-09-02 10:31:40 +03:00
IgorA100 ff9d446053 - Don't execute table.bootstrapTable('hideLoading') when a new AJAX request arrives and the page is hidden; this misleads the user. The page may be hidden while the previous AJAX request is being executed. We now control the hiding and showing of the "Loading" label elsewhere in the code.
- The secsToTime() function can now accept the "round" argument.
- Minutes in the secsToTime() function are now displayed as integers, not fractional values.
- The "autoRefresh" button now responds to clicks, allowing you to temporarily disable automatic refresh.
- Display a linear progress bar when deleting logs.
- Added the necessary translation and removed the unused translation for JS
- Other improvements
2026-06-23 17:46:51 +03:00
IgorA100 d139db51bc Added translation for the JS code, added Russian translation
We analyze the previous autoRefresh state and, if it was enabled before the AJAX request and disabled when the previous request was aborted, also enable autoRefresh after the request successfully completes.
If it was Aborted and autoRefresh=false, then simply display the message "Aborted" in the browser, not "AJAXRequestForLogsWasAborted."
2026-06-15 14:04:05 +03:00
IgorA100 3281aa3a4b Added the zmAlert(message, title) function, English and Russian translations, and a new modal window form. 2026-06-15 13:03:53 +03:00
IgorA100 3983de5d4b Merge branch 'master' into patch-401263 2026-06-14 10:18:33 +03:00
IgorA100 50025c0d48 Update ru_ru.php 2026-06-13 17:57:18 +03:00
IgorA100 7a5b355892 Update ru_ru.php 2026-06-13 17:48:44 +03:00
IgorA100 47a33dd894 Added 'Enter password to include it in the QR code' (ru_ru.php) 2026-06-13 17:41:47 +03:00
IgorA100 629b30372a Update ru_ru.php 2026-06-13 17:29:46 +03:00
IgorA100 5145a9d0a6 Russian translation update (ru_ru.php) 2026-06-13 16:34:03 +03:00
IgorA100 2a40e40f7f Removed "Or" & "TZUnset" (ru_ru.php) 2026-06-13 16:32:45 +03:00
IgorA100 245111c956 Merge branch 'master' into patch-401263 2026-06-06 23:24:08 +03:00
IgorA100 22c5695183 - Optimized setButtonStates()
- Added a hidden <INPUT> element to correctly submit the form via JS
- Added Russian and English translations for ConfirmDeleteFiles
2026-06-01 14:50:43 +03:00
IgorA100 60a8a59585 Merge branch 'master' into patch-401263 2026-06-01 12:49:50 +03:00
IgorA100 885e5ffc64 Merge branch 'master' into patch-951406 2026-05-27 23:44:34 +03:00
IgorA100andCopilot Autofix powered by AI 02b1e89ff3 Apply suggestions from code review
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-27 23:44:10 +03:00
IgorA100 8d2c67559c Merge branch 'master' into patch-401263 2026-05-27 12:14:38 +03:00
IgorA100 ad269916f3 - Monitor name validation is now performed via an AJAX request in a PHP file.
- Added translations for English and Russian.
- Added a method to the Monitor class for retrieving default settings. This is necessary to retrieve the 'filter_regexp' of the monitor name, so as not to re-specify 'filter_regexp' during an AJAX request.
- Added the \web\ajax\monitor.php file.
2026-05-26 16:23:39 +03:00
IgorA100 3de3dc7d21 - Corrected English and Russian translations
- Check opendir($storagePath) before reading files.
- Use strict validation when creating symlinks
2026-05-25 00:35:40 +03:00
IgorA100 7eb4ae012e Merge branch 'master' into patch-401263 2026-05-15 15:08:45 +03:00
IgorA100 0317415a82 Use ConfirmDeleteGroups instead of ConfirmDelete 2026-05-15 14:57:38 +03:00
IgorA100 2af6d2803e Correction of Russian translation for BadNameChars (ru_ru.php) 2026-05-14 09:32:50 +03:00
IgorA100 80b4a7627a Update ru_ru.php 2026-05-13 21:11:23 +03:00
IgorA100 722d642a89 Correction and addition of the Russian translation (ru_ru.php) 2026-05-13 20:26:58 +03:00
IgorA100 de0d43f2f4 Merge branch 'master' into patch-380634 2026-05-12 21:06:02 +03:00
IgorA100 fc9a8c593e Update ru_ru.php 2026-05-06 12:38:14 +03:00
IgorA100 b4f48b91d0 Lost "?" (ru_ru.php) 2026-05-06 10:22:08 +03:00
IgorA100 8009884171 - Moved the getDelConfirmModal() function from options.js to skin.js
- Removed the getDelConfirmModal() function (and its call) from report.js, options.js, reports.js, devices.js, +++controlcaps.js(?view=options&tab=control), and snapshots.js. This is because it's now a single function in skin.js, which is called when the "Delete" button is pressed, rather than during page initialization.
- Slightly modified the local functions of manageDelConfirmModalBtns(). Removed the listener, so the code is executed immediately.
- You can now call local functions from the global getDelConfirmModal() function (instead of just executing submitThisForm() ). Applies to report.js, reports.js, devices.js, controlcaps.js, snapshots.js
- Changed the style of the "Delete" button on the Groups page
- Added deletion confirmation to the Storage, Roles, and Groups pages
- On the Event page, deletion permissions were broken. Deletes were allowed for those who did NOT have edit permissions, but deletions were blocked for those who did. !
- On the Report page, deletion didn't work and still doesn't work. This needs to be addressed, or maybe it's possible to delete reports only on the Reports page. (FIXED...)
- On the Devices page, the "canEdit.Device" permissions check was being performed, but it should be performed like this: "canEdit.Devices"
- The $action variable was not defined in \ajax\devices.php
- Added translations.
- Added a style for the disabled "Delete" button
- Minor fixes
2026-05-04 19:09:10 +03:00
IgorA100 a91a297bd0 - Added the DeleteServer() function
- Pass the "formName" argument when calling getDelConfirmModal()
- Added a translation
2026-05-04 12:37:02 +03:00
Isaac Connor 810fc0944c Merge pull request #4753 from IgorA100/patch-546864
Provide the user with up-to-date information about the supported version of audioMotionAnalyzer
2026-05-01 18:16:55 -04:00
Isaac Connor 0ce6155ef2 Merge pull request #4771 from IgorA100/patch-142774
Correction of the Russian translation (ru_ru.php)
2026-05-01 18:13:18 -04:00
IgorA100 f796429bc1 Update ru_ru.php 2026-04-30 22:03:57 +03:00
IgorA100 61636950f3 Correction of the Russian translation (ru_ru.php) 2026-04-30 21:06:46 +03:00
IgorA100 446220cbf0 - Added support for "~~" => <br/> for translation
- Now we only specify the supported analyzer version in one place in the audioMotionAnalyzer.js file
- Added translations for three cases: when the analyzer is not installed, the wrong version is installed, or everything is fine.
2026-04-26 23:35:05 +03:00
IgorA100 ea978af9cb Merge branch 'master' into patch-590744 2026-04-25 00:14:08 +03:00
IgorA100andCopilot fb88408994 Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-22 16:22:01 +03:00
Isaac Connor bd88683c62 Merge branch 'patch-435415' of github.com:IgorA100/zoneminder 2026-04-22 08:50:46 -04:00
IgorA100 e5f6645033 Added translations. 2026-04-22 13:07:49 +03:00
IgorA100 c920142207 Update ru_ru.php 2026-04-20 15:39:16 +03:00
IgorA100 3a3ebce9c4 Added Russian translation (ru_ru.php) 2026-04-20 15:35:44 +03:00
IgorA100 e203628c52 Added translation for OPTIONS_WHATTODISPLAY (ru_ru.php) 2026-04-19 17:28:39 +03:00
IgorA100 56a45fb1fc Added translation for RequiresAudioMotionEnabled (ru_ru.php) 2026-04-19 17:11:00 +03:00
IgorA100 37fd7a035d Added translation for "OPTIONS_ONVIF_Alarm_Text" (ru_ru.php) 2026-04-15 22:26:56 +03:00
Isaac ConnorandClaude Opus 4.6 05cc6fcca7 chore: remove obsolete ZM_FILTER_EXECUTE_INTERVAL config option
Each filter now has its own ExecuteInterval column, making the global
ZM_FILTER_EXECUTE_INTERVAL unused. The DB row will be cleaned up
automatically by zmupdate.pl on the next upgrade.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 16:31:33 -04:00