$this->pref_help = array(
"ALLOW_DUPLICATE_POSTS" => array(__("Allow duplicate articles"), ""),
- "AUTO_ASSIGN_LABELS" => array(__("Assign articles to labels automatically"), ""),
"BLACKLISTED_TAGS" => array(__("Blacklisted tags"), __("When auto-detecting tags in articles these tags will not be applied (comma-separated list).")),
"CDM_AUTO_CATCHUP" => array(__("Automatically mark articles as read"), __("This option enables marking articles as read automatically while you scroll article list.")),
"CDM_EXPANDED" => array(__("Automatically expand articles in combined mode"), ""),
$con_pw = $_POST["confirm_password"];
if ($old_pw == "") {
- print "ERROR: ".__("Old password cannot be blank.");
+ print "ERROR: ".format_error("Old password cannot be blank.");
return;
}
if ($new_pw == "") {
- print "ERROR: ".__("New password cannot be blank.");
+ print "ERROR: ".format_error("New password cannot be blank.");
return;
}
if ($new_pw != $con_pw) {
- print "ERROR: ".__("Entered passwords do not match.");
+ print "ERROR: ".format_error("Entered passwords do not match.");
return;
}
$authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]);
if (method_exists($authenticator, "change_password")) {
- print $authenticator->change_password($_SESSION["uid"], $old_pw, $new_pw);
+ print format_notice($authenticator->change_password($_SESSION["uid"], $old_pw, $new_pw));
} else {
- print "ERROR: ".__("Function not supported by authentication module.");
+ print "ERROR: ".format_error("Function not supported by authentication module.");
}
}
}
}
- function getHelp() {
-
- $pref_name = $this->dbh->escape_string($_REQUEST["pn"]);
-
- $result = $this->dbh->query("SELECT help_text FROM ttrss_prefs
- WHERE pref_name = '$pref_name'");
-
- if ($this->dbh->num_rows($result) > 0) {
- $help_text = $this->dbh->fetch_result($result, 0, "help_text");
- print $help_text;
- } else {
- printf(__("Unknown option: %s"), $pref_name);
- }
- }
-
function changeemail() {
$email = $this->dbh->escape_string($_POST["email"]);
global $access_level_names;
- $prefs_blacklist = array("STRIP_UNSAFE_TAGS", "REVERSE_HEADLINES",
- "SORT_HEADLINES_BY_FEED_DATE", "DEFAULT_ARTICLE_LIMIT");
+ $prefs_blacklist = array("ALLOW_DUPLICATE_POSTS", "STRIP_UNSAFE_TAGS", "REVERSE_HEADLINES",
+ "SORT_HEADLINES_BY_FEED_DATE", "DEFAULT_ARTICLE_LIMIT",
+ "FEEDS_SORT_BY_UNREAD");
/* "FEEDS_SORT_BY_UNREAD", "HIDE_READ_FEEDS", "REVERSE_HEADLINES" */
print "</table>";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"changeemail\">";
+ print_hidden("op", "pref-prefs");
+ print_hidden("method", "changeemail");
print "<p><button dojoType=\"dijit.form.Button\" type=\"submit\">".
__("Save data")."</button>";
print "<h2>" . __("Password") . "</h2>";
+ print "<div style='display : none' id='pwd_change_infobox'></div>";
+
$result = $this->dbh->query("SELECT id FROM ttrss_users
WHERE id = ".$_SESSION["uid"]." AND pwd_hash
= 'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8'");
onComplete: function(transport) {
notify('');
if (transport.responseText.indexOf('ERROR: ') == 0) {
- notify_error(transport.responseText.replace('ERROR: ', ''));
+
+ $('pwd_change_infobox').innerHTML =
+ transport.responseText.replace('ERROR: ', '');
+
} else {
- notify_info(transport.responseText);
+ $('pwd_change_infobox').innerHTML =
+ transport.responseText.replace('ERROR: ', '');
+
var warn = $('default_pass_warning');
if (warn) Element.hide(warn);
}
+
+ new Effect.Appear('pwd_change_infobox');
+
}});
this.reset();
}
print "</table>";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"changepassword\">";
+ print_hidden("op", "pref-prefs");
+ print_hidden("method", "changepassword");
print "<p><button dojoType=\"dijit.form.Button\" type=\"submit\">".
__("Change password")."</button>";
print "</table>";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"otpdisable\">";
+ print_hidden("op", "pref-prefs");
+ print_hidden("method", "otpdisable");
print "<p><button dojoType=\"dijit.form.Button\" type=\"submit\">".
__("Disable OTP")."</button>";
print "<form dojoType=\"dijit.form.Form\" id=\"changeOtpForm\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"otpenable\">";
+ print_hidden("op", "pref-prefs");
+ print_hidden("method", "otpenable");
print "<script type=\"dojo/method\" event=\"onSubmit\" args=\"evt\">
evt.preventDefault();
} else if ($pref_name == "USER_CSS_THEME") {
- $themes = array_map("basename", glob("themes/*.css"));
+ $themes = array_merge(glob("themes/*.php"), glob("themes/*.css"), glob("themes.local/*.css"));
+ $themes = array_map("basename", $themes);
+ $themes = array_filter($themes, "theme_valid");
+ asort($themes);
+
+ if (!theme_valid($value)) $value = "default.php";
print_select($pref_name, $value, $themes,
'dojoType="dijit.form.Select"');
$cert_serial = htmlspecialchars(get_ssl_certificate_id());
$has_serial = ($cert_serial) ? "false" : "true";
+ print "<br/>";
+
print " <button dojoType=\"dijit.form.Button\" disabled=\"$has_serial\"
onclick=\"insertSSLserial('$cert_serial')\">" .
__('Register') . "</button>";
$listed_boolean_prefs = htmlspecialchars(join(",", $listed_boolean_prefs));
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"boolean_prefs\" value=\"$listed_boolean_prefs\">";
+ print_hidden("boolean_prefs", "$listed_boolean_prefs");
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION,
"hook_prefs_tab_section", "prefPrefsPrefsInside");
print '</div>'; # inside pane
print '<div dojoType="dijit.layout.ContentPane" region="bottom">';
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"saveconfig\">";
+ print_hidden("op", "pref-prefs");
+ print_hidden("method", "saveconfig");
print "<div dojoType=\"dijit.form.ComboButton\" type=\"submit\">
<span>".__('Save configuration')."</span>
print " ";
- /* $checked = $_SESSION["prefs_show_advanced"] ? "checked='1'" : "";
-
- print "<input onclick='toggleAdvancedPrefs()'
- id='prefs_show_advanced'
- dojoType=\"dijit.form.CheckBox\"
- $checked
- type=\"checkbox\"></input>
- <label for='prefs_show_advanced'>" .
- __("Show additional preferences") . "</label>"; */
-
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION,
"hook_prefs_tab_section", "prefPrefsPrefsOutside");
print_notice(__("Download more plugins at tt-rss.org <a class=\"visibleLink\" target=\"_blank\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">forums</a> or <a target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins\">wiki</a>."));
+ if (ini_get("open_basedir") && function_exists("curl_init") && !defined("NO_CURL")) {
+ print_warning("Your PHP configuration has open_basedir restrictions enabled. Some plugins relying on CURL for functionality may not work correctly.");
+ }
+
print "<form dojoType=\"dijit.form.Form\" id=\"changePluginsForm\">";
print "<script type=\"dojo/method\" event=\"onSubmit\" args=\"evt\">
}
</script>";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"setplugins\">";
+ print_hidden("op", "pref-prefs");
+ print_hidden("method", "setplugins");
print "<table width='100%' class='prefPluginsList'>";
$user_enabled = array_map("trim", explode(",", get_pref("_ENABLED_PLUGINS")));
$tmppluginhost = new PluginHost();
- $tmppluginhost->load_all($tmppluginhost::KIND_ALL, $_SESSION["uid"]);
+ $tmppluginhost->load_all($tmppluginhost::KIND_ALL, $_SESSION["uid"], true);
$tmppluginhost->load_data(true);
foreach ($tmppluginhost->get_plugins() as $name => $plugin) {
$about = $plugin->about();
- if ($about[3] && strpos($name, "example") === FALSE) {
+ if ($about[3]) {
if (in_array($name, $system_enabled)) {
$checked = "checked='1'";
} else {
print "<td><label><img src='images/$plugin_icon' alt=''> $name</label></td>";
print "<td>" . htmlspecialchars($about[1]);
if (@$about[4]) {
- print " — <a target=\"_blank\" class=\"visibleLink\"
+ print " — <a target=\"_blank\" rel=\"noopener noreferrer\" class=\"visibleLink\"
href=\"".htmlspecialchars($about[4])."\">".__("more info")."</a>";
}
print "</td>";
foreach ($tmppluginhost->get_plugins() as $name => $plugin) {
$about = $plugin->about();
- if (!$about[3] && strpos($name, "example") === FALSE) {
+ if (!$about[3]) {
if (in_array($name, $system_enabled)) {
$checked = "checked='1'";
print "<td><label for='FPCHK-$name'><img src='images/$plugin_icon' alt=''> $name</label></td>";
print "<td><label for='FPCHK-$name'>" . htmlspecialchars($about[1]) . "</label>";
if (@$about[4]) {
- print " — <a target=\"_blank\" class=\"visibleLink\"
+ print " — <a target=\"_blank\" rel=\"noopener noreferrer\" class=\"visibleLink\"
href=\"".htmlspecialchars($about[4])."\">".__("more info")."</a>";
}
print "</td>";
if (!$otp_enabled) {
$secret = $base32->encode(sha1($this->dbh->fetch_result($result, 0, "salt")));
- $topt = new \OTPHP\TOTP($secret);
print QRcode::png("otpauth://totp/".urlencode($login).
"?secret=$secret&issuer=".urlencode("Tiny Tiny RSS"));
print_notice(T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline.", "css/tt-rss.css"));
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"setpref\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"key\" value=\"USER_STYLESHEET\">";
+ print_hidden("op", "rpc");
+ print_hidden("method", "setpref");
+ print_hidden("key", "USER_STYLESHEET");
print "<table width='100%'><tr><td>";
print "<textarea dojoType=\"dijit.form.SimpleTextarea\"
- style='font-size : 12px; width : 100%; height: 200px;'
+ style='font-size : 12px; width : 98%; height: 200px;'
placeHolder='body#ttrssMain { font-size : 14px; };'
name='value'>$value</textarea>";
print "</td></tr></table>";
return "";
}
-}
-?>
+}
\ No newline at end of file