[web-devel] Yesod: unifying breadcrumbs and routes
Michael Snoyman
michael at snoyman.com
Fri Jun 10 07:03:24 CEST 2011
I agree that defining breadcrumbs separately is an annoying, tedious
process. But the fact is that it's a necessary tediousness. It's very
rare that you could determine the title or parent that easily for
every route. Take the simple example of a blog with multiple authors:
/ RootR GET
/author/#AuthorId AuthorR GET
/post/#PostId PostR GET
The title for AuthorR and PostR will both need to be looked up from
the database, and the parent page for PostR will also require a DB
lookup. (You could restructure your URLs to avoid that, but that's not
my point here.)
Michael
On Fri, Jun 10, 2011 at 2:02 AM, Eric Schug <schugschug at gmail.com> wrote:
> There seems to be much redundant information created within the Yesod
> structure.
> One place to define the routes
> Another place defines the route hierarchy for breadcrumbs with titles.
> A third place defines, but not integrated into Yesod, defines use menus
> (usually similar hierarchy and titles).
>
> Would it be possible to have all of this defined into one place, by
> extending the routes definition using white space
> hierarchy similar to hamlet definition.
> and optionally include Title name.
>
> -- Example config/routes
> /static StaticR Static getStatic
> /favicon.ico FaviconR GET
> /robots.txt RobotsR GET
> / RootR GET "Home"
> /contact ContactR GET "Contact Us"
> /services ServicesR GET "Our Services"
> /services/stuffwedo StuffWeDoR GET "Stuff We Do"
>
> The resource list would be expanded to include this hierarchy. Something
> like
> Resource String
> <http://hackage.haskell.org/packages/archive/base/4.3.1.0/doc/html/Data-Char.html#t:String>
> [Piece
> <http://hackage.haskell.org/packages/archive/web-routes-quasi/0.6.3/doc/html/Web-Routes-Quasi-Parse.html#t:Piece>]
> [String
> <http://hackage.haskell.org/packages/archive/base/4.3.1.0/doc/html/Data-Char.html#t:String>]
> String Maybe String
>
> From this a breadcrumb could be build from a maker (if desired).
>
> mkYesodData "Example" $(parseRoutesFile "config/routes")
> mkYesodBreadcrumbs "Example" resourcesExample -- creates breadcrumbsExample
>
>
> and a hierarchy useful for building Menus
>
> mkYesodHierarchy "Example" resourcesExample -- creates a nested table of
> (Route, Html) pairs
>
> The menu list could also be pulled from the data, with possible few options.
>
>
>
>
>
> _______________________________________________
> web-devel mailing list
> web-devel at haskell.org
> http://www.haskell.org/mailman/listinfo/web-devel
>
More information about the web-devel
mailing list