From abab9bf4a8459496208f5950a9eb6e204bb59f4e Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Thu, 24 Jul 2025 15:46:24 -0400 Subject: [PATCH] Update to use versioned asset URLs in AdminThemeUikit Konkat default theme --- .../AdminThemeUikit/themes/default/admin.css | 2 - .../AdminThemeUikit/themes/default/init.php | 71 ++++++++++--------- .../AdminThemeUikit/themes/default/ready.php | 12 ++++ .../themes/default/toggles/useInputFocus.css | 5 +- 4 files changed, 53 insertions(+), 37 deletions(-) diff --git a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/admin.css b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/admin.css index 03a84423..3993ed14 100644 --- a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/admin.css +++ b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/admin.css @@ -1,5 +1,3 @@ -@import url(./admin-custom.css); - /* END Set general color to work in light and dark */ .uk-section-primary:not(.uk-preserve-color),.uk-section-secondary:not(.uk-preserve-color),.uk-tile-primary:not(.uk-preserve-color),.uk-tile-secondary:not(.uk-preserve-color),.uk-card-primary.uk-card-body,.uk-card-primary>:not([class*='uk-card-media']),.uk-card-secondary.uk-card-body,.uk-card-secondary>:not([class*='uk-card-media']),.uk-overlay-primary { diff --git a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/init.php b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/init.php index 9ee7f75a..8cbf8891 100644 --- a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/init.php +++ b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/init.php @@ -7,11 +7,9 @@ /** @var Page $page */ /** @var User $user */ -$themeInfo = $adminTheme->getThemeInfo(); $toggles = $adminTheme->defaultToggles; $settings = $config->AdminThemeUikit; $themeUrl = $config->urls('AdminThemeUikit') . 'themes/default/'; -$cssToggles = [ 'useBoldItemHeaders', 'usePageListButtons', 'useInputFocus' ]; $useDarkModeSwitcher = $user->isLoggedin() @@ -19,42 +17,47 @@ $useDarkModeSwitcher = && empty($settings['noDarkMode']) && $user->hasPermission('page-edit'); -foreach($cssToggles as $name) { - if(!in_array($name, $toggles)) continue; - $config->styles->add($themeUrl . "toggles/$name.css"); -} -if($modules->isInstalled('InputfieldTable')) { - $config->styles->add($themeUrl . "toggles/InputfieldTable.css"); -} - /** * Update TinyMCE to use our custom skin and content_css * */ -$adminTheme->addHookAfter('InputfieldTinyMCESettings::prepareSettingsForOutput', function(HookEvent $e) use($themeInfo) { - $o = $e->object; /** @var InputfieldTinyMCESettings $o */ - $f = $o->inputfield; - $settings = $e->return; - $rootUrl = $e->wire()->config->urls->root; - $url = $rootUrl . ltrim($themeInfo['url'], '/'); - - if($rootUrl != '/' && strpos($url, $rootUrl) === 0) $url = substr($url, strlen($rootUrl)-1); +$adminTheme->addHookAfter('InputfieldTinyMCESettings::prepareSettingsForOutput', function(HookEvent $e) use($themeUrl) { - if(empty($settings['content_css']) || strpos($settings['content_css'], 'document.css') === false) { - $a = [ - 'content_css' => $url . 'content.css', - 'content_css_url' => $url . 'content.css', - 'skin_url' => rtrim($url, '/'), - 'skin' => 'custom', - 'toolbar_sticky_offset' => 55, // applies to inline mode only - ]; - $settings = array_merge($settings, $a); - $f->setArray($a); + $f = $e->object->__get('inputfield'); /** @var InputfieldTinyMCE $f */ + + static $contentCss = ''; + + $settings = $e->return; + $css = isset($settings['content_css']) ? $settings['content_css'] : $f->content_css; + + if(strpos($css, 'document')) { + // keep + return; + } else if(strpos($css, '/content_css/wire.css') || empty($css)) { + // replace } else { - // leave document mode as-is + // leave custom + return; + } + + if(empty($contentCss)) { + $contentCss = $e->wire()->config->versionUrl($themeUrl . 'content.css'); } + $a = [ + 'content_css' => $contentCss, + 'content_css_url' => $contentCss, + 'toolbar_sticky_offset' => 55, // applies to inline mode only + ]; + + if($f->skin === 'oxide' || !$f->skin) { + $a['skin_url'] = rtrim($themeUrl, '/'); + $a['skin'] = 'custom'; + } + + $settings = array_merge($settings, $a); $e->return = $settings; + }); /** @@ -124,11 +127,15 @@ if($useDarkModeSwitcher) { if($page->process == 'ProcessModule' && $input->get('name') === 'InputfieldTinyMCE') { $page->wire()->addHookAfter('InputfieldTinyMCE::getModuleConfigInputfields', function(HookEvent $e) { $inputfields = $e->arguments(0); /** @var InputfieldWrapper $inputfields */ - $a = [ 'skin', 'content_css', 'content_css_url' ]; + $a = [ + 'skin' => 'oxide', + 'content_css' => 'wire', + 'content_css_url' => '' + ]; $note = __('PLEASE NOTE: this setting is currently overridden by AdminThemeUikit “default” theme.', __FILE__); - foreach($a as $name) { + foreach($a as $name => $default) { $f = $inputfields->get($name); - if($f && $f->val() != 'document') $f->notes = $note; + if($f && !$f->val() || $f->val() === $default) $f->notes = $note; } }); } diff --git a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/ready.php b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/ready.php index aa4322c0..df7423e9 100644 --- a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/ready.php +++ b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/ready.php @@ -4,12 +4,15 @@ /** @var AdminThemeUikit $adminTheme */ /** @var User $user */ /** @var WireInput $input */ +/** @var Modules $modules */ /** @var Page $page */ $themeInfo = $adminTheme->getThemeInfo(); +$themeUrl = $config->urls('AdminThemeUikit') . 'themes/default/'; $customCss = $adminTheme->get('defaultCustomCss'); $customCssFile = $adminTheme->get('defaultCustomCssFile'); $toggles = $adminTheme->defaultToggles; +$cssToggles = [ 'useBoldItemHeaders', 'usePageListButtons', 'useInputFocus' ]; $settings = $config->AdminThemeUikit; $mainColors = [ @@ -20,9 +23,18 @@ $mainColors = [ 'customDark' => $adminTheme->get('defaultMainColorCustomDark'), ]; +$config->styles->append($themeInfo['url'] . 'admin-custom.css'); $config->styles->append($themeInfo['url'] . 'admin.css'); $config->scripts->append($themeInfo['url'] . 'admin.js'); +foreach($cssToggles as $name) { + if(!in_array($name, $toggles)) continue; + $config->styles->add($themeUrl . "toggles/$name.css"); +} +if($modules->isInstalled('InputfieldTable')) { + $config->styles->add($themeUrl . "toggles/InputfieldTable.css"); +} + if($customCssFile) { $config->styles->append($config->urls->root . ltrim($customCssFile, '/')); } diff --git a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/toggles/useInputFocus.css b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/toggles/useInputFocus.css index 93b6889d..1e80828c 100644 --- a/wire/modules/AdminTheme/AdminThemeUikit/themes/default/toggles/useInputFocus.css +++ b/wire/modules/AdminTheme/AdminThemeUikit/themes/default/toggles/useInputFocus.css @@ -18,8 +18,7 @@ select.uk-select:focus { } .InputfieldTinyMCE .mce-edit-focus, .InputfieldTinyMCEFocused .tox-edit-area__iframe { - --inputs-background: var(--pw-blocks-background); - background: var(--pw-blocks-background); + --pw-inputs-background: var(--pw-blocks-background); } .InputfieldTinyMCEFocused .tox .tox-toolbar, @@ -27,7 +26,7 @@ select.uk-select:focus { .InputfieldTinyMCEFocused .tox .tox-statusbar, .InputfieldTinyMCEFocused .tox .tox-toolbar__overflow, .InputfieldTinyMCEFocused .tox .tox-toolbar__primary { - --blocks-background: var(--pw-inputs-background); + --pw-blocks-background: var(--pw-inputs-background); } .pw .InputfieldTinyMCEFocused .tox .tox-menubar .tox-mbtn:hover,