rework controls to accept parameters as array

This commit is contained in:
Andrew Dolgov 2021-02-16 16:59:21 +03:00
parent 627af2c236
commit bdbbdbb0ed
8 changed files with 49 additions and 35 deletions

View File

@ -608,7 +608,7 @@ class Feeds extends Handler_Protected {
print "<fieldset>";
print "<label class='inline'>" . __("Language:") . "</label>";
print \Controls\select_tag("search_language", get_pref('DEFAULT_SEARCH_LANGUAGE'), Pref_Feeds::get_ts_languages(),
"title=\"".__('Used for word stemming')."\"");
["title" => __('Used for word stemming')]);
print "</fieldset>";
}

View File

@ -644,8 +644,10 @@ class Pref_Feeds extends Handler_Protected {
$local_purge_intervals = [ T_nsprintf('%d day', '%d days', $purge_interval, $purge_interval) ];
}
print \Controls\select_hash("purge_interval", $purge_interval, $local_purge_intervals,
((FORCE_ARTICLE_PURGE == 0) ? "" : 'disabled="1"'));
print \Controls\select_hash("purge_interval",
$purge_interval,
$local_purge_intervals,
(FORCE_ARTICLE_PURGE == 0) ? [] : ["disabled" => 1]);
print "</fieldset>";
@ -815,8 +817,6 @@ class Pref_Feeds extends Handler_Protected {
print_notice("Enable the options you wish to apply using checkboxes on the right:");
print "<p>";
print \Controls\hidden_tag("ids", "$feed_ids");
print \Controls\hidden_tag("op", "pref-feeds");
print \Controls\hidden_tag("method", "batchEditSave");
@ -846,8 +846,7 @@ class Pref_Feeds extends Handler_Protected {
print "<fieldset>";
print "<label>" . __('Language:') . "</label> ";
print \Controls\select_tag("feed_language", "", $this::get_ts_languages(),
'disabled="1"');
print \Controls\select_tag("feed_language", "", $this::get_ts_languages(), ["disabled"=> 1]);
$this->batch_edit_cbox("feed_language");
@ -868,7 +867,7 @@ class Pref_Feeds extends Handler_Protected {
$local_update_intervals = $update_intervals;
$local_update_intervals[0] .= sprintf(" (%s)", $update_intervals[get_pref("DEFAULT_UPDATE_INTERVAL")]);
print \Controls\select_hash("update_interval", "", $local_update_intervals, 'disabled="1"');
print \Controls\select_hash("update_interval", "", $local_update_intervals, ["disabled" => 1]);
$this->batch_edit_cbox("update_interval");
@ -890,7 +889,7 @@ class Pref_Feeds extends Handler_Protected {
else
$local_purge_intervals[0] .= " " . sprintf("(%s)", __("Disabled"));
print \Controls\select_hash("purge_interval", "", $local_purge_intervals, 'disabled="1"');
print \Controls\select_hash("purge_interval", "", $local_purge_intervals, ["disabled" => 1]);
$this->batch_edit_cbox("purge_interval");

View File

@ -894,7 +894,7 @@ class Pref_Filters extends Handler_Protected {
dojoType='fox.form.Select'");*/
print \Controls\select_labels("action_param_label", $action_param,
"style=\"$label_param_hidden\"",
["style" => $label_param_hidden],
"filterDlg_actionParamLabel");
$filter_actions = PluginHost::getInstance()->get_filter_actions();
@ -909,16 +909,16 @@ class Pref_Filters extends Handler_Protected {
}
if (count($filter_action_hash) == 0) {
$filter_plugin_disabled = "disabled";
$filter_plugin_disabled = ["disabled" => "1"];
$filter_action_hash["no-data"] = __("No actions available");
} else {
$filter_plugin_disabled = "";
$filter_plugin_disabled = [];
}
print \Controls\select_hash("action_param_plugin", $action_param, $filter_action_hash,
"style=\"$plugin_param_hidden\" $filter_plugin_disabled",
array_merge(["style" => $plugin_param_hidden], $filter_plugin_disabled),
"filterDlg_actionParamPlugin");
print "</span>";

View File

@ -664,13 +664,13 @@ class Pref_Prefs extends Handler_Protected {
if ($pref_name == "USER_LANGUAGE") {
print \Controls\select_hash($pref_name, $value, get_translations(),
"style='width : 220px; margin : 0px'");
["style" => 'width : 220px; margin : 0px']);
} else if ($pref_name == "USER_TIMEZONE") {
$timezones = explode("\n", file_get_contents("lib/timezones.txt"));
print \Controls\select_tag($pref_name, $value, $timezones, 'dojoType="dijit.form.FilteringSelect"');
print \Controls\select_tag($pref_name, $value, $timezones, ["dojoType" => "dijit.form.FilteringSelect"]);
} else if ($pref_name == "BLACKLISTED_TAGS") { # TODO: other possible <textarea> prefs go here

View File

@ -95,7 +95,7 @@ class Pref_System extends Handler_Administrative {
E_USER_ERROR => __("Errors"),
E_USER_WARNING => __("Warnings"),
E_USER_NOTICE => __("Everything")
], 'onchange="Helpers.EventLog.refresh()"', "severity") ?>
], ["onchange"=> "Helpers.EventLog.refresh()"], "severity") ?>
</div>
</div>

View File

@ -1,19 +1,30 @@
<?php
namespace Controls;
function button_tag(string $value, string $type, $attributes = "") {
return "<button dojoType=\"dijit.form.Button\" $attributes type=\"$type\">".htmlspecialchars($value)."</button>";
function attributes_to_string(array $attributes) {
$rv = "";
foreach ($attributes as $k => $v) {
$rv .= "$k=\"" . htmlspecialchars($v) . "\"";
}
return $rv;
}
function submit_tag(string $value, $attributes = "") {
return button_tag($value, "submit", "class=\"alt-primary\" $attributes");
function button_tag(string $value, string $type, array $attributes = []) {
return "<button dojoType=\"dijit.form.Button\" ".attributes_to_string($attributes)." type=\"$type\">".htmlspecialchars($value)."</button>";
}
function select_tag(string $name, $value, array $values, string $attributes = "", string $id = "") {
$dojo_type = strpos($attributes, "dojoType") === false ? "dojoType='fox.form.Select'" : "";
function submit_tag(string $value, array $attributes = []) {
return button_tag($value, "submit", array_merge(["class" => "alt-primary"], $attributes));
}
function select_tag(string $name, $value, array $values, array $attributes = [], string $id = "") {
$attributes_str = attributes_to_string($attributes);
$dojo_type = strpos($attributes_str, "dojoType") === false ? "dojoType='fox.form.Select'" : "";
$rv = "<select $dojo_type name=\"".htmlspecialchars($name)."\"
id=\"".htmlspecialchars($id)."\" name=\"".htmlspecialchars($name)."\" $attributes>";
id=\"".htmlspecialchars($id)."\" name=\"".htmlspecialchars($name)."\" $attributes_str>";
foreach ($values as $v) {
$is_sel = ($v == $value) ? "selected=\"selected\"" : "";
@ -26,7 +37,7 @@
return $rv;
}
function select_labels(string $name, string $value, string $attributes = "", string $id = "") {
function select_labels(string $name, string $value, array $attributes = [], string $id = "") {
$pdo = \Db::pdo();
$sth = $pdo->prepare("SELECT caption FROM ttrss_labels2
@ -42,11 +53,12 @@
return select_tag($name, $value, $values, $attributes, $id);
}
function select_hash(string $name, $value, array $values, string $attributes = "", string $id = "") {
$dojo_type = strpos($attributes, "dojoType") === false ? "dojoType='fox.form.Select'" : "";
function select_hash(string $name, $value, array $values, array $attributes = [], string $id = "") {
$attributes_str = attributes_to_string($attributes);
$dojo_type = strpos($attributes_str, "dojoType") === false ? "dojoType='fox.form.Select'" : "";
$rv = "<select $dojo_type name=\"".htmlspecialchars($name)."\"
id=\"".htmlspecialchars($id)."\" name=\"".htmlspecialchars($name)."\" $attributes>";
id=\"".htmlspecialchars($id)."\" name=\"".htmlspecialchars($name)."\" $attributes_str>";
foreach ($values as $k => $v) {
$is_sel = ($k == $value) ? "selected=\"selected\"" : "";
@ -59,20 +71,21 @@
return $rv;
}
function hidden_tag(string $name, string $value) {
function hidden_tag(string $name, string $value, array $attributes = []) {
return "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\"
name=\"".htmlspecialchars($name)."\" value=\"".htmlspecialchars($value)."\">";
".attributes_to_string($attributes)." name=\"".htmlspecialchars($name)."\"
value=\"".htmlspecialchars($value)."\">";
}
function checkbox_tag(string $name, bool $checked = false, string $value = "", string $attributes = "", string $id = "") {
function checkbox_tag(string $name, bool $checked = false, string $value = "", array $attributes = [], string $id = "") {
$is_checked = $checked ? "checked" : "";
$value_str = $value ? "value=\"".htmlspecialchars($value)."\"" : "";
return "<input dojoType='dijit.form.CheckBox' name=\"".htmlspecialchars($name)."\"
$value_str $is_checked $attributes id=\"".htmlspecialchars($id)."\">";
$value_str $is_checked ".attributes_to_string($attributes)." id=\"".htmlspecialchars($id)."\">";
}
function select_feeds_cats(string $name, int $default_id = null, string $attributes = "",
function select_feeds_cats(string $name, int $default_id = null, array $attributes = [],
bool $include_all_cats = true, string $root_id = null, int $nest_level = 0, string $id = "") {
$ret = "";
@ -81,7 +94,7 @@
$ret .= "<select name=\"".htmlspecialchars($name)."\"
id=\"".htmlspecialchars($id)."\"
default=\"".((string)$default_id)."\"
dojoType=\"fox.form.Select\" $attributes>";
dojoType=\"fox.form.Select\" ".attributes_to_string($attributes).">";
}
$pdo = \Db::pdo();

View File

@ -142,7 +142,8 @@
<label> </label>
<label id="bw_limit_label">
<?= \Controls\checkbox_tag("safe_mode", false, "", "onchange='UtilityApp.bwLimitChange(this)'", 'bw_limit') ?>
<?= \Controls\checkbox_tag("bw_limit", false, "",
["onchange" => 'UtilityApp.bwLimitChange(this)'], 'bw_limit') ?>
<?= __("Use less traffic") ?></label>
</fieldset>

View File

@ -160,7 +160,8 @@ class Mail extends Plugin {
style=\"width : 30em;\"
name=\"destination\" id=\"emailArticleDlg_destination\">"; */
print \Controls\select_tag("destination", "", $addresslist, 'style="width: 30em" dojoType="dijit.form.ComboBox"');
print \Controls\select_tag("destination", "", $addresslist,
["style" => "width: 30em", "dojoType" => "dijit.form.ComboBox"]);
/* print "<div class=\"autocomplete\" id=\"emailArticleDlg_dst_choices\"
style=\"z-index: 30; display : none\"></div>"; */