diff --git a/.vscode/settings.json b/.vscode/settings.json index a6946aa..68571ef 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,13 @@ "./_dokuwiki/vendor" ], + // DokuWiki replaces @ini_* placeholders server-side. + // VS Code's CSS validator doesn't understand those tokens, but LESS does. + "files.associations": { + "style.css": "less", + "temp-input-colors.css": "less" + }, + // Keep the file explorer tidy when the optional DokuWiki checkout exists. "files.exclude": { "**/_dokuwiki/.git": true, diff --git a/README.md b/README.md index 130bf0c..e5c5715 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,18 @@ the template provides proper form control styles. Temporary file: [temp-input-colors.css](temp-input-colors.css) +Developer note: DokuWiki serves a combined stylesheet via `lib/exe/css.php` and caches it. +Cache invalidation is based on the mtimes of the source CSS/LESS files. +If you deploy into a mounted/remote filesystem with a different clock, preserving mtimes can prevent +automatic invalidation (making it look like your CSS changes don't load until you purge cache). + +`deploy.sh` avoids preserving mtimes by default to make CSS iteration smoother. If you explicitly want +to preserve mtimes, use: + +```bash +./deploy.sh --preserve-times +``` + ## Features and usage diff --git a/action.php b/action.php index 41cd1e7..055a4fa 100644 --- a/action.php +++ b/action.php @@ -41,7 +41,8 @@ class action_plugin_luxtools extends ActionPlugin */ public function addScripts(Event $event, $param) { - $base = DOKU_BASE . "lib/plugins/luxtools/js/"; + $plugin = $this->getPluginName(); + $base = DOKU_BASE . "lib/plugins/$plugin/js/"; $scripts = [ "lightbox.js", "gallery-thumbnails.js", @@ -75,7 +76,8 @@ class action_plugin_luxtools extends ActionPlugin return; } - $event->data['files'][DOKU_PLUGIN . 'luxtools/temp-input-colors.css'] = DOKU_BASE . 'lib/plugins/luxtools/'; + $plugin = $this->getPluginName(); + $event->data['files'][DOKU_PLUGIN . $plugin . '/temp-input-colors.css'] = DOKU_BASE . 'lib/plugins/' . $plugin . '/'; } /** diff --git a/deploy.sh b/deploy.sh index 56461b7..e180d3f 100755 --- a/deploy.sh +++ b/deploy.sh @@ -9,10 +9,12 @@ set -euo pipefail # ./deploy.sh --dry-run # show what would change # ./deploy.sh /path/to/luxtools # ./deploy.sh --no-delete # don't delete extraneous files at target +# ./deploy.sh --preserve-times # keep source mtimes at target TARGET="/thebe/Web/lib/plugins/luxtools" DRY_RUN=0 DELETE=1 +PRESERVE_TIMES=0 while (($#)); do case "$1" in @@ -24,6 +26,10 @@ while (($#)); do DELETE=0 shift ;; + --preserve-times) + PRESERVE_TIMES=1 + shift + ;; -h|--help) sed -n '1,80p' "$0" exit 0 @@ -79,6 +85,13 @@ RSYNC_ARGS=( --exclude=.DS_Store ) +# DokuWiki's combined CSS (lib/exe/css.php) is cached and invalidated based on source file mtimes. +# When deploying to a mounted/remote filesystem with a different clock, preserving mtimes can make +# DokuWiki think the cache is always newer than your plugin CSS. Avoid that by default. +if (( ! PRESERVE_TIMES )); then + RSYNC_ARGS+=(--no-times --omit-dir-times) +fi + if ((DRY_RUN)); then RSYNC_ARGS+=(--dry-run) fi