merge
This commit is contained in:
commit
d4a82c8a08
3 changed files with 56 additions and 35 deletions
|
@ -7,6 +7,8 @@ from ox.django.decorators import login_required_json
|
|||
from ox.django.shortcuts import render_to_json_response, get_object_or_404_json, json_response
|
||||
|
||||
import models
|
||||
from item.models import Item
|
||||
|
||||
from api.actions import actions
|
||||
|
||||
|
||||
|
@ -38,8 +40,8 @@ def addAnnotation(request):
|
|||
param data {
|
||||
item: itemId,
|
||||
layer: layerId,
|
||||
start: float,
|
||||
end: float,
|
||||
in: float,
|
||||
out: float,
|
||||
value: string
|
||||
}
|
||||
return {'status': {'code': int, 'text': string},
|
||||
|
@ -49,19 +51,19 @@ def addAnnotation(request):
|
|||
}
|
||||
'''
|
||||
data = json.loads(request.POST['data'])
|
||||
for key in ('item', 'layer', 'start', 'end', 'value'):
|
||||
for key in ('item', 'layer', 'in', 'out', 'value'):
|
||||
if key not in data:
|
||||
return render_to_json_response(json_response(status=400,
|
||||
text='invalid data'))
|
||||
|
||||
item = get_object_or_404_json(models.Item, itemId=data['item'])
|
||||
layer = get_object_or_404_json(models.Layer, layerId=data['layer'])
|
||||
item = get_object_or_404_json(Item, itemId=data['item'])
|
||||
layer = get_object_or_404_json(models.Layer, name=data['layer'])
|
||||
|
||||
annotation = models.Annotation(
|
||||
item=item,
|
||||
layer=layer,
|
||||
user=request.user,
|
||||
start=float(data['start']), end=float(data['end']),
|
||||
start=float(data['in']), end=float(data['out']),
|
||||
value=data['value'])
|
||||
annotation.save()
|
||||
response = json_response()
|
||||
|
@ -94,8 +96,8 @@ def editAnnotation(request):
|
|||
'''
|
||||
param data {
|
||||
id:,
|
||||
start: float,
|
||||
end: float,
|
||||
in: float,
|
||||
out: float,
|
||||
value: string,
|
||||
}
|
||||
return {'status': {'code': int, 'text': string},
|
||||
|
@ -105,9 +107,12 @@ def editAnnotation(request):
|
|||
'''
|
||||
response = json_response({})
|
||||
data = json.loads(request.POST['data'])
|
||||
layer = get_object_or_404_json(models.Layer, pk=data['id'])
|
||||
if layer.editable(request.user):
|
||||
response = json_response(status=501, text='not implemented')
|
||||
a = get_object_or_404_json(models.Annotation, pk=data['id'])
|
||||
if a.editable(request.user):
|
||||
a.value = data['value']
|
||||
a.start = data['in']
|
||||
a.end = data['out']
|
||||
a.save()
|
||||
else:
|
||||
response = json_response(status=403, text='permission denied')
|
||||
return render_to_json_response(response)
|
||||
|
|
|
@ -209,9 +209,12 @@ class File(models.Model):
|
|||
return srt
|
||||
|
||||
srts = re.compile('(\d\d:\d\d:\d\d[,.]\d\d\d)\s*-->\s*(\d\d:\d\d:\d\d[,.]\d\d\d)\s*(.+?)\n\n', re.DOTALL)
|
||||
i = 0
|
||||
for s in srts.findall(data):
|
||||
_s = {'in': parseTime(s[0]), 'out': parseTime(s[1]), 'value': s[2].strip()}
|
||||
_s = {'id': str(i),
|
||||
'in': parseTime(s[0]), 'out': parseTime(s[1]), 'value': s[2].strip()}
|
||||
srt.append(_s)
|
||||
i += 1
|
||||
return srt
|
||||
|
||||
def editable(self, user):
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
// fixme: never set ui.videoPosition to 0 ... set to null a.k.a. delete
|
||||
// fixme: sort=-director doesn't work
|
||||
// fixme: don't reload full right panel on sortSelect
|
||||
// fixme: clear items cache after login/logout
|
||||
|
||||
(function() {
|
||||
|
||||
|
@ -1443,6 +1444,7 @@
|
|||
title: folder.title
|
||||
})
|
||||
.bindEvent({
|
||||
// fixme: duplicated
|
||||
click: function(event, data) {
|
||||
var $list = app.$ui.folderList[i],
|
||||
hasFocus, id;
|
||||
|
@ -1761,26 +1763,34 @@
|
|||
} : data);
|
||||
},
|
||||
enterfullscreen: enterFullscreen,
|
||||
exitfullscreen: exitFullscreen
|
||||
}))/*.bindEvent({
|
||||
exitfullscreen: exitFullscreen,
|
||||
resize: function(event, data) {
|
||||
app.$ui.player.options({
|
||||
height: data
|
||||
});
|
||||
app.$ui.player.options({
|
||||
height: data
|
||||
});
|
||||
}
|
||||
})*/;
|
||||
}));
|
||||
} else if (app.user.ui.itemView == 'timeline') {
|
||||
var video = result.data.item.stream,
|
||||
var layers = [],
|
||||
video = result.data.item.stream,
|
||||
cuts = result.data.item.cuts || {},
|
||||
subtitles = result.data.item.layers.subtitles || [{
|
||||
'in': 5,
|
||||
'out': 10,
|
||||
'value': 'This subtitle is just a test...'
|
||||
}],
|
||||
format = Ox.supportedVideoFormat(video.formats);
|
||||
format = Ox.supportedVideoFormat(video.formats),
|
||||
subtitles = result.data.item.layers.subtitles;
|
||||
video.height = video.profiles[0];
|
||||
video.width = parseInt(video.height * video.aspectRatio / 2) * 2;
|
||||
video.url = video.baseUrl + '/' + video.height + 'p.' + format;
|
||||
$.each(app.config.layers, function(i, layer) {
|
||||
layers[i] = $.extend({}, layer);
|
||||
if (result.data.item.layers[layer.id])
|
||||
layers[i]['items'] = result.data.item.layers[layer.id];
|
||||
else
|
||||
layers[i]['items'] = [{
|
||||
'in': 5,
|
||||
'out': 10,
|
||||
'value': 'This annotation is just a test...'
|
||||
}];
|
||||
|
||||
});
|
||||
app.$ui.contentPanel.replace(1, app.$ui.editor = new Ox.VideoEditor({
|
||||
annotationsSize: app.user.ui.annotationsSize,
|
||||
cuts: cuts,
|
||||
|
@ -1792,7 +1802,7 @@
|
|||
height: app.$ui.contentPanel.size(1),
|
||||
id: 'editor',
|
||||
largeTimeline: true,
|
||||
layers: app.config.layers,
|
||||
layers: layers,
|
||||
matches: [],
|
||||
points: [0, 0],
|
||||
position: app.user.ui.videoPosition[app.user.ui.item] || 0,
|
||||
|
@ -1806,16 +1816,19 @@
|
|||
videoURL: video.url,
|
||||
width: app.$ui.document.width() - app.$ui.mainPanel.size(0) - 1
|
||||
}).bindEvent({
|
||||
/*
|
||||
resize: function(event, data) {
|
||||
app.$ui.editor.options({
|
||||
width: data
|
||||
});
|
||||
},
|
||||
*/
|
||||
resize: function(event, data) {
|
||||
app.$ui.editor.options({
|
||||
height: data
|
||||
});
|
||||
},
|
||||
togglesize: function(event, data) {
|
||||
UI.set({videoSize: data.size});
|
||||
}
|
||||
},
|
||||
updateAnnotation: function(event, data) {
|
||||
//fixme: check that edit was successfull
|
||||
Ox.print('updateAnnotation', data);
|
||||
pandora.api.editAnnotation(data);
|
||||
}
|
||||
}));
|
||||
that.bindEvent('resize', function(event, data) {
|
||||
//Ox.print('resize item', data)
|
||||
|
@ -3367,7 +3380,7 @@
|
|||
|
||||
function resizeWindow() {
|
||||
resizeFolders();
|
||||
if (app.user.ui.item == '') {
|
||||
if (!app.user.ui.item) {
|
||||
app.$ui.list.size();
|
||||
resizeGroups(app.$ui.rightPanel.width());
|
||||
if (app.user.ui.listView == 'map') {
|
||||
|
|
Loading…
Reference in a new issue