Media Types/Display

From GNU MediaGoblin Wiki
Jump to navigation Jump to search

Media type display pages are media type-specific Jinja2 templates defined in the media type's MEDIA_MANAGER['display_template'].

Set the template path

The path for the media type display template is configured in the MEDIA_MANAGER object for each media type. The MEDIA_MANAGER is configured in (mediagoblin/)media_types/$MEDIA_TYPE/__init__.py.

  • The path to the template should be relative to the mediagoblin/templates/ directory.
  • The standard directory for media templates is mediagoblin/templates/mediagoblin/media_displays

This is an example of a MEDIA_MANAGER dict, see the display_template key.

MEDIA_MANAGER = {
    "human_readable": "Video",
    "processor": process_video,
    "sniff_handler": sniff_handler,
    "display_template": "mediagoblin/media_displays/video.html",
    "default_thumb": "images/media_thumbs/video.jpg",
    "accepted_extensions": [
        "mp4", "mov", "webm", "avi", "3gp", "3gpp", "mkv", "ogv", "m4v"]}

Create the template

The medie templates are Jinja2 templates that extend upon the mediagoblin/templates/mediagoblin/user_pages/media.html template. They contain media-type-specifig markup used to display the media.

This is an example of such a template.

{#
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#}

{% extends 'mediagoblin/user_pages/media.html' %}

{% block mediagoblin_head %}
  {{ super() }}
  <script type="text/javascript"
  	src="{{ request.staticdirect('/js/extlib/video-js/video.js') }}"></script>
  <link href="{{ request.staticdirect('/css/vjs-mg-skin.css') }}" rel="stylesheet">
{% endblock %}

{% block mediagoblin_media %}
  <div class="video-player" style="position: relative;">
    <video class="video-js vjs-mg-skin"
	   width="{{ media.media_data.width }}"
	   height="{{ media.media_data.height }}"
	   controls="controls"
	   preload="metadata"
	   data-setup="">
      <source src="{{ request.app.public_store.file_url(
		   media.media_files['webm_640']) }}" 
	      type="video/webm; codecs="vp8, vorbis"" />
	  <div class="no_html5">
	    {%- trans -%}Sorry, this video will not work because 
	    your web browser does not support HTML5 
	    video.{%- endtrans -%}<br/>
	    {%- trans -%}You can get a modern web browser that 
	    can play this video at <a href="http://getfirefox.com">
	    http://getfirefox.com</a>!{%- endtrans -%}
	  </div>
    </video>
  </div>
  {% if 'original' in media.media_files %}
  <p>
    <a href="{{ request.app.public_store.file_url(
	     media.media_files['original']) }}">
      {%- trans -%}
        Original
      {%- endtrans -%}
    </a>
  </p>
  {% endif %}
{% endblock %}