/* * rhwebimport * * Copyright (C) 2014-2016 Christian Pointner * Copyright (C) 2015-2016 Peter Grassberger * * This file is part of rhwebimport. * * rhwebimport 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 * any later version. * * rhwebimport 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 rhwebimport. If not, see . */ 'use strict'; var Rivendell = Rivendell || {}; Rivendell.Importer = function() { this.$el = $('#uploadModal'); }; Rivendell.Importer.prototype.resetModal = function() { $('div.modal-header h3', this.$el).text("Datei auswählen..."); $('.modal-body', this.$el).css("background-image", "url('/img/dz-backdrop.png')"); $('#uploadModal-confirm', this.$el).attr('disabled','disabled').off('click'); }; Rivendell.Importer.prototype.openModal = function(group, createCart, useMetadata) { this.resetModal(); if (createCart === undefined) { createCart = false; } if (useMetadata === undefined) { useMetadata = false; } var $form = $('
'); var self = this; $form.dropzone({ url: '/rd-bin/rdxport.cgi', parallelUploads: 1, maxFilesize: 2048, paramName: 'FILENAME', uploadMultiple: false, // todo: maybe enable this? clickable: true, createImageThumbnails: false, acceptedFiles: '.flac,.wav,.ogg,.mp3', autoProcessQueue: false, init: function() { this.on('addedfile', function(file) { self.importFileAdded(this, file, group, createCart, useMetadata); }); this.on('error', function(file, msg) { self.importFileSelectError(this, file, msg); }); } }); $('.modal-body', this.$el).empty().append($form); this.$el.modal({keyboard: true}); }; Rivendell.Importer.prototype.importFileAdded = function(dropzone, file, group, createCart, useMetadata) { // wtf? remove accepted files? /*$(dropzone.getAcceptedFiles()).each(function(index, elem) { dropzone.removeFile(elem); });*/ $('div.modal-body', this.$el).css("background-image", "url('/img/audio_file.png')"); $('div.modal-header h3', this.$el).text(file.name); var self = this; $('#uploadModal-confirm', this.$el).off('click').on('click', function() { self.importCartConfirm(dropzone, group, createCart, useMetadata); }).removeAttr('disabled'); }; Rivendell.Importer.prototype.importFileSelectError = function(dropzone, file, msg) { this.resetModal(); dropzone.removeFile(file); }; Rivendell.Importer.prototype.importCartConfirm = function(dropzone, group, createCart, useMetadata) { this.$el.modal('hide'); //var progressBar = group.addUpload(); //var cart_row = $('#show-cart-' + cart); //cart_row.find('.btn').attr('disabled','disabled'); //var importing_row = jingles_newImportingEntry(cart); //importing_row.find('button').unbind('click').click(function() { jingles_importCartCancel(cart, dropzone); }); //cart_row.replaceWith(importing_row); var files = dropzone.getAcceptedFiles(); //importing_row.find('.file-name').text(files[0].name); //jingles_importUpdateProgress(files[0], importing_row); var self = this; dropzone.on('uploadprogress', function(file) { self.uploadProgress(file); }); dropzone.on('success', function(file) { self.importFileUploadSuccess(dropzone, file, group); }); dropzone.off('error').on('error', function(file, msg, xhr) { self.importFileUploadError(this, file, msg, xhr); }); /*$(files).each(function(index, file) { self.importAddCut(dropzone, group, file); });*/ if (createCart) { rivendell.addCart(group.groupName, 'audio', null, function(cartXML) { var cart = new Rivendell.Cart(cartXML, group); self.importAddCut(dropzone, group, files[0], createCart, cart, useMetadata); }); } else { var cart = group.mainCart; self.importAddCut(dropzone, group, files[0], createCart, cart, useMetadata); } }; Rivendell.Importer.prototype.uploadProgress = function(file) { if (!file.cartNumber || !file.cutNumber) { return; } var $cut = $('#jingle-' + file.cartNumber + '-' + file.cutNumber).first(); if (!$cut.hasClass('uploading')) { var $progressBar = $('.progressBarTemplate').clone().removeClass('progressBarTemplate'); $cut.html($progressBar.html()); $cut.addClass('uploading'); } if(file.upload.progress < 99) { var bytes_str = Number((file.upload.bytesSent/1024)/1024).toFixed(1) + " von " + Number((file.upload.total/1024)/1024).toFixed(1) + " MB"; $cut.find('.file-bytes').text(bytes_str); $cut.find('.progress .bar').css("width", file.upload.progress + "%"); } else { $cut.find('.file-bytes').text('importiere...'); $cut.find('.progress .bar').css('width', '100%'); $cut.find('.progress').addClass('progress-striped').addClass('active'); } }; Rivendell.Importer.prototype.importFileUploadSuccess = function(dropzone, file, group) { //var command = { LOGIN_NAME: auth_username, PASSWORD: auth_token, DESCRIPTION: file. }; //jingles_updateGroupCartInfo(cart); dropzone.disable(); //progressBar.remove(); group.fetchCarts(); //$(this.currentGroup.mainCart).trigger('add'); }; Rivendell.Importer.prototype.importFileUploadError = function(dropzone, file, msg, xhr) { //var error_row = jingles_newImportErrorEntry(cart, msg); //error_row.find('button').unbind('click').click(function() { //jingles_deleteCart(cart); //}); //$('#show-cart-' + cart).replaceWith(error_row); //error_row.find('.file-name').text(file.name); dropzone.disable(); }; Rivendell.Importer.prototype.importAddCut = function(dropzone, group, file, createCart, cart, useMetadata) { rivendell.addAndEditCut(cart.number, {DESCRIPTION: file.name}, function(cutXml) { group.fetchCarts(); dropzone.on('sending', function(file, xhr, formData) { var cutNumber = $('cutNumber', cutXml).text(); var cutNumberLeading = cutNumber; switch (cutNumber.toString().length) { case 0: cutNumberLeading = '000' + cutNumber; break; case 1: cutNumberLeading = '00' + cutNumber; break; case 2: cutNumberLeading = '0' + cutNumber; break; case 3: default: cutNumberLeading = cutNumber; break; } file.cartNumber = cart.number; file.cutNumber = cutNumberLeading; formData.append('COMMAND', 2); formData.append('LOGIN_NAME', auth_username); formData.append('PASSWORD', auth_token); formData.append('CART_NUMBER', cart.number); formData.append('CUT_NUMBER', cutNumber); formData.append('CHANNELS', 2); formData.append('NORMALIZATION_LEVEL', cart.normlevel); formData.append('AUTOTRIM_LEVEL', cart.trimlevel); if (useMetadata) { formData.append('USE_METADATA', 1); } else { formData.append('USE_METADATA', 0); } }); dropzone.processQueue(); }).fail(function(xhr, status, err) { self.importFileUploadError(dropzone, file, err, xhr); if (createCart) { rivendell.removeCart(cart.number); } }); };