75 lines
No EOL
3 KiB
Text
75 lines
No EOL
3 KiB
Text
module namespace search = 'http://ossetic-studies.org/ns/abaevdict-site/search';
|
|
|
|
import module namespace abv-m = 'http://ossetic-studies.org/ns/abaevdict-mod' at '../abv-mod.xqm';
|
|
import module namespace entry = 'http://ossetic-studies.org/ns/abaevdict-site/entrypoints' at './restx_entrypoints.xq';
|
|
|
|
(: =============================================================== :)
|
|
(: ======================= SEARCH ENTRYPOINT ===================== :)
|
|
(: =============================================================== :)
|
|
|
|
declare %rest:path("/search/{$path=.+}")
|
|
%rest:GET
|
|
function search:search-default($path as xs:string) {
|
|
web:forward(`/en/search/{$path}`)
|
|
};
|
|
|
|
declare %rest:path("{$lang}/search/new")
|
|
%rest:query-param("searchType", "{$searchType}", 'full')
|
|
%rest:query-param("searchQuery", "{$searchQuery}")
|
|
%output:method("html")
|
|
%output:html-version('5')
|
|
function search:search($lang, $searchType, $searchQuery) {
|
|
let $sd := abv-m:search($lang,$searchType,$searchQuery)
|
|
let $r1 := session:set('searchType', $searchType)
|
|
let $r2 := session:set('searchQuery', $searchQuery)
|
|
let $r3 := session:set('searchN', 1)
|
|
let $r4 := session:set('searchData', $sd)
|
|
return
|
|
if(array:size($sd) > 0) then
|
|
entry:by-id($lang,
|
|
$sd(1)('entry'),
|
|
'')
|
|
else
|
|
web:redirect('../search/clear')
|
|
};
|
|
|
|
declare %rest:path("{$lang}/search/next")
|
|
%output:method("html")
|
|
%output:html-version('5')
|
|
function search:search-next($lang) {
|
|
let $n as xs:integer := session:get('searchN')+1
|
|
let $r1 := session:set('searchN', $n)
|
|
let $sd := session:get('searchData')
|
|
return entry:by-id($lang, $sd($n)('entry'), ())
|
|
};
|
|
|
|
declare %rest:path("{$lang}/search/prev")
|
|
%output:method("html")
|
|
%output:html-version('5')
|
|
function search:search-prev($lang) {
|
|
let $n as xs:integer := session:get('searchN')-1
|
|
let $r1 := session:set('searchN', $n)
|
|
let $sd := session:get('searchData')
|
|
return entry:by-id($lang, $sd($n)('entry'), ())
|
|
};
|
|
|
|
declare %rest:path("{$lang}/search/position")
|
|
%rest:query-param("p", "{$p}")
|
|
%output:method("html")
|
|
%output:html-version('5')
|
|
function search:search-position($lang, $p as xs:integer) {
|
|
let $r1 := session:set('searchN', $p)
|
|
let $sd := session:get('searchData')
|
|
return entry:by-id($lang, $sd($p)('entry'), ())
|
|
};
|
|
|
|
declare %rest:path("{$lang}/search/clear")
|
|
%output:method("html")
|
|
%output:html-version('5')
|
|
function search:clearSearch($lang) {
|
|
let $r1 := session:delete('searchType')
|
|
let $r2 := session:delete('searchQuery')
|
|
let $r3 := session:delete('searchN')
|
|
let $r4 := session:delete('searchData')
|
|
return web:redirect('../dict')
|
|
}; |