% #!/bin/sh
% exec /usr/local/bin/ciao_shell $0 $*

:- use_package(pillow).

:- use_module(library(aggregates)).

main :-
  get_form_input(Info),
  get_form_value(Info,mood,Mood0),
  get_form_value(Info,potatoes,Potatoes),
  get_form_value(Info,pizza,Pizza),
  get_form_value(Info,coke,Coke),
  get_form_value(Info,pass,Password),
  get_form_value(Info,text,Text),
  get_form_value(Info,menu1,Number),
  findall(Color,member(menu2=Color,Info),Colors),
  compute_reply(Mood0,Potatoes,Pizza,Coke,Password,Text,Number,Colors,Reply),
  form_default(Mood0,happy,Mood),
  output_html([
    cgi_reply,
    start,
    title('Sample Form generated from Prolog'),
    h1('Sample HTML form'),
    Reply,
    --,
    h2('This is a form:'),
    start_form,
    'Please select mood:',
    radio(mood,happy,Mood),nl,
    image('http://www.clip.dia.fi.upm.es/images/smile.happy.gif',
      [align=middle]),
    nl,
    radio(mood,sad,Mood),nl,
    image('http://www.clip.dia.fi.upm.es/images/smile.sad.gif',
      [align=middle]),
    $,
    'What ',strong(do),' you want?',\\,
    checkbox(potatoes,Potatoes), 'Potato(e)s',\\,
    checkbox(pizza,Pizza), 'Pizza',\\,
    checkbox(coke,Coke), 'Coke',
    $,
    'Write here a password:',nl,
    input(password,[name=pass,size=9,maxlength=8]),$,
    textinput(text,[rows=5,cols=20],"Write here something"),$,
    'You can choose here: ', menu(menu1,[],[one,$two,three]),nl,
    'Also here: ', menu(menu2,[multiple],[$red,$green,blue]),$,
    input(submit,[value='Send values']),nl,
    input(reset,[value='Reset values']),
    end_form,
    --,
    address('clip@dia.fi.upm.es'),
    end]).

compute_reply('',_,_,_,_,_,_,_,'') :- !.
compute_reply(Mood,Potatoes,Pizza,Coke,Passwd0,Text0,Number,Colors0,Reply) :-
  compute_food(Potatoes,Pizza,Coke,Food),
  compute_text(Text0,Text),
  compute_password(Passwd0,Passwd),
  compute_colors(Colors0,Colors),
  Reply = [
    --,
    heading(2,'Submitted data:'),
    'You are ',strong(Mood),'.',\\,
    'You want ',strong(Food),\\,
    'The password is ',tt(verbatim(Passwd)),'.',\\,
    'In the text area you wrote: ',Text,$,
    'You chose number ',tt(Number),' and color(s):',
    preformatted(Colors)].

compute_food('','','','no food.').
compute_food(on,'','','potatoes.').
compute_food('',on,'','pizza.').
compute_food('','',on,'coke.').
compute_food(on,on,'','potatoes and pizza.').
compute_food('',on,on,'pizza with coke.').
compute_food(on,'',on,'potatoes with coke.').
compute_food(on,on,on,'potatoes and pizza with coke.').

compute_text(T0,T) :-
  form_empty_value(T0), !,
    T = '{Nothing}'.
compute_text(T,preformatted(T)).

compute_password(P0,P) :-
  P0 = '$empty' -> P = '{none}'; P = P0.

compute_colors(C0,C) :-
  C0 = [] -> C = [none] ; C = C0.