mirror of
https://github.com/discourse/discourse-adplugin.git
synced 2025-07-07 13:52:12 +00:00
AdButler support (#80)
This commit is contained in:
parent
b500ea171f
commit
19f0457e8c
@ -19,6 +19,7 @@ This is the official Discourse advertising plugin. It allows advertisements to
|
|||||||
* [Amazon Affiliates](http://affiliate-program.amazon.com) - Banner and Product Link Ads
|
* [Amazon Affiliates](http://affiliate-program.amazon.com) - Banner and Product Link Ads
|
||||||
* [CodeFund](https://codefund.io) - Ethical Ad Platform for Developers
|
* [CodeFund](https://codefund.io) - Ethical Ad Platform for Developers
|
||||||
* [Carbon Ads](https://www.carbonads.net/)
|
* [Carbon Ads](https://www.carbonads.net/)
|
||||||
|
* [AdButler](https://www.adbutler.com/)
|
||||||
|
|
||||||
|
|
||||||
## Quick Start in 3 Steps
|
## Quick Start in 3 Steps
|
||||||
@ -81,6 +82,7 @@ the ad slots. The ads will start showing as soon as you add them to slots.
|
|||||||
<li>DFP - if using the DoubleClick for Publishers advertisement platform.</li>
|
<li>DFP - if using the DoubleClick for Publishers advertisement platform.</li>
|
||||||
<li>CodeFund - if using the CodeFund ethical advertisement platform.</li>
|
<li>CodeFund - if using the CodeFund ethical advertisement platform.</li>
|
||||||
<li>Carbon Ads - if using the Carbon Ads advertisement platform.</li>
|
<li>Carbon Ads - if using the Carbon Ads advertisement platform.</li>
|
||||||
|
<li>AdButler - if using the AdButler advertisement platform.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -113,6 +115,13 @@ Only for Product Link and Banner Ads.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
##### AdButler Ads Zone URL to Discourse's Site Settings
|
||||||
|
|
||||||
|
If you browse to a zone in the AdButler admin, then you can find the Publisher ID (PPPPPP) and the Zone ID (ZZZZZZ) in the URL:
|
||||||
|
|
||||||
|
`https://admin.adbutler.com/?ID=PPPPPP&p=textadzone.view&zoneID=ZZZZZZ`
|
||||||
|
|
||||||
|
|
||||||
### Step 3 - See Your Ad
|
### Step 3 - See Your Ad
|
||||||
|
|
||||||
Once you've configured your settings and your advertising platform has ads that are ready to serve, navigate to the page where you've inputted for the location and you should see ads.
|
Once you've configured your settings and your advertising platform has ads that are ready to serve, navigate to the page where you've inputted for the location and you should see ads.
|
||||||
|
@ -53,6 +53,23 @@ const adConfig = Ember.Object.create({
|
|||||||
"topic-above-post-stream": "carbonads_above_post_stream_enabled",
|
"topic-above-post-stream": "carbonads_above_post_stream_enabled",
|
||||||
"topic-above-suggested": false
|
"topic-above-suggested": false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"adbutler-ad": {
|
||||||
|
settingPrefix: "adbutler",
|
||||||
|
enabledSetting: "adbutler_publisher_id",
|
||||||
|
desktop: {
|
||||||
|
"topic-list-top": "adbutler_topic_list_top_zone_id",
|
||||||
|
"post-bottom": "adbutler_post_bottom_zone_id",
|
||||||
|
"topic-above-post-stream": "adbutler_topic_above_post_stream_zone_id",
|
||||||
|
"topic-above-suggested": "adbutler_topic_above_suggested_zone_id"
|
||||||
|
},
|
||||||
|
mobile: {
|
||||||
|
"topic-list-top": "adbutler_mobile_topic_list_top_zone_id",
|
||||||
|
"post-bottom": "adbutler_mobile_post_bottom_zone_id",
|
||||||
|
"topic-above-post-stream":
|
||||||
|
"adbutler_mobile_topic_above_post_stream_zone_id",
|
||||||
|
"topic-above-suggested": "adbutler_mobile_topic_above_suggested_zone_id"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
131
assets/javascripts/discourse/components/adbutler-ad.js.es6
Normal file
131
assets/javascripts/discourse/components/adbutler-ad.js.es6
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
import AdComponent from "discourse/plugins/discourse-adplugin/discourse/components/ad-component";
|
||||||
|
import { default as computed, observes } from "ember-addons/ember-computed-decorators";
|
||||||
|
import loadScript from "discourse/lib/load-script";
|
||||||
|
|
||||||
|
const publisherId = Discourse.SiteSettings.adbutler_publisher_id;
|
||||||
|
const adserverHostname = Discourse.SiteSettings.adbutler_adserver_hostname;
|
||||||
|
|
||||||
|
let _loaded = false,
|
||||||
|
_promise = null,
|
||||||
|
_c = 0;
|
||||||
|
|
||||||
|
function loadAdbutler() {
|
||||||
|
if (_loaded) {
|
||||||
|
return Ember.RSVP.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_promise) {
|
||||||
|
return _promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
_promise = loadScript('https://' + adserverHostname + '/app.js', { scriptTag: true }).then(function() {
|
||||||
|
_loaded = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
return _promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AdComponent.extend({
|
||||||
|
|
||||||
|
divs: null,
|
||||||
|
|
||||||
|
init() {
|
||||||
|
let dimensions = [728,90];
|
||||||
|
let configKey = 'adbutler_';
|
||||||
|
let className = 'adbutler-';
|
||||||
|
let dimClassName = 'adbutler-ad';
|
||||||
|
|
||||||
|
this.set('divs', []);
|
||||||
|
|
||||||
|
if (this.site.mobileView) {
|
||||||
|
dimensions = [320,50];
|
||||||
|
configKey += 'mobile_';
|
||||||
|
className += 'mobile-';
|
||||||
|
dimClassName = 'adbutler-mobile-ad';
|
||||||
|
}
|
||||||
|
|
||||||
|
configKey += this.get("placement").replace(/-/g, '_') + '_zone_id';
|
||||||
|
this.set("configKey", configKey);
|
||||||
|
|
||||||
|
className += this.get("placement");
|
||||||
|
this.set("className", className + ' ' + dimClassName);
|
||||||
|
|
||||||
|
let zoneId = this.siteSettings[configKey];
|
||||||
|
this.set("zoneId", zoneId);
|
||||||
|
|
||||||
|
let divId = 'placement-' + zoneId + '-' + _c;
|
||||||
|
this.set("divId", divId);
|
||||||
|
_c++;
|
||||||
|
this.divs.push({
|
||||||
|
divId: divId,
|
||||||
|
publisherId: publisherId,
|
||||||
|
zoneId: zoneId,
|
||||||
|
dimensions: dimensions
|
||||||
|
});
|
||||||
|
|
||||||
|
this.set("publisherId", publisherId);
|
||||||
|
this._super();
|
||||||
|
},
|
||||||
|
|
||||||
|
_triggerAds() {
|
||||||
|
loadAdbutler().then(function() {
|
||||||
|
if(this.divs.length > 0) {
|
||||||
|
let abkw = window.abkw || '';
|
||||||
|
AdButler.ads.push({
|
||||||
|
handler: function(opt){
|
||||||
|
AdButler.register(opt.place.publisherId, opt.place.zoneId, opt.place.dimensions, opt.place.divId, opt);
|
||||||
|
},
|
||||||
|
opt: { place: this.divs.pop(), keywords: abkw, domain: adserverHostname, click:'CLICK_MACRO_PLACEHOLDER' }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}.bind(this));
|
||||||
|
},
|
||||||
|
|
||||||
|
didInsertElement() {
|
||||||
|
this._super();
|
||||||
|
Ember.run.scheduleOnce("afterRender", this, this._triggerAds);
|
||||||
|
},
|
||||||
|
|
||||||
|
@observes("listLoading")
|
||||||
|
waitForLoad() {
|
||||||
|
if (this.get("adRequested")) {
|
||||||
|
return;
|
||||||
|
} // already requested that this ad unit be populated
|
||||||
|
if (!this.get("listLoading")) {
|
||||||
|
Ember.run.scheduleOnce("afterRender", this, this._triggerAds);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
@computed("currentUser.trust_level")
|
||||||
|
showToTrustLevel(trustLevel) {
|
||||||
|
return !(
|
||||||
|
trustLevel &&
|
||||||
|
trustLevel > Discourse.SiteSettings.adbutler_through_trust_level
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
@computed(
|
||||||
|
"showToTrustLevel",
|
||||||
|
"showToGroups",
|
||||||
|
"showAfterPost",
|
||||||
|
"showOnCurrentPage",
|
||||||
|
)
|
||||||
|
showAd(showToTrustLevel, showToGroups, showAfterPost, showOnCurrentPage) {
|
||||||
|
return (
|
||||||
|
publisherId &&
|
||||||
|
showToTrustLevel &&
|
||||||
|
showToGroups &&
|
||||||
|
showAfterPost &&
|
||||||
|
showOnCurrentPage
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
@computed("postNumber")
|
||||||
|
showAfterPost(postNumber) {
|
||||||
|
if (!postNumber) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return this.isNthPost(parseInt(this.siteSettings.adbutler_nth_post));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
@ -0,0 +1,3 @@
|
|||||||
|
{{#if showAd}}
|
||||||
|
<div id={{divId}} class={{className}}></div>
|
||||||
|
{{/if}}
|
@ -238,6 +238,30 @@
|
|||||||
color: $quaternary !important;
|
color: $quaternary !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.adbutler-ad {
|
||||||
|
width: 728px;
|
||||||
|
height: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adbutler-mobile-ad {
|
||||||
|
width: 320px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adbutler-topic-list-top, .adbutler-topic-above-suggested {
|
||||||
|
margin: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adbutler-topic-above-post-stream {
|
||||||
|
margin: 10px 0px 10px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adbutler-post-bottom {
|
||||||
|
margin: 10px 0px 10px 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.adplugin-mgmt {
|
.adplugin-mgmt {
|
||||||
.house-ads-actions {
|
.house-ads-actions {
|
||||||
.btn {
|
.btn {
|
||||||
|
@ -12,6 +12,7 @@ en:
|
|||||||
amazon_plugin: 'Amazon'
|
amazon_plugin: 'Amazon'
|
||||||
codefund_plugin: 'CodeFund'
|
codefund_plugin: 'CodeFund'
|
||||||
carbonads_plugin: 'Carbon Ads'
|
carbonads_plugin: 'Carbon Ads'
|
||||||
|
adbutler_plugin: 'AdButler'
|
||||||
adplugin:
|
adplugin:
|
||||||
house_ads:
|
house_ads:
|
||||||
title: "House Ads"
|
title: "House Ads"
|
||||||
|
@ -105,3 +105,16 @@ en:
|
|||||||
carbonads_through_trust_level: "Show your ads to users based on trust levels. Users with trust level higher than this value will not see ads."
|
carbonads_through_trust_level: "Show your ads to users based on trust levels. Users with trust level higher than this value will not see ads."
|
||||||
carbonads_topic_list_top_enabled: "Show an ad above the topic list"
|
carbonads_topic_list_top_enabled: "Show an ad above the topic list"
|
||||||
carbonads_above_post_stream_enabled: "Show an ad above the post stream"
|
carbonads_above_post_stream_enabled: "Show an ad above the post stream"
|
||||||
|
|
||||||
|
adbutler_publisher_id: "AdButler Publisher ID"
|
||||||
|
adbutler_mobile_topic_list_top_zone_id: "Zone ID for mobile topic list top location"
|
||||||
|
adbutler_mobile_topic_above_post_stream_zone_id: "Zone ID for mobile topic above post stream location"
|
||||||
|
adbutler_mobile_post_bottom_zone_id: "Zone ID for mobile post bottom location"
|
||||||
|
adbutler_mobile_topic_above_suggested_zone_id: "Zone ID for mobile topic above suggested location"
|
||||||
|
adbutler_topic_list_top_zone_id: "Zone ID for topic list top location"
|
||||||
|
adbutler_topic_above_post_stream_zone_id: "Zone ID for topic above post stream location"
|
||||||
|
adbutler_post_bottom_zone_id: "Zone ID for post bottom location"
|
||||||
|
adbutler_topic_above_suggested_zone_id: "Zone ID for topic above suggested location"
|
||||||
|
adbutler_nth_post: "Show an ad after every N posts, where N is this value"
|
||||||
|
adbutler_through_trust_level: "Show your ads to users based on trust levels. Users with trust level higher than this value will not see ads"
|
||||||
|
adbutler_adserver_hostname: "The hostname that AdButler is serving your ads from"
|
||||||
|
@ -430,3 +430,43 @@ carbonads_plugin:
|
|||||||
carbonads_above_post_stream_enabled:
|
carbonads_above_post_stream_enabled:
|
||||||
client: true
|
client: true
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
|
adbutler_plugin:
|
||||||
|
adbutler_publisher_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_through_trust_level:
|
||||||
|
client: true
|
||||||
|
default: 2
|
||||||
|
enum: "TrustLevelSetting"
|
||||||
|
adbutler_topic_list_top_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_mobile_topic_list_top_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_topic_above_post_stream_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_mobile_topic_above_post_stream_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_topic_above_suggested_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_mobile_topic_above_suggested_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_post_bottom_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_mobile_post_bottom_zone_id:
|
||||||
|
client: true
|
||||||
|
default: ""
|
||||||
|
adbutler_nth_post:
|
||||||
|
client: true
|
||||||
|
default: 4
|
||||||
|
min: 1
|
||||||
|
adbutler_adserver_hostname:
|
||||||
|
client: true
|
||||||
|
default: "servedbyadbutler.com"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user