From c02955d0254679ead8a515cf516cf985df8af8b6 Mon Sep 17 00:00:00 2001 From: muhammad-ammar Date: Thu, 12 Apr 2018 17:35:02 +0500 Subject: [PATCH] add check transcript ajax for edx_video_id --- .../contentstore/views/transcripts_ajax.py | 6 +- cms/static/cms/js/spec/main.js | 2 +- cms/static/cms/js/spec/main_squire.js | 5 + .../js/spec/video/transcripts/editor_spec.js | 105 +++++- .../spec/video/transcripts/videolist_spec.js | 325 ++++++++++-------- .../js/spec/views/metadata_edit_spec.js | 50 ++- .../js/spec/views/modals/edit_xblock_spec.js | 10 +- cms/static/js/views/metadata.js | 38 +- cms/static/js/views/modals/edit_xblock.js | 9 +- .../js/views/video/transcripts/editor.js | 47 ++- .../video/transcripts/metadata_videolist.js | 74 ++-- .../xmodule/video_module/video_module.py | 6 + 12 files changed, 468 insertions(+), 209 deletions(-) diff --git a/cms/djangoapps/contentstore/views/transcripts_ajax.py b/cms/djangoapps/contentstore/views/transcripts_ajax.py index e5501d46e2..ae1c856231 100644 --- a/cms/djangoapps/contentstore/views/transcripts_ajax.py +++ b/cms/djangoapps/contentstore/views/transcripts_ajax.py @@ -310,7 +310,8 @@ def check_transcripts(request): transcripts_presence['status'] = 'Success' try: - get_transcript_from_val(edx_video_id=item.edx_video_id, lang=u'en') + edx_video_id = clean_video_id(videos.get('edx_video_id')) + get_transcript_from_val(edx_video_id=edx_video_id, lang=u'en') command = 'found' except NotFoundError: filename = 'subs_{0}.srt.sjson'.format(item.sub) @@ -465,6 +466,9 @@ def _validate_transcripts_data(request): for video_data in data.get('videos'): if video_data['type'] == 'youtube': videos['youtube'] = video_data['video'] + elif video_data['type'] == 'edx_video_id': + if clean_video_id(video_data['video']): + videos['edx_video_id'] = video_data['video'] else: # do not add same html5 videos if videos['html5'].get('video') != video_data['video']: videos['html5'][video_data['video']] = video_data['mode'] diff --git a/cms/static/cms/js/spec/main.js b/cms/static/cms/js/spec/main.js index 1b3344f8d7..eb0d03c706 100644 --- a/cms/static/cms/js/spec/main.js +++ b/cms/static/cms/js/spec/main.js @@ -242,10 +242,10 @@ 'js/spec/views/metadata_edit_spec', 'js/spec/views/textbook_spec', 'js/spec/views/upload_spec', + 'js/spec/video/transcripts/message_manager_spec', 'js/spec/video/transcripts/utils_spec', 'js/spec/video/transcripts/editor_spec', 'js/spec/video/transcripts/videolist_spec', - 'js/spec/video/transcripts/message_manager_spec', 'js/spec/video/transcripts/file_uploader_spec', 'js/spec/models/component_template_spec', 'js/spec/models/explicit_url_spec', diff --git a/cms/static/cms/js/spec/main_squire.js b/cms/static/cms/js/spec/main_squire.js index 3ae2b2bf32..936aa39055 100644 --- a/cms/static/cms/js/spec/main_squire.js +++ b/cms/static/cms/js/spec/main_squire.js @@ -28,6 +28,7 @@ 'jquery.iframe-transport': 'xmodule_js/common_static/js/vendor/jQuery-File-Upload/js/jquery.iframe-transport', // eslint-disable-line max-len 'jquery.inputnumber': 'xmodule_js/common_static/js/vendor/html5-input-polyfills/number-polyfill', 'jquery.immediateDescendents': 'xmodule_js/common_static/js/src/jquery.immediateDescendents', + 'jquery.ajaxQueue': 'xmodule_js/common_static/js/vendor/jquery.ajaxQueue', 'datepair': 'xmodule_js/common_static/js/vendor/timepicker/datepair', 'date': 'xmodule_js/common_static/js/vendor/date', 'text': 'xmodule_js/common_static/js/vendor/requirejs/text', @@ -108,6 +109,10 @@ deps: ['jquery', 'tinymce'], exports: 'jQuery.fn.tinymce' }, + 'jquery.ajaxQueue': { + deps: ['jquery'], + exports: 'jQuery.fn.ajaxQueue' + }, 'datepair': { deps: ['jquery.ui', 'jquery.timepicker'] }, diff --git a/cms/static/js/spec/video/transcripts/editor_spec.js b/cms/static/js/spec/video/transcripts/editor_spec.js index 4d9fefbdaf..71536f3792 100644 --- a/cms/static/js/spec/video/transcripts/editor_spec.js +++ b/cms/static/js/spec/video/transcripts/editor_spec.js @@ -38,7 +38,7 @@ function($, Backbone, _, Utils, Editor, MetadataView, MetadataModel, MetadataCol field_name: 'edx_video_id', help: 'Specifies the video ID.', options: [], - type: MetadataModel.GENERIC_TYPE, + type: 'VideoID', value: 'basic tab video id' }, models = [DisplayNameEntry, VideoListEntry, VideoIDEntry], @@ -51,7 +51,8 @@ function($, Backbone, _, Utils, Editor, MetadataView, MetadataModel, MetadataCol object: testData, string: JSON.stringify(testData) }, - transcripts, $container; + component_locator = 'component_locator', + transcripts, $container, waitForEvent, editor; var waitsForDisplayName = function(collection) { return jasmine.waitUntil(function() { @@ -76,15 +77,109 @@ function($, Backbone, _, Utils, Editor, MetadataView, MetadataModel, MetadataCol Utils.Storage.remove('sub'); }); + describe('Events', function() { + beforeEach(function() { + Utils.command.and.callThrough(); + spyOn(Backbone, 'trigger').and.callThrough(); + spyOn(Editor.prototype, 'destroy').and.callThrough(); + spyOn(Editor.prototype, 'handleFieldChanged').and.callThrough(); + spyOn(Editor.prototype, 'getLocator').and.returnValue(component_locator); + + appendSetFixtures( + sandbox({ // eslint-disable-line no-undef + class: 'wrapper-comp-settings basic_metadata_edit', + 'data-metadata': JSON.stringify({video_url: VideoListEntry, edx_video_id: VideoIDEntry}) + }) + ); + + appendSetFixtures( + $('