diff options
| author | Andrew Dolgov <fox@fakecake.org> | 2025-03-30 20:41:50 +0300 |
|---|---|---|
| committer | Andrew Dolgov <fox@fakecake.org> | 2025-03-30 20:41:50 +0300 |
| commit | 2d041f7d28ce555bffaf1b99eea5d0199e8a3c29 (patch) | |
| tree | b42ba59bb76ecf7ed57e568a55052d9ef206ab43 | |
| parent | b4962b670d02f7c5d4da3cafe99cffffe059e8a1 (diff) | |
use server-side localized formatting for matching rule to display as a tooltip (for now)
| -rw-r--r-- | classes/Pref_Filters.php | 20 | ||||
| -rw-r--r-- | js/CommonFilters.js | 5 |
2 files changed, 11 insertions, 14 deletions
diff --git a/classes/Pref_Filters.php b/classes/Pref_Filters.php index d5844b902..a6063d898 100644 --- a/classes/Pref_Filters.php +++ b/classes/Pref_Filters.php @@ -95,7 +95,6 @@ class Pref_Filters extends Handler_Protected { if (is_array($rule)) { $rule['type'] = $filter_types[$rule['filter_type']]; - unset($rule['filter_type']); array_push($filter['rules'], $rule); $scope_inner_qparts = []; @@ -185,10 +184,7 @@ class Pref_Filters extends Handler_Protected { $matches[] = $rule_regexp_match; - $rules[] = [ - 'reg_exp' => $rule['reg_exp'], - 'type' => $rule['type'] - ]; + $rules[] = self::_get_rule_name($rule, ''); if (in_array($rule['type'], ['content', 'both'])) { // also stripping [\r\n\t] to match what's done for content in RSSUtils#get_article_filters() @@ -452,7 +448,7 @@ class Pref_Filters extends Handler_Protected { /** * @param array<string, mixed>|null $rule */ - private function _get_rule_name(?array $rule = null): string { + private function _get_rule_name(?array $rule = null, string $format = 'html'): string { if (!$rule) $rule = json_decode(clean($_REQUEST["rule"]), true); $feeds = $rule["feed_id"]; @@ -487,10 +483,14 @@ class Pref_Filters extends Handler_Protected { $inverse = isset($rule["inverse"]) ? "inverse" : ""; - return "<span class='filterRule $inverse'>" . - T_sprintf("%s on %s in %s %s", htmlspecialchars($rule["reg_exp"]), - "<span class='field'>$filter_type</span>", "<span class='feed'>$feed</span>", isset($rule["inverse"]) ? __("(inverse)") : "") . "</span>"; - } + if ($format === 'html') + return "<span class='filterRule $inverse'>" . + T_sprintf("%s on %s in %s %s", htmlspecialchars($rule["reg_exp"]), + "<span class='field'>$filter_type</span>", "<span class='feed'>$feed</span>", isset($rule["inverse"]) ? __("(inverse)") : "") . "</span>"; + else + return T_sprintf("%s on %s in %s %s", $rule["reg_exp"], + $filter_type, $feed, isset($rule["inverse"]) ? __("(inverse)") : ""); + } function printRuleName(): void { print $this->_get_rule_name(json_decode(clean($_REQUEST["rule"]), true)); diff --git a/js/CommonFilters.js b/js/CommonFilters.js index ce871a2af..9c0fc5cce 100644 --- a/js/CommonFilters.js +++ b/js/CommonFilters.js @@ -19,9 +19,6 @@ const Filters = { ACTION_REMOVE_TAG: 10, PARAM_ACTIONS: [4, 6, 7, 9, 10], filter_info: {}, - formatMatchedRules: function(rules) { - return rules.map((r) => r.reg_exp + ' (' + r.type + ')').join('\n'); - }, test: function() { const test_dialog = new fox.SingleUseDialog({ title: "Test Filter", @@ -46,7 +43,7 @@ const Filters = { .replace("%f", test_dialog.results) .replace("%d", offset); - results_list.innerHTML += result.items.reduce((current, item) => current + `<li title="${App.escapeHtml(dialog.formatMatchedRules(item.rules))}"><span class='title'>${item.title}</span> + results_list.innerHTML += result.items.reduce((current, item) => current + `<li title="${App.escapeHtml(item.rules.join('\n'))}"><span class='title'>${item.title}</span> — <span class='feed'>${item.feed_title}</span>, <span class='date'>${item.date}</span> <div class='preview text-muted'>${item.content_preview}</div></li>`, ''); |