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

After

Width:  |  Height:  |  Size: 3.6 KiB

+1 -1
View File
@@ -7,7 +7,7 @@
.view__header
h1
a(href="/")
a.logo(href="/")
img(src="/images/workbench_front.png")
p Crafting Guide
.divider.bottom
+1
View File
@@ -13,6 +13,7 @@ html
head
title= pageTitle
meta(charset="UTF-8")
link(href="/images/favicon.png", rel="icon", type="image/png")
block styles
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.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()
+6 -5
View File
@@ -8,6 +8,7 @@ All rights reserved.
{DefaultMods} = require './constants'
{Duration} = require './constants'
{Event} = require './constants'
HeaderController = require './controllers/header_controller'
ItemPageController = require './controllers/item_page_controller'
Mod = require './models/mod'
ModPack = require './models/mod_pack'
@@ -30,6 +31,8 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
@storage = new Storage storage:window.localStorage
@_defaultOptions = modPack:@modPack, storage:@storage
@headerController = new HeaderController el:'.view__header'
# Public Methods ###############################################################################
loadDefaultModPack: ->
@@ -51,9 +54,9 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
@_recordPageView()
routes:
'': 'root'
'item(/:name)': 'item'
'mod/:slug': 'mod'
'': 'root'
'item/:name': 'item'
'mod/:slug': 'mod'
# Route Methods ################################################################################
@@ -75,8 +78,6 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
_recordPageView: ->
pathname = window.location.pathname
return if @_lastReported is pathname
@_lastReported = pathname
if global.env is 'production' and ga?
logger.info "Recording GA page view: #{pathname}"
+1 -1
View File
@@ -24,7 +24,7 @@ global.logger = new Logger
switch window.location.hostname
when 'localhost'
global.env = 'development'
logger.level = Logger.DEBUG
logger.level = Logger.INFO
when 'new.crafting-guide.com'
global.env = 'staging'
logger.level = Logger.VERBOSE
+12 -16
View File
@@ -23,25 +23,21 @@ module.exports = class ItemPage extends BaseModel
super attributes, options
@modPack.on Event.change, => @_consumeParams()
@plan.on Event.change, => @_updateLocation()
@on Event.change + ':params', => @_consumeParams()
# Private Methods ##############################################################################
_consumeParams: ->
return unless @params?.name?
return unless @params?
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
_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}"
if not @params?.name?
@plan.want.clear()
@params = null
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