add impala category landing placeholder

This commit is contained in:
Chris Van 2011-07-11 17:43:25 -07:00
Родитель 79df0a7ae1
Коммит fdd5a90854
8 изменённых файлов: 105 добавлений и 22 удалений

Просмотреть файл

@ -408,7 +408,7 @@ def attrs(ctx, *args, **kw):
def side_nav(context, addon_type):
app = context['request'].APP.id
return caching.cached(lambda: _side_nav(context, addon_type),
'side-nav-%s' % app)
'side-nav-%s-%s' % (app, addon_type))
def _side_nav(context, addon_type):

Просмотреть файл

@ -14,7 +14,7 @@
<h2>{{ _('Categories') }}</h2>
<ul>
{% for cat in categories %}
<li><a href="{{ cat.get_url_path() }}">{{ cat.name }}</a></li>
<li id="c-{{ cat.id }}"><a href="{{ cat.get_url_path() }}">{{ cat.name }}</a></li>
{% endfor %}
</ul>
</nav>

Просмотреть файл

@ -0,0 +1,47 @@
{% extends "impala/base.html" %}
{% block title %}
{{ page_title(category.name if category else _('Extensions')) }}
{% endblock %}
{% block extrahead %}
{% if category %}
<style>
#c-{{ category.id }} a {
background: #ecf5fe;
color: #333;
font-weight: bold;
}
#c-{{ category.id }} a:after {
color: inherit;
}
</style>
<link rel="canonical" href="{{ category.get_url_path() }}">
{% endif %}
{% endblock %}
{% block rss_feed %}
{% with sort = {'featured': 'featured',
'created': 'newest',
'popular': 'popular',
'rating': 'averagerating'}[sorting] %}
{% if not sort %}
{% set sort = 'updated' %}
{% endif %}
{% if category %}
{% set feed = url('browse.extensions.rss', category.slug) %}
{% else %}
{% set feed = url('browse.extensions.rss') %}
{% endif %}
<link rel="alternate" type="application/rss+xml" title="RSS"
href="{{ feed }}?sort={{ sort }}">
{% endwith %}
{% endblock %}
{% block content %}
<section class="secondary">
{{ side_nav(amo.ADDON_EXTENSION) }}
</section>
{% block primary %}{% endblock %}
{% endblock %}

Просмотреть файл

@ -0,0 +1,19 @@
{% extends "browse/impala/base_listing.html" %}
{% set addon_sets = filter.all() %}
{% set more_links = {
'created': _('View All Recently Added'),
'users': _('View All Most Popular'),
'rating': _('View All Top Rated'),
} %}
{% block bodyclass %}category-landing{% endblock %}
{% block primary %}
<section class="primary">
<div class="island c">
<h2>{{ category.name }}</h2>
</div>
</section>
{% endblock %}

Просмотреть файл

@ -1,13 +1,9 @@
{% extends "impala/base.html" %}
{% block content %}
<section class="secondary">
{{ side_nav(amo.ADDON_EXTENSION) }}
</section>
{% extends "browse/impala/base_listing.html" %}

{% block primary %}
<section class="primary">
<div class="island c">
<h2>{{ _('Extensions') }}</h2>
<h2>{{ category.name if category else _('Extensions') }}</h2>
</div>
</section>
{% endblock %}

Просмотреть файл

@ -1,7 +1,10 @@
from django.conf.urls.defaults import patterns, url
from browse.feeds import CategoriesRss, SearchToolsRss
from django.shortcuts import redirect
from amo.urlresolvers import reverse
from amo.utils import urlparams
from browse.feeds import CategoriesRss, FeaturedRss, SearchToolsRss
from . import views
from browse.feeds import FeaturedRss
urlpatterns = patterns('',
@ -9,6 +12,10 @@ urlpatterns = patterns('',
name='browse.language-tools'),
url('^featured$', views.featured, name='browse.featured'),
# TODO: When we launch the impala pages, add a redirect for this.
url('^i/featured$',
lambda r: redirect(reverse('browse.i_extensions') + '?sort=featured',
permanent=True)),
url('^themes/(?P<category>[^/]+)?$', views.themes,
name='browse.themes'),

Просмотреть файл

@ -144,7 +144,7 @@ def themes(request, category=None):
'search_cat': '%s,0' % amo.ADDON_THEME})
def _extensions(request, category=None, template=None):
def _extensions(request, category=None, is_impala=False, template=None):
TYPE = amo.ADDON_EXTENSION
if category is not None:
@ -153,7 +153,10 @@ def _extensions(request, category=None, template=None):
if ('sort' not in request.GET and not request.MOBILE
and category and category.count > 4):
return category_landing(request, category)
if is_impala:
return impala_category_landing(request, category)
else:
return category_landing(request, category)
addons, filter = addon_listing(request, [TYPE])
@ -169,12 +172,13 @@ def _extensions(request, category=None, template=None):
@mobile_template('browse/{mobile/}extensions.html')
def extensions(request, category=None, template=None):
return _extensions(request, category, template)
def extensions(request, category=None, is_impala=False, template=None):
return _extensions(request, category, is_impala, template)
def impala_extensions(request, category=None, template=None):
return _extensions(request, category, 'browse/impala/extensions.html')
def impala_extensions(request, category=None, is_impala=True, template=None):
return _extensions(request, category, is_impala,
'browse/impala/extensions.html')
@mobile_template('browse/{mobile/}extensions.html')
@ -227,16 +231,26 @@ class CategoryLandingFilter(BaseFilter):
return manual_order(filter, self.ids, pk_name='addons.id')
def category_landing(request, category):
def _category_landing(request, category,
template='browse/category_landing.html'):
base = (Addon.objects.listed(request.APP).exclude(type=amo.ADDON_PERSONA)
.filter(categories__id=category.id))
filter = CategoryLandingFilter(request, base, category,
key='browse', default='featured')
return jingo.render(request, 'browse/category_landing.html',
return jingo.render(request, template,
{'category': category, 'filter': filter,
'search_cat': '%s,0' % category.type})
def category_landing(request, category):
return _category_landing(request, category)
def impala_category_landing(request, category):
return _category_landing(request, category,
'browse/impala/category_landing.html')
def es_category_landing(request, category):
# TODO: Match CategoryLandingFilter.
qs = (Addon.search().filter(type=TYPE, app=request.APP.id,

Просмотреть файл

@ -91,6 +91,7 @@ a {
color: #333;
font-weight: bold;
}
a.selected,
a:hover {
background: #ECF5FE;
}
@ -111,7 +112,6 @@ a {
a:focus:after,
a.selected:after {
color: inherit;
display: inline;
}
}
h2 {
@ -215,4 +215,4 @@ a.more-info {
height: 32px;
width: 750px;
margin-bottom: 15px;
}
}