diff --git a/r2/r2/config/routing.py b/r2/r2/config/routing.py index 4e41341b0..ac5122f1b 100644 --- a/r2/r2/config/routing.py +++ b/r2/r2/config/routing.py @@ -244,7 +244,7 @@ def make_map(global_conf={}, app_conf={}): # Used for showing ads mc("/ads/", controller = "ad", action = "ad") - mc("/ads/r/:reddit_name", controller = "ad", action = "ad") + mc("/ads/r/:reddit_name/:keyword", controller = "ad", action = "ad", keyword=None) mc("/ads/:codename", controller = "ad", action = "ad_by_codename") mc("/try", controller = "forms", action = "try_compact") diff --git a/r2/r2/controllers/mediaembed.py b/r2/r2/controllers/mediaembed.py index cb147b8bb..6e181045a 100644 --- a/r2/r2/controllers/mediaembed.py +++ b/r2/r2/controllers/mediaembed.py @@ -66,9 +66,9 @@ class AdController(MinimalController): request.fullpath, random.choice(xrange(100))) - def GET_ad(self, reddit_name = None): + def GET_ad(self, reddit_name = None, keyword=None): c.render_style = "html" - return render_ad(reddit_name=reddit_name) + return render_ad(reddit_name=reddit_name, keyword=keyword) def GET_ad_by_codename(self, codename = None): if not codename: diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index 370d289ac..d6cbbf1a9 100644 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -824,6 +824,9 @@ class LinkInfoPage(Reddit): if hasattr(self.link, "shortlink"): self.shortlink = self.link.shortlink + if hasattr(self.link, "dart_keyword"): + c.custom_dart_keyword = self.link.dart_keyword + # if we're already looking at the 'duplicates' page, we can # avoid doing this lookup twice if duplicates is None: @@ -3470,12 +3473,13 @@ class RawString(Templated): return unsafe(self.s) class Dart_Ad(CachedTemplate): - def __init__(self, dartsite, tag): + def __init__(self, dartsite, tag, custom_keyword=None): tag = tag or "homepage" + keyword = custom_keyword or tag tracker_url = AdframeInfo.gen_url(fullname = "dart_" + tag, ip = request.ip) Templated.__init__(self, tag = tag, dartsite = dartsite, - tracker_url = tracker_url) + tracker_url = tracker_url, keyword=keyword) def render(self, *a, **kw): res = CachedTemplate.render(self, *a, **kw) @@ -3494,22 +3498,24 @@ class HouseAd(CachedTemplate): class ComScore(CachedTemplate): pass -def render_ad(reddit_name=None, codename=None): +def render_ad(reddit_name=None, codename=None, keyword=None): if not reddit_name: reddit_name = g.default_sr if g.frontpage_dart: - return Dart_Ad("reddit.dart", reddit_name).render() + return Dart_Ad("reddit.dart", reddit_name, keyword).render() try: sr = Subreddit._by_name(reddit_name) except NotFound: - return Dart_Ad("reddit.dart", g.default_sr).render() + return Dart_Ad("reddit.dart", g.default_sr, keyword).render() if sr.over_18: dartsite = "reddit.dart.nsfw" else: dartsite = "reddit.dart" + if keyword: + return Dart_Ad(dartsite, reddit_name, keyword).render() if codename: if codename == "DART": diff --git a/r2/r2/templates/ads.html b/r2/r2/templates/ads.html index e5c1a2744..ac1549918 100644 --- a/r2/r2/templates/ads.html +++ b/r2/r2/templates/ads.html @@ -25,7 +25,15 @@ import random %> -<% name = "r/%s/" % c.site.name if not c.default_sr else '' %> +<% + +name = '' +if c.custom_dart_keyword: + name = "r/%s/%s" % (c.site.name, c.custom_dart_keyword) +elif not c.default_sr: + name = "r/%s/" % c.site.name + +%>