(* camlp4r ./pa_html.cmo *) (* $Id: changeChildren.ml,v 4.10 2004/12/14 09:30:11 ddr Exp $ *) (* Copyright (c) 1998-2005 INRIA *) open Def; open Gutil; open Config; open Util; value print_child_person conf base p = let first_name = p_first_name base p in let surname = p_surname base p in let occ = p.occ in let var = "c" ^ string_of_int (Adef.int_of_iper p.cle_index) in tag "table" "border=1" begin tag "tr" "align=left" begin tag "td" begin Wserver.wprint "%s" (capitale (transl_nth conf "first name/first names" 0)); end; tag "td" "colspan=3" begin Wserver.wprint "" (quote_escaped first_name); end; tag "td" "align=right" begin let s = capitale (transl conf "number") in Wserver.wprint "%s" s; end; tag "td" begin Wserver.wprint "" var (if occ == 0 then "" else " value=" ^ string_of_int occ); end; end; Wserver.wprint "\n"; tag "tr" "align=left" begin tag "td" begin Wserver.wprint "%s" (capitale (transl_nth conf "surname/surnames" 0)); end; tag "td" "colspan=5" begin Wserver.wprint "" var surname; end; end; Wserver.wprint "\n"; end ; value select_children_of base u = List.fold_right (fun ifam ipl -> let des = doi base ifam in List.fold_right (fun ip ipl -> [ip :: ipl]) (Array.to_list des.children) ipl) (Array.to_list u.family) [] ; value digest_children base ipl = let l = List.map (fun ip -> let p = poi base ip in (p.first_name, p.surname, p.occ)) ipl in Iovalue.digest l ; value check_digest conf base digest = match p_getenv conf.env "digest" with [ Some ini_digest -> if digest <> ini_digest then Update.error_digest conf base else () | None -> () ] ; value print_children conf base ipl = do { stag "h4" begin Wserver.wprint "%s" (capitale (transl_nth conf "child/children" 1)); end; Wserver.wprint "\n
\n"; tag "ul" begin List.iter (fun ip -> let p = poi base ip in do { html_li conf; Wserver.wprint "\n%s" (reference conf base p (person_text conf base p)); Wserver.wprint "%s\n" (Date.short_dates_text conf base p); print_child_person conf base p; }) ipl; end; } ; value print_change conf base p u = let title _ = let s = transl conf "change children's names" in Wserver.wprint "%s" (capitale s) in let children = select_children_of base u in let digest = digest_children base children in do { header conf title; Wserver.wprint "%s" (reference conf base p (person_text conf base p)); Wserver.wprint "%s\n" (Date.short_dates_text conf base p); Wserver.wprint "
\n"; tag "form" "method=POST action=\"%s\"" conf.command begin Util.hidden_env conf; Wserver.wprint "\n" (Adef.int_of_iper p.cle_index); Wserver.wprint "\n
\n"; Wserver.wprint "\n" digest; Wserver.wprint "\n"; Wserver.wprint "\n"; print_children conf base children; Wserver.wprint "\n"; html_p conf; Wserver.wprint "\n"; end; Wserver.wprint "\n"; trailer conf; } ; value print conf base = match p_getint conf.env "ip" with [ Some i -> let p = poi base (Adef.iper_of_int i) in let u = uoi base (Adef.iper_of_int i) in print_change conf base p u | _ -> incorrect_request conf ] ; value print_children_list conf base u = do { stag "h4" begin Wserver.wprint "%s" (capitale (transl_nth conf "child/children" 1)); end; Wserver.wprint "\n
\n"; tag "ul" begin Array.iter (fun ifam -> let des = doi base ifam in Array.iter (fun ip -> let p = poi base ip in do { html_li conf; Wserver.wprint "\n%s" (reference conf base p (person_text conf base p)); Wserver.wprint "%s\n" (Date.short_dates_text conf base p); }) des.children) u.family; end; } ; value print_change_done conf base p u = let title _ = let s = transl conf "children's names changed" in Wserver.wprint "%s" (capitale s) in do { header conf title; Wserver.wprint "\n%s" (reference conf base p (person_text conf base p)); Wserver.wprint "%s\n" (Date.short_dates_text conf base p); print_children_list conf base u; trailer conf; } ; value print_conflict conf base p = let title _ = Wserver.wprint "%s" (capitale (transl conf "error")) in do { rheader conf title; Update.print_error conf base (AlreadyDefined p); html_p conf; Wserver.wprint "