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
Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

+1 -1
View File
@@ -3,6 +3,6 @@ schema: 1
name: Applied Energistics 2 name: Applied Energistics 2
author: AlgorithmX2 author: AlgorithmX2
description: A technical mod which adds an advanced, computer-based storage system description: A technical mod which adds an advanced, computer-based storage system
homePageUrl: http://www.mod-buildcraft.com homePageUrl: http://ae-mod.info/
version: rv1-stable-1 version: rv1-stable-1
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

+1 -1
View File
@@ -7,7 +7,7 @@
.view__header .view__header
h1 h1
a(href="/") a.logo(href="/")
img(src="/images/workbench_front.png") img(src="/images/workbench_front.png")
p Crafting Guide p Crafting Guide
.divider.bottom .divider.bottom
+1
View File
@@ -13,6 +13,7 @@ html
head head
title= pageTitle title= pageTitle
meta(charset="UTF-8") meta(charset="UTF-8")
link(href="/images/favicon.png", rel="icon", type="image/png")
block styles block styles
link(rel="stylesheet", type="text/css", href="/css/main.css") link(rel="stylesheet", type="text/css", href="/css/main.css")
@@ -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.model? then throw new Error 'options.model is required'
if not options.modPack? then throw new Error 'options.modPack is required' if not options.modPack? then throw new Error 'options.modPack is required'
options.editable ?= true @editable = options.editable ?= true
options.nameFinder ?= new NameFinder options.modPack @icon = options.icon ?= '/images/chest_front.png'
options.icon ?= '/images/chest_front.png' @imageLoader = options.imageLoader ?= new ImageLoader defaultUrl:'/images/unknown.png'
options.imageLoader ?= new ImageLoader defaultUrl:'/images/unknown.png' @modPack = options.modPack
options.title ?= 'Inventory' @nameFinder = options.nameFinder ?= new NameFinder options.modPack
@onChange = options.onChange ?= -> # do nothing
@title = options.title ?= 'Inventory'
options.templateName = 'inventory' options.templateName = 'inventory'
super options super options
@editable = options.editable
@icon = options.icon
@imageLoader = options.imageLoader
@modPack = options.modPack
@nameFinder = options.nameFinder
@title = options.title
@_stackControllers = [] @_stackControllers = []
@listenTo @modPack, 'change', => @refresh() @listenTo @modPack, 'change', => @refresh()
@@ -55,8 +50,11 @@ module.exports = class InventoryController extends BaseController
@$scrollbox.scrollTop @$scrollbox.prop 'scrollHeight' @$scrollbox.scrollTop @$scrollbox.prop 'scrollHeight'
@$nameField.autocomplete 'close' @$nameField.autocomplete 'close'
@onChange()
onClearButtonClicked: -> onClearButtonClicked: ->
@model.clear() @model.clear()
@onChange()
onItemSelected: -> onItemSelected: ->
func = => func = =>
+13 -2
View File
@@ -5,8 +5,8 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved. All rights reserved.
### ###
BaseController = require './base_controller' BaseController = require './base_controller'
{Url} = require '../constants' {Url} = require '../constants'
######################################################################################################################## ########################################################################################################################
@@ -20,6 +20,12 @@ module.exports = class ItemController extends BaseController
@_modPack = options.modPack @_modPack = options.modPack
# Event Methods ################################################################################
onLinkClicked: ->
router.navigate @$nameLink.attr('href'), trigger:true
return false
# BaseController Overrides ##################################################################### # BaseController Overrides #####################################################################
onDidRender: -> onDidRender: ->
@@ -34,3 +40,8 @@ module.exports = class ItemController extends BaseController
@$icon.attr 'src', Url.itemIcon display @$icon.attr 'src', Url.itemIcon display
@$name.html display.itemName @$name.html display.itemName
@$nameLink.attr 'href', Url.item display @$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 imageLoader: @_imageLoader
model: @model.plan.want model: @model.plan.want
modPack: @model.modPack modPack: @model.modPack
onChange: => @_updateLocation()
title: 'Items you want' title: 'Items you want'
@haveController = @addChild InventoryController, '.have', @haveController = @addChild InventoryController, '.have',
@@ -90,3 +91,13 @@ module.exports = class ItemPageController extends BaseController
events: events:
'change .includeTools': 'onToolsBoxToggled' '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 ################################################################################ # Event Methods ################################################################################
onNameClicked: (event)->
router.navigate @$nameLink.attr('href'), trigger:true
return false
onVersionChanged: -> onVersionChanged: ->
@model.activeVersion = @$version.val() @model.activeVersion = @$version.val()
@_plan.removeUncraftableItems() @_plan.removeUncraftableItems()
@@ -60,7 +64,7 @@ module.exports = class ModController extends BaseController
option.attr 'selected', 'selected' option.attr 'selected', 'selected'
@$version.append option @$version.append option
@$nameLink.attr 'href', Url.mod modSlug:@model.slug @$nameLink.attr 'href', Url.mod(modSlug:@model.slug)
@$nameText.html @model.name @$nameText.html @model.name
@$description.html @model.description @$description.html @model.description
@@ -69,3 +73,4 @@ module.exports = class ModController extends BaseController
events: events:
'change .version': 'onVersionChanged' 'change .version': 'onVersionChanged'
'click .name a': 'onNameClicked'
@@ -34,9 +34,7 @@ module.exports = class ModPageController extends BaseController
onVersionChanged: -> onVersionChanged: ->
version = @$versionSelector.val() version = @$versionSelector.val()
logger.debug "new version: #{version}"
modVersion = @model.getModVersion version modVersion = @model.getModVersion version
logger.debug "new mod version: #{modVersion}"
@_effectiveModVersion = modVersion @_effectiveModVersion = modVersion
if modVersion? then modVersion.fetch() if modVersion? then modVersion.fetch()
@refresh() @refresh()
+6 -5
View File
@@ -8,6 +8,7 @@ All rights reserved.
{DefaultMods} = require './constants' {DefaultMods} = require './constants'
{Duration} = require './constants' {Duration} = require './constants'
{Event} = require './constants' {Event} = require './constants'
HeaderController = require './controllers/header_controller'
ItemPageController = require './controllers/item_page_controller' ItemPageController = require './controllers/item_page_controller'
Mod = require './models/mod' Mod = require './models/mod'
ModPack = require './models/mod_pack' ModPack = require './models/mod_pack'
@@ -30,6 +31,8 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
@storage = new Storage storage:window.localStorage @storage = new Storage storage:window.localStorage
@_defaultOptions = modPack:@modPack, storage:@storage @_defaultOptions = modPack:@modPack, storage:@storage
@headerController = new HeaderController el:'.view__header'
# Public Methods ############################################################################### # Public Methods ###############################################################################
loadDefaultModPack: -> loadDefaultModPack: ->
@@ -51,9 +54,9 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
@_recordPageView() @_recordPageView()
routes: routes:
'': 'root' '': 'root'
'item(/:name)': 'item' 'item/:name': 'item'
'mod/:slug': 'mod' 'mod/:slug': 'mod'
# Route Methods ################################################################################ # Route Methods ################################################################################
@@ -75,8 +78,6 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
_recordPageView: -> _recordPageView: ->
pathname = window.location.pathname pathname = window.location.pathname
return if @_lastReported is pathname
@_lastReported = pathname
if global.env is 'production' and ga? if global.env is 'production' and ga?
logger.info "Recording GA page view: #{pathname}" logger.info "Recording GA page view: #{pathname}"
+1 -1
View File
@@ -24,7 +24,7 @@ global.logger = new Logger
switch window.location.hostname switch window.location.hostname
when 'localhost' when 'localhost'
global.env = 'development' global.env = 'development'
logger.level = Logger.DEBUG logger.level = Logger.INFO
when 'new.crafting-guide.com' when 'new.crafting-guide.com'
global.env = 'staging' global.env = 'staging'
logger.level = Logger.VERBOSE logger.level = Logger.VERBOSE
+12 -16
View File
@@ -23,25 +23,21 @@ module.exports = class ItemPage extends BaseModel
super attributes, options super attributes, options
@modPack.on Event.change, => @_consumeParams() @modPack.on Event.change, => @_consumeParams()
@plan.on Event.change, => @_updateLocation() @on Event.change + ':params', => @_consumeParams()
# Private Methods ############################################################################## # Private Methods ##############################################################################
_consumeParams: -> _consumeParams: ->
return unless @params?.name? return unless @params?
item = @modPack.findItemByName @params.name if not @params?.name?
return unless item? and item.isCraftable @plan.want.clear()
@params = null
quantity = if @params.quantity? then parseInt(@params.quantity) else 1
@plan.want.add item.slug, quantity
@params = null
_updateLocation: ->
list = @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 else
router.navigate "/" item = @modPack.findItemByName @params.name
return unless item? and item.isCraftable
quantity = if @params.quantity? then parseInt(@params.quantity) else 1
@plan.want.add item.slug, quantity
@params = null