disable themes in safe mode; rework safe mode warning/login prompt

This commit is contained in:
Andrew Dolgov 2021-02-11 21:19:57 +03:00
parent 74986d1ac6
commit 848bc57f29
6 changed files with 41 additions and 5 deletions

View File

@ -202,6 +202,6 @@ class Dlg extends Handler_Protected {
print "<button dojoType='dijit.form.Button' print "<button dojoType='dijit.form.Button'
onclick=\"return dijit.byId('defaultPasswordDlg').hide();\">". onclick=\"return dijit.byId('defaultPasswordDlg').hide();\">".
__('Close this window')."</button>"; __('Close this window')."</button>";
print "</footeer>"; print "</footer>";
} }
} }

View File

@ -454,6 +454,7 @@ class RPC extends Handler_Protected {
$params[strtolower($param)] = (int) get_pref($param); $params[strtolower($param)] = (int) get_pref($param);
} }
$params["safe_mode"] = !empty($_SESSION["safe_mode"]);
$params["check_for_updates"] = CHECK_FOR_UPDATES; $params["check_for_updates"] = CHECK_FOR_UPDATES;
$params["icons_url"] = ICONS_URL; $params["icons_url"] = ICONS_URL;
$params["cookie_lifetime"] = SESSION_COOKIE_LIFETIME; $params["cookie_lifetime"] = SESSION_COOKIE_LIFETIME;

View File

@ -153,11 +153,14 @@
<fieldset class="narrow"> <fieldset class="narrow">
<label> </label> <label> </label>
<label ><input dojoType="dijit.form.CheckBox" name="safe_mode" id="safe_mode" <label id="safe_mode_label"><input dojoType="dijit.form.CheckBox" name="safe_mode" id="safe_mode"
type="checkbox"> type="checkbox">
<?php echo __("Safe mode (no plugins)") ?></label> <?php echo __("Safe mode") ?></label>
</fieldset> </fieldset>
<div dojoType="dijit.Tooltip" connectId="safe_mode_label" position="below" style="display:none">
<?php echo __("Uses default theme and prevents all plugins from loading."); ?>
</div>
<?php if (SESSION_COOKIE_LIFETIME > 0) { ?> <?php if (SESSION_COOKIE_LIFETIME > 0) { ?>
<fieldset class="narrow"> <fieldset class="narrow">

View File

@ -39,7 +39,7 @@
<title>Tiny Tiny RSS</title> <title>Tiny Tiny RSS</title>
<meta name="viewport" content="initial-scale=1,width=device-width" /> <meta name="viewport" content="initial-scale=1,width=device-width" />
<?php if ($_SESSION["uid"] && !isset($_REQUEST["ignore-theme"])) { <?php if ($_SESSION["uid"] && empty($_SESSION["safe_mode"])) {
$theme = get_pref("USER_CSS_THEME", false, false); $theme = get_pref("USER_CSS_THEME", false, false);
if ($theme && theme_exists("$theme")) { if ($theme && theme_exists("$theme")) {
echo stylesheet_tag(get_theme_path($theme), 'theme_css'); echo stylesheet_tag(get_theme_path($theme), 'theme_css');

View File

@ -247,6 +247,38 @@ const Feeds = {
}); });
} }
if (dijit.byId("safeModeDlg"))
dijit.byId("safeModeDlg").destroyRecursive();
if (App.getInitParam("safe_mode")) {
const dialog = new dijit.Dialog({
title: __("Safe mode"),
content: `
<div class='alert alert-info'>
${__('Tiny Tiny RSS is running in safe mode. All themes and plugins are disabled. You will need to log out and back in to disable it.')}
</div>
<footer class='text-center'>
<button dojoType='dijit.form.Button' type='submit'>
${__('Close this window')}
</button>
</footer>
`,
id: 'safeModeDlg',
style: "width: 600px",
onCancel: function () {
return true;
},
onExecute: function () {
return true;
},
onClose: function () {
return true;
}
});
dialog.show();
}
// bw_limit disables timeout() so we request initial counters separately // bw_limit disables timeout() so we request initial counters separately
if (App.getInitParam("bw_limit")) { if (App.getInitParam("bw_limit")) {
this.requestCounters(true); this.requestCounters(true);

View File

@ -31,7 +31,7 @@
<title>Tiny Tiny RSS : <?php echo __("Preferences") ?></title> <title>Tiny Tiny RSS : <?php echo __("Preferences") ?></title>
<meta name="viewport" content="initial-scale=1,width=device-width" /> <meta name="viewport" content="initial-scale=1,width=device-width" />
<?php if ($_SESSION["uid"] && !isset($_REQUEST["ignore-theme"])) { <?php if ($_SESSION["uid"] && empty($_SESSION["safe_mode"])) {
$theme = get_pref("USER_CSS_THEME", false, false); $theme = get_pref("USER_CSS_THEME", false, false);
if ($theme && theme_exists("$theme")) { if ($theme && theme_exists("$theme")) {
echo stylesheet_tag(get_theme_path($theme), 'theme_css'); echo stylesheet_tag(get_theme_path($theme), 'theme_css');