@@ -13,6 +13,20 @@ declare variable $local:method := lower-case(request:get-method());
1313declare variable $local:is-get := $local:method eq 'get' ;
1414declare variable $local:user := login:set-user ("org.exist.login" , (), false ());
1515
16+ declare function local:map-type-to-where ($type as xs:string?) as xs:string {
17+ (
18+ map:get (
19+ map {
20+ "name" : "everywhere" ,
21+ "signature" : "signature" ,
22+ "desc" : "description"
23+ },
24+ $type
25+ ),
26+ 'everywhere'
27+ )[1 ]
28+ };
29+
1630declare function local:render-view ($view as xs:string) {
1731 <dispatch xmlns = "http://exist.sourceforge.net/NS/exist" >
1832 <forward url = "templates/pages/{$view} .html" />
@@ -25,10 +39,58 @@ declare function local:render-view($view as xs:string) {
2539 </dispatch>
2640};
2741
28- if ($exist:path eq '' ) then (
42+ declare function local:render-parameters ($parameters as map (*)) {
43+ map:for-each ($parameters, function ($k, $v) {
44+ if (empty ($v)) then () else (
45+ $k || '=' || escape-uri ($v, true ())
46+ )
47+ })
48+ => string-join ('& ' )
49+ };
50+
51+ (: redirects :)
52+ if ($local:is-get and $exist:path eq '' ) then (
2953 <dispatch xmlns = "http://exist.sourceforge.net/NS/exist" >
3054 <redirect url = "{concat (request:get-uri (), '/' )} " />
3155 </dispatch>
56+ ) else if ($local:is-get and $exist:path eq '/index.html' ) then (
57+ let $url := substring-before (request:get-uri (), 'index.html' )
58+
59+ let $parameters := map{
60+ 'q' : request:get-parameter ('q' , ()),
61+ 'action' : 'search' ,
62+ 'where' : local:map-type-to-where (request:get-parameter ('type' , ()))
63+ }
64+
65+ return
66+ <dispatch xmlns = "http://exist.sourceforge.net/NS/exist" >
67+ <redirect url = "{$url} ?{local:render-parameters ($parameters)} " />
68+ </dispatch>
69+ ) else if ($local:is-get and $exist:path eq '/view.html' ) then (
70+ let $url := substring-before (request:get-uri (), '.html' )
71+ let $parameters := map{
72+ 'location' : request:get-parameter ('location' , ()),
73+ 'uri' : request:get-parameter ('uri' , ()),
74+ 'function' : request:get-parameter ('function' , ())
75+ }
76+
77+ return
78+ <dispatch xmlns = "http://exist.sourceforge.net/NS/exist" >
79+ <redirect url = "{$url} ?{local:render-parameters ($parameters)} " />
80+ </dispatch>
81+
82+ ) else if ($local:is-get and $exist:path eq '/browse.html' ) then (
83+ let $url := substring-before (request:get-uri (), '.html' )
84+ let $parameters := map{
85+ 'w3c' : request:get-parameter ('w3c' , ()),
86+ 'extensions' : request:get-parameter ('extensions' , ()),
87+ 'appmodules' : request:get-parameter ('appmodules' , ())
88+ }
89+
90+ return
91+ <dispatch xmlns = "http://exist.sourceforge.net/NS/exist" >
92+ <redirect url = "{$url} ?{local:render-parameters ($parameters)} " />
93+ </dispatch>
3294) else if ($local:is-get and $exist:path eq "/" ) then (
3395 local:render-view ('index' )
3496) else if ($local:is-get and $exist:path eq "/view" ) then (
0 commit comments