Consolidate all paths to plugin flash dir, fix watchdog 7.3 triggers
- Move SCRIPTS_DIR/DATA_DIR/STATE_DIR from appdata to /boot/config/plugins/varaverk - All state files now in STATE_DIR (no more /tmp or /boot/config root writes) - Bootstrap: Gitea-first clone with GitHub fallback, no array dependency - varaverk.cfg seeded with Gitea connection settings - .gitignore: add State_Files/, varaverk.cfg, varaverk-*.txz - Partnership/transcode/fallback scripts use STATE_DIR variables - PHP config.php: DATA_DIR/STATE_DIR constants, VV_SETUP_STATE_FILE dynamic - deploy.sh PROD_ROOT updated to plugin flash dir Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
9191a54637
commit
fb0530deba
@@ -4,6 +4,10 @@ require_once dirname(__DIR__) . '/include/scheduler.php';
|
||||
// Setup mode — auto-open a conf file and force the editing sequence
|
||||
$vv_setup_conf = preg_match('/^[\w.]+\.conf$/', $_GET['vv_setup'] ?? '')
|
||||
? $_GET['vv_setup'] : '';
|
||||
|
||||
// Deep-link from Monitor → open a specific script on load (e.g. ?tab=scheduler&vv_script=Media/x.sh)
|
||||
$vv_open_script = preg_match('#^[\w./-]+\.sh$#', $_GET['vv_script'] ?? '')
|
||||
? $_GET['vv_script'] : '';
|
||||
$_vv_my_host = vv_detect_host();
|
||||
$_vv_local_host_conf = ($_vv_my_host !== 'unknown') ? $_vv_my_host . '.conf' : 'host1.conf';
|
||||
|
||||
@@ -959,6 +963,20 @@ if (vvSetupConf) {
|
||||
});
|
||||
}
|
||||
|
||||
// Deep-link from Monitor: open a specific script's panel once the tree is rendered.
|
||||
const vvOpenScriptId = <?= json_encode($vv_open_script) ?>;
|
||||
if (vvOpenScriptId) {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
setTimeout(() => {
|
||||
if (document.querySelector('[data-id="' + CSS.escape(vvOpenScriptId) + '"]')) {
|
||||
vvOpenRight(vvOpenScriptId);
|
||||
const row = document.querySelector('[data-id="' + CSS.escape(vvOpenScriptId) + '"]');
|
||||
if (row) row.scrollIntoView({behavior: 'smooth', block: 'center'});
|
||||
}
|
||||
}, 200);
|
||||
});
|
||||
}
|
||||
|
||||
function vvEscHtml(s) {
|
||||
return s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
|
||||
}
|
||||
@@ -1995,13 +2013,13 @@ function vvUpdateErrors(errors) {
|
||||
const now = Math.floor(Date.now() / 1000);
|
||||
let html = '<div class="vv-errors-list">';
|
||||
for (const e of unacked) {
|
||||
const jobId = JSON.stringify(e.script + '.sh');
|
||||
const jobId = "'" + (e.script + '.sh').replace(/\\/g,"\\\\").replace(/'/g,"\\'") + "'";
|
||||
const label = e.script.split('/').pop().replace(/_/g, ' ');
|
||||
html += '<div class="vv-err-row">'
|
||||
+ '<div class="vv-err-top">'
|
||||
+ '<span class="vv-err-script" onclick="vvOpenRight(' + jobId + ')" style="cursor:pointer" title="' + vvEscHtml(e.script) + '">' + vvEscHtml(label) + '</span>'
|
||||
+ '<span class="vv-err-age">' + vvFmtAge(now - e.ts) + '</span>'
|
||||
+ '<button class="vv-btn-sm vv-ack-btn" onclick="vvAckError(' + JSON.stringify(e.script) + ',' + e.ts + ',this)">Ack</button>'
|
||||
+ '<button class="vv-btn-sm vv-ack-btn" onclick="vvAckError(\'' + e.script.replace(/\\/g,"\\\\").replace(/'/g,"\\'") + "'," + e.ts + ',this)">Ack</button>'
|
||||
+ '</div>'
|
||||
+ '<div class="vv-err-line">' + vvEscHtml(e.line) + '</div>'
|
||||
+ '</div>';
|
||||
|
||||
Reference in New Issue
Block a user