src/main/scala/net/tz/lift/boot/ProtoBoot.scala
changeset 2 cf829ec742b3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/scala/net/tz/lift/boot/ProtoBoot.scala	Sun Apr 03 15:55:02 2011 +0200
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2011 Tomas Zeman <tzeman@volny.cz>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package net.tz.lift.boot
+
+import net.liftweb.common._
+import net.liftweb.http._
+import net.liftweb.mapper._
+import net.liftweb.sitemap._
+import net.liftweb.sitemap.Loc._
+import net.liftweb.util._
+import net.liftweb.widgets.menu.MenuWidget
+import net.tz.lift.snippet.ActionLinks
+import net.tz.lift.util.YmdDateTimeConverter
+
+/**
+ * Prototype boot class to be either extended or copied.
+ */
+class ProtoBoot extends Logger {
+
+  def boot = {
+    /* DB stuff */
+    /*
+    S.addAround(DB.buildLoanWrapper())
+    */
+
+    if (Props.mode == Props.RunModes.Development)
+      DB.addLogFunc { (dbLog, l) => dbLog.statementEntries.foreach { e =>
+        debug("Query: " + e.statement)
+    }}
+
+    /* Date format */
+    LiftRules.dateTimeConverter.default.set { () => YmdDateTimeConverter }
+
+    /* Handle end slash and drop it (except for home page) */
+    LiftRules.statelessRewrite.append {
+      case RewriteRequest(ParsePath(xs,_,_,true),_,_) if (xs.size > 1) &&
+        (xs.lastOption == Some("index")) =>
+          RewriteResponse(xs dropRight 1)
+    }
+
+    /* Snippet dispatch */
+    LiftRules.snippetDispatch.append {
+      case "Menubar" => new AnyRef with DispatchSnippet {
+        def dispatch: DispatchIt = {
+          case _ => { xhtml => MenuWidget() }
+        }
+      }
+      case "action-links" => ActionLinks
+    }
+
+    /* Sitemap */
+    SiteMap.enforceUniqueLinks = false
+
+    /*
+    LiftRules.setSiteMap(SiteMap(
+      Menu.i("Home") / "index" >> Hidden
+    ))
+    */
+
+    /* Menu widget */
+    MenuWidget.init()
+
+    /* Http conf */
+    LiftRules.logServiceRequestTiming = false
+    LiftRules.early.append(_.setCharacterEncoding("UTF-8"))
+  }
+
+}
+
+// vim: set ts=2 sw=2 et: