Commit 4f107daf authored by Seb's avatar Seb
Browse files

Video chooser changes, got rid of dud files

parent 3471dc23
......@@ -30,9 +30,11 @@ In template
How to transcode using ffmpeg
//TODO
Future features
===============
- Richtext embed
- Streamfield block
- Transcoding via amazon service rather than ffmpeg
- Wagtail homescreen video count
......@@ -61,11 +61,6 @@ class VideoTranscodeAdminForm(forms.Form):
self.video.do_transcode(media_format)
class VideoInsertionForm(forms.Form):
pass
GroupImagePermissionFormSet = collection_member_permission_formset_factory(
Video,
[
......
function createVideoChooser(id) {
var chooserElement = $('#' + id + '-chooser');
var previewVideo = chooserElement.find('.preview-video img');
var previewVideo = chooserElement.find('.video-thumb img');
var input = $('#' + id);
var editLink = chooserElement.find('.edit-link');
......@@ -9,11 +9,10 @@ function createVideoChooser(id) {
url: window.chooserUrls.videoChooser,
responses: {
videoChosen: function(videoData) {
debugger;
input.val(videoData.id);
previewVideo.attr({
src: videoData.preview.url,
width: videoData.preview.width,
height: videoData.preview.height,
alt: videoData.title
});
chooserElement.removeClass('blank');
......
{% load wagtailimages_tags %}
{% load i18n %}
{% trans "Choose a video" as choose_str %}
{% include "wagtailadmin/shared/header.html" with title=choose_str merged=1 tabbed=1 icon="image" %}
{% include "wagtailadmin/shared/header.html" with title=choose_str merged=1 tabbed=1 icon="media" %}
{% if uploadform %}
<ul class="tab-nav merged">
......@@ -12,7 +12,7 @@
<div class="tab-content">
<section id="search" class="{% if not uploadform.errors %}active{% endif %} nice-padding">
<form class="image-search search-bar" action="{% url 'wagtailimages:chooser' %}{% if will_select_format %}?select_format=true{% endif %}" method="GET" autocomplete="off">
<form class="video-search search-bar" action="{% url 'wagtailvideos:chooser' %}" method="GET" autocomplete="off">
<ul class="fields">
{% for field in searchform %}
{% include "wagtailadmin/shared/field_as_li.html" with field=field %}
......@@ -24,7 +24,7 @@
<li class="taglist">
<h3>{% trans 'Popular tags' %}</h3>
{% for tag in popular_tags %}
<a class="suggested-tag tag" href="{% url 'wagtailimages:index' %}?tag={{ tag.name|urlencode }}">{{ tag.name }}</a>
<a class="suggested-tag tag" href="{% url 'wagtailvideos:index' %}?tag={{ tag.name|urlencode }}">{{ tag.name }}</a>
{% endfor %}
</li>
{% endif %}
......@@ -36,7 +36,7 @@
</section>
{% if uploadform %}
<section id="upload" class="{% if uploadform.errors %}active{% endif %} nice-padding">
<form class="image-upload" action="{% url 'wagtailimages:chooser_upload' %}{% if will_select_format %}?select_format=true{% endif %}" method="POST" enctype="multipart/form-data">
<form class="image-upload" action="{% url 'wagtailvideos:chooser_upload' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<ul class="fields">
{% for field in uploadform %}
......
{% load i18n %}
function(modal) {
var searchUrl = $('form.image-search', modal.body).attr('action');
var searchUrl = $('form.video-search', modal.body).attr('action');
/* currentTag stores the tag currently being filtered on, so that we can
preserve this when paginating */
......@@ -82,7 +82,7 @@ function(modal) {
return false;
});
$('form.image-search', modal.body).submit(search);
$('form.video-search', modal.body).submit(search);
$('#id_q').on('input', function() {
clearTimeout($.data(this, 'timer'));
......
{% load wagtailimages_tags %}
{% load i18n %}
{% trans "Choose a format" as choose_str %}
{% include "wagtailadmin/shared/header.html" with title=choose_str %}
<div class="row row-flush nice-padding">
<div class="col6">
{% image image max-800x600 %}
</div>
<div class="col6">
<form action="{% url 'wagtailimages:chooser_select_format' image.id %}" method="POST">
{% csrf_token %}
<ul class="fields">
{% for field in form %}
{% include "wagtailadmin/shared/field_as_li.html" with field=field %}
{% endfor %}
<li><input type="submit" value="{% trans 'Insert image' %}" /></li>
</ul>
</form>
</div>
</div>
function(modal) {
$('form', modal.body).submit(function() {
var formdata = new FormData(this);
$.post(this.action, $(this).serialize(), function(response){
modal.loadResponseText(response);
}, 'text');
return false;
});
}
{% load i18n wagtailadmin_tags %}
<li class="icon icon-image">
<a href="{% url 'wagtailimages:index' %}">
{% blocktrans count counter=total_images with total_images|intcomma as total %}
<span>{{ total }}</span> Image
{% plural %}
<span>{{ total }}</span> Images
{% endblocktrans %}
</a>
</li>
......@@ -9,13 +9,13 @@
<div class="row row-flush nice-padding">
<div class="col6">
{% video video controls %}
{% video video controls style=max-width:100% %}
</div>
<div class="col6">
<p>{% trans "Are you sure you want to delete this video?" %}</p>
<form action="{% url 'wagtailvideos:delete' video.id %}" method="POST">
{% csrf_token %}
<input type="submit" value="{% trans 'Yes, delete' %}" class="serious" />
<input type="submit" class='button serious' value="{% trans 'Yes, delete' %}" />
</form>
</div>
</div>
......
......@@ -65,11 +65,7 @@
<form action="{% url 'wagtailvideos:create_transcode' video.id %}" method="POST">
<ul class="fields">
{% csrf_token %}
<li>
<div class='input'>
{{ transcode_form.media_format }}
</div>
</li>
{% include "wagtailadmin/shared/field_as_li.html" with field=transcode_form.media_format %}
<li>
<input class="button" type='submit' value="Start" />
</li>
......
......@@ -19,7 +19,9 @@
{% for video in videos %}
<li>
<a class="image-choice" href="{% url 'wagtailvideos:edit' video.id %}">
{% include "wagtailvideos/videos/results_image.html" %}
<div class="image">
<img src='{{video.thumbnail.url}}' height=165 width=165 class="show-transparency" /></img>
</div>
<h3>{{ video.title|ellipsistrim:60 }}</h3>
</a>
</li>
......
{% comment %}
Separated out of results.html to prevent invalid images from crashing the entire
images listing. (issue #1805)
If an error is raised inside a template include, the error is caught by the
calling {% include %} tag and the contents blanked out.
This behaviour caused a confusing error on the images listing view where it
would go blank if one of the images was invalid.
Separating the image rendering code into this file allows us to limit Django's
crash/blanking behaviour to a single image so the listing can still be used when
the issue occurs.
{% endcomment %}
<div class="image"><img src='{{video.thumbnail.url}}' height=165 width=165 class="show-transparency" /></img></div>
{% extends "wagtailadmin/base.html" %}
{% load wagtailimages_tags staticfiles i18n %}
{% block titletag %}{% blocktrans with title=image.title %}Editing image {{ title }}{% endblocktrans %}{% endblock %}
{% block content %}
{% trans "Generating URL" as title_str %}
{% include "wagtailadmin/shared/header.html" with title=title_str subtitle=image.title icon="image" %}
<div class="image-url-generator nice-padding" data-generator-url="{% url 'wagtailimages:generate_url' image.id '__filterspec__' %}">
<form>
<ul class="fields">
{% include "wagtailadmin/shared/field_as_li.html" with field=form.filter_method %}
<li>
<ul class="field-row">
{% include "wagtailadmin/shared/field_as_li.html" with field=form.width li_classes="field-col col4" %}
{% include "wagtailadmin/shared/field_as_li.html" with field=form.height li_classes="field-col col4" %}
{% include "wagtailadmin/shared/field_as_li.html" with field=form.closeness li_classes="field-col col4" %}
</ul>
</li>
</ul>
</form>
<h2 class="icon icon-link">{% trans "URL" %}</h2>
<textarea id="result-url" rows="1"></textarea>
<h2 class="icon icon-view">{% trans "Preview" %}</h2>
<div>
<div class="loading-mask inline-block">
<img class="preview" src="" alt="Preview" />
</div>
</div>
<p id="note-size" class="help-block help-warning">{% trans "Note that images generated larger than the screen will appear smaller when previewed here, so they fit the screen." %}</p>
</div>
{% endblock %}
{% block extra_js %}
{{ block.super }}
<script src="{% static 'wagtailadmin/js/vendor/jquery.ba-throttle-debounce.min.js' %}"></script>
<script src="{% static 'wagtailimages/js/image-url-generator.js' %}"></script>
{% endblock %}
......@@ -4,11 +4,11 @@
{% block chooser_class %}image-chooser{% endblock %}
{% block chosen_state_view %}
<div class="preview-image">
<div class="video-thumb">
{% if video %}
<img src='{{video.thumbnail.url}}' width="165" height="165" class="show-transparency">
{% else %}
<img>
<img width="165" height="165" class="show-transparency">
{% endif %}
</div>
{% endblock %}
......
......@@ -18,5 +18,4 @@ urlpatterns = [
url(r'^chooser/$', chooser.chooser, name='chooser'),
url(r'^chooser/(\d+)/$', chooser.video_chosen, name='video_chosen'),
url(r'^chooser/upload/$', chooser.chooser_upload, name='chooser_upload'),
url(r'^chooser/(\d+)/select_format/$', chooser.chooser_select_format, name='chooser_select_format'),
]
......@@ -8,7 +8,7 @@ from wagtail.wagtailadmin.modal_workflow import render_modal_workflow
from wagtail.wagtailcore.models import Collection
from wagtail.wagtailsearch.backends import get_search_backends
from wagtailvideos.forms import VideoInsertionForm, get_video_form
from wagtailvideos.forms import get_video_form
from wagtailvideos.models import Video
......@@ -65,7 +65,6 @@ def chooser(request):
'videos': videos,
'is_searching': is_searching,
'query_string': q,
'will_select_format': request.GET.get('select_format')
})
else:
searchform = SearchForm()
......@@ -82,7 +81,6 @@ def chooser(request):
'searchform': searchform,
'is_searching': False,
'query_string': q,
'will_select_format': request.GET.get('select_format'),
'popular_tags': Video.popular_tags(),
'collections': collections,
})
......@@ -107,24 +105,21 @@ def chooser_upload(request):
form = VideoForm(request.POST, request.FILES, instance=video)
if form.is_valid():
form.save()
video.uploaded_by_user = request.user
video.file_size = video.file.size
video.save()
# Double save because the video file needs to *really* exists to generate thumbnail
video.thumbnail = video.get_thumbnail()
video.save(update_fields=['thumbnail'])
# Reindex the video to make sure all tags are indexed
for backend in get_search_backends():
backend.add(video)
if request.GET.get('select_format'):
form = VideoInsertionForm(initial={'alt_text': video.default_alt_text})
return render_modal_workflow(
request, 'wagtailvideos/chooser/select_format.html', 'wagtailvideos/chooser/select_format.js',
{'video': video, 'form': form}
)
else:
# not specifying a format; return the video details now
return render_modal_workflow(
request, None, 'wagtailvideos/chooser/videos_chosen.js',
{'video_json': get_video_json(video)}
)
print("RETURN!!!!")
return render_modal_workflow(
request, None, 'wagtailvideos/chooser/video_chosen.js',
{'video_json': get_video_json(video)}
)
else:
form = VideoForm()
......@@ -134,38 +129,3 @@ def chooser_upload(request):
request, 'wagtailvideos/chooser/chooser.html', 'wagtailvideos/chooser/chooser.js',
{'videos': videos, 'uploadform': form, 'searchform': searchform}
)
def chooser_select_format(request, video_id):
video = get_object_or_404(Video, id=video_id)
if request.POST:
form = VideoInsertionForm(request.POST, initial={'alt_text': video.default_alt_text})
if form.is_valid():
preview_video = video.get_rendition(format.filter_spec)
video_json = json.dumps({
'id': image.id,
'title': image.title,
'class': format.classnames,
'edit_link': reverse('wagtailvideos:edit', args=(video.id,)),
'preview': {
'url': preview_image.url,
'width': preview_image.width,
'height': preview_image.height,
},
'html': format.image_to_editor_html(image, form.cleaned_data['alt_text']),
})
return render_modal_workflow(
request, None, 'wagtailimages/chooser/image_chosen.js',
{'image_json': image_json}
)
else:
form = ImageInsertionForm(initial={'alt_text': image.default_alt_text})
return render_modal_workflow(
request, 'wagtailimages/chooser/select_format.html', 'wagtailimages/chooser/select_format.js',
{'image': image, 'form': form}
)
......@@ -133,6 +133,7 @@ def create_transcode(request, video_id):
transcode_form.save()
return redirect('wagtailvideos:edit', video_id)
@permission_checker.require('delete')
def delete(request, video_id):
video = get_object_or_404(Video, id=video_id)
......
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