X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=scripts%2Fhost_menu.ml;h=7806efcea77fa822a8913f7b44093c1a65061a58;hb=5292c2362fb54524b8ec7877ee15c79596429491;hp=39f3143c21a08a25e75a3cbd4cb24bb815e13f2b;hpb=50f72e5597bef62747f462d26cae836c7c9ee6b9;p=cocanwiki.git diff --git a/scripts/host_menu.ml b/scripts/host_menu.ml index 39f3143..7806efc 100644 --- a/scripts/host_menu.ml +++ b/scripts/host_menu.ml @@ -1,7 +1,7 @@ (* COCANWIKI - a wiki written in Objective CAML. * Written by Richard W.M. Jones . * Copyright (C) 2004 Merjis Ltd. - * $Id: host_menu.ml,v 1.2 2004/09/24 16:30:07 rich Exp $ + * $Id: host_menu.ml,v 1.6 2004/10/23 09:36:11 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 @@ -27,54 +27,71 @@ open Printf open Cocanwiki open Cocanwiki_template -let run r (q : cgi) (dbh : Dbi.connection) hostid _ _ = +let run r (q : cgi) (dbh : Dbi.connection) hostid host user = let template = get_template dbh hostid "host_menu.html" in - (* Get lots of host-specific stuff from the database. *) - let sth = - dbh#prepare_cached - "select h.canonical_hostname, h.css is not null, h.edit_anon, - h.create_account_anon, h.theme_css is not null, - t.name, t.description, h.feedback_email, h.mailing_list - from hosts h left outer join themes t on h.theme_css = t.theme_css - where h.id = ?" in - sth#execute [`Int hostid]; + (* Get user's specific permissions. *) + let can_manage_users = can_manage_users host user in + let can_manage_contacts = can_manage_contacts host user in + let can_edit_global_css = can_edit_global_css host user in + let can_manage_site = can_manage_site host user in + template#conditional "can_manage_users" can_manage_users; + template#conditional "can_manage_contacts" can_manage_contacts; + template#conditional "can_edit_global_css" can_edit_global_css; + template#conditional "can_manage_site" can_manage_site; - let canonical_hostname, has_global_css, edit_anon, create_account_anon, - has_theme_css, theme_name, theme_description, has_feedback_email, - feedback_email, mailing_list = - match sth#fetch1 () with - [ `String canonical_hostname; `Bool has_global_css; - `Bool edit_anon; `Bool create_account_anon; `Bool has_theme_css; - (`String _ | `Null) as theme_name; - (`String _ | `Null) as theme_description; - (`String _ | `Null) as feedback_email; - `Bool mailing_list ] -> - let theme_name = - match theme_name with `String s -> s | `Null -> "" in - let theme_description = - match theme_description with `String s -> s | `Null -> "" in - let feedback_email, has_feedback_email = - match feedback_email with - `String s -> s, true - | `Null -> "", false in - canonical_hostname, has_global_css, edit_anon, create_account_anon, - has_theme_css, theme_name, theme_description, has_feedback_email, - feedback_email, mailing_list - | _ -> assert false in + if can_manage_site then ( + (* Get lots of host-specific stuff from the database. *) + let sth = + dbh#prepare_cached + "select h.canonical_hostname, h.css is not null, h.edit_anon, + h.create_account_anon, h.theme_css is not null, + t.name, t.description, h.feedback_email, h.mailing_list, + h.search_box, h.navigation, h.view_anon + from hosts h left outer join themes t on h.theme_css = t.theme_css + where h.id = ?" in + sth#execute [`Int hostid]; - template#set "canonical_hostname" canonical_hostname; - template#conditional "has_global_css" has_global_css; - template#conditional "edit_anon" edit_anon; - template#conditional "create_account_anon" create_account_anon; - template#conditional "has_theme_css" has_theme_css; - template#set "theme_name" theme_name; - template#set "theme_description" theme_description; - template#conditional "has_feedback_email" has_feedback_email; - template#set "feedback_email" feedback_email; - template#conditional "mailing_list" mailing_list; + let canonical_hostname, has_global_css, edit_anon, create_account_anon, + has_theme_css, theme_name, theme_description, has_feedback_email, + feedback_email, mailing_list, search_box, navigation, view_anon = + match sth#fetch1 () with + [ `String canonical_hostname; `Bool has_global_css; + `Bool edit_anon; `Bool create_account_anon; `Bool has_theme_css; + (`String _ | `Null) as theme_name; + (`String _ | `Null) as theme_description; + (`String _ | `Null) as feedback_email; + `Bool mailing_list; `Bool search_box; `Bool navigation; + `Bool view_anon ] -> + let theme_name = + match theme_name with `String s -> s | `Null -> "" in + let theme_description = + match theme_description with `String s -> s | `Null -> "" in + let feedback_email, has_feedback_email = + match feedback_email with + `String s -> s, true + | `Null -> "", false in + canonical_hostname, has_global_css, edit_anon, create_account_anon, + has_theme_css, theme_name, theme_description, has_feedback_email, + feedback_email, mailing_list, search_box, navigation, view_anon + | _ -> assert false in + + template#set "canonical_hostname" canonical_hostname; + template#conditional "has_global_css" has_global_css; + template#conditional "edit_anon" edit_anon; + template#conditional "create_account_anon" create_account_anon; + template#conditional "has_theme_css" has_theme_css; + template#set "theme_name" theme_name; + template#set "theme_description" theme_description; + template#conditional "has_feedback_email" has_feedback_email; + template#set "feedback_email" feedback_email; + template#conditional "mailing_list" mailing_list; + template#conditional "search_box" search_box; + template#conditional "navigation" navigation; + template#conditional "view_anon" view_anon + ); q#template template let () = - register_script ~restrict:[CanManageSite] run + register_script ~restrict:[CanEdit] run