e5f4633c39
which included commits to RCS files with non-trunk default branches. git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@5 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
92 lines
2.7 KiB
Prolog
92 lines
2.7 KiB
Prolog
% #!/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.
|
|
|
|
|