:- module(yaz_page,
[yaz_page//1,
html_page_controls//0
]).
:- use_module(library(http/html_write)).
:- use_module(library(http/http_dispatch)).
:- use_module(library(http/http_host)).
:- use_module(library(http/http_path)).
:- use_module(library(http/html_head)).
:- use_module(library(http/http_parameters)).
:- use_module(user(user_db)).
:- use_module(applications(isearch)).
:- use_module(library(http/http_wrapper)).
:- use_module(library(semweb/rdf_db)).
:- multifile
user:body//2.
user:body(yaz, Body) -->
yaz_page(Body).
user:body(user(isearch), Body) -->
yaz_search_page(Body).
%% yaz_page(+Body)
%
% Hook to provide the same layout and style for each YAZ page.
yaz_page(Body) -->
html_requires(css('yaz.css')),
html(body(class('yui3-skin-sam'),
[\html_page_header,
div(id(body),
div(id(content), Body))
])).
%% yaz_search_page(+Body)
%
% Hook to provide to apply YAZ style to the search result page.
yaz_search_page(Body) -->
html_requires(css('yaz.css')),
html(body([\html_page_header,
div([id(body), class(search)],
Body)
])).
%% html_page_header//
%
% Emit header of the html page.
html_page_header -->
html(div(id(header),
div(class('header-content'),
[ h1(a(href(location_by_id(http_yaz_home)), 'YAZ')),
div(id(pagesearch), \html_search),
%ul(id(pagenavigation), \html_navigation),
div(id(pagecontrols), \html_page_controls)
]))).
html_search -->
{ setting(search:target_class, Class),
http_current_request(Request),
http_parameters(Request,
[ q(Query,
[ default('')
])
])
},
html(form(action(location_by_id(isearch_page)),
\isearch_field(Query, Class))).
html_navigation -->
html([li(a(href(location_by_id(http_yaz_video_stats)), statistics)),
li(a(href(location_by_id(http_yaz_game)), game))
%li(a(href(location_by_id(http_yaz_annotate)), annotate))
]).
html_page_controls -->
login.
login -->
{ logged_on(User, _),
nonvar(User)
},
!,
html(div(class(login),
[ a(href(location_by_id(http_yaz_user)), User), ' | ',
a(href(location_by_id(http_yaz_logout)), 'Sign out')
])).
login -->
{ http_link_to_id(http_yaz_home, [login(true)], HREF) },
html(div(class(login),
a(href(HREF), 'Sign in'))).