Customizing Subs using Wtforms
[mediagoblin.git] / mediagoblin / templates / mediagoblin / user_pages / media.html
index dec443cd6b388e03ff22cb168ebf12bc0a99ca15..a9c71c8e1f1e17127bfb7102b121ca42f4a444e6 100644 (file)
@@ -1,6 +1,6 @@
 {#
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 MediaGoblin contributors.  See AUTHORS.
+# 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
@@ -15,7 +15,7 @@
 # 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/base.html" %}
+{%- extends "mediagoblin/base.html" %}
 
 {% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
 {% from "mediagoblin/utils/pagination.html" import render_pagination %}
 {% block mediagoblin_head %}
 <!--[if lte IE 8]><link rel="stylesheet"
     href="{{ request.staticdirect('/extlib/leaflet/leaflet.ie.css') }}" /><![endif]-->
+
+ <link rel="stylesheet" type="text/css" href="{{ request.staticdirect('/css/lightbox.css') }}">
   <script type="text/javascript"
           src="{{ request.staticdirect('/js/comment_show.js') }}"></script>
+  <script type="text/javascript"
+          src="{{ request.staticdirect('/js/keyboard_navigation.js') }}"></script>
+  <script type="text/javascript"
+          src="{{ request.staticdirect('/js/lightbox.js') }}"></script>
 
-  {% if app_config['geolocation_map_visible'] %}
-    <link rel="stylesheet"
-         href="{{ request.staticdirect('/extlib/leaflet/leaflet.css') }}" />
-
-    <script type="text/javascript"
-            src="{{ request.staticdirect('/extlib/leaflet/leaflet.js') }}"></script>
-    <script type="text/javascript"
-            src="{{ request.staticdirect('/js/geolocation-map.js') }}"></script>
-  {% endif %}
+  {% template_hook("location_head") %}
+  {% template_hook("media_head") %}
 {% endblock mediagoblin_head %}
-
 {% block mediagoblin_content %}
-  <div class="media_pane">
-    <div class="media_image_container">
-      {% block mediagoblin_media %}
+<div class="row foot">
+  <p class="eleven columns context">
+    {%- trans user_url=request.urlgen(
+              'mediagoblin.user_pages.user_home',
+              user=media.get_actor.username),
+              username=media.get_actor.username -%}
+    ❖ Browsing media by <a href="{{user_url}}">{{username}}</a>
+    {%- endtrans -%}
+  </p>
+  <div class="five columns">
+    {% include "mediagoblin/utils/prev_next.html" %}
+  </div>
+</div>
+  <div class="media_pane eleven columns">
+    {% block mediagoblin_media %}
+      <div class="media_image_container">
         {% set display_media = request.app.public_store.file_url(
-                 media.get_display_media(media.media_files)) %}
+                 media.get_display_media()[1]) %}
         {# if there's a medium file size, that means the medium size
          #  isn't the original... so link to the original!
          #}
         {% if media.media_files.has_key('medium') %}
           <a href="{{ request.app.public_store.file_url(
-                        media.media_files['original']) }}">
+                        media.media_files['original']) }}" class="lightbox">
             <img class="media_image"
                  src="{{ display_media }}"
-                 alt="Image for {{ media.title }}" />
+                 alt="{% trans media_title=media.title -%}
+                        Image for {{ media_title }}{% endtrans %}" />
           </a>
         {% else %}
           <img class="media_image"
                src="{{ display_media }}"
-               alt="Image for {{ media.title }}" />
+               alt="{% trans media_title=media.title -%}
+                      Image for {{ media_title }}{% endtrans %}" />
         {% endif %}
-      {% endblock %}
-    </div>
+      </div>
+    {% endblock %}
+    <div class="row head foot">
     <h2 class="media_title">
       {{ media.title }}
     </h2>
+    {% if request.user and
+          (media.actor == request.user.id or
+           request.user.has_privilege('admin')) %}
+    <div class="pull-right" style="padding-top:20px;">
+      {% set edit_url = request.urlgen('mediagoblin.edit.edit_media',
+                                 user= media.get_actor.username,
+                                 media_id=media.id) %}
+      <a class="button_action" href="{{ edit_url }}">{% trans %}Edit{% endtrans %}</a>
+      {% set delete_url = request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+                                 user= media.get_actor.username,
+                                 media_id=media.id) %}
+      <a class="button_action button_warning" href="{{ delete_url }}">{% trans %}Delete{% endtrans %}</a>
+      </div>
+    {% endif %}
     {% autoescape False %}
       <p>{{ media.description_html }}</p>
