From ad42a4cf870a76f9ccdf72de10760297e44c252c Mon Sep 17 00:00:00 2001 From: Chris Van Date: Wed, 18 Jan 2012 14:12:02 -0800 Subject: [PATCH] implement new year's promo banner (bug 715548) --- apps/discovery/modules.py | 27 +++++++++++++++--- media/css/impala/promos.less | 21 +++++++------- .../discovery_pane/promos/new-year.jpg | Bin 0 -> 32572 bytes media/js/impala/homepage.js | 1 + media/js/zamboni/discovery_pane.js | 2 ++ media/js/zamboni/global.js | 1 - media/js/zamboni/truncation.js | 16 +++++++++++ 7 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 media/img/zamboni/discovery_pane/promos/new-year.jpg diff --git a/apps/discovery/modules.py b/apps/discovery/modules.py index b3f8241c53..1b5a4fcfa1 100644 --- a/apps/discovery/modules.py +++ b/apps/discovery/modules.py @@ -91,15 +91,26 @@ class CollectionPromo(PromoModule): template = 'discovery/modules/collection.html' title = None subtitle = None + cls = 'promo' limit = 3 linkify_title = False def __init__(self, *args, **kw): super(CollectionPromo, self).__init__(*args, **kw) - try: - self.collection = Collection.objects.get(pk=self.pk) - except Collection.DoesNotExist: - self.collection = None + self.collection = None + if hasattr(self, 'pk'): + try: + self.collection = Collection.objects.get(pk=self.pk) + except Collection.DoesNotExist: + pass + elif (hasattr(self, 'collection_author') and + hasattr(self, 'collection_slug')): + try: + self.collection = Collection.objects.get( + author__username=self.collection_author, + slug=self.collection_slug) + except Collection.DoesNotExist: + pass def get_descriptions(self): return {} @@ -244,3 +255,11 @@ class PromoVideoCollection(): def get_items(self): items = Addon.objects.in_bulk(self.items) return [items[i] for i in self.items if i in items] + + +class NewYearCollection(CollectionPromo): + slug = 'New Year' + # TODO: Change to 'newyear_2012' when fligtar adds the collection to -dev. + collection_author, collection_slug = 'mozilla', 'webdeveloper' + id = 'new-year' + title = _(u'Add-ons to help you on your way in 2012') diff --git a/media/css/impala/promos.less b/media/css/impala/promos.less index 7a4fb6294f..83ce28c2d6 100644 --- a/media/css/impala/promos.less +++ b/media/css/impala/promos.less @@ -42,7 +42,7 @@ width: 38px; height: 38px; border: 2px solid #ccc; - font-family: Georgia; + font-family: @serif-stack; margin: auto; font-size: 44px; line-height: 30px; @@ -79,9 +79,6 @@ overflow: hidden; padding: 20px 10% 0 270px; background: url(../../img/zamboni/discovery_pane/promos/ryff-bg.png) no-repeat; - h2 { - white-space: nowrap; - } h3 { margin-bottom: 10px; a { @@ -120,7 +117,6 @@ } h2 { text-shadow: 0 1px 0 rgba(255,255,255,0.5); - white-space: nowrap; } hgroup { margin: 10px auto 20px; @@ -206,7 +202,6 @@ } #travel { - background: none; background-image: url(../../img/zamboni/discovery_pane/promos/travel-bg-left.png), url(../../img/zamboni/discovery_pane/promos/travel-bg-right.png), @@ -219,7 +214,6 @@ } #school { - background: none; background-image: url(../../img/zamboni/discovery_pane/promos/school-bg-left.png), url(../../img/zamboni/discovery_pane/promos/school-bg-right.png), @@ -231,6 +225,16 @@ } } +#promos #new-year { + background: url(../../img/zamboni/discovery_pane/promos/new-year.jpg) 50% 50% no-repeat; + h2 { + color: #ffc; + font-size: 28px; + margin: 30px 0; + text-shadow: 0 1px 0 rgba(0,0,0,.5); + } +} + .addons li { float: left; width: 30%; @@ -242,9 +246,6 @@ .addons li:nth-child(3n) { margin-right: 0; } -.html-rtl .addons li:nth-child(3n) { - margin-right: 0; -} .addons li > a, #monthly > div, diff --git a/media/img/zamboni/discovery_pane/promos/new-year.jpg b/media/img/zamboni/discovery_pane/promos/new-year.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2409f1ea75054104261f39b3953e781442cd51b GIT binary patch literal 32572 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 literal 0 HcmV?d00001 diff --git a/media/js/impala/homepage.js b/media/js/impala/homepage.js index f2636a3202..3b5d392658 100644 --- a/media/js/impala/homepage.js +++ b/media/js/impala/homepage.js @@ -37,6 +37,7 @@ function initPromos($context) { $('.addons .desc', $promos).truncate({dir: 'v'}); $('.install', $promos).installButton(); $('#monthly .blurb > p').lineclamp(4); + $('h2', $promos).linefit(); }); $('.toplist .name').truncate({showTitle: true}); } diff --git a/media/js/zamboni/discovery_pane.js b/media/js/zamboni/discovery_pane.js index 65e096f717..98c687ba00 100644 --- a/media/js/zamboni/discovery_pane.js +++ b/media/js/zamboni/discovery_pane.js @@ -62,9 +62,11 @@ function initTrunc() { $('.htruncate').truncate({dir: 'h'}); $('.vtruncate').truncate({dir: 'v'}); $('#monthly .blurb > p').lineclamp(4); + $('#promos h2').linefit(); $(window).resize(debounce(function() { $('.htruncate').truncate({dir: 'h'}); $('.vtruncate').truncate({dir: 'v'}); + $('#promos h2').linefit(); }, 200)); } diff --git a/media/js/zamboni/global.js b/media/js/zamboni/global.js index eaf4052f1d..428e181978 100644 --- a/media/js/zamboni/global.js +++ b/media/js/zamboni/global.js @@ -596,4 +596,3 @@ $.fn.objectUrl = function(offset) { } return url; }; - diff --git a/media/js/zamboni/truncation.js b/media/js/zamboni/truncation.js index 5dff270366..c953ce7786 100644 --- a/media/js/zamboni/truncation.js +++ b/media/js/zamboni/truncation.js @@ -82,3 +82,19 @@ $.fn.lineclamp = function(lines) { } }); }; +$.fn.linefit = function() { + // This function shrinks text to fit on one line. + var min_font_size = 7; + return this.each(function() { + var $this = $(this), + fs = parseFloat($this.css('font-size').replace('px', '')), + max_height = parseFloat($this.css('line-height').replace('px', '')), + height = $this.height(); + while (height > max_height && fs > min_font_size) { + // Repeatedly shrink the text by 0.5px until all the text fits. + fs -= .5; + $this.css('font-size', fs); + height = $this.height(); + } + }); +};