activity feed icons (bug 613039)

This commit is contained in:
Chris Van 2011-02-12 19:25:33 -05:00
Родитель 0db61e0a67
Коммит ad7bdf1ff7
7 изменённых файлов: 100 добавлений и 3 удалений

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

@ -12,6 +12,7 @@ class _LOG(object):
class CREATE_ADDON(_LOG):
id = 1
action_class = None
format = _(u'{addon} was created.')
keep = True
@ -19,28 +20,33 @@ class CREATE_ADDON(_LOG):
class EDIT_PROPERTIES(_LOG):
""" Expects: addon """
id = 2
action_class = 'edit'
format = _(u'{addon} properties edited.')
class EDIT_DESCRIPTIONS(_LOG):
id = 3
action_class = 'edit'
format = _(u'{addon} description edited.')
# TODO(gkoberger): Log this type
class EDIT_CATEGORIES(_LOG):
id = 4
action_class = 'edit'
format = _(u'Categories edited for {addon}.')
class ADD_USER_WITH_ROLE(_LOG):
id = 5
action_class = 'add'
format = _(u'{0.name} ({1}) added to {addon}.')
keep = True
class REMOVE_USER_WITH_ROLE(_LOG):
id = 6
action_class = 'delete'
# L10n: {0} is the user being removed, {1} is their role.
format = _(u'{0.name} ({1}) removed from {addon}.')
keep = True
@ -48,17 +54,20 @@ class REMOVE_USER_WITH_ROLE(_LOG):
class EDIT_CONTRIBUTIONS(_LOG):
id = 7
action_class = 'edit'
format = _(u'Contributions for {addon}.')
class USER_DISABLE(_LOG):
id = 8
action_class = None
format = _(u'{addon} set inactive.')
keep = True
class USER_ENABLE(_LOG):
id = 9
action_class = None
format = _(u'{addon} activated.')
keep = True
@ -66,6 +75,7 @@ class USER_ENABLE(_LOG):
# TODO(davedash): Log these types when pages are present
class SET_PUBLIC_STATS(_LOG):
id = 10
action_class = None
format = _(u'Stats set public for {addon}.')
keep = True
@ -73,6 +83,7 @@ class SET_PUBLIC_STATS(_LOG):
# TODO(davedash): Log these types when pages are present
class UNSET_PUBLIC_STATS(_LOG):
id = 11
action_class = None
format = _(u'{addon} stats set to private.')
keep = True
@ -80,6 +91,7 @@ class UNSET_PUBLIC_STATS(_LOG):
# TODO(gkoberger): Log these types when editing statuses
class CHANGE_STATUS(_LOG):
id = 12
action_class = None
# L10n: {0} is the status
format = _(u'{addon} status changed to {0}.')
keep = True
@ -88,34 +100,40 @@ class CHANGE_STATUS(_LOG):
# TODO(gkoberger): Do this in 604152
class ADD_PREVIEW(_LOG):
id = 13
action_class = 'add'
format = _(u'Preview added to {addon}.')
# TODO(gkoberger): Do this in 604152
class EDIT_PREVIEW(_LOG):
id = 14
action_class = 'edit'
format = _(u'Preview edited for {addon}.')
# TODO(gkoberger): Do this in 604152
class DELETE_PREVIEW(_LOG):
id = 15
action_class = 'delete'
format = _(u'Preview deleted from {addon}.')
class ADD_VERSION(_LOG):
id = 16
action_class = 'add'
format = _(u'{version} added to {addon}.')
keep = True
class EDIT_VERSION(_LOG):
id = 17
action_class = 'edit'
format = _(u'{version} edited for {addon}.')
class DELETE_VERSION(_LOG):
id = 18
action_class = 'delete'
# Note, {0} is a string not a version since the version is deleted.
# L10n: {0} is the version number
format = _(u'Version {0} deleted from {addon}.')
@ -124,6 +142,7 @@ class DELETE_VERSION(_LOG):
class ADD_FILE_TO_VERSION(_LOG):
id = 19
action_class = 'add'
format = _(u'File {0.name} added to {version} of {addon}.')
@ -134,11 +153,13 @@ class DELETE_FILE_FROM_VERSION(_LOG):
should be strings and not the object.
"""
id = 20
action_class = 'delete'
format = _(u'File {0} deleted from {version} of {addon}.')
class APPROVE_VERSION(_LOG):
id = 21
action_class = 'approve'
format = _(u'{addon} ({version}) approved.')
keep = True
review_queue = True
@ -146,6 +167,7 @@ class APPROVE_VERSION(_LOG):
class PRELIMINARY_VERSION(_LOG):
id = 42
action_class = None
format = _(u'{addon} ({version}) given preliminary review.')
keep = True
review_queue = True
@ -154,6 +176,7 @@ class PRELIMINARY_VERSION(_LOG):
class REJECT_VERSION(_LOG):
# takes add-on, version, reviewtype
id = 43
action_class = 'reject'
format = _(u'{addon} ({version}) rejected.')
keep = True
review_queue = True
@ -162,6 +185,7 @@ class REJECT_VERSION(_LOG):
class RETAIN_VERSION(_LOG):
# takes add-on, version, reviewtype
id = 22
action_class = None
format = _(u'{addon} ({version}) retained.')
keep = True
review_queue = True
@ -170,6 +194,7 @@ class RETAIN_VERSION(_LOG):
class ESCALATE_VERSION(_LOG):
# takes add-on, version, reviewtype
id = 23
action_class = None
format = _(u'Review escalated for {addon} ({version}).')
keep = True
review_queue = True
@ -178,6 +203,7 @@ class ESCALATE_VERSION(_LOG):
class REQUEST_VERSION(_LOG):
# takes add-on, version, reviewtype
id = 24
action_class = None
format = _(u'More information regarding {addon} {version} was requested.')
keep = True
review_queue = True
@ -185,56 +211,66 @@ class REQUEST_VERSION(_LOG):
class ADD_TAG(_LOG):
id = 25
action_class = 'tag'
format = _(u'{tag} added to {addon}.')
class REMOVE_TAG(_LOG):
id = 26
action_class = 'tag'
format = _(u'{tag} removed from {addon}.')
class ADD_TO_COLLECTION(_LOG):
id = 27
action_class = 'collection'
format = _(u'{addon} added to {collection}.')
class REMOVE_FROM_COLLECTION(_LOG):
id = 28
action_class = 'collection'
format = _(u'{addon} removed from {collection}.')
class ADD_REVIEW(_LOG):
id = 29
action_class = 'review'
format = _(u'{review} for {addon} written.')
# TODO(davedash): Add these when we do the admin site
class ADD_RECOMMENDED_CATEGORY(_LOG):
id = 31
action_class = 'edit'
# L10n: {0} is a category name.
format = _(u'{addon} featured in {0}.')
class REMOVE_RECOMMENDED_CATEGORY(_LOG):
id = 32
action_class = 'edit'
# L10n: {0} is a category name.
format = _(u'{addon} no longer featured in {0}.')
class ADD_RECOMMENDED(_LOG):
id = 33
action_class = None
format = _(u'{addon} is now featured.')
keep = True
class REMOVE_RECOMMENDED(_LOG):
id = 34
action_class = None
format = _(u'{addon} is no longer featured.')
keep = True
class ADD_APPVERSION(_LOG):
id = 35
action_class = 'add'
# L10n: {0} is the application, {1} is the version of the app
format = _(u'{0} {1} added.')
@ -242,6 +278,7 @@ class ADD_APPVERSION(_LOG):
class CHANGE_USER_WITH_ROLE(_LOG):
""" Expects: author.user, role, addon """
id = 36
action_class = None
# L10n: {0} is a user, {1} is their role
format = _(u'{0.name} role changed to {1} for {addon}.')
keep = True
@ -250,21 +287,25 @@ class CHANGE_USER_WITH_ROLE(_LOG):
class CHANGE_LICENSE(_LOG):
""" Expects: license, addon """
id = 37
action_class = 'edit'
format = _(u'{addon} is now licensed under {0.name}.')
class CHANGE_POLICY(_LOG):
id = 38
action_class = 'edit'
format = _(u'{addon} policy changed.')
class CHANGE_ICON(_LOG):
id = 39
action_class = 'edit'
format = _(u'{addon} icon changed.')
class APPROVE_REVIEW(_LOG):
id = 40
action_class = 'approve'
format = _(u'{review} for {addon} approved.')
editor_format = _(u'{user} approved {review} for {addon}.')
keep = True
@ -274,6 +315,7 @@ class APPROVE_REVIEW(_LOG):
class DELETE_REVIEW(_LOG):
"""Requires review.id and add-on objects."""
id = 41
action_class = 'review'
format = _(u'Review {0} for {addon} deleted.')
editor_format = _(u'{user} deleted review {0}.')
keep = True
@ -282,11 +324,13 @@ class DELETE_REVIEW(_LOG):
class CUSTOM_TEXT(_LOG):
id = 98
action_class = None
format = '{0}'
class CUSTOM_HTML(_LOG):
id = 99
action_class = None
format = '{0}'

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

@ -136,6 +136,14 @@ def status_class(addon):
return 'status-' + cls
@register.function
def log_action_class(action_id):
if action_id in amo.LOG_BY_ID:
cls = amo.LOG_BY_ID[action_id].action_class
if cls is not None:
return 'action-' + cls
@register.function
def summarize_validation(validation):
"""Readable summary of add-on validation results."""

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

@ -21,14 +21,18 @@
{% endif %}
</header>
<section class="primary" role="main">
<section id="recent-activity" class="primary" role="main">
<div class="listing results">
<div class="results-inner">
{% if pager.object_list %}
{% for item in pager.object_list %}
<div class="item">
<p>{{ item }}</p>
<img class="icon" width="32" height="32" src="{{ addon.icon_url }}">
<p>
<span class="action {{ log_action_class(item.action) }}"></span>
{{ item }}
</p>
<p class="timestamp">
{% trans user=item.user|user_link, ago=item.created|timesince,
iso=item.created|isotime,
pretty=item.created|babel_datetime %}

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

@ -127,6 +127,16 @@ def test_summarize_validation():
u'2 errors, 2 warnings')
def test_log_action_class():
v = Mock()
for k, v in amo.LOG_BY_ID.iteritems():
if v.action_class is not None:
cls = 'action-' + v.action_class
else:
cls = ''
eq_(render('{{ log_action_class(id) }}', {'id': v.id}), cls)
class TestDisplayUrl(unittest.TestCase):
def setUp(self):

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

@ -805,7 +805,7 @@ a.more-actions:after:hover {
}
h3 a.subscribe-feed {
background: url(../../img/zamboni/icons/feed-icons.png) no-repeat;
background: url(../../img/zamboni/icons/subscribe-icons.png) no-repeat;
display: inline-block;
line-height: 16px;
height: 16px;
@ -1246,6 +1246,37 @@ a.extra {
.secondary-feed .subscribe {
padding: 2px 0 0 24px;
}
#recent-activity .listing .item img.icon {
top: 1em;
}
#recent-activity .listing .item p {
padding-left: 7px;
}
.listing .item .action {
background: url(../../img/zamboni/icons/feed-icons.png) no-repeat;
display: block;
float: left;
margin-top: 3px;
height: 32px;
width: 23px;
}
.listing .item .action.action-review { background-position: 0 -32px; }
.listing .item .action.action-tag { background-position: 0 -64px; }
.listing .item .action.action-collection { background-position: 0 -96px; }
.listing .item .action.action-edit { background-position: 0 -128px; }
.listing .item .action.action-add { background-position: 0 -160px; }
.listing .item .action.action-delete { background-position: 0 -192px; }
.listing .item .action.action-approve { background-position: 0 -224px; }
.listing .item .action.action-reject { background-position: 0 -256px; }
#recent-activity .listing .item .timestamp {
color: #555;
font-size: 0.9em;
}
/* @end */
/* @group Header and main navigation bar */

Двоичные данные
media/img/zamboni/icons/feed-icons.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 844 B

После

Ширина:  |  Высота:  |  Размер: 1.7 KiB

Двоичные данные
media/img/zamboni/icons/subscribe-icons.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 844 B