Preserve search result sort order through page navigation. To
keep it simple, use one single sort order in the search results
instead of nested sort orders. For consistency with web site,
sort by "creatorSorter", "date", and "titleSorter" instead of
"creator", "publicdate", and "title".
INSERTED DELETED
33 17 src/search/index.dcgi.m4
2 2 src/sort/index.dcgi.m4
35 19 TOTAL over 2 changed files
# parse out page number and sort orders
for (i in parts) {
if (parts[i] ~ /^rows[0-9][0-9]*$/) {
rows = substr(parts[i], 5)
} else if (parts[i] ~ /^page[0-9][0-9]*$/) {
page = substr(parts[i], 5)
} else if (parts[i] ~ /^sort/) {
- orders++
- str = substr(parts[i], 5)
- order[orders] = str
+ if (length(order) == 0) {
+ sort_param = parts[i]
+ order = substr(parts[i], 5)
+ }
}
}
# special case for when the search term is an archive.org details URL
if (match(search, /^https:\/\/(www\.)?archive\.org\/details\//)) {
@@ -40,18 +51,19 @@
# remove quotes from search string, since it gets quoted later
gsub(/"/, "", search)
# default sort orders if none were specified
- if (orders == 0) {
- orders = 1
+ if (length(order) == 0) {
if (search == "mediatype:collection" ||
search == "mediatype:(collection)")
{
- order[1] = "collection_size desc"
+ order = "collection_size desc"
+ sort_param = "sort" order
} else {
- order[1] = "nav_order desc"
+ order = "nav_order desc"
+ sort_param = "sort" order
}
}