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 = {}
Adsense.clientId = 'ca-pub-6593013914878730'
Adsense.slotId = '7613920409'
Adsense.slotIds = ['7613920409', '9574673605', '3388539204']
# Minecraft must be first
exports.DefaultMods =
@@ -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 = $('<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 #####################################################################
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()
@@ -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
@@ -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
@@ -133,6 +133,7 @@ module.exports = class CraftPageController extends PageController
refresh: ->
@_refreshSectionVisibility()
@_refreshSteps()
@adsenseController.fillAdPositions()
super
# Backbone.View Overrides ########################################################################
@@ -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 ######################################################################
@@ -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
@@ -5,4 +5,4 @@
//- All rights reserved.
//-
.adsbygoogle.sidebar_skyscraper
.view__adsense
+1 -1
View File
@@ -7,7 +7,7 @@
.view__configure_page
.sidebar
ins.view__adsense
.view__adsense
.mainBody
.view__mod_pack
+1 -1
View File
@@ -7,7 +7,7 @@
.view__home_page
.sidebar
ins.view__adsense
.view__adsense
.mainBody
.section
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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;
+7 -12
View File
@@ -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;
}
}
}