-    {% endautoescape %}       
-    <p class="media_specs">
-      {% trans date=media.created.strftime("%Y-%m-%d") -%}
-        Added on {{ date }}.
-      {%- endtrans %}
-      {% if request.user and
-            (media.uploader == request.user._id or 
-             request.user.is_admin) %}
-        {% set edit_url = request.urlgen('mediagoblin.edit.edit_media',
-                                   user= media.get_uploader.username,
-                                   media= media._id) %}
-        <a class="button_action" href="{{ edit_url }}">{% trans %}Edit{% endtrans %}</a>
-        {% set delete_url = request.urlgen('mediagoblin.user_pages.media_confirm_delete',
-                                   user= media.get_uploader.username,
-                                   media= media._id) %}
-        <a class="button_action" href="{{ delete_url }}">{% trans %}Delete{% endtrans %}</a>
+    {% endautoescape %}
+    </div>
+    {% if request.user and request.user.has_privilege('commenter') %}
+    <div class="media_comments">
+      {% if app_config['allow_comments'] %}
+        <a
+          {% if not request.user %}
+          href="{{ request.urlgen('mediagoblin.auth.login') }}?next={{
+                                                request.base_url|urlencode }}"
+          {% endif %}
+          class="button_action" id="button_addcomment" title="Add a comment">
+          {% trans %}Add a comment{% endtrans %}
+        </a>
+        {% include "mediagoblin/utils/comment-subscription.html" %}
+
       {% endif %}
-    </p>
-    {% if comments %}
-      <h3>
-        {% if comments.count()==1 %}
-          {% trans comment_count=comments.count() -%}{{ comment_count }} comment{%- endtrans %}
-        {% elif comments.count()>1 %}
-          {% trans comment_count=comments.count() -%}{{ comment_count }} comments{%- endtrans %}
-        {% else %}
-          {% trans %}No comments yet.{% endtrans %}
-        {% endif %}
-        <div class="right_align">
-          <a
-            {% if not request.user %}
-              href="{{ request.urlgen('mediagoblin.auth.login') }}"
-            {% endif %}
-            class="button_action" id="button_addcomment" title="Add a comment">
-            {% trans %}Add one{% endtrans %}
-          </a>
-        </div>
-      </h3>
       {% if request.user %}
-        <form action="{{ request.urlgen('mediagoblin.user_pages.media_post_comment', 
-                                         user= media.get_uploader.username,
-                                         media=media._id) }}" method="POST" id="form_comment">
-          <p>
-            {% trans %}You can use <a href="http://daringfireball.net/projects/markdown/basics">Markdown</a> for formatting.{% endtrans %}
-          </p>
+        <form action="{{ request.urlgen('mediagoblin.user_pages.media_post_comment',
+                                         user= media.get_actor.username,
+                                         media_id=media.id) }}" method="POST" id="form_comment">
           {{ wtforms_util.render_divs(comment_form) }}
           <div class="form_submit_buttons">
             <input type="submit" value="{% trans %}Add this comment{% endtrans %}" class="button_action" />
               {{ csrf_token }}
           </div>
+          <input type="hidden" value="{{ request.urlgen('mediagoblin.user_pages.media_preview_comment') }}" id="previewURL" />
+          <input type="hidden" value="{% trans %}Comment Preview{% endtrans %}" id="previewText"/>
         </form>
+       <div id="comment_preview"></div>
       {% endif %}
+      <ul style="list-style:none">
       {% for comment in comments %}
-        {% set comment_author = comment.get_author %}
-               {% if pagination.active_id == comment._id %}
-            <div class="comment_wrapper comment_active" id="comment-{{ comment._id }}">
-                         <a name="comment" id="comment"></a>
-          {% else %}
-            <div class="comment_wrapper" id="comment-{{ comment._id }}">
-               {% endif %}
-          <div class="comment_content">
-            {% autoescape False %}
-              {{ comment.content_html }}
-            {% endautoescape %}
+        {% set comment_object = comment.comment() %}
+        {% set comment_author = comment_object.get_actor %}
+        <li id="comment-{{ comment.id }}"
+          {%- if pagination.active_id == comment.id %}
+            class="comment_wrapper comment_active">
+            <a name="comment" id="comment"></a>
+          {%- else %}
+            class="comment_wrapper">
+          {%- endif %}
+          <div class="comment_author">
             <img src="{{ request.staticdirect('/images/icon_comment.png') }}" />
             <a href="{{ request.urlgen('mediagoblin.user_pages.user_home',
-                            user = comment_author.username) }}">
-              {{ comment_author.username }}
+                            user=comment_author.username) }}"
+               class="comment_authorlink">
+              {{- comment_author.username -}}
             </a>
-            {% trans %}at{% endtrans %}
             <a href="{{ request.urlgen('mediagoblin.user_pages.media_home.view_comment',
-                   comment = comment._id,
-                   user = media.get_uploader.username,
-                   media = media.slug_or_id) }}#comment">
-              {{ comment.created.strftime("%I:%M%p %Y-%m-%d") }}
-            </a>
+                            comment=comment.id,
+                            user=media.get_actor.username,
+                            media=media.slug_or_id) }}#comment"
+               class="comment_whenlink">
+              <span title='{{- comment_object.created.strftime("%I:%M%p %Y-%m-%d") -}}'>
+                {%- trans formatted_time=timesince(comment_object.created) -%}
+                  {{ formatted_time }} ago
+                {%- endtrans -%}
+              </span></a>:
+          </div>
+          <div class="comment_content">
+            {% autoescape False -%}
+              {{ comment_object.content_html }}
+            {%- endautoescape %}
+          </div>
+          <div>
+            {% if app_config.allow_reporting %}
+                <a href="{{ request.urlgen('mediagoblin.user_pages.media_home.report_comment',
+                            user=media.get_actor.username,
+                             media=media.slug_or_id,
+                             comment=comment.id) }}">
+                    {% trans %}Report{% endtrans %}</a>
+            {% endif %}
           </div>
