2 Commits

Author SHA1 Message Date
Bnyro
4a8d333d5b [build] /static 2024-12-01 13:08:50 +01:00
Bnyro
a7537a6935 [feat] search: add url formatting preference 2024-12-01 13:08:50 +01:00
12 changed files with 55 additions and 4 deletions

View File

@@ -21,6 +21,7 @@
simple_style: auto
search_on_category_select: true
hotkeys: default
url_formatting: pretty
.. _static_use_hash:
@@ -68,3 +69,6 @@
``hotkeys``:
Hotkeys to use in the search interface: ``default``, ``vim`` (Vim-like).
``url_formatting``:
Formatting type to use for result URLs: ``pretty``, ``full`` or ``host``.

View File

@@ -472,6 +472,10 @@ class Preferences:
settings['ui']['hotkeys'],
choices=['default', 'vim']
),
'url_formatting': EnumStringSetting(
settings['ui']['url_formatting'],
choices=['pretty', 'full', 'host']
),
# fmt: on
}

View File

@@ -145,6 +145,8 @@ ui:
search_on_category_select: true
# Hotkeys: default or vim
hotkeys: default
# URL formatting: pretty, full or host
url_formatting: pretty
# Lock arbitrary settings on the preferences page. To find the ID of the user
# setting you want to lock, check the ID of the form on the page "preferences".

View File

@@ -205,6 +205,7 @@ SCHEMA = {
'cache_url': SettingsValue(str, 'https://web.archive.org/web/'),
'search_on_category_select': SettingsValue(bool, True),
'hotkeys': SettingsValue(('default', 'vim'), 'default'),
'url_formatting': SettingsValue(('pretty', 'full', 'host'), 'pretty'),
},
'preferences': {
'lock': SettingsValue(list, []),

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -254,6 +254,10 @@ article[data-vim-selected].category-social {
white-space: nowrap;
flex-shrink: 1;
padding-bottom: 1px;
.url_i1 {
unicode-bidi: plaintext;
}
}
.url_o1::after {

View File

@@ -204,6 +204,7 @@
{%- include 'simple/preferences/search_on_category_select.html' -%}
{%- endif -%}
{%- include 'simple/preferences/hotkeys.html' -%}
{%- include 'simple/preferences/urlformatting.html' -%}
{{- plugin_preferences('ui') -}}
{{- tab_footer() -}}

View File

@@ -0,0 +1,25 @@
<fieldset>{{- '' -}}
<legend id="pref_url_formatting">{{- _('URL formatting') -}}</legend>{{- '' -}}
<div class="value">{{- '' -}}
<select name="url_formatting" aria-labelledby="pref_url_formatting">{{- '' -}}
<option value="pretty"
{%- if preferences.get_value('url_formatting') == 'pretty' %} selected="selected"
{%- endif -%}>
{{- _('Pretty') -}}
</option>{{- '' -}}
<option value="full"
{%- if preferences.get_value('url_formatting') == 'full' %} selected="selected"
{%- endif -%}>
{{- _('Full') -}}
</option>{{- '' -}}
<option value="host"
{%- if preferences.get_value('url_formatting') == 'host' %} selected="selected"
{%- endif -%}>
{{- _('Host') -}}
</option>{{- '' -}}
</select>{{- '' -}}
</div>{{- '' -}}
<div class="description">
{{- _('Change result URL formatting') -}}
</div>{{- '' -}}
</fieldset>{{- '' -}}

View File

@@ -340,6 +340,14 @@ def get_enabled_categories(category_names: Iterable[str]):
def get_pretty_url(parsed_url: urllib.parse.ParseResult):
url_formatting_pref = request.preferences.get_value('url_formatting')
if url_formatting_pref == 'full':
return [parsed_url.geturl()]
if url_formatting_pref == 'host':
return [parsed_url.netloc]
path = parsed_url.path
path = path[:-1] if len(path) > 0 and path[-1] == '/' else path
path = unquote(path.replace("/", " "))
@@ -356,6 +364,7 @@ def get_client_settings():
'translations': get_translations(),
'search_on_category_select': req_pref.get_value('search_on_category_select'),
'hotkeys': req_pref.get_value('hotkeys'),
'url_formatting': req_pref.get_value('url_formatting'),
'theme_static_path': custom_url_for('static', filename='themes/simple'),
}
@@ -385,6 +394,7 @@ def render(template_name: str, **kwargs):
kwargs['infinite_scroll'] = request.preferences.get_value('infinite_scroll')
kwargs['search_on_category_select'] = request.preferences.get_value('search_on_category_select')
kwargs['hotkeys'] = request.preferences.get_value('hotkeys')
kwargs['url_formatting'] = request.preferences.get_value('url_formatting')
kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
kwargs['advanced_search'] = request.preferences.get_value('advanced_search')
kwargs['query_in_title'] = request.preferences.get_value('query_in_title')