Edit global CSS.
Database:
- Added themes table.
- Constraint hosts.theme_css to be in themes table.
Updated MANIFEST.
scripts/edit.ml
scripts/edit_contact.ml
scripts/edit_contact_form.ml
+scripts/edit_host_css.ml
+scripts/edit_host_css_form.ml
scripts/edit_page_css.ml
scripts/edit_page_css_form.ml
scripts/edit_sitemenu.ml
scripts/forgot_password.ml
scripts/forgot_password_form.ml
scripts/history.ml
+scripts/host_menu.ml
scripts/hoststyle.ml
scripts/image.ml
scripts/images.ml
templates/edit.html
templates/edit_conflict.html
templates/edit_contact_form.html
+templates/edit_host_css_form.html
templates/edit_page_css_form.html
templates/edit_sitemenu.html
templates/edit_user_form.html
templates/files.html
templates/forgot_password_form.html
templates/history.html
+templates/host_menu.html
templates/images.html
templates/largest_pages.html
templates/login_form.html
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 29 (OID 536004)
+-- TOC entry 31 (OID 536004)
-- Name: pages_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 30 (OID 536021)
+-- TOC entry 32 (OID 536021)
-- Name: contents_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 31 (OID 536371)
+-- TOC entry 33 (OID 536371)
-- Name: hosts_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 32 (OID 537151)
+-- TOC entry 34 (OID 537151)
-- Name: images_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 33 (OID 537166)
+-- TOC entry 35 (OID 537166)
-- Name: files_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 34 (OID 540816)
+-- TOC entry 36 (OID 540816)
-- Name: users_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 35 (OID 542605)
+-- TOC entry 37 (OID 542605)
-- Name: contacts_id_seq; Type: ACL; Schema: public; Owner: rich
--
SET SESSION AUTHORIZATION 'rich';
--
--- TOC entry 40 (OID 536388)
+-- TOC entry 29 (OID 543499)
+-- Name: themes; Type: TABLE; Schema: public; Owner: rich
+--
+
+CREATE TABLE themes (
+ theme_css text NOT NULL,
+ name text NOT NULL,
+ description text NOT NULL
+);
+
+
+--
+-- TOC entry 30 (OID 543499)
+-- Name: themes; Type: ACL; Schema: public; Owner: rich
+--
+
+REVOKE ALL ON TABLE themes FROM PUBLIC;
+GRANT SELECT ON TABLE themes TO "www-data";
+
+
+SET SESSION AUTHORIZATION 'rich';
+
+--
+-- TOC entry 42 (OID 536388)
-- Name: hostnames_hostid_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 41 (OID 536389)
+-- TOC entry 43 (OID 536389)
-- Name: hostnams_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 37 (OID 536419)
+-- TOC entry 39 (OID 536419)
-- Name: pages_url_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 42 (OID 536924)
+-- TOC entry 44 (OID 536924)
-- Name: email_notify_email_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 43 (OID 540251)
+-- TOC entry 45 (OID 540251)
-- Name: images_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 45 (OID 540252)
+-- TOC entry 47 (OID 540252)
-- Name: files_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 48 (OID 540831)
+-- TOC entry 50 (OID 540831)
-- Name: users_name_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 47 (OID 540946)
+-- TOC entry 49 (OID 540946)
-- Name: users_id_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 50 (OID 540970)
+-- TOC entry 52 (OID 540970)
-- Name: sitemenu_ordering_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 51 (OID 540971)
+-- TOC entry 53 (OID 540971)
-- Name: sitemenu_url_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 53 (OID 542626)
+-- TOC entry 55 (OID 542626)
-- Name: contact_emails_uq; Type: INDEX; Schema: public; Owner: rich
--
--
--- TOC entry 36 (OID 536012)
+-- TOC entry 56 (OID 543505)
+-- Name: themes_theme_css_uq; Type: INDEX; Schema: public; Owner: rich
+--
+
+CREATE UNIQUE INDEX themes_theme_css_uq ON themes USING btree (theme_css);
+
+
+--
+-- TOC entry 38 (OID 536012)
-- Name: pages_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 38 (OID 536027)
+-- TOC entry 40 (OID 536027)
-- Name: contents_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 39 (OID 536377)
+-- TOC entry 41 (OID 536377)
-- Name: hosts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 44 (OID 537158)
+-- TOC entry 46 (OID 537158)
-- Name: images_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 46 (OID 537173)
+-- TOC entry 48 (OID 537173)
-- Name: files_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 49 (OID 540825)
+-- TOC entry 51 (OID 540825)
-- Name: users_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 52 (OID 542611)
+-- TOC entry 54 (OID 542611)
-- Name: contacts_pkey; Type: CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 58 (OID 536029)
+-- TOC entry 61 (OID 536029)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 60 (OID 536384)
+-- TOC entry 64 (OID 536384)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 59 (OID 536394)
+-- TOC entry 62 (OID 536394)
-- Name: hosts_hostname_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 54 (OID 536404)
+-- TOC entry 57 (OID 536404)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 61 (OID 536920)
+-- TOC entry 65 (OID 536920)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 62 (OID 537160)
+-- TOC entry 66 (OID 537160)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 63 (OID 537175)
+-- TOC entry 67 (OID 537175)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 55 (OID 539155)
+-- TOC entry 58 (OID 539155)
-- Name: pages_redirect_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 64 (OID 540827)
+-- TOC entry 68 (OID 540827)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 65 (OID 540837)
+-- TOC entry 69 (OID 540837)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 56 (OID 540942)
+-- TOC entry 59 (OID 540942)
-- Name: $2; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 57 (OID 540947)
+-- TOC entry 60 (OID 540947)
-- Name: pages_user_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 66 (OID 540966)
+-- TOC entry 70 (OID 540966)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 67 (OID 540972)
+-- TOC entry 71 (OID 540972)
-- Name: sitemenu_url_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 68 (OID 542613)
+-- TOC entry 72 (OID 542613)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
--
--- TOC entry 69 (OID 542622)
+-- TOC entry 73 (OID 542622)
-- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: rich
--
ADD CONSTRAINT "$1" FOREIGN KEY (contactid) REFERENCES contacts(id);
+--
+-- TOC entry 63 (OID 543506)
+-- Name: hosts_theme_css_cn; Type: FK CONSTRAINT; Schema: public; Owner: rich
+--
+
+ALTER TABLE ONLY hosts
+ ADD CONSTRAINT hosts_theme_css_cn FOREIGN KEY (theme_css) REFERENCES themes(theme_css);
+
+
SET SESSION AUTHORIZATION 'postgres';
--
cocanwiki_ok.cmo cocanwiki_strings.cmo cocanwiki_template.cmi
edit.cmx: cocanwiki.cmx cocanwiki_diff.cmx cocanwiki_emailnotify.cmx \
cocanwiki_ok.cmx cocanwiki_strings.cmx cocanwiki_template.cmx
-edit_contact.cmo: cocanwiki.cmo cocanwiki_ok.cmo cocanwiki_template.cmi
-edit_contact.cmx: cocanwiki.cmx cocanwiki_ok.cmx cocanwiki_template.cmx
+edit_contact.cmo: cocanwiki.cmo cocanwiki_ok.cmo cocanwiki_strings.cmo
+edit_contact.cmx: cocanwiki.cmx cocanwiki_ok.cmx cocanwiki_strings.cmx
edit_contact_form.cmo: cocanwiki.cmo cocanwiki_template.cmi
edit_contact_form.cmx: cocanwiki.cmx cocanwiki_template.cmx
+edit_host_css.cmo: cocanwiki.cmo cocanwiki_ok.cmo cocanwiki_strings.cmo
+edit_host_css.cmx: cocanwiki.cmx cocanwiki_ok.cmx cocanwiki_strings.cmx
+edit_host_css_form.cmo: cocanwiki.cmo cocanwiki_template.cmi
+edit_host_css_form.cmx: cocanwiki.cmx cocanwiki_template.cmx
edit_page_css.cmo: cocanwiki.cmo cocanwiki_diff.cmo cocanwiki_emailnotify.cmo \
cocanwiki_ok.cmo cocanwiki_strings.cmo
edit_page_css.cmx: cocanwiki.cmx cocanwiki_diff.cmx cocanwiki_emailnotify.cmx \
forgot_password_form.cmx: cocanwiki.cmx cocanwiki_template.cmx
history.cmo: cocanwiki.cmo cocanwiki_date.cmo cocanwiki_template.cmi
history.cmx: cocanwiki.cmx cocanwiki_date.cmx cocanwiki_template.cmx
+host_menu.cmo: cocanwiki.cmo cocanwiki_template.cmi
+host_menu.cmx: cocanwiki.cmx cocanwiki_template.cmx
hoststyle.cmo: cgi_expires.cmo cocanwiki.cmo cocanwiki_template.cmi
hoststyle.cmx: cgi_expires.cmx cocanwiki.cmx cocanwiki_template.cmx
image.cmo: cgi_expires.cmo cocanwiki.cmo
# Makefile for COCANWIKI.
-# $Id: Makefile,v 1.18 2004/09/21 18:24:15 rich Exp $
+# $Id: Makefile,v 1.19 2004/09/22 11:41:03 rich Exp $
include ../Makefile.config
edit.cmo \
edit_contact.cmo \
edit_contact_form.cmo \
+ edit_host_css.cmo \
+ edit_host_css_form.cmo \
edit_page_css.cmo \
edit_page_css_form.cmo \
edit_sitemenu.cmo \
forgot_password_form.cmo \
history.cmo \
hoststyle.cmo \
+ host_menu.cmo \
image.cmo \
images.cmo \
largest_pages.cmo \
--- /dev/null
+(* COCANWIKI - a wiki written in Objective CAML.
+ * Written by Richard W.M. Jones <rich@merjis.com>.
+ * Copyright (C) 2004 Merjis Ltd.
+ * $Id: edit_host_css.ml,v 1.1 2004/09/22 11:41:03 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *)
+
+open Apache
+open Registry
+open Cgi
+open Printf
+
+open Cocanwiki
+open Cocanwiki_ok
+open Cocanwiki_strings
+
+let run r (q : cgi) (dbh : Dbi.connection) hostid _ _ =
+ let css = q#param "css" in
+
+ let css = if string_is_whitespace css then `Null else `String css in
+
+ (* XXX We should version the global stylesheet. However this requires
+ * some fairly non-trivial coding.
+ *)
+ let sth = dbh#prepare_cached "update hosts set css = ? where id = ?" in
+ sth#execute [css; `Int hostid];
+
+ dbh#commit ();
+
+ let buttons = [
+ ok_button "/_bin/host_menu.cmo";
+ { StdPages.label = "Edit stylesheet again";
+ StdPages.link = "/_bin/edit_host_css_form.cmo";
+ StdPages.method_ = None;
+ StdPages.params = [] }
+ ] in
+
+ ok ~title:"Global stylesheet changed" ~buttons
+ q ("The stylesheet was changed successfully. " ^
+ "Note: You must RELOAD the page to see changes to stylesheets.")
+
+let () =
+ register_script run
--- /dev/null
+(* COCANWIKI - a wiki written in Objective CAML.
+ * Written by Richard W.M. Jones <rich@merjis.com>.
+ * Copyright (C) 2004 Merjis Ltd.
+ * $Id: edit_host_css_form.ml,v 1.1 2004/09/22 11:41:03 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *)
+
+open Apache
+open Registry
+open Cgi
+open Printf
+
+open Cocanwiki
+open Cocanwiki_template
+
+let run r (q : cgi) (dbh : Dbi.connection) hostid _ _ =
+ let template = get_template dbh hostid "edit_host_css_form.html" in
+
+ let sth = dbh#prepare_cached "select css from hosts where id = ?" in
+ sth#execute [`Int hostid];
+
+ let css =
+ match sth#fetch1 () with
+ | [ `Null ] -> ""
+ | [ `String css ] -> css
+ | _ -> assert false in
+
+ template#set "css" css;
+
+ q#template template
+
+let () =
+ register_script run
--- /dev/null
+(* COCANWIKI - a wiki written in Objective CAML.
+ * Written by Richard W.M. Jones <rich@merjis.com>.
+ * Copyright (C) 2004 Merjis Ltd.
+ * $Id: host_menu.ml,v 1.1 2004/09/22 11:41:03 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *)
+
+open Apache
+open Registry
+open Cgi
+open Printf
+
+open Cocanwiki
+open Cocanwiki_template
+
+let run r (q : cgi) (dbh : Dbi.connection) hostid _ _ =
+ 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
+ from hosts h left outer join themes t on h.theme_css = t.theme_css
+ where h.id = ?" in
+ sth#execute [`Int hostid];
+
+ let canonical_hostname, has_global_css, edit_anon, create_account_anon,
+ has_theme_css, theme_name, theme_description, has_feedback_email,
+ feedback_email =
+ 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 ] ->
+ 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
+ | _ -> 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;
+
+ q#template template
+
+let () =
+ register_script ~restrict:[CanManageSite] run
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Edit global stylesheet</title>
+<meta name="author" content="http://www.merjis.com/" />
+<link rel="stylesheet" href="::theme_css_html_tag::" type="text/css" title="Standard"/>
+</head><body>
+
+<h1>Edit global stylesheet</h1>
+
+<form method="post" action="edit_host_css.cmo">
+<p>
+Editing the global stylesheet:
+</p>
+
+<p>
+<textarea name="css" cols="80" rows="30">::css_html_textarea::</textarea>
+</p>
+
+<p>
+<input type="submit" value="Save changes"/>
+</p>
+</form>
+
+<ul id="topmenu" class="menu">
+<li class="first"> <a href="/">Home page</a> </li>
+<li> <a href="/_sitemap">Sitemap</a> </li>
+<li> <a href="/_recent">Recent changes</a> </li>
+</ul>
+
+<div id="menu_div">
+<ul id="bottommenu" class="menu">
+<li class="first"> <a href="/">Home page</a> </li>
+<li> <a href="/_sitemap">Sitemap</a> </li>
+<li> <a href="/_recent">Recent changes</a> </li>
+</ul>
+</div>
+
+<div id="footer_div">
+<hr/>
+
+<ul id="footer" class="menu">
+<li class="first"> <a href="/copyright">Copyright © ::year::</a> </li>
+<li> Powered by <a href="http://sandbox.merjis.com/">::cocanwiki_package_html:: ::cocanwiki_version_html::</a> </li>
+</ul>
+</div>
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Global settings</title>
+<meta name="robots" content="noindex,nofollow"/>
+<meta name="author" content="http://www.merjis.com/" />
+<link rel="stylesheet" href="::theme_css_html_tag::" type="text/css" title="Standard"/>
+</head><body>
+
+<h1>Global settings</h1>
+
+<table class="top_table">
+<tr>
+<th> Canonical hostname: </th>
+<td> ::canonical_hostname_html:: </td>
+</tr>
+<tr>
+<th> Global stylesheet: </th>
+<td> ::if(has_global_css)::<a href="/_global.css">View global stylesheet</a>::else::No global stylesheet for this site.::end::<br/>
+<a href="/_bin/edit_host_css_form.cmo">Edit global stylesheet ...</a> </td>
+</tr>
+<tr>
+<th> Allow anonymous edits: </th>
+<td> ::if(edit_anon)::Yes::else::No::end:: </td>
+</tr>
+<tr>
+<th> Allow anyone to create accounts: </th>
+<td> ::if(create_account_anon)::Yes::else::No::end:: </td>
+</tr>
+<tr>
+<th> Theme: </th>
+<td> ::if(has_theme_css)::<strong>::theme_name_html::</strong> <br/> ::theme_description_html:: ::else:: Standard theme ::end:: </td>
+</tr>
+<tr>
+<th> Feedback email address: </th>
+<td> ::if(has_feedback_email):: <code>::feedback_email_html::</code> ::else:: None set up yet. ::end:: </td>
+</tr>
+</table>
+
+<p>
+<a href="/_bin/edit_host_settings_form.cmo">Edit these settings ...</a>
+</p>
+
+<ul id="topmenu" class="menu">
+<li class="first"> <a href="/">Home page</a> </li>
+<li> <a href="/_sitemap">Sitemap</a> </li>
+<li> <a href="/_recent">Recent changes</a> </li>
+</ul>
+
+<div id="menu_div">
+<ul id="bottommenu" class="menu">
+<li class="first"> <a href="/">Home page</a> </li>
+::table(sitemenu)::<li> <a href="/::url_html_tag::">::label_html::</a> </li>
+::end::
+<li> <a href="/_sitemap">Sitemap</a> </li>
+</ul>
+</div>
+
+<div id="footer_div">
+<hr/>
+
+<ul id="footer" class="menu">
+<li class="first"> <a href="/copyright">Copyright © ::year::</a> </li>
+<li> Powered by <a href="http://sandbox.merjis.com/">::cocanwiki_package_html:: ::cocanwiki_version_html::</a> </li>
+</ul>
+</div>
+
+</body>
+</html>
\ No newline at end of file
<li> <a href="/_bin/contacts.cmo">Contact forms</a> </li>
::end::
::if(can_manage_site)::
-<li> <a href="/_bin/sitemenu.cmo">Global settings</a> </li>
+<li> <a href="/_bin/host_menu.cmo">Global settings</a> </li>
::end::
::if(can_edit_global_css)::
<li> <a href="/_bin/edit_host_css_form.cmo">Edit global stylesheet</a> </li>