From 0b231fd67e1baed0cb500c83a4e97cc84b25423d Mon Sep 17 00:00:00 2001 From: rich Date: Fri, 22 Sep 2006 10:50:37 +0000 Subject: [PATCH] /_sitemap.rss for COCANWIKI. --- conf/cocanwiki.conf | 3 +- scripts/sitemap_rss.ml | 74 +++++++++++++++++++++++++++++++++++++++++++++++ templates/sitemap_rss.xml | 29 +++++++++++++++++++ 3 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 scripts/sitemap_rss.ml create mode 100644 templates/sitemap_rss.xml diff --git a/conf/cocanwiki.conf b/conf/cocanwiki.conf index bcaea26..578e854 100644 --- a/conf/cocanwiki.conf +++ b/conf/cocanwiki.conf @@ -1,5 +1,5 @@ # Apache configuration for COCANWIKI. -# $Id: cocanwiki.conf,v 1.23 2005/11/23 11:32:37 rich Exp $ +# $Id: cocanwiki.conf,v 1.24 2006/09/22 10:50:37 rich Exp $ # Uncomment the following lines if necessary. You will probably need # to adjust the paths to reflect where cocanwiki is really installed. @@ -72,6 +72,7 @@ RewriteRule ^/_recent$ /_bin/recent.cmo [PT,L,QSA] RewriteRule ^/_recent.rss$ /_bin/recent_rss.cmo [PT,L,QSA] RewriteRule ^/_search$ /_bin/search.cmo [PT,L,QSA] RewriteRule ^/_sitemap$ /_bin/sitemap.cmo [PT,L,QSA] +RewriteRule ^/_sitemap.rss$ /_bin/sitemap_rss.cmo [PT,L,QSA] RewriteRule ^/sitemap.xml$ /_bin/sitemap_xml.cmo [PT,L,QSA] RewriteRule ^/_userprefs$ /_bin/user_prefs_form.cmo [PT,L,QSA] RewriteRule ^/_users$ /_bin/users.cmo [PT,L,QSA] diff --git a/scripts/sitemap_rss.ml b/scripts/sitemap_rss.ml new file mode 100644 index 0000000..5b006ff --- /dev/null +++ b/scripts/sitemap_rss.ml @@ -0,0 +1,74 @@ +(* COCANWIKI - a wiki written in Objective CAML. + * Written by Richard W.M. Jones . + * Copyright (C) 2004 Merjis Ltd. + * $Id: sitemap_rss.ml,v 1.1 2006/09/22 10:50:38 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 +open Cocanwiki_date +open Cocanwiki_strings + +let run r (q : cgi) dbh hostid {hostname = hostname} _ = + let template = get_template dbh hostid "sitemap_rss.xml" in + + template#set "hostname" hostname; + + (* Pull out all the current pages, and a bit of content from each. *) + let rows = PGSQL(dbh) + "select p.url, p.url = 'index', p.title, p.description, + p.last_modified_date, (select content from contents + where pageid = p.id + order by ordering limit 1) as content + from pages p + where p.hostid = $hostid and p.url is not null + and p.redirect is null + order by 2 desc, 3, 1" in + + let table = + List.map + (function + | (Some url, Some is_index, title, description, + last_modified_date, content) -> + let url = if is_index then "" else url in + let date = printable_date_time last_modified_date in + [ "url", Template.VarString url; + "title", Template.VarString title; + "description", Template.VarString description; + "last_modified_date", Template.VarString date; + "has_content", Template.VarConditional (content <> None); + "content", Template.VarString + (match content with + | None -> "" + | Some c -> + truncate 160 + (Wikilib.text_of_xhtml + (Wikilib.xhtml_of_content r dbh hostid c))) ] + | _ -> assert false) rows in + + template#table "sitemap" table; + + q#template ~content_type:"application/rss+xml" template + +let () = + register_script ~restrict:[CanView] run diff --git a/templates/sitemap_rss.xml b/templates/sitemap_rss.xml new file mode 100644 index 0000000..1375cba --- /dev/null +++ b/templates/sitemap_rss.xml @@ -0,0 +1,29 @@ + + + + Sitemap for ::hostname_html:: + http://::hostname_html_tag::/ + en-GB + + + ::table(sitemap):: + + ::end:: + + + +::table(sitemap):: + + ::title_html:: + http://::hostname_html_tag::/::url_html_tag:: + + ::content_html:: + + + + +::end:: + -- 1.8.3.1