diff --git a/src/html.ml b/src/html.ml index e4cecbc..4bc062e 100644 --- a/src/html.ml +++ b/src/html.ml @@ -13,6 +13,10 @@ let logarion_header ?header_tpl:(tpl=None) title = | Some s -> Unsafe.data Template.(of_string s |> fold_header title) | None -> header [ h1 [ pcdata title] ] +let logarion_page head_title header_title main = + html (head head_title) + (body [ logarion_header header_title; main ] ) + let logarion_text ?text_tpl:(tpl=None) ymd = match tpl with | Some s -> Unsafe.data Template.(of_string s |> fold_text ymd) @@ -26,8 +30,10 @@ let logarion_text ?text_tpl:(tpl=None) ymd = let of_ymd ?text_tpl:(tpl=None) lgrn ymd = let ymd_title = Ymd.(ymd.meta.title) in - html (head (ymd_title ^ " by " ^ ymd.meta.author.name)) - (body [logarion_header ymd_title; logarion_text ~text_tpl:tpl ymd ]) + logarion_page + (ymd_title ^ " by " ^ ymd.meta.author.name) + ymd_title + (logarion_text ~text_tpl:tpl ymd) |> to_string let article_link (file, meta) = @@ -37,52 +43,44 @@ let article_link (file, meta) = let of_file_meta_pairs ?listing_tpl:(tpl=None) lgrn file_meta_pairs = let t = Logarion.(lgrn.title) in - html (head t) - (body [ - logarion_header t; - div [ - h2 [pcdata "Articles"]; - match tpl with - | Some s -> Unsafe.data Template.(of_string s |> fold_index file_meta_pairs) - | None -> ul (List.map article_link file_meta_pairs); - ]; - ]) + logarion_page + t t + (div [ h2 [pcdata "Articles"]; + match tpl with + | Some s -> Unsafe.data Template.(of_string s |> fold_index file_meta_pairs) + | None -> ul (List.map article_link file_meta_pairs); + ]) |> to_string let form lgrn ymd = let input_set title name value = - p [ label [ - span [pcdata title]; - input ~a:[a_name name; a_value value] () - ]] + p [ label [ span [pcdata title]; input ~a:[a_name name; a_value value] () ] ] in - Ymd.(html (head "Compose") - (body [ - logarion_header "Article composition"; - div [ - form - ~a:[a_method `Post; a_action (uri_of_string "/post"); a_accept_charset ["utf-8"];] - [ - fieldset - ~legend:(legend [pcdata "Article"]) - [ - input_set "Title" "title" ymd.meta.title; - input_set "Author name" "name" ymd.meta.author.name; - input_set "Author email" "email" ymd.meta.author.email; - input_set "Topics" "topics" (String.concat ", " ymd.meta.topics); - input_set "Categories" "categories" (String.concat ", " ymd.meta.categories); - input_set "Keywords" "keywords" (String.concat ", " ymd.meta.keywords); - input_set "Series" "series" (String.concat ", " ymd.meta.series); - input_set "Abstract" "abstract" ymd.meta.abstract; - p [ - label [ - span [pcdata"Text"]; - textarea ~a:[a_name "body"] (pcdata ymd.body); - ]; - ]; - p [ button ~a:[a_button_type `Submit] [pcdata "Submit"] ]; - ] - ] - ]; - ])) + logarion_page + "Compose" "Article composition" + Ymd.(div [ + form + ~a:[a_method `Post; a_action (uri_of_string "/post"); a_accept_charset ["utf-8"];] + [ + fieldset + ~legend:(legend [pcdata "Article"]) + [ + input_set "Title" "title" ymd.meta.title; + input_set "Author name" "name" ymd.meta.author.name; + input_set "Author email" "email" ymd.meta.author.email; + input_set "Topics" "topics" (String.concat ", " ymd.meta.topics); + input_set "Categories" "categories" (String.concat ", " ymd.meta.categories); + input_set "Keywords" "keywords" (String.concat ", " ymd.meta.keywords); + input_set "Series" "series" (String.concat ", " ymd.meta.series); + input_set "Abstract" "abstract" ymd.meta.abstract; + p [ + label [ + span [pcdata"Text"]; + textarea ~a:[a_name "body"] (pcdata ymd.body); + ]; + ]; + p [ button ~a:[a_button_type `Submit] [pcdata "Submit"] ]; + ] + ] + ]) |> to_string