From 56964ec45f1fda12d44bb012c62efe26fcd77f47 Mon Sep 17 00:00:00 2001 From: Las Zenow Date: Sat, 31 Aug 2013 00:38:32 +0200 Subject: [PATCH] Add rss feed --- img/feed.png | Bin 0 -> 868 bytes search.go | 8 +++++++- template.go | 16 ++++++++++++++++ templates/header.html | 1 + templates/index.html | 2 +- templates/search.html | 2 +- templates/search_rss.xml | 32 ++++++++++++++++++++++++++++++++ 7 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 img/feed.png create mode 100644 templates/search_rss.xml diff --git a/img/feed.png b/img/feed.png new file mode 100644 index 0000000000000000000000000000000000000000..80ccac8e8c5b24161acd53819d53132364775136 GIT binary patch literal 868 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)E5@u z6XN>k>xWkx+86K*63Ni@$*LG7tJOwTTNfJo4)QeebZ(3vcv3Uo#oRK zz2_DBuWAk7G#b5YHU7|P@~PMK%S5wpQ_R0lxA-~B^4A>8pK~2wb$Wi;JLBtt8J`xX z{hn*}W2WVcR@3)$Q~v+||L@1ApC@L2o9*&-lKH!dKHm?|{B?Qr-;dA!|NQ)WXZgo& z(-%!9Kh|gddvoj0p_X^8CSR7N|9O1&*Wvyj^IZPk+WKQl>Fau2aRk z!xDqP_YeMicJAkV*DsqIUUY^&$kM%EXz*)u*59XRf9&u3d42!)EBoH9?!1?(b1z^2 z_sXDO=azq7lK%VIjgQ->zuPqRPNMeRJpG?bgTAlLd^aoQ&9vkvHSW*46CRYh-ip(@ zS77j{z$~CM=sYNDlDyqr#A+_CkOXo#3p^r=fwTu0yPeFo12X=2x;TbNT-NP(4?h$j z;j-VIvqeckw?Xxh%VMGCCe~(E4JjQK>4<||Wgq_M`&j6`PkMGvz_9)D(`Pnu_nz~! zND4}Gwkj{a7-2I}B6Pmia&E(Iz(=XJUh91 zMtl?-mzcQaqea@6Ufrr%#genab*<058_TXP%;~&6q0D5j)4htM^7UM)@#h{om}eci zz3;G4U!Q+~`5CsKlMcO%e7L8Jdu`w8wC+ELL<@B9KM31@xOTU5KVtMv&e!}*+V0!`x4uvNX%oKgiqu-a`~xreE4S%NoN29i z1`G$)64!{5l*E!$tK_0oAjM#0U}&ssV4-Vl7-C>xWoTw)XrgUkWMyFRQZH>DiiX_$ al+3hB+!|&S-%|o=VDNPHb6Mw<&;$TulAO>0 literal 0 HcmV?d00001 diff --git a/search.go b/search.go index 61e20e7..dbfd040 100644 --- a/search.go +++ b/search.go @@ -62,5 +62,11 @@ func searchHandler(w http.ResponseWriter, r *http.Request, sess *Session) { if page > 0 { data.Prev = "/search/?q=" + req + "&p=" + strconv.Itoa(page-1) } - loadTemplate(w, "search", data) + + format := r.Form["fmt"] + if (len(format) > 0) && (format[0] == "rss") { + loadTxtTemplate(w, "search_rss.xml", data) + } else { + loadTemplate(w, "search", data) + } } diff --git a/template.go b/template.go index b5b6cd7..1a64b0b 100644 --- a/template.go +++ b/template.go @@ -5,7 +5,11 @@ import ( "net/http" ) +import txt_tmpl "text/template" + type Status struct { + BaseURL string + FullURL string Search string User string IsAdmin bool @@ -22,6 +26,8 @@ func GetStatus(w http.ResponseWriter, r *http.Request) Status { var s Status sess := GetSession(r) sess.Save(w, r) + s.BaseURL = "http://" + r.Host + s.FullURL = s.BaseURL + r.RequestURI s.User = sess.User s.IsAdmin = sess.IsAdmin() s.Notif = sess.Notif @@ -53,3 +59,13 @@ func loadTemplate(w http.ResponseWriter, tmpl string, data interface{}) { return } } + +var txt_templates = txt_tmpl.Must(txt_tmpl.ParseFiles(TEMPLATE_PATH + "search_rss.xml")) + +func loadTxtTemplate(w http.ResponseWriter, tmpl string, data interface{}) { + err := txt_templates.ExecuteTemplate(w, tmpl, data) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } +} diff --git a/templates/header.html b/templates/header.html index d1bb60e..67a45d7 100644 --- a/templates/header.html +++ b/templates/header.html @@ -6,6 +6,7 @@ + Imperial Library of Trantor diff --git a/templates/index.html b/templates/index.html index cd0f7a5..9a5ddee 100644 --- a/templates/index.html +++ b/templates/index.html @@ -8,7 +8,7 @@
-

Last books added:

+

Last books added:

{{.Count}} books

diff --git a/templates/search.html b/templates/search.html index ec172d8..cb446d6 100644 --- a/templates/search.html +++ b/templates/search.html @@ -1,6 +1,6 @@ {{template "header.html" .S}} -

Found {{.Found}} books. Page {{.Page}}

+

Found {{.Found}} books. Page {{.Page}}

    {{if .Prev}} diff --git a/templates/search_rss.xml b/templates/search_rss.xml new file mode 100644 index 0000000..3effdad --- /dev/null +++ b/templates/search_rss.xml @@ -0,0 +1,32 @@ + + + +{{with .S}} + Imperial Library of Trantor +{{if .Search}} + Book search: {{.Search}} +{{else}} + Last books added +{{end}} + {{.BaseURL}} +{{end}} + +{{$baseURL := .S.BaseURL}} +{{range .Books}} + + {{.Title}} - {{index .Author 0}} + {{.Description}} + {{$baseURL}}/book/{{.Id}} +{{if .Isbn}} + ISBN: {{.Isbn}} +{{end}} +{{range .Subject}} + {{if .}} + {{.}} + {{end}} +{{end}} + +{{end}} + + +