diff --git a/Gruntfile.coffee b/Gruntfile.coffee
index cda277c2c..75bb5e538 100644
--- a/Gruntfile.coffee
+++ b/Gruntfile.coffee
@@ -52,9 +52,6 @@ module.exports = (grunt)->
dist: ['./dist']
copy:
- index_prerender:
- files:
- './dist/index.html': ['./static/index.html']
jquery_ui_images:
files: [expand:true, cwd:'./lib/jquery-ui/images', src:['*.png'], dest:'./dist/css/images']
scripts:
@@ -116,7 +113,7 @@ module.exports = (grunt)->
options:
src: './static/'
dest: './dist/'
- exclude: '*.html'
+ exclude: ['*.html']
recursive: true
sass:
diff --git a/scripts/server b/scripts/server
index 0a54fb782..94f67741a 100755
--- a/scripts/server
+++ b/scripts/server
@@ -26,8 +26,8 @@ app.get '*/$', (request, response)->
response.sendFile filePath, root:ROOT
console.log ">>> #{filePath} (for #{request.path})"
else
- response.sendFile '/index.html', root:ROOT
- console.log ">>> index.html (for #{request.path})"
+ response.sendFile '/app.html', root:ROOT
+ console.log ">>> app.html (for #{request.path})"
app.get '*', (request, response)->
extension = path.extname(request.path)
diff --git a/src/coffee/constants.coffee b/src/coffee/constants.coffee
index 15e27cceb..25d2cdc71 100644
--- a/src/coffee/constants.coffee
+++ b/src/coffee/constants.coffee
@@ -5,6 +5,8 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
+exports.AdsenseEnvs = [ 'production' ]
+
# Minecraft must be first
exports.DefaultMods =
minecraft: { defaultVersion: '1.7.10' }
diff --git a/src/coffee/controllers/adsense_controller.coffee b/src/coffee/controllers/adsense_controller.coffee
new file mode 100644
index 000000000..94ed3325a
--- /dev/null
+++ b/src/coffee/controllers/adsense_controller.coffee
@@ -0,0 +1,40 @@
+###
+Crafting Guide - adsense_controller.coffee
+
+Copyright (c) 2015 by Redwood Labs
+All rights reserved.
+###
+
+BaseController = require './base_controller'
+{AdsenseEnvs} = require '../constants'
+
+########################################################################################################################
+
+module.exports = class AdsenseController extends BaseController
+
+ constructor: (options={})->
+ options.model ?= 'skyscraper_sidebar'
+ options.templateName = "adsense_#{options.model}"
+ super options
+
+ @_adsEnabled = global.env in AdsenseEnvs
+
+ # BaseController Overrides #####################################################################
+
+ render: ->
+ if @_adsEnabled
+ super
+ else
+ @$el.addClass 'placeholder'
+ @_rendered = true
+
+ @$el.addClass @model
+
+ refresh: ->
+ return unless @_adsEnabled
+
+ try
+ global.adsbygoogle ||= []
+ global.adsbygoogle.push {}
+ catch e
+ logger.warning "Could not load Adsense ad: #{e}"
diff --git a/src/coffee/controllers/browse_page_controller.coffee b/src/coffee/controllers/browse_page_controller.coffee
index 7a65f63b3..f4c30fe2a 100644
--- a/src/coffee/controllers/browse_page_controller.coffee
+++ b/src/coffee/controllers/browse_page_controller.coffee
@@ -5,10 +5,11 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
-PageController = require './page_controller'
-{Duration} = require '../constants'
-{Event} = require '../constants'
-ModController = require './mod_controller'
+AdsenseController = require './adsense_controller'
+ModController = require './mod_controller'
+PageController = require './page_controller'
+{Duration} = require '../constants'
+{Event} = require '../constants'
########################################################################################################################
@@ -30,7 +31,8 @@ module.exports = class BrowsePageController extends PageController
# BaseController Overrides #####################################################################
onDidRender: ->
- @$modContainer = @$('.mods')
+ @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper'
+ @$modContainer = @$('.mods')
super
refresh: ->
diff --git a/src/coffee/controllers/configure_page_controller.coffee b/src/coffee/controllers/configure_page_controller.coffee
index f1f919d2a..e100a7ca3 100644
--- a/src/coffee/controllers/configure_page_controller.coffee
+++ b/src/coffee/controllers/configure_page_controller.coffee
@@ -5,6 +5,7 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
+AdsenseController = require './adsense_controller'
PageController = require './page_controller'
ModPackController = require './mod_pack_controller'
@@ -29,5 +30,6 @@ module.exports = class ConfigurePageController extends PageController
# BaseController Overrides #####################################################################
onDidRender: ->
+ @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper'
@modPackController = @addChild ModPackController, '.view__mod_pack', model:@modPack, storage:@storage
super
diff --git a/src/coffee/controllers/home_page_controller.coffee b/src/coffee/controllers/home_page_controller.coffee
index 7a0c495a6..627f37079 100644
--- a/src/coffee/controllers/home_page_controller.coffee
+++ b/src/coffee/controllers/home_page_controller.coffee
@@ -5,7 +5,8 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
-PageController = require './page_controller'
+AdsenseController = require './adsense_controller'
+PageController = require './page_controller'
########################################################################################################################
@@ -15,6 +16,12 @@ module.exports = class HomeController extends PageController
options.templateName = 'home_page'
super options
+ # BaseController Overrides #####################################################################
+
+ onDidRender: ->
+ @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper'
+ super
+
# Backbone.View Overrides ######################################################################
events: ->
diff --git a/src/coffee/controllers/item_page_controller.coffee b/src/coffee/controllers/item_page_controller.coffee
index f586c8cdd..6dc45d595 100644
--- a/src/coffee/controllers/item_page_controller.coffee
+++ b/src/coffee/controllers/item_page_controller.coffee
@@ -5,8 +5,7 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
-{Duration} = require '../constants'
-{Event} = require '../constants'
+AdsenseController = require './adsense_controller'
FullRecipeController = require './full_recipe_controller'
ImageLoader = require './image_loader'
Item = require '../models/item'
@@ -14,6 +13,8 @@ ItemGroupController = require './item_group_controller'
ItemPage = require '../models/item_page'
ItemSlug = require '../models/item_slug'
PageController = require './page_controller'
+{Duration} = require '../constants'
+{Event} = require '../constants'
{Text} = require '../constants'
{Url} = require '../constants'
@@ -45,11 +46,13 @@ module.exports = class ItemPageController extends PageController
# BaseController Overrides #####################################################################
onDidRender: ->
- @_usedAsToolToMakeController = @addChild ItemGroupController, '.usedAsToolToMake .view__item_group',
+ @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper'
+
+ @_similarItemsController = @addChild ItemGroupController, '.similar .view__item_group',
imageLoader: @imageLoader
modPack: @modPack
- @_similarItemsController = @addChild ItemGroupController, '.similar .view__item_group',
+ @_usedAsToolToMakeController = @addChild ItemGroupController, '.usedAsToolToMake .view__item_group',
imageLoader: @imageLoader
modPack: @modPack
diff --git a/src/coffee/controllers/mod_page_controller.coffee b/src/coffee/controllers/mod_page_controller.coffee
index 3d6f312f2..634723043 100644
--- a/src/coffee/controllers/mod_page_controller.coffee
+++ b/src/coffee/controllers/mod_page_controller.coffee
@@ -5,12 +5,13 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved.
###
-{Duration} = require '../constants'
+AdsenseController = require './adsense_controller'
Item = require '../models/item'
ItemGroupController = require './item_group_controller'
Mod = require '../models/mod'
ModPack = require '../models/mod_pack'
PageController = require './page_controller'
+{Duration} = require '../constants'
{Text} = require '../constants'
{Url} = require '../constants'
@@ -52,6 +53,8 @@ module.exports = class ModPageController extends PageController
# BaseController Overrides #####################################################################
onDidRender: ->
+ @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper'
+
@$name = @$('.name')
@$byline = @$('.byline p')
@$description = @$('.description p')
diff --git a/src/coffee/crafting_guide_router.coffee b/src/coffee/crafting_guide_router.coffee
index 71c5b1690..0fa5750f3 100644
--- a/src/coffee/crafting_guide_router.coffee
+++ b/src/coffee/crafting_guide_router.coffee
@@ -5,25 +5,25 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
-
BrowsePageController = require './controllers/browse_page_controller'
-CraftPageController = require './controllers/craft_page_controller'
ConfigurePageController = require './controllers/configure_page_controller'
-{DefaultMods} = require './constants'
-{Duration} = require './constants'
-{Event} = require './constants'
+CraftPageController = require './controllers/craft_page_controller'
HeaderController = require './controllers/header_controller'
+HomePageController = require './controllers/home_page_controller'
+ImageLoader = require './controllers/image_loader'
ItemPageController = require './controllers/item_page_controller'
ItemSlug = require './models/item_slug'
-ImageLoader = require './controllers/image_loader'
Mod = require './models/mod'
ModPack = require './models/mod_pack'
ModPageController = require './controllers/mod_page_controller'
-{Opacity} = require './constants'
Storage = require './models/storage'
-{Url} = require './constants'
UrlParams = require './url_params'
-HomePageController = require './controllers/home_page_controller'
+{AdsenseEnvs} = require './constants'
+{DefaultMods} = require './constants'
+{Duration} = require './constants'
+{Event} = require './constants'
+{Opacity} = require './constants'
+{Url} = require './constants'
########################################################################################################################
@@ -158,6 +158,8 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
showDuration = Duration.normal
show = =>
+ @_resetGlobals()
+
@_page = page
@_controller = controller
@@ -176,3 +178,13 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
@_controller.$el.slideUp showDuration, show
else
show()
+
+ _resetGlobals: ->
+ if global.env in AdsenseEnvs
+ for key, value of global
+ if key.indexOf('google') isnt -1
+ delete global[key]
+
+ delete global.adsByGoogle
+ $('script[src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"]').remove()
+ $('body').append('')
diff --git a/src/jade/app.jade b/src/jade/app.jade
new file mode 100644
index 000000000..eb2bcb700
--- /dev/null
+++ b/src/jade/app.jade
@@ -0,0 +1,33 @@
+//-
+//- Crafting Guide - app.jade
+//-
+//- Copyright (c) 2014-2015 by Redwood Labs
+//- All rights reserved.
+//-
+
+doctype html
+html
+ head
+ title The Ultimate Minecraft Crafting Guide
+ 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")
+ link(rel="stylesheet", type="text/css", href="/css/jquery-ui.css")
+
+ body
+ block body
+ .view__feedback
+ .view__screen
+
+ .content
+ include ./includes/_header.jade
+ .page
+ include ./includes/_footer.jade
+
+ block scripts
+ include ./includes/_standard_scripts.jade
+ include ./includes/_google_adsense.jade
+ include ./includes/_google_analytics.jade
+ include ./includes/_addthis.jade
diff --git a/src/jade/includes/_google_adsense.jade b/src/jade/includes/_google_adsense.jade
new file mode 100644
index 000000000..9d2d87461
--- /dev/null
+++ b/src/jade/includes/_google_adsense.jade
@@ -0,0 +1,8 @@
+//-
+//- Crafting Guide - _google_adsense.jade
+//-
+//- Copyright (c) 2015 by Redwood Labs
+//- All rights reserved.
+//-
+
+script(async, src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js")
\ No newline at end of file
diff --git a/src/jade/includes/_standard_scripts.jade b/src/jade/includes/_standard_scripts.jade
new file mode 100644
index 000000000..90c69cc89
--- /dev/null
+++ b/src/jade/includes/_standard_scripts.jade
@@ -0,0 +1,15 @@
+//-
+//- Crafting Guide - _standard_scripts.jade
+//-
+//- Copyright (c) 2015 by Redwood Labs
+//- All rights reserved.
+//-
+
+script(src="/js/underscore.js")
+script(src="/js/jquery.js")
+script(src="/js/backbone.js")
+script(src="/js/jade.js")
+script(src="/js/markdown.js")
+script(src="/js/when.js")
+script(src="/js/jquery-ui.js")
+script(src="/js/main.js")
diff --git a/src/jade/includes/_tiny_header.jade b/src/jade/includes/_tiny_header.jade
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/jade/index.jade b/src/jade/index.jade
deleted file mode 100644
index 3f48ff968..000000000
--- a/src/jade/index.jade
+++ /dev/null
@@ -1,20 +0,0 @@
-//-
-//- Crafting Guide - index.jade
-//-
-//- Copyright (c) 2014-2015 by Redwood Labs
-//- All rights reserved.
-//-
-
-extends ./layouts/basic
-
-append styles
- link(rel="stylesheet", type="text/css", href="/css/jquery-ui.css")
-
-block content
- .page
-
-append scripts
- script(src="/js/jquery-ui.js")
- script(src="/js/main.js")
- include ./includes/_google_analytics.jade
- include ./includes/_addthis.jade
diff --git a/src/jade/layouts/basic.jade b/src/jade/layouts/basic.jade
deleted file mode 100644
index 610864710..000000000
--- a/src/jade/layouts/basic.jade
+++ /dev/null
@@ -1,38 +0,0 @@
-//-
-//- Crafting Guide - basic.jade
-//-
-//- Copyright (c) 2014-2015 by Redwood Labs
-//- All rights reserved.
-//-
-
-block basic-vars
- - var pageTitle = 'Crafting Guide for Minecraft | The Ultimate Step-by-Step Tutorial for Making Anything in Minecraft'
-
-doctype html
-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")
-
- body
- block body
- .view__feedback
- .view__screen
- .content
- include ../includes/_header.jade
-
- block content
-
- include ../includes/_footer.jade
-
- block scripts
- script(src="/js/underscore.js")
- script(src="/js/jquery.js")
- script(src="/js/backbone.js")
- script(src="/js/jade.js")
- script(src="/js/markdown.js")
- script(src="/js/when.js")
diff --git a/src/jade/templates/adsense_sidebar_skyscraper.jade b/src/jade/templates/adsense_sidebar_skyscraper.jade
new file mode 100644
index 000000000..8846a9b0f
--- /dev/null
+++ b/src/jade/templates/adsense_sidebar_skyscraper.jade
@@ -0,0 +1,8 @@
+//-
+//- Crafting Guide - _adsense_sidebar_skyscraper.jade
+//-
+//- Copyright (c) 2015 by Redwood Labs
+//- All rights reserved.
+//-
+
+ins.adsbygoogle.sidebar_skyscraper(data-ad-client="ca-pub-6593013914878730", data-ad-slot="7613920409")
diff --git a/src/jade/templates/browse_page.jade b/src/jade/templates/browse_page.jade
index 09a2e3e0c..7a2e31aa9 100644
--- a/src/jade/templates/browse_page.jade
+++ b/src/jade/templates/browse_page.jade
@@ -7,7 +7,7 @@
.view__browse_page
.sidebar
- include ./includes/_sidebar_skyscraper.html
+ .view__adsense
.mainBody
h2: p Active Mods
diff --git a/src/jade/templates/configure_page.jade b/src/jade/templates/configure_page.jade
index 26422200b..4c4485eaf 100644
--- a/src/jade/templates/configure_page.jade
+++ b/src/jade/templates/configure_page.jade
@@ -7,7 +7,7 @@
.view__configure_page
.sidebar
- include ./includes/_sidebar_skyscraper.html
+ .view__adsense
.mainBody
.view__mod_pack
diff --git a/src/jade/templates/home_page.jade b/src/jade/templates/home_page.jade
index 28b2259cf..45424d7ce 100644
--- a/src/jade/templates/home_page.jade
+++ b/src/jade/templates/home_page.jade
@@ -7,6 +7,8 @@
.view__home_page
.sidebar
+ .view__adsense
+
.titleImage
.titleImage
.titleImage
@@ -15,8 +17,6 @@
.titleImage
.titleImage
- include ./includes/_sidebar_skyscraper.html
-
.mainBody
.section
h2 Welcome!
diff --git a/src/jade/templates/includes/_sidebar_skyscraper.html b/src/jade/templates/includes/_sidebar_skyscraper.html
deleted file mode 100644
index 57b61b7a8..000000000
--- a/src/jade/templates/includes/_sidebar_skyscraper.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
diff --git a/src/jade/templates/item_page.jade b/src/jade/templates/item_page.jade
index 753e58349..e8e0c620b 100644
--- a/src/jade/templates/item_page.jade
+++ b/src/jade/templates/item_page.jade
@@ -10,7 +10,7 @@
.titleImage: a: img
a.craftingPlan.externalLink: p See Crafting Plan
- include ./includes/_sidebar_skyscraper.html
+ .view__adsense
.mainBody
h1.name
diff --git a/src/jade/templates/mod_page.jade b/src/jade/templates/mod_page.jade
index d597a7d79..3b950dce0 100644
--- a/src/jade/templates/mod_page.jade
+++ b/src/jade/templates/mod_page.jade
@@ -13,7 +13,7 @@
a.documentation.externalLink(target="new"): p Documentation
a.download.externalLink(target="new"): p Download
- include ./includes/_sidebar_skyscraper.html
+ .view__adsense
.mainBody
h1.name
diff --git a/src/jade/test.jade b/src/jade/test.jade
index 193b815f2..899cdc47b 100644
--- a/src/jade/test.jade
+++ b/src/jade/test.jade
@@ -5,16 +5,31 @@
//- All rights reserved.
//-
-extend ./layouts/basic
+doctype html
+html
+ head
+ title Crafting Guide Unit Tests
+ meta(charset="UTF-8")
+ link(href="/images/favicon.png", rel="icon", type="image/png")
-append styles
- link(rel="stylesheet", type="text/css", href="css/mocha.css")
- style #mocha-stats { position: absolute; top: 12em; }
+ block styles
+ link(rel="stylesheet", type="text/css", href="/css/main.css")
+ link(rel="stylesheet", type="text/css", href="css/mocha.css")
+ style #mocha-stats { position: absolute; top: 12em; }
-block content
- #mocha
+ body
+ block body
+ .view__feedback
+ .view__screen
-append scripts
- script(src="/js/mocha.js")
- script(src="/js/chai.js")
- script(src="/js/test.js")
+ .content
+ include ./includes/_header.jade
+ .page
+ #mocha
+ include ./includes/_footer.jade
+
+ block scripts
+ include ./includes/_standard_scripts.jade
+ script(src="/js/mocha.js")
+ script(src="/js/chai.js")
+ script(src="/js/test.js")
diff --git a/src/scss/classes.scss b/src/scss/classes.scss
index dbb622d58..4ad3695ce 100644
--- a/src/scss/classes.scss
+++ b/src/scss/classes.scss
@@ -5,14 +5,6 @@ Copyright (C) 2015 by Redwood Labs
All rights reserved.
*/
-.adsbygoogle {
- margin-top: 3em;
-
- &:first-child {
- margin-top: 0;
- }
-}
-
.centered {
text-align: center;
}
diff --git a/src/scss/templates/adsense.scss b/src/scss/templates/adsense.scss
new file mode 100644
index 000000000..0f5596502
--- /dev/null
+++ b/src/scss/templates/adsense.scss
@@ -0,0 +1,24 @@
+/*
+Crafting Guide - adsense.scss
+
+Copyright (C) 2015 by Redwood Labs
+All rights reserved.
+*/
+
+.view__adsense {
+ display: inline-block;
+ margin: 3em 0;
+
+ &:first-child {
+ margin-top: 0;
+ }
+
+ &.sidebar_skyscraper {
+ position: relative; width: 160px !important; height: 600px !important;
+ }
+
+ &.placeholder {
+ background: rgba(192, 192, 255, 0.5);
+ border: 0.1em solid $color-gray-medium;
+ }
+}
diff --git a/src/scss/templates/index.scss b/src/scss/templates/index.scss
index 85d5079ac..a01fb62b3 100644
--- a/src/scss/templates/index.scss
+++ b/src/scss/templates/index.scss
@@ -5,6 +5,7 @@ Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
*/
+@import 'adsense';
@import 'browse_page';
@import 'crafting_grid';
@import 'craft_page';