diff --git a/src/data/applied_energistics_2/logo.png b/src/data/applied_energistics_2/logo.png new file mode 100644 index 000000000..7623cd57f Binary files /dev/null and b/src/data/applied_energistics_2/logo.png differ diff --git a/src/data/applied_energistics_2/mod.cg b/src/data/applied_energistics_2/mod.cg index ebf5eb581..78c3d3bd4 100644 --- a/src/data/applied_energistics_2/mod.cg +++ b/src/data/applied_energistics_2/mod.cg @@ -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 diff --git a/src/images/favicon.png b/src/images/favicon.png new file mode 100644 index 000000000..9d9bbbc45 Binary files /dev/null and b/src/images/favicon.png differ diff --git a/src/pages/includes/_header.jade b/src/pages/includes/_header.jade index 3bb9f32c3..987ca6b37 100644 --- a/src/pages/includes/_header.jade +++ b/src/pages/includes/_header.jade @@ -7,7 +7,7 @@ .view__header h1 - a(href="/") + a.logo(href="/") img(src="/images/workbench_front.png") p Crafting Guide .divider.bottom diff --git a/src/pages/layouts/basic.jade b/src/pages/layouts/basic.jade index e9bfbe2b0..489667959 100644 --- a/src/pages/layouts/basic.jade +++ b/src/pages/layouts/basic.jade @@ -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") diff --git a/src/scripts/controllers/header_controller.coffee b/src/scripts/controllers/header_controller.coffee new file mode 100644 index 000000000..dbb8d6cd3 --- /dev/null +++ b/src/scripts/controllers/header_controller.coffee @@ -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' diff --git a/src/scripts/controllers/inventory_controller.coffee b/src/scripts/controllers/inventory_controller.coffee index 669215c70..0ae918be8 100644 --- a/src/scripts/controllers/inventory_controller.coffee +++ b/src/scripts/controllers/inventory_controller.coffee @@ -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 = => diff --git a/src/scripts/controllers/item_controller.coffee b/src/scripts/controllers/item_controller.coffee index 0a305f0f9..13e0ddc65 100644 --- a/src/scripts/controllers/item_controller.coffee +++ b/src/scripts/controllers/item_controller.coffee @@ -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' diff --git a/src/scripts/controllers/item_page_controller.coffee b/src/scripts/controllers/item_page_controller.coffee index f0457dcfe..65022d5e2 100644 --- a/src/scripts/controllers/item_page_controller.coffee +++ b/src/scripts/controllers/item_page_controller.coffee @@ -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 "/" diff --git a/src/scripts/controllers/mod_controller.coffee b/src/scripts/controllers/mod_controller.coffee index 23ce9be36..9c692d7db 100644 --- a/src/scripts/controllers/mod_controller.coffee +++ b/src/scripts/controllers/mod_controller.coffee @@ -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' diff --git a/src/scripts/controllers/mod_page_controller.coffee b/src/scripts/controllers/mod_page_controller.coffee index bcc13133b..f9112d5f1 100644 --- a/src/scripts/controllers/mod_page_controller.coffee +++ b/src/scripts/controllers/mod_page_controller.coffee @@ -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() diff --git a/src/scripts/crafting_guide_router.coffee b/src/scripts/crafting_guide_router.coffee index c1eba4a1a..b01236d7c 100644 --- a/src/scripts/crafting_guide_router.coffee +++ b/src/scripts/crafting_guide_router.coffee @@ -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}" diff --git a/src/scripts/main.coffee b/src/scripts/main.coffee index 7ebbbebbb..b750be542 100644 --- a/src/scripts/main.coffee +++ b/src/scripts/main.coffee @@ -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 diff --git a/src/scripts/models/item_page.coffee b/src/scripts/models/item_page.coffee index 0d947aeb3..e1c5aca06 100644 --- a/src/scripts/models/item_page.coffee +++ b/src/scripts/models/item_page.coffee @@ -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