commit
f02b063290
3 changed files with 80 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||
|
require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) { |
||||
|
ready(function () { |
||||
|
PluginHost.register(PluginHost.HOOK_INIT_COMPLETE, () => { |
||||
|
|
||||
|
App.hotkey_actions["toggle_night_mode"] = function () { |
||||
|
App.toggleNightMode() |
||||
|
}; |
||||
|
|
||||
|
App.toggleNightMode = function () { |
||||
|
const link = App.byId("theme_css"); |
||||
|
if (!link) return; |
||||
|
|
||||
|
let user_css = false; |
||||
|
let href = link.getAttribute("href").split("?")[0]; |
||||
|
let userCSS = function(url, or = false) { |
||||
|
dojo.xhrGet({ |
||||
|
url: url, |
||||
|
handleAs: 'text', |
||||
|
sync: true, |
||||
|
preventCache: true, |
||||
|
load: function() { user_css = url }, |
||||
|
error: function() { user_css = or } |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
if (href.indexOf("themes.local/") > -1) { |
||||
|
if (href.indexOf("_night.css") > -1) |
||||
|
userCSS(href.replace("_night.css", ".css")); |
||||
|
else |
||||
|
userCSS(href.replace(".css", "_night.css")); |
||||
|
} else if (href.indexOf("/night.css") > -1) |
||||
|
userCSS("themes/light.css", "css/default.css"); |
||||
|
else |
||||
|
userCSS("themes/night.css"); |
||||
|
|
||||
|
if (user_css) { |
||||
|
App.byId("main").fadeOut(); |
||||
|
setTimeout(() => { |
||||
|
link.setAttribute("href", user_css); |
||||
|
xhrPost("backend.php", { |
||||
|
op: "rpc", |
||||
|
method: "setpref", |
||||
|
key: "USER_CSS_THEME", |
||||
|
value: user_css.split("/")[1] |
||||
|
}); |
||||
|
setTimeout(() => { App.byId("main").fadeIn() }, 200); |
||||
|
}, 300); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
@ -0,0 +1,27 @@ |
|||||
|
<?php |
||||
|
class Toggle_Night_Mode extends Plugin { |
||||
|
|
||||
|
function about() { |
||||
|
return array(2.2, |
||||
|
"Allow night mode toggle with [a N] for custom themes (use yourtheme_night.css as filename)", |
||||
|
"ltGuillaume"); |
||||
|
} |
||||
|
|
||||
|
function init($host) { |
||||
|
$host->add_hook($host::HOOK_HOTKEY_MAP, $this); |
||||
|
} |
||||
|
|
||||
|
function hook_hotkey_map($hotkeys) { |
||||
|
$hotkeys["a N"] = "toggle_night_mode"; |
||||
|
return $hotkeys; |
||||
|
} |
||||
|
|
||||
|
function get_js() { |
||||
|
return file_get_contents(__DIR__ . "/init.js"); |
||||
|
} |
||||
|
|
||||
|
function api_version() { |
||||
|
return 2; |
||||
|
} |
||||
|
|
||||
|
} |
||||
Loading…
Reference in new issue