From 50c3d95440f67e0aab9124d1fedcb721ff6b961a Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Tue, 10 Mar 2015 21:34:41 -0700 Subject: [PATCH] Only load Adsense in prod. and reset on each page --- Gruntfile.coffee | 5 +-- scripts/server | 4 +- src/coffee/constants.coffee | 2 + .../controllers/adsense_controller.coffee | 40 +++++++++++++++++++ .../controllers/browse_page_controller.coffee | 12 +++--- .../configure_page_controller.coffee | 2 + .../controllers/home_page_controller.coffee | 9 ++++- .../controllers/item_page_controller.coffee | 11 +++-- .../controllers/mod_page_controller.coffee | 5 ++- src/coffee/crafting_guide_router.coffee | 30 +++++++++----- src/jade/app.jade | 33 +++++++++++++++ src/jade/includes/_google_adsense.jade | 8 ++++ src/jade/includes/_standard_scripts.jade | 15 +++++++ src/jade/includes/_tiny_header.jade | 0 src/jade/index.jade | 20 ---------- src/jade/layouts/basic.jade | 38 ------------------ .../templates/adsense_sidebar_skyscraper.jade | 8 ++++ src/jade/templates/browse_page.jade | 2 +- src/jade/templates/configure_page.jade | 2 +- src/jade/templates/home_page.jade | 4 +- .../includes/_sidebar_skyscraper.html | 9 ----- src/jade/templates/item_page.jade | 2 +- src/jade/templates/mod_page.jade | 2 +- src/jade/test.jade | 35 +++++++++++----- src/scss/classes.scss | 8 ---- src/scss/templates/adsense.scss | 24 +++++++++++ src/scss/templates/index.scss | 1 + 27 files changed, 214 insertions(+), 117 deletions(-) create mode 100644 src/coffee/controllers/adsense_controller.coffee create mode 100644 src/jade/app.jade create mode 100644 src/jade/includes/_google_adsense.jade create mode 100644 src/jade/includes/_standard_scripts.jade create mode 100644 src/jade/includes/_tiny_header.jade delete mode 100644 src/jade/index.jade delete mode 100644 src/jade/layouts/basic.jade create mode 100644 src/jade/templates/adsense_sidebar_skyscraper.jade delete mode 100644 src/jade/templates/includes/_sidebar_skyscraper.html create mode 100644 src/scss/templates/adsense.scss 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';