diff --git a/apps/addons/helpers.py b/apps/addons/helpers.py index 6e27214d19..f7aaafbce1 100644 --- a/apps/addons/helpers.py +++ b/apps/addons/helpers.py @@ -218,6 +218,24 @@ def persona_preview(context, persona, size='large', linked=True, extra=None, return c +@register.inclusion_tag('addons/mobile/persona_preview.html') +@jinja2.contextfunction +def mobile_persona_preview(context, persona): + addon = persona.addon + c = dict(context.items()) + c.update({'persona': persona, 'addon': addon}) + return c + + +@register.inclusion_tag('addons/mobile/persona_confirm.html') +@jinja2.contextfunction +def mobile_persona_confirm(context, persona, size='large'): + addon = persona.addon + c = dict(context.items()) + c.update({'persona': persona, 'addon': addon, 'size': size}) + return c + + @register.inclusion_tag('addons/persona_grid.html') @jinja2.contextfunction def persona_grid(context, addons): diff --git a/apps/addons/templates/addons/mobile/details.html b/apps/addons/templates/addons/mobile/details.html index 97698de5f6..d275a49496 100644 --- a/apps/addons/templates/addons/mobile/details.html +++ b/apps/addons/templates/addons/mobile/details.html @@ -40,18 +40,7 @@ {% endif %} - {% if addon.total_reviews %} - -
- {{ addon.average_rating|stars }} -
- {% trans num=addon.total_reviews, cnt=addon.total_reviews|numberfmt %} - See All Reviews - {% pluralize %} - See All {{ cnt }} Reviews - {% endtrans %} -
- {% endif %} + {{ mobile_reviews_link(addon) }}
diff --git a/apps/addons/templates/addons/mobile/home.html b/apps/addons/templates/addons/mobile/home.html index e50ed0b5be..f168d9476e 100644 --- a/apps/addons/templates/addons/mobile/home.html +++ b/apps/addons/templates/addons/mobile/home.html @@ -6,7 +6,7 @@
{% include "mobile/header.html" %}
- {{ _('You need Firefox to install addons. Learn More »') }} + {{ _('You need Firefox to install add-ons. Learn More »') }}

diff --git a/apps/addons/templates/addons/mobile/persona_confirm.html b/apps/addons/templates/addons/mobile/persona_confirm.html new file mode 100644 index 0000000000..d53b0d7e32 --- /dev/null +++ b/apps/addons/templates/addons/mobile/persona_confirm.html @@ -0,0 +1,13 @@ +
+ {% if size == 'large' %} + {{ _('Try it on!') }} + {% endif %} +
+ {{ mobile_install_button(addon, show_warning=False) }} + {{ _('Cancel') }} +
+ {% if size == 'small' %} + {{ _('Persona Info »') }} + {% endif %} +
diff --git a/apps/addons/templates/addons/mobile/persona_detail.html b/apps/addons/templates/addons/mobile/persona_detail.html index 398f571044..c7202e1575 100644 --- a/apps/addons/templates/addons/mobile/persona_detail.html +++ b/apps/addons/templates/addons/mobile/persona_detail.html @@ -1,18 +1,66 @@ {% extends "mobile/base.html" %} - {% block title %}{{ page_title(addon.name) }}{% endblock %} -{% block page %} -{% set persona = addon.persona %} +{% block back_link %} + + {{ _('« All Personas') }} +{% endblock %} -
- {{ persona_preview(addon.persona, size='small') }} - {# TODO: button #} +{% block page %} +{% set author = users_list(addon.listed_authors) or persona.display_username %} + +
+ {{ mobile_persona_preview(persona) }} +

{{ addon.name }}

+

{{ _('by') }} {{ author }}

+

{{ addon.summary|nl2br }}

+ {{ mobile_persona_confirm(persona) }}
-

- {% include "addons/persona_detail_table.html" %} -
+{{ mobile_reviews_link(addon) }} + +
+ + {% include "addons/mobile/persona_detail_table.html" %} +
+
+ +
+ {% cache author_personas %} + {% if author_personas %} +
+ +
+ {% endif %} + {% endcache %} + + {% cache category_personas %} + {% if category_personas %} +
+ +
+ {% endif %} + {% endcache %} +
{% endblock %} diff --git a/apps/addons/templates/addons/mobile/persona_detail_table.html b/apps/addons/templates/addons/mobile/persona_detail_table.html new file mode 100644 index 0000000000..b78f8c3312 --- /dev/null +++ b/apps/addons/templates/addons/mobile/persona_detail_table.html @@ -0,0 +1,26 @@ + + + {{ _('Artist') }} + {{ author }} + + + {{ _('Updated') }} + + + + + + {{ _('Daily Users') }} + + {{ + persona.popularity|numberfmt }} + + + {% if persona.license %} + + {{ _('License') }} + {{ license_link(persona.license) }} + + {% endif %} + diff --git a/apps/addons/templates/addons/mobile/persona_preview.html b/apps/addons/templates/addons/mobile/persona_preview.html new file mode 100644 index 0000000000..d9b93849f0 --- /dev/null +++ b/apps/addons/templates/addons/mobile/persona_preview.html @@ -0,0 +1,4 @@ +
+

+
diff --git a/apps/addons/tests/test_helpers.py b/apps/addons/tests/test_helpers.py index aed06d4e89..dea09e1fd5 100644 --- a/apps/addons/tests/test_helpers.py +++ b/apps/addons/tests/test_helpers.py @@ -5,13 +5,14 @@ from pyquery import PyQuery import amo from addons.helpers import (statusflags, flag, support_addon, contribution, - performance_note) + performance_note, mobile_persona_preview, + mobile_persona_confirm) from addons.models import Addon class TestHelpers(test_utils.TestCase): fixtures = ['base/apps', 'base/addon_3615', 'base/addon_4664_twitterbar', - 'addons/featured.json'] + 'addons/featured', 'addons/persona'] def setUp(self): # Addon._feature keeps an in-process cache we need to clear. @@ -95,6 +96,48 @@ class TestHelpers(test_utils.TestCase): doc = PyQuery(s) eq_(doc('input[name=source]').attr('value'), 'browse') + def test_mobile_persona_preview(self): + ctx = {'APP': amo.FIREFOX, 'LANG': 'en-US'} + persona = Addon.objects.get(pk=15663).persona + s = mobile_persona_preview(ctx, persona) + doc = PyQuery(s) + bt = doc('.persona-preview div[data-browsertheme]') + assert bt + assert persona.preview_url in bt.attr('style') + eq_(persona.json_data, bt.attr('data-browsertheme')) + assert bt.find('p') + + def _test_mobile_persona_ctx(self): + request = Mock() + request.APP = amo.FIREFOX + request.GET = {} + request.user.is_authenticated.return_value = False + request.amo_user.mobile_addons = [] + return {'APP': amo.FIREFOX, 'LANG': 'en-US', 'request': request} + + def test_mobile_persona_confirm_large(self): + persona = Addon.objects.get(id=15663).persona + s = mobile_persona_confirm(self._test_mobile_persona_ctx(), persona) + doc = PyQuery(s) + assert not doc('.persona-slider') + assert doc('.preview') + assert doc('.confirm-buttons .add') + assert doc('.confirm-buttons .cancel') + assert not doc('.more') + + def test_mobile_persona_confirm_small(self): + persona = Addon.objects.get(id=15663).persona + s = mobile_persona_confirm(self._test_mobile_persona_ctx(), persona, + size='small') + doc = PyQuery(s) + assert doc('.persona-slider') + assert not doc('.persona-slider .preview') + assert doc('.confirm-buttons .add') + assert doc('.confirm-buttons .cancel') + more = doc('.more') + assert more + eq_(more.attr('href'), persona.addon.get_url_path()) + class TestPerformanceNote(test_utils.TestCase): listing = '
' diff --git a/apps/addons/tests/test_views.py b/apps/addons/tests/test_views.py index 1dccad9f7b..1f4ce08f87 100644 --- a/apps/addons/tests/test_views.py +++ b/apps/addons/tests/test_views.py @@ -571,6 +571,12 @@ class TestDetailPage(test_utils.TestCase): assert '<script>alert("fff")</script>' in html assert '