Moke internal links use router

This commit is contained in:
Andrew Miner
2015-01-29 12:13:31 -08:00
parent cac523988e
commit d0fdbdf2c6
14 changed files with 94 additions and 41 deletions
@@ -0,0 +1,32 @@
###
Crafting Guide - header_controller.coffee
Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
BaseController = require './base_controller'
########################################################################################################################
module.exports = class HeaderController extends BaseController
constructor: (options={})->
super options
# Event Methods ################################################################################
onLogoClicked: ->
router.navigate '/', trigger:true
return false
# BaseController Overrides #####################################################################
render: ->
# Overriding render because the header is already part of the stock page layout, and we
# don't need to replace it here.
# Backbone.View Overrides ######################################################################
events:
'click a.logo': 'onLogoClicked'
@@ -22,22 +22,17 @@ module.exports = class InventoryController extends BaseController
if not options.model? then throw new Error 'options.model is required'
if not options.modPack? then throw new Error 'options.modPack is required'
options.editable ?= true
options.nameFinder ?= new NameFinder options.modPack
options.icon ?= '/images/chest_front.png'
options.imageLoader ?= new ImageLoader defaultUrl:'/images/unknown.png'
options.title ?= 'Inventory'
@editable = options.editable ?= true
@icon = options.icon ?= '/images/chest_front.png'
@imageLoader = options.imageLoader ?= new ImageLoader defaultUrl:'/images/unknown.png'
@modPack = options.modPack
@nameFinder = options.nameFinder ?= new NameFinder options.modPack
@onChange = options.onChange ?= -> # do nothing
@title = options.title ?= 'Inventory'
options.templateName = 'inventory'
super options
@editable = options.editable
@icon = options.icon
@imageLoader = options.imageLoader
@modPack = options.modPack
@nameFinder = options.nameFinder
@title = options.title
@_stackControllers = []
@listenTo @modPack, 'change', => @refresh()
@@ -55,8 +50,11 @@ module.exports = class InventoryController extends BaseController
@$scrollbox.scrollTop @$scrollbox.prop 'scrollHeight'
@$nameField.autocomplete 'close'
@onChange()
onClearButtonClicked: ->
@model.clear()
@onChange()
onItemSelected: ->
func = =>
+13 -2
View File
@@ -5,8 +5,8 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
BaseController = require './base_controller'
{Url} = require '../constants'
BaseController = require './base_controller'
{Url} = require '../constants'
########################################################################################################################
@@ -20,6 +20,12 @@ module.exports = class ItemController extends BaseController
@_modPack = options.modPack
# Event Methods ################################################################################
onLinkClicked: ->
router.navigate @$nameLink.attr('href'), trigger:true
return false
# BaseController Overrides #####################################################################
onDidRender: ->
@@ -34,3 +40,8 @@ module.exports = class ItemController extends BaseController
@$icon.attr 'src', Url.itemIcon display
@$name.html display.itemName
@$nameLink.attr 'href', Url.item display
# Backbone.View Overrides ######################################################################
events:
'click a': 'onLinkClicked'
@@ -47,6 +47,7 @@ module.exports = class ItemPageController extends BaseController
imageLoader: @_imageLoader
model: @model.plan.want
modPack: @model.modPack
onChange: => @_updateLocation()
title: 'Items you want'
@haveController = @addChild InventoryController, '.have',
@@ -90,3 +91,13 @@ module.exports = class ItemPageController extends BaseController
events:
'change .includeTools': 'onToolsBoxToggled'
# Private Methods ##############################################################################
_updateLocation: ->
list = @model.plan.want.toList()
if list.length is 1
slug = if _.isArray(list[0]) then list[0][1] else list[0]
router.navigate "/item/#{slug}"
else
router.navigate "/"
@@ -26,6 +26,10 @@ module.exports = class ModController extends BaseController
# Event Methods ################################################################################
onNameClicked: (event)->
router.navigate @$nameLink.attr('href'), trigger:true
return false
onVersionChanged: ->
@model.activeVersion = @$version.val()
@_plan.removeUncraftableItems()
@@ -60,7 +64,7 @@ module.exports = class ModController extends BaseController
option.attr 'selected', 'selected'
@$version.append option
@$nameLink.attr 'href', Url.mod modSlug:@model.slug
@$nameLink.attr 'href', Url.mod(modSlug:@model.slug)
@$nameText.html @model.name
@$description.html @model.description
@@ -69,3 +73,4 @@ module.exports = class ModController extends BaseController
events:
'change .version': 'onVersionChanged'
'click .name a': 'onNameClicked'
@@ -34,9 +34,7 @@ module.exports = class ModPageController extends BaseController
onVersionChanged: ->
version = @$versionSelector.val()
logger.debug "new version: #{version}"
modVersion = @model.getModVersion version
logger.debug "new mod version: #{modVersion}"
@_effectiveModVersion = modVersion
if modVersion? then modVersion.fetch()
@refresh()