pyc-website
main website for pyc inc.
git clone https://9o.is/git/pyc-website.git
commit a6e0e6ee1a382fe6653a8dc23b803940d60d41c4 parent 108e27c4c4c498f35288e1b57dc8750dc86e14e4 Author: Jul <jul@9o.is> Date: Sat, 5 Apr 2014 03:52:17 -0400 google sitemap Diffstat:
| M | src/main/scala/bootstrap/liftweb/Boot.scala | | | 3 | +++ |
| M | src/main/scala/com/pyd/config/Site.scala | | | 9 | +++++---- |
| A | src/main/scala/com/pyd/snippet/Sitemap.scala | | | 46 | ++++++++++++++++++++++++++++++++++++++++++++++ |
| A | src/main/webapp/sitemap.html | | | 14 | ++++++++++++++ |
4 files changed, 68 insertions(+), 4 deletions(-)
diff --git a/src/main/scala/bootstrap/liftweb/Boot.scala b/src/main/scala/bootstrap/liftweb/Boot.scala @@ -78,7 +78,10 @@ class Boot extends Loggable { Mailer.devModeSend.default.set((m: MimeMessage) => logger.info("Dev mode message:\n" + prettyPrintMime(m))) Mailer.testModeSend.default.set((m: MimeMessage) => logger.info("Test mode message:\n" + prettyPrintMime(m))) + // Google Analytics GoogleAnalytics.init + + LiftRules.statelessDispatch.append(com.pyd.snippet.Sitemap) } private def prettyPrintMime(m: MimeMessage): String = { diff --git a/src/main/scala/com/pyd/config/Site.scala b/src/main/scala/com/pyd/config/Site.scala @@ -14,6 +14,7 @@ import net.liftmodules.mongoauth.Locs object MenuGroups { val SettingsGroup = LocGroup("settings") val TopBarGroup = LocGroup("topbar") + val SiteMapGroup = LocGroup("sitemap") } /* @@ -30,10 +31,10 @@ object Site extends Locs { // locations (for top group) val home = MenuLoc(Menu.i("Home") / "index") val applyATM = MenuLoc(Menu.i("Apply for Bitcoin ATM") / "apply-atm" >> TopBarGroup) - val locations = MenuLoc(Menu.i("Locations") / "locations" >> TopBarGroup) - val about = MenuLoc(Menu.i("About Us") / "about" >> TopBarGroup) - val blog = MenuLoc(Menu.i("Blog") / "blog" >> TopBarGroup >> RedirectBlog) - val faqs = MenuLoc(Menu.i("FAQs") / "faqs" >> TopBarGroup) + val locations = MenuLoc(Menu.i("Locations") / "locations" >> TopBarGroup >> SiteMapGroup) + val about = MenuLoc(Menu.i("About Us") / "about" >> TopBarGroup >> SiteMapGroup) + val blog = MenuLoc(Menu.i("Blog") / "blog" >> TopBarGroup >> RedirectBlog >> SiteMapGroup) + val faqs = MenuLoc(Menu.i("FAQs") / "faqs" >> TopBarGroup >> SiteMapGroup) val loginToken = MenuLoc(buildLoginTokenMenu) val logout = MenuLoc(buildLogoutMenu) diff --git a/src/main/scala/com/pyd/snippet/Sitemap.scala b/src/main/scala/com/pyd/snippet/Sitemap.scala @@ -0,0 +1,45 @@ +package com.pyd +package snippet + +import org.joda.time.DateTime +import net.liftweb._ +import net.liftweb.http._ +import net.liftweb.http.rest.RestHelper +import net.liftweb.util._ +import net.liftweb.util.Helpers._ +import net.liftweb.common.Box.box2Option +import net.liftweb.http.LiftRulesMocker.toLiftRules +import com.pyd.lib.NgUIRouterFactory + +object Sitemap extends RestHelper { + serve { + case Req("sitemap" :: Nil, _, GetRequest) => + XmlResponse( + S.render(<lift:embed what="sitemap" />, + S.request.get.request).head) + } +} + +class SitemapContent { + + case class Post(url: String, date: DateTime) + + lazy val baseEntry = NgUIRouterFactory.defaultRoute.vend map { + _.loc.calcDefaultHref + } openOr "" + + lazy val entries = + LiftRules.siteMap map { + _.locForGroup("sitemap").map(_.calcDefaultHref).map(Post(_, new DateTime)) + } openOr Nil + + def base: CssSel = + "loc *" #> "http://%s/#%s".format(S.hostName, baseEntry) & + "lastmod *" #> (new DateTime).toString("yyyy-MM-dd'T'HH:mm:ss.SSSZZ") + + def list: CssSel = + "url *" #> entries.map(post => + "loc *" #> "http://%s/#%s".format(S.hostName, post.url) & + "lastmod *" #> post.date.toString("yyyy-MM-dd'T'HH:mm:ss.SSSZZ")) + +} +\ No newline at end of file diff --git a/src/main/webapp/sitemap.html b/src/main/webapp/sitemap.html @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> + <url data-lift="SitemapContent.base"> + <loc></loc> + <changefreq>daily</changefreq> + <priority>1.0</priority> + <lastmod></lastmod> + </url> + <url data-lift="SitemapContent.list"> + <loc></loc> + <lastmod></lastmod> + </url> +</urlset> +\ No newline at end of file