From 4ca72fe512f5abb23d90fe30569addee43c6d69b Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Wed, 22 Apr 2015 16:28:27 -0700 Subject: [PATCH] Update AdsenseController to show ads to fit space --- src/coffee/constants.coffee | 2 +- .../controllers/adsense_controller.coffee | 63 ++++++++++++++----- .../controllers/browse_page_controller.coffee | 4 +- .../configure_page_controller.coffee | 6 +- .../controllers/craft_page_controller.coffee | 1 + .../controllers/home_page_controller.coffee | 2 +- .../controllers/mod_page_controller.coffee | 4 +- .../templates/adsense_sidebar_skyscraper.jade | 2 +- src/jade/templates/configure_page.jade | 2 +- src/jade/templates/home_page.jade | 2 +- src/jade/templates/mod_page.jade | 2 +- src/scss/classes.scss | 2 +- src/scss/templates/adsense.scss | 19 +++--- 13 files changed, 74 insertions(+), 37 deletions(-) diff --git a/src/coffee/constants.coffee b/src/coffee/constants.coffee index a61a8ddbe..ce01fdc2f 100644 --- a/src/coffee/constants.coffee +++ b/src/coffee/constants.coffee @@ -7,7 +7,7 @@ All rights reserved. exports.Adsense = Adsense = {} Adsense.clientId = 'ca-pub-6593013914878730' -Adsense.slotId = '7613920409' +Adsense.slotIds = ['7613920409', '9574673605', '3388539204'] # Minecraft must be first exports.DefaultMods = diff --git a/src/coffee/controllers/adsense_controller.coffee b/src/coffee/controllers/adsense_controller.coffee index 895260616..1edebe8c0 100644 --- a/src/coffee/controllers/adsense_controller.coffee +++ b/src/coffee/controllers/adsense_controller.coffee @@ -7,6 +7,7 @@ All rights reserved. BaseController = require './base_controller' {Adsense} = require '../constants' +{Duration} = require '../constants' {ProductionEnvs} = require '../constants' ######################################################################################################################## @@ -14,32 +15,64 @@ BaseController = require './base_controller' module.exports = class AdsenseController extends BaseController constructor: (options={})-> - options.model ?= 'skyscraper_sidebar' - options.tagName = 'ins' - options.templateName = "adsense_#{options.model}" + options.templateName = "adsense_sidebar_skyscraper" super options - @_adsEnabled = global.env in ProductionEnvs + @_adsEnabled = global.env in ProductionEnvs + @_adHeight = 630 + @_adCount = 0 + @_waiting = false + + # Public Methods ############################################################################### + + fillAdPositions: -> + if @_adCount > 0 + return unless @_adCount < Adsense.slotIds.length + return unless @$sidebar? and @$mainBody? + return unless @$sidebar.height() + @_adHeight < @$mainBody.height() + + $adContainer = $('') + @$el.append $adContainer + + if @_adsEnabled + $ad = $('') + $ad.attr 'data-ad-client', Adsense.clientId + $ad.attr 'data-ad-slot', Adsense.slotIds[@_adCount] + $ad.css 'height':'600px', 'width':'160px' + $adContainer.append $ad + @_loadAds() + + @_adCount += 1 + _.defer => @fillAdPositions() # BaseController Overrides ##################################################################### - render: -> - if @_adsEnabled - super - - @$el.attr 'data-ad-client', Adsense.clientId - @$el.attr 'data-ad-slot', Adsense.slotId - else - @$el.addClass 'placeholder' - @_rendered = true - - @$el.addClass @model + onDidRender: -> + @$mainBody = $('.mainBody') + @$sidebar = $('.sidebar') + super refresh: -> + @_waitForPageReadiness() + super + + # Private Methods ############################################################################# + + _loadAds: -> return unless @_adsEnabled + logger.info "Loading #{@_adCount} Google AdSense ads" try global.adsbygoogle ||= [] global.adsbygoogle.push {} catch e logger.warning "Could not load Adsense ad: #{e}" + + _waitForPageReadiness: -> + return if @_waiting + + if @$mainBody.height() < @_adHeight / 2 + @_waiting = true + _.delay (=> @_waiting = false; @_waitForPageReadiness()), Duration.normal + else + @fillAdPositions() diff --git a/src/coffee/controllers/browse_page_controller.coffee b/src/coffee/controllers/browse_page_controller.coffee index f188ac484..5268e7796 100644 --- a/src/coffee/controllers/browse_page_controller.coffee +++ b/src/coffee/controllers/browse_page_controller.coffee @@ -31,11 +31,13 @@ module.exports = class BrowsePageController extends PageController # BaseController Overrides ##################################################################### onDidRender: -> - @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' + @adsenseController = @addChild AdsenseController, '.view__adsense' @$modContainer = @$('.mods') super refresh: -> + @adsenseController.fillAdPositions() + @_controllers ?= [] controllerIndex = 0 diff --git a/src/coffee/controllers/configure_page_controller.coffee b/src/coffee/controllers/configure_page_controller.coffee index e100a7ca3..000d662ef 100644 --- a/src/coffee/controllers/configure_page_controller.coffee +++ b/src/coffee/controllers/configure_page_controller.coffee @@ -30,6 +30,10 @@ module.exports = class ConfigurePageController extends PageController # BaseController Overrides ##################################################################### onDidRender: -> - @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' + @adsenseController = @addChild AdsenseController, '.view__adsense' @modPackController = @addChild ModPackController, '.view__mod_pack', model:@modPack, storage:@storage super + + refresh: -> + @adsenseController.fillAdPositions() + super \ No newline at end of file diff --git a/src/coffee/controllers/craft_page_controller.coffee b/src/coffee/controllers/craft_page_controller.coffee index 0c4a6bf73..6284ec480 100644 --- a/src/coffee/controllers/craft_page_controller.coffee +++ b/src/coffee/controllers/craft_page_controller.coffee @@ -133,6 +133,7 @@ module.exports = class CraftPageController extends PageController refresh: -> @_refreshSectionVisibility() @_refreshSteps() + @adsenseController.fillAdPositions() super # Backbone.View Overrides ######################################################################## diff --git a/src/coffee/controllers/home_page_controller.coffee b/src/coffee/controllers/home_page_controller.coffee index 627f37079..51ee707a2 100644 --- a/src/coffee/controllers/home_page_controller.coffee +++ b/src/coffee/controllers/home_page_controller.coffee @@ -19,7 +19,7 @@ module.exports = class HomeController extends PageController # BaseController Overrides ##################################################################### onDidRender: -> - @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' + @adsenseController = @addChild AdsenseController, '.view__adsense' super # Backbone.View Overrides ###################################################################### diff --git a/src/coffee/controllers/mod_page_controller.coffee b/src/coffee/controllers/mod_page_controller.coffee index 68a7f5198..c256a234f 100644 --- a/src/coffee/controllers/mod_page_controller.coffee +++ b/src/coffee/controllers/mod_page_controller.coffee @@ -66,7 +66,7 @@ module.exports = class ModPageController extends PageController # BaseController Overrides ##################################################################### onDidRender: -> - @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' + @adsenseController = @addChild AdsenseController, '.view__adsense' @$name = @$('.name') @$byline = @$('.byline p') @@ -84,6 +84,8 @@ module.exports = class ModPageController extends PageController super refresh: -> + @adsenseController.fillAdPositions() + if @model?.isLoaded and @effectiveModVersion?.isLoaded @$byline.html "by #{@model.author}" @$description.html @model.description diff --git a/src/jade/templates/adsense_sidebar_skyscraper.jade b/src/jade/templates/adsense_sidebar_skyscraper.jade index 88be42a1f..d3d326961 100644 --- a/src/jade/templates/adsense_sidebar_skyscraper.jade +++ b/src/jade/templates/adsense_sidebar_skyscraper.jade @@ -5,4 +5,4 @@ //- All rights reserved. //- -.adsbygoogle.sidebar_skyscraper +.view__adsense diff --git a/src/jade/templates/configure_page.jade b/src/jade/templates/configure_page.jade index 477c0a3b4..4c4485eaf 100644 --- a/src/jade/templates/configure_page.jade +++ b/src/jade/templates/configure_page.jade @@ -7,7 +7,7 @@ .view__configure_page .sidebar - ins.view__adsense + .view__adsense .mainBody .view__mod_pack diff --git a/src/jade/templates/home_page.jade b/src/jade/templates/home_page.jade index c1919d401..694025349 100644 --- a/src/jade/templates/home_page.jade +++ b/src/jade/templates/home_page.jade @@ -7,7 +7,7 @@ .view__home_page .sidebar - ins.view__adsense + .view__adsense .mainBody .section diff --git a/src/jade/templates/mod_page.jade b/src/jade/templates/mod_page.jade index dbaf8fcea..2af6057cf 100644 --- a/src/jade/templates/mod_page.jade +++ b/src/jade/templates/mod_page.jade @@ -13,7 +13,7 @@ a.documentation.externalLink.hideable.hidden(target="new"): p Documentation a.download.externalLink.hideable.hidden(target="new"): p Download - ins.view__adsense + .view__adsense .mainBody h1.name diff --git a/src/scss/classes.scss b/src/scss/classes.scss index 88f21d5da..48960bc5b 100644 --- a/src/scss/classes.scss +++ b/src/scss/classes.scss @@ -65,7 +65,7 @@ All rights reserved. } .sidebar { - position: relative; width: 18.75%; + position: relative; width: 18.75%; height: 100%; display: inline-block; padding: 1em; diff --git a/src/scss/templates/adsense.scss b/src/scss/templates/adsense.scss index 0f5596502..f89ba8ccf 100644 --- a/src/scss/templates/adsense.scss +++ b/src/scss/templates/adsense.scss @@ -6,19 +6,14 @@ All rights reserved. */ .view__adsense { - display: inline-block; - margin: 3em 0; - &:first-child { - margin-top: 0; - } + .sidebar_skyscraper { + position: relative; width: 160px; height: 600px; + border: 0.1em solid $color-gray-faint; + margin: 3em 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; + &:first-child { + margin-top: 0; + } } }