(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: rename_page.ml,v 1.2 2004/11/22 11:11:52 rich Exp $
+ * $Id: rename_page.ml,v 1.5 2006/03/28 16:24:08 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 Cocanwiki_strings
open Cocanwiki_emailnotify
-let run r (q : cgi) (dbh : Dbi.connection) hostid {hostname = hostname} user =
+let run r (q : cgi) dbh hostid {hostname = hostname} user =
let page = q#param "page" in
(* Cancelled? *)
(* New title mustn't be empty string. *)
if new_title = "" then (
error ~back_button:true ~title:"Empty title not allowed"
- q "The new title cannot be empty.";
+ dbh hostid q "The new title cannot be empty.";
return ()
);
(* Get the old title. *)
- let sth = dbh#prepare_cached "select title from pages
- where hostid = ? and url = ?" in
- sth#execute [`Int hostid; `String page];
-
- let old_title = sth#fetch1string () in
+ let old_title = List.hd (
+ PGSQL (dbh) "select title from pages
+ where hostid = $hostid and url = $page"
+ ) in
(* Generate URL for the new title. *)
let new_page =
| Wikilib.GenURL_OK url | Wikilib.GenURL_Duplicate url -> url
| Wikilib.GenURL_TooShort | Wikilib.GenURL_BadURL ->
error ~title:"Bad title" ~back_button:true
- q ("The new title for the page isn't valid. " ^
- "It may be too short or it may not contain " ^
- "enough alphabet letters.");
+ dbh hostid q
+ ("The new title for the page isn't valid. " ^
+ "It may be too short or it may not contain " ^
+ "enough alphabet letters.");
return () in
if page = new_page then (
let old_model = load_page dbh hostid ~url:page () in
let new_model = new_page_with_title new_title in
let new_model = { new_model with description = old_model.description;
- contents = old_model.contents } in
- let old_model = { old_model with redirect = new_page } in
- save_page dbh hostid ~user ~r old_model;
+ contents_ = old_model.contents_ } in
+ let old_model = { old_model with redirect = Some new_page } in
+ ignore (save_page dbh hostid ~user ~r old_model);
try
ignore (save_page dbh hostid ~user ~r new_model)
with
SaveURLError ->
error ~title:"Page exists"
- q ("Another page with the same title exists. " ^
- "If you tried to rename a page, then rename it back to the " ^
- "original title, then you may see this error. This is a bug " ^
- "which you should raise with the site administrator.");
+ dbh hostid q
+ ("Another page with the same title exists. " ^
+ "If you tried to rename a page, then rename it back to the " ^
+ "original title, then you may see this error. This is a bug " ^
+ "which you should raise with the site administrator.");
return ()
);
(* Finish off XXX *)
- dbh#commit ();
+ PGOCaml.commit dbh;
(* Email notification. *)
let subject = "Page " ^ page ^ " has been renamed" in
let buttons = [ ok_button ("/" ^ new_page) ] in
ok ~title:"Page renamed" ~buttons
- q "That page was renamed."
+ dbh hostid q "That page was renamed."
let () =
register_script ~restrict:[CanEdit] run