Unverified Commit 60e9f104 authored by seb-b's avatar seb-b Committed by GitHub
Browse files

Merge pull request #53 from neon-jungle/tracks

Tracks
parents cc90aa21 71b14011
from wagtail.admin.edit_handlers import InlinePanel
from wagtailvideos.edit_handlers import VideoChooserPanel
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
from django.conf.urls import include, url from django.conf.urls import include, url
from django.templatetags.static import static
from django.urls import reverse from django.urls import reverse
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from wagtail.admin.menu import MenuItem from wagtail.admin.menu import Menu, MenuItem, SubmenuMenuItem
from wagtail.admin.search import SearchArea from wagtail.admin.search import SearchArea
from wagtail.admin.site_summary import SummaryItem from wagtail.admin.site_summary import SummaryItem
from wagtail.core import hooks from wagtail.core import hooks
from django.utils.html import format_html
from django.templatetags.static import static from wagtailvideos import get_video_model, urls, is_modeladmin_installed
from wagtailvideos import urls
from wagtailvideos.forms import GroupVideoPermissionFormSet from wagtailvideos.forms import GroupVideoPermissionFormSet
from wagtailvideos import get_video_model from wagtailvideos.models import TrackListing
from .permissions import permission_policy from .permissions import permission_policy
Video = get_video_model() Video = get_video_model()
class TracksAdmin(ModelAdmin):
model = TrackListing
menu_icon = 'openquote'
menu_label = 'Text tracks'
list_display = ('__str__', 'track_count')
def track_count(self, track_listing):
return track_listing.tracks.count()
track_count.short_description = 'No. tracks'
panels = [
VideoChooserPanel('video'),
InlinePanel('tracks', heading="Tracks")
]
if is_modeladmin_installed():
modeladmin_register(TracksAdmin)
@hooks.register('register_admin_urls') @hooks.register('register_admin_urls')
def register_admin_urls(): def register_admin_urls():
return [ return [
...@@ -41,14 +66,46 @@ def register_video_permissions_panel(): ...@@ -41,14 +66,46 @@ def register_video_permissions_panel():
return GroupVideoPermissionFormSet return GroupVideoPermissionFormSet
class VideoMenu(Menu):
# Dummy class
def __init__(self, *args, **kwargs):
pass
def menu_items_for_request(self, request):
return [
MenuItem(_('Manage videos'), reverse('wagtailvideos:index'),
name='videos', classnames='icon icon-media', order=100),
TracksAdmin().get_menu_item(),
]
def render_html(self, request):
menu_items = self.menu_items_for_request(request)
rendered_menu_items = []
for item in sorted(menu_items, key=lambda i: i.order):
rendered_menu_items.append(item.render_html(request))
return mark_safe(''.join(rendered_menu_items))
@hooks.register('register_admin_menu_item') @hooks.register('register_admin_menu_item')
def register_images_menu_item(): def register_images_menu_item():
if is_modeladmin_installed():
return SubmenuMenuItem(
_('Videos'), VideoMenu(),
name='videos', classnames='icon icon-media', order=300
)
else:
return MenuItem( return MenuItem(
_('Videos'), reverse('wagtailvideos:index'), _('Videos'), reverse('wagtailvideos:index'),
name='videos', classnames='icon icon-media', order=300 name='videos', classnames='icon icon-media', order=300
) )
@hooks.register('construct_main_menu')
def hide_track_listing_main(request, menu_items):
# Dumb but we need to remove the auto generated menu item because we add it to the video submenu
if is_modeladmin_installed():
menu_items[:] = [item for item in menu_items if item.name != 'text-tracks']
class VideoSummaryItem(SummaryItem): class VideoSummaryItem(SummaryItem):
order = 300 order = 300
...@@ -87,6 +144,7 @@ def register_media_search_area(): ...@@ -87,6 +144,7 @@ def register_media_search_area():
order=400, order=400,
) )
@hooks.register('insert_global_admin_css') @hooks.register('insert_global_admin_css')
def summary_css(): def summary_css():
return format_html('<link rel="stylesheet" href="{}">', static('wagtailvideos/css/summary-override.css')) return format_html('<link rel="stylesheet" href="{}">', static('wagtailvideos/css/summary-override.css'))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment