ShrinkVertically v1.6.2: move config auto-adjust dim into external JS (CSP blocks inline script)

This commit is contained in:
2026-07-13 08:06:42 -03:00
parent 630e289b6f
commit 63178ed529
4 changed files with 40 additions and 32 deletions

View File

@@ -1,13 +1,17 @@
/*
* ShrinkVertically -- mark the two vertical-collapse menu items so it is obvious the
* behaviour comes from this plugin and not from Kanboard core.
* ShrinkVertically page scripts (loaded on every page via template:layout:js). Each runs only where
* its elements exist, so both are no-ops elsewhere:
*
* Core renders these labels in app/Template/project_header/dropdown.php:
* .filter-vert-collapse .filter-vert-toggle-collapse -> "Collapse vertically"
* .filter-vert-expand .filter-vert-toggle-collapse -> "Expand vertically"
* 1. addPlus() -- mark the two vertical-collapse gear-menu items with a trailing "+" so it is
* obvious the behaviour comes from this plugin and not core. Core renders these labels in
* app/Template/project_header/dropdown.php:
* .filter-vert-collapse .filter-vert-toggle-collapse -> "Collapse vertically"
* .filter-vert-expand .filter-vert-toggle-collapse -> "Expand vertically"
* Editing the rendered text (not the translation table) is locale-independent.
*
* We append a "+" to each so they read "Collapse vertically+" / "Expand vertically+".
* This is locale-independent (it edits the rendered text, not the translation table).
* 2. syncAutoAdjust() -- on Settings -> Shrink Vertically, dim + disable the pixel-offset input
* while "Auto adjust" is checked. This lives here (not an inline <script> on the config page)
* because Kanboard's CSP (default-src 'self') blocks inline scripts and event handlers.
*/
(function () {
"use strict";
@@ -26,9 +30,31 @@
}
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", addPlus);
} else {
function syncAutoAdjust() {
var auto = document.getElementById("form-shrink_vertically_auto");
var offset = document.getElementById("form-shrink_vertically_offset");
if (! auto || ! offset) {
return;
}
function sync() {
offset.disabled = auto.checked;
offset.style.opacity = auto.checked ? "0.4" : "";
}
auto.addEventListener("change", sync);
sync();
}
function init() {
addPlus();
syncAutoAdjust();
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", init);
} else {
init();
}
})();

View File

@@ -59,7 +59,7 @@ class Plugin extends Base
public function getPluginVersion()
{
return '1.6.1';
return '1.6.2';
}
public function getPluginHomepage()

View File

@@ -37,23 +37,5 @@
<button type="submit" class="btn btn-blue"><?= t('Save') ?></button>
</div>
</form>
<script>
// Dim + disable the pixel-offset input while "Auto adjust" is checked (auto mode measures the height
// live on the board, so the manual offset is inactive). Disabled inputs are not submitted; the
// controller preserves the stored offset when it is absent, so the manual value is never lost.
(function () {
"use strict";
var auto = document.getElementById("form-shrink_vertically_auto");
var offset = document.getElementById("form-shrink_vertically_offset");
if (! auto || ! offset) {
return;
}
function sync() {
offset.disabled = auto.checked;
offset.style.opacity = auto.checked ? "0.4" : "";
}
auto.addEventListener("change", sync);
sync();
})();
</script>
<?php /* The "Auto adjust" checkbox dims/disables the offset input via Asset/js/shrink-vertically.js
(loaded globally). An inline <script> here would be blocked by Kanboard's CSP. */ ?>

View File

@@ -1 +1 @@
ShrinkVertically v1.6.1
ShrinkVertically v1.6.2