Change subject line so it shows the name of the site.
[cocanwiki.git] / scripts / edit_sitemenu.ml
index 566dbaa..6680e52 100644 (file)
@@ -1,7 +1,7 @@
 (* COCANWIKI - a wiki written in Objective CAML.
  * Written by Richard W.M. Jones <rich@merjis.com>.
  * Copyright (C) 2004 Merjis Ltd.
- * $Id: edit_sitemenu.ml,v 1.10 2006/03/27 18:09:46 rich Exp $
+ * $Id: edit_sitemenu.ml,v 1.11 2006/03/27 19:10:29 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
@@ -54,24 +54,21 @@ let run r (q : cgi) dbh hostid { hostname = hostname } user=
   template#conditional "msie" msie;
 
   (* Pull in the list of URLs in useful format. *)
-  let sth = dbh#prepare_cached "select url, title from pages
-                                 where hostid = ?
-                                   and url is not null
-                                   and url <> 'index'
-                                 order by 2" in
-  sth#execute [Some hostid];
-
-  let urls = sth#map (function [Some url; Some title] ->
-                       url, title
-                       | _ -> assert false) in
+  let urls = PGSQL(dbh)
+    "select url, title from pages
+      where hostid = $hostid
+        and url is not null
+        and url <> 'index'
+      order by 2" in
+  let urls = List.map (fun (url, title) -> Option.get url, title) urls in
 
   (* Build the internal model from the parameters passed to the script. *)
   let build_internal_model () =
     let model = ref [] in
     let i = ref 1 in
-    while q#param_exists ("label_" ^ Int32.to_string !i) do
-      let label = q#param ("label_" ^ Int32.to_string !i) in
-      let url = q#param ("url_" ^ Int32.to_string !i) in
+    while q#param_exists ("label_" ^ string_of_int !i) do
+      let label = q#param ("label_" ^ string_of_int !i) in
+      let url = q#param ("url_" ^ string_of_int !i) in
       model := (label, url) :: !model;
       incr i
     done;
@@ -159,7 +156,7 @@ let run r (q : cgi) dbh hostid { hostname = hostname } user=
                    "title", Template.VarString (truncate 30 title);
                    "selected", Template.VarConditional selected ]) urls in
 
-          [ "ordering", Template.VarString (Int32.to_string ordering);
+          [ "ordering", Template.VarString (string_of_int ordering);
             "label", Template.VarString label;
             "url", Template.VarString url;
             "urls", Template.VarTable table; ]) model in
@@ -177,15 +174,13 @@ let run r (q : cgi) dbh hostid { hostname = hostname } user=
    * a model from it.
    *)
   let begin_editing () =
-    let sth = dbh#prepare_cached "select label, url, ordering
-                                    from sitemenu
-                                   where hostid = ?
-                                   order by ordering" in
-    sth#execute [Some hostid];
+    let rows =
+      PGSQL(dbh) "select label, url, ordering
+                    from sitemenu
+                   where hostid = $hostid
+                   order by ordering" in
 
-    let model = sth#map (function [Some label; Some url; _] ->
-                          label, url
-                          | _ -> assert false) in
+    let model = List.map (fun (label, url, _) -> label, url) rows in
 
     model_to_template model template
   in
@@ -218,7 +213,7 @@ let run r (q : cgi) dbh hostid { hostname = hostname } user=
                    let action_type = String.sub str 7 6 in
                    let action_value =
                      String.sub str 14 (String.length str - 14) in
-                   let action_value = Int32.of_string action_value in
+                   let action_value = int_of_string action_value in
                    action_type, action_value) actions in
 
       let is_action typ = List.mem_assoc typ actions in
@@ -254,16 +249,14 @@ let run r (q : cgi) dbh hostid { hostname = hostname } user=
     if no_errors then (
       (* No errors, so we can save the page ... *)
 
-      let sth = dbh#prepare_cached "delete from sitemenu where hostid = ?" in
-      sth#execute [Some hostid];
-
-      let sth = dbh#prepare_cached "insert into sitemenu (hostid, label, url,
-                                    ordering) values (?, ?, ?, ?)" in
-
-      List.iteri (fun i (label, url) ->
-                   let ordering = 10 * (i+1) in
-                   sth#execute [Some hostid; Some label; Some url;
-                                Some ordering]) model;
+      PGSQL(dbh) "delete from sitemenu where hostid = $hostid";
+      List.iteri (
+       fun i (label, url) ->
+         let ordering = Int32.of_int (10 * (i+1)) in
+         PGSQL(dbh)
+           "insert into sitemenu (hostid, label, url, ordering)
+             values ($hostid, $label, $url, $ordering)"
+      ) model;
 
       (* Commit changes to the database. *)
       PGOCaml.commit dbh;