$def with (selected_sort, exclude=None, default_sort='relevance', search_scheme='works') $code: sort_option_names = { 'relevance': _("Relevance"), 'random': _("Random"), 'index': _("List Order"), 'last_modified': _("Last Modified"), 'editions': _("Most Editions"), 'old': _("First Published"), 'new': _("Most Recent"), 'rating': _("Top Rated"), 'readinglog': _("Reading Log"), 'want_to_read': _("Want to Read"), 'currently_reading': _("Currently Reading"), 'already_read': _("Already Read"), 'title': _("Work Title (beta: Librarian only)") } def get_selected_sort_name(selected_sort, default_sort, sort_option_names): if selected_sort and selected_sort.startswith('random'): return sort_option_names['random'] return sort_option_names.get(selected_sort, sort_option_names.get(default_sort, _("Sorting by"))) selected_sort_name = get_selected_sort_name(selected_sort, default_sort, sort_option_names) if search_scheme == 'authors': sort_options = [ { 'sort': 'relevance', 'name': _("Relevance"), 'ga_key': 'Relevance' }, { 'sort': 'work_count desc', 'name': _("Work Count"), 'ga_key': 'WorkCountDesc' }, { 'sort': 'random', 'name': _("Random"), 'ga_key': 'Random', 'selected': selected_sort and selected_sort.startswith('random') }, ] elif search_scheme == 'lists_seeds': sort_options = [ { 'sort': 'index', 'name': _("List Order"), 'ga_key': 'ListOrder' }, { 'sort': 'last_modified', 'name': _("Last Modified"), 'ga_key': 'LastModified' }, ] else: sort_options = [ { 'sort': 'relevance', 'name': _("Relevance"), 'ga_key': 'Relevance' }, { 'sort': 'editions', 'name': _("Most Editions"), 'ga_key': 'Editions' }, { 'sort': 'old', 'name': _("First Published"), 'ga_key': 'Old' }, { 'sort': 'new', 'name': _("Most Recent"), 'ga_key': 'New' }, { 'sort': 'rating', 'name': _("Top Rated"), 'ga_key': 'Rating' }, { 'sort': 'readinglog', 'name': _("Reading Log"), 'ga_key': 'ReadingLog', 'selected': selected_sort in ('readinglog', 'want_to_read', 'currently_reading', 'already_read'), 'sub_sorts': [ { 'sort': 'readinglog', 'name': _("Any"), 'ga_key': 'ReadingLogAny' }, { 'sort': 'want_to_read', 'name': _("Want to Read"), 'ga_key': 'ReadingLogWantToRead' }, { 'sort': 'currently_reading', 'name': _("Currently Reading"), 'ga_key': 'ReadingLogCurrentlyReading' }, { 'sort': 'already_read', 'name': _("Already Read"), 'ga_key': 'ReadingLogAlreadyRead' }, ] }, { 'sort': 'random', 'name': _("Random"), 'ga_key': 'Random', 'selected': selected_sort and selected_sort.startswith('random') }, ] if ctx.user and (ctx.user.is_admin() or ctx.user.is_librarian()): sort_options.append({ 'sort': 'title', 'name': _("Work Title (beta: Librarian only)"), 'ga_key': 'Title' })
$_('Sorting by')

$selected_sort_name

$for sort_option in sort_options: $if exclude and sort_option['sort'] in exclude: $continue $ is_selected = sort_option.get('selected') or sort_option['sort'] == selected_sort or (selected_sort is None and sort_option['sort'] == default_sort) $if is_selected: $sort_option['name'] $else: $sort_option['name'] $if sort_option.get('sub_sorts') and is_selected: $for sub_sort in sort_option['sub_sorts']: $ is_selected = sub_sort['sort'] == selected_sort $if is_selected: $sub_sort['name'] $else: $sub_sort['name']
$if selected_sort and selected_sort.startswith('random') and not is_bot(): $_('Shuffle')