/* Copyright (C) Wolfgang Menzel, Universität Hamburg, 2003-06-27 based on the SWI-Prolog demo program demo_body.pl This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ :- module(tutor_helper, [ reply/1 ]). :- use_module(library('http/http_client')). :- style_check(-atom). % allow long atoms reply(Request) :- member(path('/tutor'), Request), !, title_html, selection_html, end_html. reply(Request) :- member(path('/prompt'), Request), member(search(Search),Request), member(exercise=exit,Search),!, format('Connection: close~n', []), title_html, format('

Thank you for using this program. Bye.

'). end_html. reply(Request) :- member(path('/prompt'), Request), !, member(search(Search),Request), member(exercise=Exercise,Search), memberchk(item=ItemId,Search), title_html, prompt_html(Exercise, ItemId), end_html. reply(Request) :- member(path('/feedback'), Request), member(search(Search),Request), member(exlevel='22222',Search),!, member(exercise=Exercise,Search), member(item=ItemId,Search), member(text=Text,Search), title_html, feedback_html(Exercise,ItemId,Text,'22222'), end_html. reply(Request) :- member(path('/feedback'), Request), !, member(search(Search),Request), member(exercise=Exercise,Search), member(item=ItemId,Search), member(text=Text,Search), member(exlevel=ExLevel,Search), title_html, feedback_html(Exercise,ItemId,Text,ExLevel), end_html. title_html :- format('Content-type: text/html~n~n'), format('~n'), format(' ~n My little language tutor ~n '), format(' ~n'), format('

My little language tutor

~n'). selection_html :- format('

Welcome!

~n'), format('

Which exercise?

~n'), format('
~n'), format('~n'), format('~n'), format('

~n'), format('
~n'). menu_items_html :- format('~n'), format('~n'), format('~n'). prompt_html(Exercise,ItemId) :- get_prompt(Exercise,Prompt), next_item(Exercise,ItemId,Text,NewItemId), format('

~w

~n~n',Prompt), format(' ~w ~n~n',Text), format('
~n~n'), format(' ~n'), format(' ~n',[NewItemId]), format(' ~n',[Exercise]), format(' ~n'), format('

~n'), format('
~n'). prompt_html(_,_) :- format('

No more items available.

'), format('

Another exercise?

~n'), format('
~n'), format(''), format('~n'), format('

~n'), format('
~n'). feedback_html(Exercise,ItemId,Text,'22222') :- !, format('

Your sentence: ~w

', Text), get_sols(Exercise,ItemId,Sols), format('

My proposal: ~w

~n', [Sols]), format('~n'), format(''), format(''), format(''), format(' Your sentence: ~w

', Text), check_utt(Exercise,ItemId,ExLevel,Text,Reply,NewExLevel), format('

My comment: ~w

~n', Reply), (NewExLevel='33333' -> true ; (NewExLevel\=ExLevel -> format('

To correct, go back in your browser and try again

~n') ; true)), format('
~n'), format('~n',Exercise), format('~n',ItemId), format('~n',Text), format('
~n'), format('~n',Exercise), format('~n',ItemId), format('~n'), format(' ~n'), format('
~n'), format(''), format('
~n'), format('~n'), % kann man hier die Beschriftung des Buttons von dem Wert trennen? format('
~n'), (NewExLevel\='33333' -> (format('')) ; true), format(''), format(''), format(''), format(' ~n '). % catch-all case for requests without a helper reply(Request) :- format('Content-type: text/html~n~n', []), format('~n', []), format('
~n'), format('~n',Exercise), format('~n',ItemId), format('~n',Text), ((NewExLevel='11111' ; NewExLevel='22222') -> (format('~n'), format(' ~n')) ; (format('~n',NewExLevel), format(' ~n'))), format('
~n'), format('~n',Exercise), format('~n',ItemId), format('~n',NewExLevel), format(' ~n'), format('
~n'), format(''), format('
~n'), format('~n'), % kann man hier die Beschriftung des Buttons von dem Wert trennen? format('
~n'), print_request(Request), format('~n
~n'), format('~n', []). print_request([]). print_request([H|T]) :- H =.. [Name, Value], format('~w~w~n', [Name, Value]), print_request(T).