-        </div>
+        </li>
       {% endfor %}
+      </ul>
       {{ render_pagination(request, pagination,
                  media.url_for_self(request.urlgen)) }}
+    {% else %}
+      <div class="empty_space no_background">
     {% endif %}
   </div>
-  <div class="media_sidebar">
-    {% trans user_url=request.urlgen(
-                'mediagoblin.user_pages.user_home',
-                user=media.get_uploader.username),
-                username=media.get_uploader.username -%}
-      <p>❖ Browsing media by <a href="{{ user_url }}">{{ username }}</a></p>
-    {%- endtrans %}  
-    {% include "mediagoblin/utils/prev_next.html" %}
-    {% if media.attachment_files|count %}
-      <h3>Attachments</h3>
+
+    </div>
+
+
+  <div class="five columns media_sidebar">
+    <h3>{% trans %}Added{% endtrans %}</h3>
+    <p><span title="{{ media.created.strftime("%I:%M%p %Y-%m-%d") }}">
+        {%- trans formatted_time=timesince(media.created) -%}
+          {{ formatted_time }} ago
+        {%- endtrans -%}
+    </span></p>
+
+    {% block mediagoblin_after_added_sidebar %}
+    {% endblock %}
+
+    {% if media.tags %}
+      {% include "mediagoblin/utils/tags.html" %}
+    {% endif %}
+
+    {% include "mediagoblin/utils/collections.html" %}
+
+    {% if app_config.allow_reporting %}
+      {% include "mediagoblin/utils/report.html" %}
+    {% endif %}
+
+    {% include "mediagoblin/utils/license.html" %}
+
+    {% include "mediagoblin/utils/exif.html" %}
+
+    {%- if media.attachment_files|count %}
+      <h3>{% trans %}Attachments{% endtrans %}</h3>
       <ul>
-        {% for attachment in media.attachment_files %}
+        {%- for attachment in media.attachment_files %}
           <li>
             <a href="{{ request.app.public_store.file_url(attachment.filepath) }}">
-              {{ attachment.name }}
+              {{- attachment.name -}}
             </a>
           </li>
-        {% endfor %}
+        {%- endfor %}
       </ul>
-    {% endif %}
-    {% if app_config['allow_attachments']
+    {%- endif %}
+    {%- if app_config['allow_attachments']
           and request.user
-          and (media.uploader == request.user._id
-               or request.user.is_admin) %}
+          and (media.actor == request.user.id
+               or request.user.has_privilege('admin')) %}
+      {%- if not media.attachment_files|count %}
+        <h3>{% trans %}Attachments{% endtrans %}</h3>
+      {%- endif %}
       <p>
         <a href="{{ request.urlgen('mediagoblin.edit.attachments',
-                      user=media.get_uploader.username,
-                      media=media._id) }}">Add attachment</a>
+                      user=media.get_actor.username,
+                      media_id=media.id) }}">
+          {%- trans %}Add attachment{% endtrans -%}
+        </a>
       </p>
-    {% endif %}
-    {% if media.tags %}
-      {% include "mediagoblin/utils/tags.html" %}
-    {% endif %}
+    {%- endif %}
+    {%- if media.subtitle_files|count %}
+      <h3>{% trans %}Subtitles{% endtrans %}</h3>
+      <ul>
+        {%- for subtitle in media.subtitle_files %}
+          <li>
+        <!--    <a href="{{ request.app.public_store.file_url(subtitle.filepath) }}"> -->
+              <a href="{{ request.urlgen('mediagoblin.edit.edit_subtitles',
+                          path=subtitle.filepath) }}">
+              {{- subtitle.name -}}
+      <!--      </a>  -->
+          </li>
+        {%- endfor %}
+      </ul>
+    {%- endif %}
+    {%- if app_config['allow_subtitles']
+          and request.user
+          and (media.actor == request.user.id
+               or request.user.has_privilege('admin')) %}
+      {%- if not media.subtitle_files|count %}
+        <h3>{% trans %}Subtitles{% endtrans %}</h3>
+      {%- endif %}
+      <p>
+        <a href="{{ request.urlgen('mediagoblin.edit.subtitles',
+                      user=media.get_actor.username,
+                      media_id=media.id) }}">
+          {%- trans %}Add subtitle{% endtrans -%}
+        </a>
+      </p>
+    {%- endif %}
 
-    {% include "mediagoblin/utils/license.html" %}
+    {% block mediagoblin_sidebar %}
+    {% endblock %}
 
-    {% include "mediagoblin/utils/geolocation_map.html" %}
+    {%- set model = media %}
+    {% template_hook("location_info") %}
+    {% template_hook("media_sideinfo") %}
 
-    {% include "mediagoblin/utils/exif.html" %}
-  </div>
+  </div><!--end media_sidebar-->
+
+  <div class="clear"></div>
 {% endblock %}