diff src/nabble/modules/ad/Javascript.jmp @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/modules/ad/Javascript.jmp	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,424 @@
+<%
+package nabble.modules.ad;
+
+import nabble.model.Init;
+
+
+final class Javascript {
+
+	public static String BANNER_IMG = Init.get("bannerImg", "ad_nabble.png");
+	public static String BANNER_URL = Init.get("bannerUrl", "https://www.nabble.com/");
+
+	public static volatile String hackAds = "";
+
+	static String text(Ad ad) {
+		boolean isSafe = ad.isSafe();
+		return %>
+
+		var _gaq = _gaq || [];
+
+		var isA;
+
+		(function() {
+			var ab = Nabble.getCookie("ab");
+			if( ab == null ) {
+				ab = Math.random() < 0.5 ? "a" : "b";
+				Nabble.setCookie("ab",ab);
+			}
+			isA = ab == "a";
+		})();
+
+		var isB = !isA;
+
+		Nabble.isSafe = <%=isSafe%>;
+		Nabble.adGroup = '<%= isSafe ? "SAFE" : "BAD" %>';
+
+		var lastDayWithoutAds = <%=ad.lastDayWithoutAds()%>;
+		var daysLeft = Math.round((lastDayWithoutAds - new Date().getTime()) / (24 * 60 * 60 * 1000));
+		Nabble.currentCredits = <%=ad.getCredits()%>;
+		Nabble.isPaid = <%=ad.isPaid()%>;
+		Nabble.creditsForUsersOnly = <%=ad.isCreditsForUsersOnly()%>;
+		Nabble.wasCreatedRecently = daysLeft > 0;
+		Nabble.removeAdsPath = '/template/NamlServlet.jtp?macro=site_payment';
+
+		Nabble.noAds = function(location) {
+			Nabble.noAds = function(location) {};
+			_gaq.push(['nabble._trackEvent', 'ad-type', 'NONE']);
+		};
+
+		Nabble.ads = function(location) {
+			if (Nabble.currentCredits > 0 && Nabble.creditsForUsersOnly && Nabble.userId)
+				return;
+			Nabble.fixAdGroup(location);
+			Ads[Nabble.adGroup](location);
+		};
+
+		Nabble.adbayes = function() {
+			window.Adbayes = window.Adbayes || { properties:{} };
+			Adbayes.properties['domain'] = window.location.hostname;
+			Adbayes.properties['adtype'] = Nabble.adGroup;
+
+			if (Nabble.wasCreatedRecently && Nabble.adGroup == 'SAFE')
+				Nabble.adGroup = "NEW";
+
+			if( Nabble.adGroup=='SAFE' && Adbayes.result != 'safe' )
+				Nabble.adGroup = 'UNSAFE';
+
+			if( Nabble.adGroup=='SAFE' )
+				_gaq.push(['nabble._setCustomVar', 1, 'Safe', 'x']);
+		};
+
+		Nabble.fixAdGroup = function(location) {
+			Nabble.fixAdGroup = function(location) {};
+
+			if (!window.Adbayes) {
+				Nabble.adGroup = "NEW";
+				_gaq.push(['nabble._trackEvent', 'ad-type', Nabble.adGroup]);
+				return;
+			}
+
+			switch(location) {
+				case 'app_bottom':
+					Adbayes.properties['page-type'] = 'forum';
+					break;
+				case 'first_classic_message':
+				case 'last_classic_message':
+					Adbayes.properties['page-type'] = 'classic-view';
+					break;
+				case 'list_bottom':
+					Adbayes.properties['page-type'] = 'list-view';
+					break;
+				case 'threaded_bottom':
+					Adbayes.properties['page-type'] = 'threaded-view';
+					break;
+				case 'blog_topic':
+					Adbayes.properties['page-type'] = 'blog-topic';
+					break;
+				case 'search_top':
+				case 'search_bottom':
+					Adbayes.properties['page-type'] = 'search';
+					break;
+				case 'widget':
+					Adbayes.properties['page-type'] = 'widget';
+					break;
+				default:
+					Adbayes.properties['page-type'] = 'unknown:' + location;
+					break;
+			}
+			Nabble.realTimeAnalytics();
+		};
+
+		Nabble.realTimeAnalytics = function() {
+			_gaq.push(['nabble._trackEvent', 'ad-type', Nabble.adGroup]);
+			if (Adbayes.properties['adtype'] == 'SAFE' && window.Adbayes.listeners) {
+				window.Adbayes.listeners.push(function() {
+					var page = Adbayes.properties['page-type'];
+					var status;
+					if (Adbayes.isNew) {
+						status = "new";
+					} else if (Adbayes.isCanonical) {
+						status = "canonical";
+					} else if(Adbayes.isOutdated) {
+						status = "outdated";
+					} else {
+						status = "set";
+					}
+					_gaq.push(['nabble._trackEvent', 'adbayes-status', page + ':' + status, Adbayes.result]);
+				});
+			}
+		};
+
+
+		var Ads = {};
+
+		Ads.styles = {
+			widget: { cls: '', style: '' },
+			blog_topic: { cls: 'shaded-bg-color rounded', style: 'padding:.5em;' },
+			first_classic_message: { cls: '', style: 'text-align:left;' },
+			last_classic_message: { cls: '', style: 'text-align:left;padding-top:1em;' },
+			list_bottom: { cls: '', style: 'margin-top:1.5em;' },
+			threaded_bottom: { cls: '', style: 'margin-top:1.5em;' },
+			search_top: { cls: '', style: 'text-align:left;margin:1em 0;padding:.5em 0;' },
+			search_bottom: { cls: '', style: 'text-align:left;padding:.5em 0;' },
+			app_bottom: { cls: '', style: 'margin:2.5em auto;text-align:center;' },
+			topic_bottom: { cls: '', style: '' }
+		};
+
+		Ads.NEW = function(location) {
+			switch(location) {
+			case 'blog_topic':
+			case 'first_classic_message':
+			case 'list_bottom':
+			case 'threaded_bottom':
+			case 'search_bottom':
+			case 'app_bottom':
+			}
+		};
+
+		Ads.NABBLE = function(location) {
+			switch(location) {
+			case 'blog_topic':
+			case 'first_classic_message':
+			case 'list_bottom':
+			case 'threaded_bottom':
+			case 'search_bottom':
+				Nabble.showAd( location, function() {
+					var imgName = '<%=BANNER_IMG%>';
+					var url = '<%=BANNER_URL%>';
+					_gaq.push(['nabble._trackEvent', 'banner', imgName]);
+					document.write('<a href="'+url+'" rel="nofollow" style="display:block !important;visibility:visible !important;height:auto !important; width: auto !important;position:static !important;top:auto !important;left:auto !important"><img src="http://static.nabble.com/images/'+imgName+'" style="border:1px solid #bbb;display:inline !important;visibility:visible !important;height:auto !important;width:auto !important"/></a>');
+				} );
+			}
+		};
+
+		Ads.AdSense = function(location) {
+			switch(location) {
+			case 'blog_topic':
+				Nabble.showAd( location, function() {
+					google_ad_slot = "8807592501";
+					google_ad_width = 728;
+					google_ad_height = 90;
+					Nabble._adsense();
+				} );
+				break;
+			case 'first_classic_message':
+				Nabble.showAd( location, function() {
+					var fn = function() {
+						google_ad_slot = "8703015991";
+						google_ad_width = 336;
+						google_ad_height = 280;
+						Nabble._adsense();
+					};
+					document.writeln('<div style="width:336px; float:left; clear:none; display:block !important;">');
+					Nabble.writeFn(fn);
+					document.writeln('</div>');
+					document.writeln('<div style="width:336px; float:left; clear:none; display:block !important;">');
+					Nabble.writeFn(fn);
+					document.writeln('</div>');
+				}, "width:675px !important;" );
+				break;
+			case 'last_classic_message':
+				Nabble.showAd( location, function() {
+					google_ad_slot = "8323336297";
+					google_ad_width = 728;
+					google_ad_height = 90;
+					Nabble._adsense();
+				} );
+				break;
+			case 'list_bottom':
+				Nabble.showAd( location, function() {
+					google_ad_slot = "6508328921";
+					google_ad_width = 728;
+					google_ad_height = 90;
+					Nabble._adsense();
+				} );
+				break;
+			case 'threaded_bottom':
+				Nabble.showAd( location, function() {
+					google_ad_slot = "8434893994";
+					google_ad_width = 728;
+					google_ad_height = 90;
+					Nabble._adsense();
+				} );
+				break;
+			case 'search_top':
+				Nabble.AdsenseSearchAds();
+				break;
+			case 'search_bottom':
+				Nabble.showAd( location, function() {
+					google_ad_slot = "0099567777";
+					google_ad_width = 728;
+					google_ad_height = 90;
+					google_ad_type = "image";
+					Nabble._adsense();
+				} );
+				break;
+			case 'app_bottom':
+				Nabble.showAd( location, function() {
+					var fn = function() {
+						google_ad_slot = "1057993213";
+						google_ad_width = 728;
+						google_ad_height = 90;
+						Nabble._adsense();
+					};
+					Nabble.writeFn(fn);
+				} );
+				break;
+			}
+		};
+
+		Ads.SAFE = function(location) {
+			Ads.AdSense(location);
+		};
+
+		Ads.ST = function(location) {
+			if (Nabble.currentCredits > 0 || Nabble.isPaid)
+				return;
+			window.has_st = true;
+		};
+
+		Ads.BAD = Ads.ST;
+		Ads.UNSAFE = Ads.ST;
+
+		Nabble.showAd = function(location,fn,style) {
+			var customStyle = Ads.styles[location].style + (style == null?'':style);
+			document.writeln('<div class="ad '+Ads.styles[location].cls+'" style="display:block !important;visibility:visible !important;height:auto !important; width: auto !important;position:static !important;top:auto !important;left:auto !important;'+customStyle+'">');
+			fn();
+			if (!Nabble.creditsForUsersOnly || Nabble.userId) {
+				document.writeln('<div style="padding-top:.3em;font-size:90%;clear:both"><a href="'+Nabble.removeAdsPath+'">'+Ads.text.removeAds+'</a></div>');
+				document.writeln('</div>');
+			}
+		};
+
+		Nabble.AdsenseSearchAds = function() {
+			if (nabble_search_query && nabble_search_query != '') {
+				(function(G,o,O,g,L,e){G[g]=G[g]||function(){(G[g]['q']=G[g]['q']||[]).push(
+				arguments)},G[g]['t']=1*new Date;L=o.createElement(O),e=o.getElementsByTagName(
+				O)[0];L.async=1;L.src='//www.google.com/adsense/search/async-ads.js';
+				e.parentNode.insertBefore(L,e)})(window,document,'script','_googCsa');
+
+				document.writeln('<div id="ad1" style="margin:0 0 1em -.3em"></div>');
+				var pageOptions = {
+					'pubId': 'pub-6703598369329977',
+					'query': nabble_search_query,
+					'hl': 'en'
+				};
+				var ad = Nabble._ad();
+				var bg = '#'+Nabble._bgcolor(ad);
+				var tc = '#'+Nabble._color('div.search-results-header','808080');
+				var lc = '#'+Nabble._linkColor(ad);
+				var adblock1 = {
+					'container': 'ad1',
+					'width': '100%',
+					'fontFamily': 'verdana',
+					'fontSizeTitle': 15,
+					'fontSizeDescription': 13,
+					'fontSizeDomainLink': 13,
+					'colorTitleLink': lc,
+					'colorText': tc,
+					'colorDomainLink': tc,
+					'colorBackground': bg,
+					'colorAdBorder': bg,
+					'colorBorder': bg
+				};
+				_googCsa('ads', pageOptions, adblock1);
+			}
+		};
+
+		Nabble.writeFn = function(fn) {
+			Nabble._fn = fn;
+			document.writeln('<script type="text/javascript">Nabble._fn()</script>');
+		};
+
+
+		Nabble._adwords = function() {
+			google_conversion_id = 975361083;
+			google_conversion_language = "en";
+			google_conversion_format = "3";
+			google_conversion_color = "ffffff";
+			google_conversion_label = "sfP9CM34nwgQu6iL0QM";
+			google_conversion_value = 10;
+			google_remarketing_only = false;
+			document.write('<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"></script>');
+		};
+
+		Nabble._adsense = function() {
+			var ad = Nabble._ad();
+			if( google_ad_width==728 && Nabble._narrowUnit(ad,728) ) {
+				google_ad_slot = "1143776366";
+				google_ad_width = 468;
+				google_ad_height = 60;
+			}
+			var bg = Nabble._bgcolor(ad);
+			google_color_border = bg;
+			google_color_bg = bg;
+			google_color_text = "808080";
+			google_color_url = "808080";
+			google_color_link = Nabble._linkColor(ad);
+			google_ad_client = "ca-pub-6703598369329977";
+			document.write('<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>');
+			var __ad = 'div'+ad.getAttribute('id').substring(2);
+			$(ad).parent().addClass(__ad);
+ 			document.write('<style type="text/css">');
+ 			document.write('.nabble .' + __ad + ' ins { display:inline-table !important; visibility: visible !important; height:' + google_ad_height + 'px !important; width: ' + google_ad_width + 'px !important; position:static !important;top:auto !important;left:auto !important; }');
+ 			document.write('.nabble .' + __ad + ' ins ins iframe { display:block !important; visibility: visible !important; height:' + google_ad_height + 'px !important; width: ' + google_ad_width + 'px !important; position:static !important;top:auto !important;left:auto !important; }');
+ 			document.write('</style>');
+		};
+
+		Nabble._ad = function() {
+			var ad = "ad" + Math.round(Math.random() * 999999);
+			document.writeln('<a id="'+ad+'" href="#" style="display:none">.</a>');
+			return Nabble.get(ad);
+		};
+
+		Nabble._bgcolor = function(ad) {
+			var $elem = $(ad);
+			var $parent = $elem;
+			var bg;
+			while ($parent.size() > 0) {
+				try {
+					bg = $parent.css('background-color');
+				} catch(err) {
+					$elem.addClass('shaded-bg-color');
+					bg = $elem.css('background-color');
+					break;
+				}
+				if (bg != 'transparent' && bg.indexOf('rgba') != 0)
+					break;
+				$parent = $parent.parent();
+			}
+			if (bg.charAt(0) == '#')
+				return bg.substring(1);
+			else if (bg.indexOf('rgb') == 0) {
+				bg = bg.substring(4, bg.length-1);
+				var rgb = bg.split(',');
+				return Nabble._hexa(rgb[0]) + Nabble._hexa(rgb[1]) + Nabble._hexa(rgb[2]);
+			}
+			return bg;
+		};
+
+		Nabble._linkColor = function(ad) {
+			var c = $(ad).css('color');
+			if (c.charAt(0) == '#')
+				return c.substring(1);
+			else if (c.indexOf('rgb') == 0) {
+				c = c.substring(4, c.length-1);
+				var rgb = c.split(',');
+				return Nabble._hexa(rgb[0]) + Nabble._hexa(rgb[1]) + Nabble._hexa(rgb[2]);
+			}
+			return 'EEEEEE';
+		};
+
+		Nabble._color = function(sel,def) {
+			var c = $(sel).css('color');
+			if (c.charAt(0) == '#')
+				return c.substring(1);
+			else if (c.indexOf('rgb') == 0) {
+				c = c.substring(4, c.length-1);
+				var rgb = c.split(',');
+				return Nabble._hexa(rgb[0]) + Nabble._hexa(rgb[1]) + Nabble._hexa(rgb[2]);
+			}
+			return def;
+		};
+
+		Nabble._hexa = function(c) {
+			var n = parseInt(c).toString(16);
+			return n.length == 1? '0' + n : n;
+		};
+
+		Nabble._narrowUnit = function(ad,limit) {
+			return $(ad).parent().width() < limit;
+		};
+
+
+		var b = function() {};
+
+		<%=hackAds%>
+
+		if(isB) b();
+		<%;
+	}
+
+	private Javascript() {}  // never
+}
+%>