(* 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.30 2004/10/10 16:31:52 rich Exp $
+ * $Id: page.ml,v 1.36 2004/10/23 15:00:15 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
open Printf
open ExtString
+open ExtList
open Cocanwiki
open Cocanwiki_template
({ edit_anon = edit_anon;
view_anon = view_anon } as host)
user =
- let template_page = get_template dbh hostid "page.html" in
- let template_404 = get_template dbh hostid "page_404.html" in
-
let page = q#param "page" in
let page = if page = "" then "index" else page in
+ let template_page = get_template ~page dbh hostid "page.html" in
+ let template_404 = get_template dbh hostid "page_404.html" in
+
(* Host-specific fields. *)
let sth = dbh#prepare_cached "select css is not null,
feedback_email is not null,
navigation
| _ -> assert false in
- (* Can the user edit? Manage users? etc. *)
+ (* User permissions. *)
let can_edit = can_edit host user in
let can_manage_users = can_manage_users host user in
- let can_manage_contacts = can_manage_contacts host user in
- let can_manage_site = can_manage_site host user in
- let can_edit_global_css = can_edit_global_css host user in
(* Do we have a stats page set up? *)
let has_stats = server_settings_stats_page dbh <> None in
t#conditional "can_edit" can_edit;
t#conditional "can_manage_users" can_manage_users;
- t#conditional "can_manage_contacts" can_manage_contacts;
- t#conditional "can_manage_site" can_manage_site;
- t#conditional "can_edit_global_css" can_edit_global_css;
-
t#conditional "has_stats" has_stats;
(* Pull out the sections in this page. *)
(* What links here. *)
let wlh = what_links_here dbh hostid page' in
+ let wlh = List.take max_links wlh in
let wlh_urls = List.map fst wlh in (* Just the URLs ... *)
let rv =
let table = List.map f rv in
t#table "recently_visited" table;
t#conditional "has_recently_visited" (rv <> []);
+
+ (* If both lists are empty (ie. an empty navigation box would
+ * appear), then disable navigation altogether.
+ *)
+ if wlh = [] && rv = [] then t#conditional "navigation" false
);
(* If we are coming from a search engine then we want to highlight
(* Deliver the page. *)
q#header ();
- print_string r xhtml
+ ignore (print_string r xhtml)
with
Not_found ->
(* No referer / no search terms / not a search engine referer. *)
t#set "search_terms" search_terms;
t#conditional "has_host_css" has_host_css;
-
t#conditional "can_edit" can_edit;
t#conditional "can_manage_users" can_manage_users;
- t#conditional "can_manage_contacts" can_manage_contacts;
- t#conditional "can_manage_site" can_manage_site;
- t#conditional "can_edit_global_css" can_edit_global_css;
-
t#conditional "has_stats" has_stats;
q#template t