:- module(cluster_search_ui, []). /** Generation of web ui for cluster search This module is used for generating HTML elements for the ui for cluster search. It is able to generate 4 different types of pages: * front - frontpage with a carousel of search examples * results - results page depicting the search results * result - one result and its metadata * about - information about the system The ui variables are retrieved from rdf (e.g. rdf/rijksmuseum_ui.ttl). */ :- use_module(library(cluster_search_ui/web_ui_dcg)). :- use_module(library(cluster_search_ui/settings)). :- use_module(library(http/http_ssl_plugin)). :- use_module(library(http/http_dispatch)). :- use_module(library(http/http_server_files)). :- use_module(library(http/html_write)). :- use_module(library(http/html_head)). :- use_module(library(http/http_path)). :- use_module(library(http/http_parameters)). :- use_module(library(semweb/rdf_db)). :- use_module(library(pengines)). % construct url and define filesystem search paths http:location(fonts, cliopatria(fonts), []). http:location(img, cliopatria(img), []). user:file_search_path(fonts, web(fonts)). user:file_search_path(img, web(img)). :- http_handler(cliopatria(cluster_search), cluster_search, []). :- http_handler(cliopatria(results), results, []). :- http_handler(cliopatria(about), about, []). :- http_handler(cliopatria(item), item, []). :- http_handler(fonts('.'), serve_files_in_directory(fonts), [prefix]). :- http_handler(img('.'), serve_files_in_directory(img), [prefix]). :- pengine_application(enrichment). :- use_module(enrichment:'cpack/cluster_search_ui/lib/cluster_search_ui/enrichment.pl'). :- set_setting_default(thumbnail:thumbnail_size, size(350,300)). :- set_setting_default(thumbnail:medium_size, size(1280,1024)). %% cluster_search(+Request) is det. % % Generate front page. cluster_search(_Request) :- reply_page(front, _Options). %% results(+Request) is det. % % Generate results page. results(Request) :- get_parameters(Request, Options), reply_page(results, Options). %% restult(+Request) is det. % % Generate a page showing a result with its metadata. item(Request) :- get_parameters(Request, Options), reply_page(result, Options). %% about(+Request) is det. % % Generate about page. about(Request) :- get_parameters(Request, Options), reply_page(about, Options). %% get_parameters(+Request, -Options) % % Retrieves an option list of parameters from the url. get_parameters(Request, Options) :- http_parameters(Request, [query(Query, [description('Entered Query'), optional(true)]), uri(URI, [description('URI of the item'), optional(true)]) ]), Options = [query(Query), uri(URI)]. %% reply_page(+Page, +Options) % % Replies the html page corresponding to the type of page and % Request. reply_page(Page, Options) :- setting(cluster_search_ui:ui, UI), rdf(UI, ui:iconLocation, literal(IconName)), http_absolute_location(icons(IconName), Icon, []), html_resource(css('search.css'), [requires([css('bootstrap.min.css')])]), reply_html_page( [ \title(Page, Options), link([href(Icon),rel('shortcut icon')]), meta([name('viewport'),content('width=device-width, initial-scale=1.0')]) ], [\html_requires(css('search.css')), \navigation_bar(Page), \scripts(Page), \content(Page, Options) ]).