(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: page.ml,v 1.56 2006/08/14 18:25:29 rich Exp $
+ * $Id: page.ml,v 1.59 2006/12/06 09:46:57 rich Exp $
*
* 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
*)
let template_page_header =
- get_template ~page dbh hostid "page_header.html" in
- let template_page = get_template ~page dbh hostid "page.html" in
+ get_template ~page r dbh hostid "page_header.html" in
+ let template_page = get_template ~page r dbh hostid "page.html" in
(* This is the simpler template for 404 pages. *)
- let template_404_header = get_template dbh hostid "page_404_header.html" in
- let template_404 = get_template dbh hostid "page_404.html" in
+ let template_404_header = get_template r dbh hostid "page_404_header.html" in
+ let template_404 = get_template r dbh hostid "page_404.html" in
(* Host-specific fields. *)
let rows =
None -> []
| Some pageid ->
let rows = PGSQL(dbh)
- "select ordering, sectionname, content, divname, jsgo
+ "select ordering, sectionname, content, divname, divclass, jsgo
from contents where pageid = $pageid order by ordering" in
List.map
- (fun (ordering, sectionname, content, divname, jsgo) ->
+ (fun (ordering, sectionname, content, divname, divclass, jsgo) ->
let divname, has_divname =
match divname with
| None -> "", false
| Some divname -> divname, true in
+ let divclass, has_divclass =
+ match divclass with
+ | None -> "", false
+ | Some divclass -> divclass, true in
let jsgo, has_jsgo =
match jsgo with
| None -> "", false
| Some jsgo -> jsgo, true in
+
+ let has_divclass, divclass =
+ if has_jsgo then
+ (true,
+ if divclass = "" then "jsgo_div"
+ else divclass ^ " jsgo_div")
+ else
+ has_divclass, divclass in
+ let has_div = has_divname || has_divclass in
+
let sectionname, has_sectionname =
match sectionname with
| None -> "", false
(Wikilib.xhtml_of_content r dbh hostid content);
"has_divname", Template.VarConditional has_divname;
"divname", Template.VarString divname;
+ "has_divclass", Template.VarConditional has_divclass;
+ "divclass", Template.VarString divclass;
+ "has_div", Template.VarConditional has_div;
"has_jsgo", Template.VarConditional has_jsgo;
"jsgo", Template.VarString jsgo ]) rows in
"content", Template.VarString content;
"has_divname", Template.VarConditional true;
"divname", Template.VarString "form_div";
+ "has_divclass", Template.VarConditional false;
+ "divclass", Template.VarString "";
+ "has_div", Template.VarConditional true;
"has_jsgo", Template.VarConditional false;
"jsgo", Template.VarString "";
] in
let keywords = Pcre.split ~rex:split_words search_terms in
let keywords =
List.filter (fun s -> not (string_is_whitespace s)) keywords in
- let keywords = List.map String.lowercase keywords in
+ let keywords = List.map lowercase keywords in
(* Turn the keywords into a tsearch2 ts_query string. *)
let tsquery = String.concat "&" keywords in
let rec loop page' i =
if i > max_redirect then (
error ~title:"Too many redirections" ~back_button:true
- dbh hostid q
+ r dbh hostid q
("Too many redirects between pages. This may happen because " ^
"of a cycle of redirections.");
return ()