Skip to content

Commit

Permalink
Add ability to upload image handouts (#254)
Browse files Browse the repository at this point in the history
* Add ability to upload image handouts

* Extend handouts allowed file types list

* Refactor uploading file extension check, cover it with unittests
  • Loading branch information
wowkalucky authored Jul 13, 2017
1 parent b299d96 commit 13ff123
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* global parseRelativeTime validateTranscripts*/
/* global parseRelativeTime validateTranscripts getAllowedFileExtensions*/
/**
* Tests for transcripts manual upload
*/
Expand All @@ -21,7 +21,8 @@ describe('Transcripts manual upload', function() {
expect(parseRelativeTime(value)).toBe(tests[value]);
});
});
it('return getTranscriptUrl', function() {

it('returns getTranscriptUrl', function() {
var transcriptsArray = [
{
lang: 'en',
Expand All @@ -37,7 +38,7 @@ describe('Transcripts manual upload', function() {
expect(getTranscriptUrl(transcriptsArray)).toBe('');
});

it('return validateTranscripts', function() {
it('returns validateTranscripts', function() {
var $testTranscriptsBlock;
$('body').append('<ol id="test-transcript-block" class="list-settings language-transcript-selector">' +
'<li class="list-settings-item">' +
Expand All @@ -53,3 +54,22 @@ describe('Transcripts manual upload', function() {
expect(validateTranscripts($testTranscriptsBlock)).toBeTruthy();
});
});

describe('Correct file extensions are returned when', function() {
'use strict';
it('file is uploading in "transcripts" context', function() {
expect(getAllowedFileExtensions('transcripts')).toEqual('.srt, .vtt');
});

it('file is uploading in other then "transcripts" context', function() {
var handoutsAllowedFileTypes = (
'.gif, .ico, .jpg, .jpeg, .png, .tif, .tiff, .bmp, .svg, ' + // images
'.pdf, .txt, .rtf, .csv, ' + // documents
'.doc, .docx, .xls, .xlsx, .ppt, .pptx, .pub, ' + // MSOffice
'.odt, .ods, .odp, ' + // openOffice
'.zip, .7z, .gzip, .tar ' + // archives
'.html, .xml, .js, .sjson' // other
);
expect(getAllowedFileExtensions('somethings_else_or_null')).toEqual(handoutsAllowedFileTypes);
});
});
25 changes: 24 additions & 1 deletion video_xblock/static/js/studio-edit/transcripts-manual-upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,16 +234,39 @@ function createTranscriptBlock(langCode, langLabel, transcriptsValue, downloadTr
$('.add-transcript').removeClass('is-disabled');
}

/**
* Return string with allowed for uploading file extensions by given uploading context ('transcripts'/'handouts').
*/
function getAllowedFileExtensions(uploadingContext) {
'use strict';
var transcriptsAllowedFileExtensions = '.srt, .vtt';
var handoutsAllowedFileTypes = (
'.gif, .ico, .jpg, .jpeg, .png, .tif, .tiff, .bmp, .svg, ' + // images
'.pdf, .txt, .rtf, .csv, ' + // documents
'.doc, .docx, .xls, .xlsx, .ppt, .pptx, .pub, ' + // MSOffice
'.odt, .ods, .odp, ' + // openOffice
'.zip, .7z, .gzip, .tar ' + // archives
'.html, .xml, .js, .sjson' // other
);
switch (uploadingContext) {
case 'transcripts':
return transcriptsAllowedFileExtensions;
default:
return handoutsAllowedFileTypes;
}
}

/**
* Assign transcript's data to file uploader's attributes.
*/
function clickUploader(event, $fileUploader) {
'use strict';

var $buttonBlock = $(event.currentTarget);
var indexOfParentLi = $('.language-transcript-selector').children().index($buttonBlock.closest('li'));
var langCode = $buttonBlock.attr('data-lang-code');
var langLabel = $buttonBlock.attr('data-lang-label');
var fieldNameDetails = $buttonBlock.attr('data-change-field-name') === 'transcripts' ? '.srt, .vtt' : '';
var fieldNameDetails = getAllowedFileExtensions($buttonBlock.attr('data-change-field-name'));
var fieldName = $buttonBlock.attr('data-change-field-name');
var dataLiIndex = $buttonBlock.attr('data-change-field-name') === 'transcripts' ? indexOfParentLi : '';
event.preventDefault();
Expand Down

0 comments on commit 13ff123

Please sign in to comment.