Convert site to a single JavaScript archive

* Convert build to use a single JavaScript file on the site (instead
  of downloading each library separately). This also means that all
  global variables (e.g., `$` for JQuery, `_` for Underscore.js) can
  be removed.
* Remove unused scripts and/or move them to a more appropriate repo
* Update the `deploy` script to work with CircleCI's automation
* Update markdown display code to allow images to be located with the
  markdown data files instead of the pre-rendered index pages
This commit is contained in:
Andrew Miner
2015-04-29 19:58:53 -07:00
parent 414017f689
commit 930b8049a2
60 changed files with 195 additions and 359 deletions
@@ -5,7 +5,9 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
BaseController = require './base_controller'
_ = require 'underscore'
{Adsense} = require '../constants'
{Duration} = require '../constants'
{ProductionEnvs} = require '../constants'
@@ -5,13 +5,16 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
_ = require 'underscore'
backbone = require 'backbone'
views = require '../views'
{Duration} = require '../constants'
{Event} = require '../constants'
########################################################################################################################
module.exports = class BaseController extends Backbone.View
module.exports = class BaseController extends backbone.View
constructor: (options={})->
@tryRefresh = _.debounce @_tryRefresh, 100
@@ -10,6 +10,7 @@ CraftPage = require '../models/craft_page'
InventoryController = require './inventory_controller'
PageController = require './page_controller'
StepController = require './step_controller'
_ = require 'underscore'
{Event} = require '../constants'
{Url} = require '../constants'
@@ -30,7 +31,7 @@ module.exports = class CraftPageController extends PageController
@modPack = options.modPack
@storage = options.storage
@model.plan.on Event.change, => @refresh()
@model.plan.on Event.change, => @tryRefresh()
# Event Methods ################################################################################
@@ -5,11 +5,12 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
BaseController = require './base_controller'
{Duration} = require '../constants'
{Event} = require '../constants'
ImageLoader = require './image_loader'
BaseController = require './base_controller'
ImageLoader = require './image_loader'
MinimalRecipeController = require './minimal_recipe_controller'
_ = require 'underscore'
{Duration} = require '../constants'
{Event} = require '../constants'
########################################################################################################################
@@ -5,9 +5,11 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
BaseController = require './base_controller'
{Duration} = require '../constants'
EmailClient = require '../models/email_client'
_ = require 'underscore'
{Duration} = require '../constants'
{Key} = require '../constants'
########################################################################################################################
@@ -10,6 +10,7 @@ CraftingGridController = require './crafting_grid_controller'
ImageLoader = require './image_loader'
Inventory = require '../models/inventory'
InventoryController = require './inventory_controller'
_ = require 'underscore'
{Duration} = require '../constants'
{StringBuilder} = require 'crafting-guide-common'
@@ -5,8 +5,10 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
BaseController = require './base_controller'
ItemSelectorController = require './item_selector_controller'
_ = require 'underscore'
{Duration} = require '../constants'
{Event} = require '../constants'
{ProductionEnvs} = require '../constants'
@@ -7,6 +7,7 @@ All rights reserved.
AdsenseController = require './adsense_controller'
PageController = require './page_controller'
_ = require 'underscore'
########################################################################################################################
@@ -10,6 +10,7 @@ ImageLoader = require './image_loader'
ItemSelectorController = require './item_selector_controller'
NameFinder = require '../models/name_finder'
StackController = require './stack_controller'
_ = require 'underscore'
{Duration} = require '../constants'
{Event} = require '../constants'
{Key} = require '../constants'
@@ -6,6 +6,7 @@ All rights reserved.
###
BaseController = require './base_controller'
_ = require 'underscore'
########################################################################################################################
@@ -15,6 +15,7 @@ ItemSlug = require '../models/item_slug'
MarkdownSectionController = require './markdown_section_controller'
PageController = require './page_controller'
VideoController = require './video_controller'
_ = require 'underscore'
{Duration} = require '../constants'
{Event} = require '../constants'
{Text} = require '../constants'
@@ -88,6 +89,8 @@ module.exports = class ItemPageController extends PageController
@imageLoader.load display.iconUrl, @$titleImage
@$name.html display.itemName
@_descriptionController.imageBase = Url.itemImageDir display
if @model.item.officialUrl?
@$officialPageLink.attr 'href', @model.item.officialUrl
@show @$officialPageLink
@@ -5,9 +5,11 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
BaseController = require './base_controller'
ItemSelector = require '../models/item_selector'
ItemSelectorElementController = require './item_selector_element_controller'
_ = require 'underscore'
{Duration} = require '../constants'
{Event} = require '../constants'
{Key} = require '../constants'
@@ -6,6 +6,7 @@ All rights reserved.
###
BaseController = require './base_controller'
_ = require 'underscore'
{Event} = require '../constants'
########################################################################################################################
@@ -7,6 +7,7 @@ All rights reserved.
PageController = require './page_controller'
User = require '../models/user'
_ = require 'underscore'
{CraftingGuideClient} = require 'crafting-guide-common'
{Event} = require '../constants'
{Login} = require '../constants'
@@ -6,6 +6,8 @@ All rights reserved.
###
BaseController = require './base_controller'
_ = require 'underscore'
{markdown} = require 'markdown'
{Url} = require '../constants'
########################################################################################################################
@@ -14,13 +16,15 @@ module.exports = class MarkdownSectionController extends BaseController
constructor: (options={})->
if not options.modPack? then throw new Error 'options.modPack is required'
options.imageBase ?= ''
options.model ?= ''
options.title ?= 'Description'
options.templateName = 'markdown_section'
super options
@modPack = options.modPack
@title = options.title
@imageBase = options.imageBase
@modPack = options.modPack
@title = options.title
# BaseController Overrides #####################################################################
@@ -50,15 +54,17 @@ module.exports = class MarkdownSectionController extends BaseController
tree = markdown.parse @model, 'Maruku'
findLinkRefs = (node)=>
logger.verbose "inspecting a #{node[0]}"
logger.verbose -> "inspecting a #{node[0]}"
if node[0] is 'link_ref'
logger.verbose "looking for item named: #{node[2]}"
logger.verbose -> "looking for item named: #{node[2]}"
item = @modPack.findItemByName node[2]
if item?
logger.verbose "found item #{item.slug}, updating link"
logger.verbose -> "found item #{item.slug}, updating link"
node[0] = 'link'
node[1].href = Url.item itemSlug:item.slug.item, modSlug:item.slug.mod
delete node[1].ref
else if node[0] is 'img'
node[1].href = "#{@imageBase}/#{node[1].href}"
else
for index in [1...node.length]
if _.isArray node[index]
@@ -9,6 +9,7 @@ BaseController = require './base_controller'
CraftingGridController = require './crafting_grid_controller'
ImageLoader = require './image_loader'
SlotController = require './slot_controller'
_ = require 'underscore'
{Duration} = require '../constants'
{StringBuilder} = require 'crafting-guide-common'
@@ -6,6 +6,7 @@ All rights reserved.
###
BaseController = require './base_controller'
_ = require 'underscore'
{Url} = require '../constants'
########################################################################################################################
@@ -7,6 +7,7 @@ All rights reserved.
BaseController = require './base_controller'
ModSelectorController = require './mod_selector_controller'
_ = require 'underscore'
{Duration} = require '../constants'
########################################################################################################################
@@ -5,6 +5,7 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
AdsenseController = require './adsense_controller'
Item = require '../models/item'
ItemGroupController = require './item_group_controller'
@@ -5,9 +5,11 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
BaseController = require './base_controller'
{Event} = require '../constants'
Mod = require '../models/mod'
_ = require 'underscore'
{Event} = require '../constants'
{RequiredMods} = require '../constants'
{Url} = require '../constants'
@@ -5,6 +5,7 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
$ = require 'jquery'
BaseController = require './base_controller'
{Text} = require '../constants'
@@ -34,4 +35,4 @@ module.exports = class PageController extends BaseController
$('title').html title
super
super
@@ -6,6 +6,7 @@ All rights reserved.
###
BaseController = require './base_controller'
_ = require 'underscore'
########################################################################################################################
@@ -7,6 +7,7 @@ All rights reserved.
BaseController = require './base_controller'
ImageLoader = require './image_loader'
_ = require 'underscore'
{Duration} = require '../constants'
{Event} = require '../constants'
{Key} = require '../constants'
@@ -8,6 +8,7 @@ All rights reserved.
BaseController = require './base_controller'
InventoryController = require './inventory_controller'
MinimalRecipeController = require './minimal_recipe_controller'
_ = require 'underscore'
{Event} = require '../constants'
########################################################################################################################
@@ -6,6 +6,7 @@ All rights reserved.
###
BaseController = require './base_controller'
_ = require 'underscore'
{Url} = require '../constants'
########################################################################################################################
@@ -98,6 +98,7 @@ module.exports = class TutorialPageController extends BaseController
controller.model = section.model
controller.refresh()
controller.imageBase = Url.tutorialImageDir modSlug:@modSlug, tutorialSlug:@tutorialSlug
index += 1
while @_sectionControllers.length > index