max-width: 80ex;
}
}
+
+ul.channels-list {
+ span.count {
+ opacity: 0.5;
+ }
+}
--- /dev/null
+{% extends "earwig/manager_home.html" %}
+{% load i18n %}
+
+{% block appbar %}
+<h2>{{ object }}</h2>
+{% endblock %}
+
+{% block content %}
+
+<div class="description">{{ object.subtitle }}</div>
+
+<ul>
+ <li>{% trans "Address:" %} <a href="{{ object.channel_url }}">{{ object.channel_url }}</a></li>
+ <li>{% trans "Feed Address:" %} <a href="{{ object.feed_url }}">{{ object.feed_url }}</a></li>
+ <li>{% trans "Policy:" %}
+ {% if object.policy == '' %}{% trans "Moderate" %}
+ {% else %}{% trans "Autopublish" %}{% endif %}</li>
+ </li>
+</ul>
+
+<h3>{% trans "Sounds" %}</h3>
+{{ block.super }}
+{% endblock %}
{% endblock %}
{% block content %}
-<ul class="objects-list single-links">
+<ul class="objects-list single-links channels-list">
{% for channel in object_list %}
<li>
- <a class="external-link" href="{{ channel.channel_url }}">{{ channel.title }}</a>
+ <a href="{% url 'earwig-channel-detail' pk=channel.pk %}">{{ channel.title }}</a>
<a rel="popup" class="delete" href="{% url 'earwig-channel-delete' pk=channel.pk %}">{% trans "remove" %}</a>
</li>
{% endfor %}
<tbody>
{% for sound in object_list %}
<tr>
- <td><a class="external-link" href="{{ sound.channel.channel_url }}">{{ sound.channel.title }}</a></td>
+ <td><a href="{% url 'earwig-channel-detail' pk=sound.channel.pk %}">{{ sound.channel.title }}</a></td>
<td><a class="title" href="{% url 'earwig-sound-detail' pk=sound.pk %}">{{ sound.title }}</a>
{% if sound.description %}<span class="description">{{ sound.description|striptags|truncatewords:40|safe }}</span>{% endif %}
</td>
<td>{{ sound.creation_timestamp }}</td>
<td>
{% if sound.can_publish %}
- <a href="{% url 'earwig-sound-publish' pk=sound.pk %}?next=home">{% trans "Publish" %}</a> /
+ <a href="{% url 'earwig-sound-publish' pk=sound.pk %}?next={{next}}">{% trans "Publish" %}</a> /
{% endif %}
{% if sound.can_reject %}
- <a href="{% url 'earwig-sound-reject' pk=sound.pk %}?next=home">{% trans "Reject" %}</a> /
+ <a href="{% url 'earwig-sound-reject' pk=sound.pk %}?next={{next}}">{% trans "Reject" %}</a> /
{% endif %}
{% if sound.can_unpublish %}
- <a href="{% url 'earwig-sound-unpublish' pk=sound.pk %}">{% trans "Unpublish" %}</a>
+ <a href="{% url 'earwig-sound-unpublish' pk=sound.pk %}?next={{next}}">{% trans "Unpublish" %}</a>
{% endif %}
</tr>
{% empty %}
</span>
{% endblock %}
+{% block breadcrumb %}
+{{ block.super }}
+<a href="{% url 'earwig-channel-detail' pk=object.channel.pk %}">{{ object.channel }}</a>
+{% endblock %}
+
{% block content %}
<ul>
<li>{% trans "Address:" %} <a href="{{ object.page_url }}">{{ object.page_url }}</a></li>
url(r'^$', views.homepage, name='earwig-manager-homepage'),
url(r'^channels/$', views.channels, name='earwig-channels'),
url(r'^channels/add/$', views.channel_add, name='earwig-channel-add'),
+ url(r'^channels/(?P<pk>\d+)/$', views.channel_detail, name='earwig-channel-detail'),
url(r'^channels/(?P<pk>\d+)/delete/$', views.channel_delete, name='earwig-channel-delete'),
url(r'^sound/(?P<pk>\d+)/$', views.sound_detail, name='earwig-sound-detail'),
url(r'^sound/(?P<pk>\d+)/publish/$', views.sound_publish, name='earwig-sound-publish'),
def get_context_data(self, **kwargs):
context = super(Homepage, self).get_context_data(**kwargs)
context['statuses'] = STATUSES
+ context['next'] = reverse_lazy('earwig-manager-homepage')
return context
homepage = Homepage.as_view()
channels = Channels.as_view()
+class ChannelDetailView(DetailView):
+ model = Channel
+ template_name = 'earwig/manager_channel.html'
+
+ def get_sounds_queryset(self, **kwargs):
+ qs = self.get_object().sound_set.select_related()
+ if self.get_status_filter() != '_all':
+ qs = qs.filter(status=self.get_status_filter())
+ query = self.get_query_filter()
+ if query:
+ qs = qs.filter(Q(title__icontains=query) |
+ Q(description__icontains=query))
+ return qs
+
+ def get_query_filter(self):
+ return self.request.GET.get('q') or ''
+
+ def get_status_filter(self):
+ return self.request.GET.get('q_status') or '_all'
+
+ def get_context_data(self, **kwargs):
+ context = super(ChannelDetailView, self).get_context_data()
+ context['object_list'] = self.get_sounds_queryset()
+ context['next'] = reverse_lazy('earwig-channel-detail', kwargs={'pk': self.get_object().pk})
+ context['statuses'] = STATUSES
+ return context
+
+channel_detail = ChannelDetailView.as_view()
+
+
class ChannelAdd(CreateView):
model = Channel
fields = ('title', 'channel_url', 'feed_url', 'policy')
model = Sound
def get_success_url(self):
- if self.request.GET.get('next') == 'home':
- return reverse_lazy('earwig-manager-homepage')
+ if self.request.GET.get('next'):
+ return self.request.GET.get('next')
return reverse_lazy('earwig-sound-detail', kwargs={'pk': self.get_object().pk})