Hi Ross, Thanks for the code - however it didn't compile on my machine, why is that? Also I cannot get it to show a menu, can you take a brief look at my code, whats the problem? I notice supplimentalKidMenuItems gets called every time the page is rendered so thats a positive, but no menu items added to the page. Obviously I am a beginner, don't know why I had to change Unit to NullLocParams to get it to compile.
I am on <scala.version>2.7.5</scala.version> Lift version <version>1.1-M6</version> I changed code to: case class DynMenuLoc ( override val name: String, override val link: Link[NullLocParams], override val text: LinkText[NullLocParams], _params: LocParam* ) extends Loc[NullLocParams] { override val params = _params.toList // had to comment this out: override val defaultValue = Full(()) // not sure what to set this to override val defaultParams = Empty override def supplimentalKidMenuItems:List [net.liftweb.sitemap.MenuItem] = { Log.info("kid menu function called") var result:ListBuffer[net.liftweb.sitemap.MenuItem] = new ListBuffer[net.liftweb.sitemap.MenuItem] result + (new MenuItem(Text("A"), Text("B"), Nil, false, false, Nil)) result.toList ::: super.supplimentalKidMenuItems } } def menu: List[Menu] = { Menu(Loc("home", List("index"), "Home")) :: Menu(DynMenuLoc("Dynamic Menu", Link(List("dynamic"), true, "/ dynamic"), "Dynamic Menu")) :: Nil } Thanks, Philip On 11月21日, 下午2時56分, Ross Mellgren <dri...@gmail.com> wrote: > Here's an example of doing what David decribed (at least, as I understood it > ;-) ): > > // In Boot.scala > // Build SiteMap > val entries = ... :: > Menu(DynMenuLoc("Dynamic Menu", Link(List("dynamic"), true, > "/dynamic"), "Dynamic Menu")) :: > ... > > case class DynMenuLoc ( > override val name: String, > override val link: Link[Unit], > override val text: LinkText[Unit], > _params: LocParam[Unit]* > ) extends Loc[Unit] { > override val params = _params.toList > override val defaultValue = Full(()) > > override def supplimentalKidMenuItems = { > DynMenuItem.findAll.map(dmi => { > MenuItem(Text(dmi.label.is), Text(dmi.link.is), Nil, false, > false, Nil) > }) ::: super.supplimentalKidMenuItems > } > > } > > object DynMenuItem extends DynMenuItem with LongKeyedMetaMapper[DynMenuItem] > with CRUDify[Long, DynMenuItem] > > class DynMenuItem extends LongKeyedMapper[DynMenuItem] with IdPK { > def getSingleton = DynMenuItem > > object label extends MappedString(this, 32) > object link extends MappedString(this, 255) > > } > > I can post the full example code on github if it'd help, also. > > -Ross > > On Nov 20, 2009, at 10:37 PM, philip wrote: > > > > > Hi David, > > > Really looking forward to this - I spent a day on this with absolute > > failure. > > > Philip > > > On 11月20日, 上午1時56分, David Pollak <feeder.of.the.be...@gmail.com> > > wrote: > >> Philip & list, > > >> I've had it on my to-do list to write up an example... and haven't... > >> but... > > >> In your Loc, you can override def supplimentalKidMenuItems and dynamically > >> generate kid menu items. > > >> I'll try to get to an example.... but not today... sorry :-( > > >> Thanks, > > >> David > > >> On Thu, Nov 19, 2009 at 12:35 AM, philip <philip14...@gmail.com> wrote: > > >>> Hi David, > > >>> Since I am programming a CMS for my client, I need my lift menu to > >>> come from the database. > > >>> LiftRules.setSiteMap(SiteMap(MenuInfo.menu :_*)) > > >>> def menu: List[Menu] = > >>> { > >>> Log.info("Menu called") > >>> ... > > >>> It seems my menu function only gets called once, on subsquent calls I > >>> do not get any log message. > > >>> Maybe I have to subclass SiteMap? > > >>> Can you point me in the right direction? > > >>> Thanks, Philip > > >>> On 10月21日, 下午11時20分, David Pollak <feeder.of.the.be...@gmail.com> > >>> wrote: > >>>> I owe the list example code to do this... maybe tomorrow. > > >>>> On Wed, Oct 21, 2009 at 6:26 AM, philip <philip14...@gmail.com> wrote: > > >>>>> Hi, > > >>>>> How can I get a Liftweb menu to be generated from database content? > > >>>>> Alternatively, can the menu come from a XML datasource? could I load/ > >>>>> serialize from that? > >>>>> Could it change dynamically at any time? > > >>>>> Thanks, Philip > > >>>> -- > >>>> Lift, the simply functional web frameworkhttp://liftweb.net > >>>> Beginning Scalahttp://www.apress.com/book/view/1430219890 > >>>> Follow me:http://twitter.com/dpp > >>>> Surf the harmonics > > >>> -- > > >>> You received this message because you are subscribed to the Google Groups > >>> "Lift" group. > >>> To post to this group, send email to lift...@googlegroups.com. > >>> To unsubscribe from this group, send email to > >>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com-> > >>> . > >>> For more options, visit this group at > >>>http://groups.google.com/group/liftweb?hl=. > > >> -- > >> Lift, the simply functional web frameworkhttp://liftweb.net > >> Beginning Scalahttp://www.apress.com/book/view/1430219890 > >> Follow me:http://twitter.com/dpp > >> Surf the harmonics- 隱藏被引用文字 - > > >> - 顯示被引用文字 - > > > -- > > > You received this message because you are subscribed to the Google Groups > > "Lift" group. > > To post to this group, send email to lift...@googlegroups.com. > > To unsubscribe from this group, send email to > > liftweb+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/liftweb?hl=.- 隱藏被引用文字 - > > - 顯示被引用文字 - -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to lift...@googlegroups.com. To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/liftweb?hl=.