mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-04 03:27:06 -05:00 
			
		
		
		
	[feat] search: add url formatting preference
This commit is contained in:
		
							parent
							
								
									cae07b9bf8
								
							
						
					
					
						commit
						a7537a6935
					
				@ -21,6 +21,7 @@
 | 
				
			|||||||
       simple_style: auto
 | 
					       simple_style: auto
 | 
				
			||||||
     search_on_category_select: true
 | 
					     search_on_category_select: true
 | 
				
			||||||
     hotkeys: default
 | 
					     hotkeys: default
 | 
				
			||||||
 | 
					     url_formatting: pretty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _static_use_hash:
 | 
					.. _static_use_hash:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -68,3 +69,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
``hotkeys``:
 | 
					``hotkeys``:
 | 
				
			||||||
  Hotkeys to use in the search interface: ``default``, ``vim`` (Vim-like).
 | 
					  Hotkeys to use in the search interface: ``default``, ``vim`` (Vim-like).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``url_formatting``:
 | 
				
			||||||
 | 
					  Formatting type to use for result URLs: ``pretty``, ``full`` or ``host``.
 | 
				
			||||||
 | 
				
			|||||||
@ -472,6 +472,10 @@ class Preferences:
 | 
				
			|||||||
                settings['ui']['hotkeys'],
 | 
					                settings['ui']['hotkeys'],
 | 
				
			||||||
                choices=['default', 'vim']
 | 
					                choices=['default', 'vim']
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					            'url_formatting': EnumStringSetting(
 | 
				
			||||||
 | 
					                settings['ui']['url_formatting'],
 | 
				
			||||||
 | 
					                choices=['pretty', 'full', 'host']
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
            # fmt: on
 | 
					            # fmt: on
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -145,6 +145,8 @@ ui:
 | 
				
			|||||||
  search_on_category_select: true
 | 
					  search_on_category_select: true
 | 
				
			||||||
  # Hotkeys: default or vim
 | 
					  # Hotkeys: default or vim
 | 
				
			||||||
  hotkeys: default
 | 
					  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
 | 
					# 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".
 | 
					# setting you want to lock, check the ID of the form on the page "preferences".
 | 
				
			||||||
 | 
				
			|||||||
@ -205,6 +205,7 @@ SCHEMA = {
 | 
				
			|||||||
        'cache_url': SettingsValue(str, 'https://web.archive.org/web/'),
 | 
					        'cache_url': SettingsValue(str, 'https://web.archive.org/web/'),
 | 
				
			||||||
        'search_on_category_select': SettingsValue(bool, True),
 | 
					        'search_on_category_select': SettingsValue(bool, True),
 | 
				
			||||||
        'hotkeys': SettingsValue(('default', 'vim'), 'default'),
 | 
					        'hotkeys': SettingsValue(('default', 'vim'), 'default'),
 | 
				
			||||||
 | 
					        'url_formatting': SettingsValue(('pretty', 'full', 'host'), 'pretty'),
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    'preferences': {
 | 
					    'preferences': {
 | 
				
			||||||
        'lock': SettingsValue(list, []),
 | 
					        'lock': SettingsValue(list, []),
 | 
				
			||||||
 | 
				
			|||||||
@ -254,6 +254,10 @@ article[data-vim-selected].category-social {
 | 
				
			|||||||
      white-space: nowrap;
 | 
					      white-space: nowrap;
 | 
				
			||||||
      flex-shrink: 1;
 | 
					      flex-shrink: 1;
 | 
				
			||||||
      padding-bottom: 1px;
 | 
					      padding-bottom: 1px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      .url_i1 {
 | 
				
			||||||
 | 
					        unicode-bidi: plaintext;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .url_o1::after {
 | 
					    .url_o1::after {
 | 
				
			||||||
 | 
				
			|||||||
@ -204,6 +204,7 @@
 | 
				
			|||||||
      {%- include 'simple/preferences/search_on_category_select.html' -%}
 | 
					      {%- include 'simple/preferences/search_on_category_select.html' -%}
 | 
				
			||||||
    {%- endif -%}
 | 
					    {%- endif -%}
 | 
				
			||||||
    {%- include 'simple/preferences/hotkeys.html' -%}
 | 
					    {%- include 'simple/preferences/hotkeys.html' -%}
 | 
				
			||||||
 | 
					    {%- include 'simple/preferences/urlformatting.html' -%}
 | 
				
			||||||
    {{- plugin_preferences('ui') -}}
 | 
					    {{- plugin_preferences('ui') -}}
 | 
				
			||||||
    {{- tab_footer() -}}
 | 
					    {{- tab_footer() -}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										25
									
								
								searx/templates/simple/preferences/urlformatting.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								searx/templates/simple/preferences/urlformatting.html
									
									
									
									
									
										Normal 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>{{- '' -}}
 | 
				
			||||||
@ -340,6 +340,14 @@ def get_enabled_categories(category_names: Iterable[str]):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_pretty_url(parsed_url: urllib.parse.ParseResult):
 | 
					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 = parsed_url.path
 | 
				
			||||||
    path = path[:-1] if len(path) > 0 and path[-1] == '/' else path
 | 
					    path = path[:-1] if len(path) > 0 and path[-1] == '/' else path
 | 
				
			||||||
    path = unquote(path.replace("/", " › "))
 | 
					    path = unquote(path.replace("/", " › "))
 | 
				
			||||||
@ -356,6 +364,7 @@ def get_client_settings():
 | 
				
			|||||||
        'translations': get_translations(),
 | 
					        'translations': get_translations(),
 | 
				
			||||||
        'search_on_category_select': req_pref.get_value('search_on_category_select'),
 | 
					        'search_on_category_select': req_pref.get_value('search_on_category_select'),
 | 
				
			||||||
        'hotkeys': req_pref.get_value('hotkeys'),
 | 
					        'hotkeys': req_pref.get_value('hotkeys'),
 | 
				
			||||||
 | 
					        'url_formatting': req_pref.get_value('url_formatting'),
 | 
				
			||||||
        'theme_static_path': custom_url_for('static', filename='themes/simple'),
 | 
					        '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['infinite_scroll'] = request.preferences.get_value('infinite_scroll')
 | 
				
			||||||
    kwargs['search_on_category_select'] = request.preferences.get_value('search_on_category_select')
 | 
					    kwargs['search_on_category_select'] = request.preferences.get_value('search_on_category_select')
 | 
				
			||||||
    kwargs['hotkeys'] = request.preferences.get_value('hotkeys')
 | 
					    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['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
 | 
				
			||||||
    kwargs['advanced_search'] = request.preferences.get_value('advanced_search')
 | 
					    kwargs['advanced_search'] = request.preferences.get_value('advanced_search')
 | 
				
			||||||
    kwargs['query_in_title'] = request.preferences.get_value('query_in_title')
 | 
					    kwargs['query_in_title'] = request.preferences.get_value('query_in_title')
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user