Update AdsenseController to show ads to fit space

This commit is contained in:
Andrew Miner
2015-04-22 16:28:27 -07:00
parent a4120fad2f
commit 4ca72fe512
13 changed files with 74 additions and 37 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ All rights reserved.
exports.Adsense = Adsense = {} exports.Adsense = Adsense = {}
Adsense.clientId = 'ca-pub-6593013914878730' Adsense.clientId = 'ca-pub-6593013914878730'
Adsense.slotId = '7613920409' Adsense.slotIds = ['7613920409', '9574673605', '3388539204']
# Minecraft must be first # Minecraft must be first
exports.DefaultMods = exports.DefaultMods =
@@ -7,6 +7,7 @@ All rights reserved.
BaseController = require './base_controller' BaseController = require './base_controller'
{Adsense} = require '../constants' {Adsense} = require '../constants'
{Duration} = require '../constants'
{ProductionEnvs} = require '../constants' {ProductionEnvs} = require '../constants'
######################################################################################################################## ########################################################################################################################
@@ -14,32 +15,64 @@ BaseController = require './base_controller'
module.exports = class AdsenseController extends BaseController module.exports = class AdsenseController extends BaseController
constructor: (options={})-> constructor: (options={})->
options.model ?= 'skyscraper_sidebar' options.templateName = "adsense_sidebar_skyscraper"
options.tagName = 'ins'
options.templateName = "adsense_#{options.model}"
super options 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 = $('<div class="sidebar_skyscraper"></div>')
@$el.append $adContainer
if @_adsEnabled
$ad = $('<ins class="adsbygoogle"></ins>')
$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 ##################################################################### # BaseController Overrides #####################################################################
render: -> onDidRender: ->
if @_adsEnabled @$mainBody = $('.mainBody')
super @$sidebar = $('.sidebar')
super
@$el.attr 'data-ad-client', Adsense.clientId
@$el.attr 'data-ad-slot', Adsense.slotId
else
@$el.addClass 'placeholder'
@_rendered = true
@$el.addClass @model
refresh: -> refresh: ->
@_waitForPageReadiness()
super
# Private Methods #############################################################################
_loadAds: ->
return unless @_adsEnabled return unless @_adsEnabled
logger.info "Loading #{@_adCount} Google AdSense ads"
try try
global.adsbygoogle ||= [] global.adsbygoogle ||= []
global.adsbygoogle.push {} global.adsbygoogle.push {}
catch e catch e
logger.warning "Could not load Adsense ad: #{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()
@@ -31,11 +31,13 @@ module.exports = class BrowsePageController extends PageController
# BaseController Overrides ##################################################################### # BaseController Overrides #####################################################################
onDidRender: -> onDidRender: ->
@adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' @adsenseController = @addChild AdsenseController, '.view__adsense'
@$modContainer = @$('.mods') @$modContainer = @$('.mods')
super super
refresh: -> refresh: ->
@adsenseController.fillAdPositions()
@_controllers ?= [] @_controllers ?= []
controllerIndex = 0 controllerIndex = 0
@@ -30,6 +30,10 @@ module.exports = class ConfigurePageController extends PageController
# BaseController Overrides ##################################################################### # BaseController Overrides #####################################################################
onDidRender: -> onDidRender: ->
@adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' @adsenseController = @addChild AdsenseController, '.view__adsense'
@modPackController = @addChild ModPackController, '.view__mod_pack', model:@modPack, storage:@storage @modPackController = @addChild ModPackController, '.view__mod_pack', model:@modPack, storage:@storage
super super
refresh: ->
@adsenseController.fillAdPositions()
super
@@ -133,6 +133,7 @@ module.exports = class CraftPageController extends PageController
refresh: -> refresh: ->
@_refreshSectionVisibility() @_refreshSectionVisibility()
@_refreshSteps() @_refreshSteps()
@adsenseController.fillAdPositions()
super super
# Backbone.View Overrides ######################################################################## # Backbone.View Overrides ########################################################################
@@ -19,7 +19,7 @@ module.exports = class HomeController extends PageController
# BaseController Overrides ##################################################################### # BaseController Overrides #####################################################################
onDidRender: -> onDidRender: ->
@adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' @adsenseController = @addChild AdsenseController, '.view__adsense'
super super
# Backbone.View Overrides ###################################################################### # Backbone.View Overrides ######################################################################
@@ -66,7 +66,7 @@ module.exports = class ModPageController extends PageController
# BaseController Overrides ##################################################################### # BaseController Overrides #####################################################################
onDidRender: -> onDidRender: ->
@adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' @adsenseController = @addChild AdsenseController, '.view__adsense'
@$name = @$('.name') @$name = @$('.name')
@$byline = @$('.byline p') @$byline = @$('.byline p')
@@ -84,6 +84,8 @@ module.exports = class ModPageController extends PageController
super super
refresh: -> refresh: ->
@adsenseController.fillAdPositions()
if @model?.isLoaded and @effectiveModVersion?.isLoaded if @model?.isLoaded and @effectiveModVersion?.isLoaded
@$byline.html "by #{@model.author}" @$byline.html "by #{@model.author}"
@$description.html @model.description @$description.html @model.description
@@ -5,4 +5,4 @@
//- All rights reserved. //- All rights reserved.
//- //-
.adsbygoogle.sidebar_skyscraper .view__adsense
+1 -1
View File
@@ -7,7 +7,7 @@
.view__configure_page .view__configure_page
.sidebar .sidebar
ins.view__adsense .view__adsense
.mainBody .mainBody
.view__mod_pack .view__mod_pack
+1 -1
View File
@@ -7,7 +7,7 @@
.view__home_page .view__home_page
.sidebar .sidebar
ins.view__adsense .view__adsense
.mainBody .mainBody
.section .section
+1 -1
View File
@@ -13,7 +13,7 @@
a.documentation.externalLink.hideable.hidden(target="new"): p Documentation a.documentation.externalLink.hideable.hidden(target="new"): p Documentation
a.download.externalLink.hideable.hidden(target="new"): p Download a.download.externalLink.hideable.hidden(target="new"): p Download
ins.view__adsense .view__adsense
.mainBody .mainBody
h1.name h1.name
+1 -1
View File
@@ -65,7 +65,7 @@ All rights reserved.
} }
.sidebar { .sidebar {
position: relative; width: 18.75%; position: relative; width: 18.75%; height: 100%;
display: inline-block; display: inline-block;
padding: 1em; padding: 1em;
+7 -12
View File
@@ -6,19 +6,14 @@ All rights reserved.
*/ */
.view__adsense { .view__adsense {
display: inline-block;
margin: 3em 0;
&:first-child { .sidebar_skyscraper {
margin-top: 0; position: relative; width: 160px; height: 600px;
} border: 0.1em solid $color-gray-faint;
margin: 3em 0;
&.sidebar_skyscraper { &:first-child {
position: relative; width: 160px !important; height: 600px !important; margin-top: 0;
} }
&.placeholder {
background: rgba(192, 192, 255, 0.5);
border: 0.1em solid $color-gray-medium;
} }
} }