Update URL scheme to include /item/*

* Update the router to understand /item/:name routes in addition to
  v1.0-style parameterized routes
* Add support for updating the current URL based upon the item being
  viewed
* Change LandingPage* to ItemPage*
This commit is contained in:
Andrew Miner
2014-12-28 12:59:29 -08:00
parent 8cde02a10b
commit bf113d26ab
9 changed files with 105 additions and 53 deletions
+20 -7
View File
@@ -5,9 +5,10 @@
# All rights reserved.
###
{Duration} = require './constants'
LandingPageController = require './controllers/landing_page_controller'
{Opacity} = require './constants'
{Duration} = require './constants'
ItemPageController = require './controllers/item_page_controller'
{Opacity} = require './constants'
UrlParams = require './url_params'
########################################################################################################################
@@ -21,13 +22,25 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
# Backbone.Router Overrides ####################################################################
routes:
'': 'landing'
'': 'root'
'item(/:name)': 'item'
# Route Methods ################################################################################
landing: ->
@_pageControllers.landing ?= new LandingPageController
@_setPage 'landing'
root: ->
params = new UrlParams
recipeName: {type:'string'}
count: {type:'integer'}
if params.recipeName?
@navigate "/item/#{encodeURIComponent(params.recipeName)}"
@item params.recipeName, params.count
item: (name, quantity=1)->
@_pageControllers.item ?= new ItemPageController
@_pageControllers.item.setParams name:name, quantity:quantity
@_setPage 'item'
# Private Methods ##############################################################################