:- module(yaz_home, [http_yaz_home/1, http_yaz_new_user/1 ]). :- use_module(library(http/http_dispatch)). :- use_module(library(http/http_parameters)). :- use_module(library(http/html_write)). :- use_module(library(http/html_head)). :- use_module(user(user_db)). :- use_module(library(yaz_util)). :- use_module(library(video_annotation)). :- use_module(components(yaz_page)). :- use_module(components(yaz_video_item)). :- use_module(applications(yaz_tags)). :- use_module(library(videos)). :- http_handler(yaz(.), http_yaz_home, []). %% http_yaz_home(+Request) % % Emit yaz homepage, including videos, tags and ranks. % Show User specific info when logged on. http_yaz_home(Request) :- http_parameters(Request, [login(Login, [ default(false), description('When set to true user must be logged on') ]) ]), logged_on(User0, _), ( Login == true, var(User0) -> ensure_logged_on(_User) ; nonvar(User0) -> user_property(User0, url(User)), html_user_home_page(User) ; html_home_page ). %% http_yaz_new_user(+Request) % % Entry page for PrestoPRIME testbed http_yaz_new_user(Request) :- http_parameters(Request, [ user(User, [optional(true), descritpion('Name of new user')]) ]), ( var(User) -> html_new_user_page(http_yaz_new_user, []) ; current_user(User) -> html_new_user_page(http_yaz_new_user, [user(User), message('name already exists')]) ; password_hash(presto, PW), user_add(User, [realname(User),password(PW),allow([read(_,_),write(_,_)])]), login(User), http_location_by_id(http_yaz_home, Home), throw(http_reply(moved_temporary(Home))) ). html_new_user_page(F, Options) :- option(user(User), Options, ''), option(message(Message), Options, ''), reply_html_page([ title(['YAZ - new user']) ], [ \html_requires(css('yaz.css')), div('style="text-align:center;margin-top:20%"', [ h3('Enter your name:'), form(action(location_by_id(F)), [ input([type(text),name(user),value(User)]), input([type(submit), value('Go')]) ]), div([style='color:red;size:smalller'], Message), p(a(href(location_by_id(http_yaz_home)), 'or login')) ]) ]). /******************************* * html * *******************************/ %% html_home_page % % Emit general home page html_home_page :- video_queue(Queue0), active_videos(_, Active0), moderated_videos(_, Moderated0), list_limit(Queue0, 5, Queue, _), list_limit(Active0, 5, Active, _), list_limit(Moderated0, 5, Moderated, _), reply_html_page(yaz, [ title(['YAZ']) ], [ \html_topic(Queue, queue, false, _), \html_topic(Active, active, false, _), \html_topic(Moderated, moderated, false, _) ]). %% html_user_home_page(+User) % % Emit home page for User html_user_home_page(User) :- video_queue(Queue0), active_videos(User, Active0), moderated_videos(User, Moderated0), %suggested_videos(User, Suggested0), list_limit(Queue0, 5, Queue, _), list_limit(Active0, 5, Active, _), list_limit(Moderated0, 5, Moderated, _), %list_limit(Suggested0, 5, Suggested, _), reply_html_page(yaz, [ title(['YAZ - ', User]) ], [ \html_topic(Queue, queue, false, User), \html_topic(Active, active, false, User), %\html_topic(Suggested, suggested, false, User), \html_topic(Moderated, moderated, false, User) ]). html_topic(Videos, Type, AllLink, User) --> { http_link_to_id(http_yaz_videos, [type(Type)], HREF) }, html(div([class(topic)], [ div(class(header), h2([a(href(HREF), \topic_header(Type, User)), \html_all_link(AllLink, Type) ])), div(class(body), ul(class('result-line'), \html_video_list(Videos, []))) ])). html_all_link(true, Type) --> { http_link_to_id(http_yaz_videos, [type(Type),user(all)], HREF) }, html([' / ', a(href(HREF), \all_link(Type))]). html_all_link(_, _) --> !. topic_header(queue, _) --> html('Videos waiting for a moderator'). topic_header(moderated, User) --> { nonvar(User) }, !, html('Videos moderated by you'). topic_header(moderated, _) --> !, html('Videos finished moderation'). topic_header(active, User) --> { nonvar(User) }, !, html('Your active videos'). topic_header(active, _) --> !, html('Videos under moderation'). topic_header(suggested, _) --> html('Your suggestions'). all_link(active) --> html('all active videos'). all_link(moderated) --> html('all moderated videos'). html_video_list([], _) --> !. html_video_list([Video|Vs], Options) --> html(li(\yaz_video_result(Video, Options))), html_video_list(Vs, Options).