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'
onclick=\"return dijit.byId('defaultPasswordDlg').hide();\">".
__('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["safe_mode"] = !empty($_SESSION["safe_mode"]);
$params["check_for_updates"] = CHECK_FOR_UPDATES;
$params["icons_url"] = ICONS_URL;
$params["cookie_lifetime"] = SESSION_COOKIE_LIFETIME;

View File

@ -153,11 +153,14 @@
<fieldset class="narrow">
<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">
<?php echo __("Safe mode (no plugins)") ?></label>
<?php echo __("Safe mode") ?></label>
</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) { ?>
<fieldset class="narrow">

View File

@ -39,7 +39,7 @@
<title>Tiny Tiny RSS</title>
<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);
if ($theme && theme_exists("$theme")) {
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
if (App.getInitParam("bw_limit")) {
this.requestCounters(true);

View File

@ -31,7 +31,7 @@
<title>Tiny Tiny RSS : <?php echo __("Preferences") ?></title>
<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);
if ($theme && theme_exists("$theme")) {
echo stylesheet_tag(get_theme_path($theme), 'theme_css');