diff --git a/lms/envs/common.py b/lms/envs/common.py
index f7a6f15558cb..e92c670936f3 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -478,18 +478,6 @@
# .. toggle_tickets: https://openedx.atlassian.net/browse/TNL-6931
ENABLE_COURSEWARE_SEARCH_FOR_COURSE_STAFF = False
-# Dashboard search feature
-# .. toggle_name: settings.ENABLE_DASHBOARD_SEARCH
-# .. toggle_implementation: DjangoSetting
-# .. toggle_default: False
-# .. toggle_description: When enabled, this adds a Search Your Courses widget on the dashboard page for searching
-# courseware data.
-# .. toggle_use_cases: open_edx
-# .. toggle_creation_date: 2015-01-29
-# .. toggle_warning: In order to get this working, your courses data should be indexed in Elasticsearch.
-# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6506
-ENABLE_DASHBOARD_SEARCH = False
-
# log all information from cybersource callbacks
LOG_POSTPAY_CALLBACKS = True
diff --git a/lms/envs/devstack.py b/lms/envs/devstack.py
index 6319e7b085dd..59d4a87da513 100644
--- a/lms/envs/devstack.py
+++ b/lms/envs/devstack.py
@@ -180,9 +180,6 @@ def should_show_debug_toolbar(request): # pylint: disable=missing-function-docs
}
]
-########################## Dashboard Search #######################
-ENABLE_DASHBOARD_SEARCH = False
-
########################## Certificates Web/HTML View #######################
CERTIFICATES_HTML_VIEW = True
diff --git a/lms/envs/production.py b/lms/envs/production.py
index b13f232f5bb7..8c476829841a 100644
--- a/lms/envs/production.py
+++ b/lms/envs/production.py
@@ -322,7 +322,6 @@ def get_env_setting(setting):
if (
ENABLE_COURSEWARE_SEARCH or # noqa: F405
- ENABLE_DASHBOARD_SEARCH or # noqa: F405
ENABLE_COURSE_DISCOVERY or # noqa: F405
ENABLE_TEAMS # noqa: F405
):
diff --git a/lms/envs/test.py b/lms/envs/test.py
index 392acc992302..f67e5f3fbc47 100644
--- a/lms/envs/test.py
+++ b/lms/envs/test.py
@@ -244,9 +244,6 @@
# Enable courseware search for tests
ENABLE_COURSEWARE_SEARCH = True
-# Enable dashboard search for tests
-ENABLE_DASHBOARD_SEARCH = True
-
FACEBOOK_APP_SECRET = "Test"
FACEBOOK_APP_ID = "Test"
FACEBOOK_API_VERSION = "v2.8"
diff --git a/lms/static/lms/js/build.js b/lms/static/lms/js/build.js
index 1d5e1a983be0..9ed5de431703 100644
--- a/lms/static/lms/js/build.js
+++ b/lms/static/lms/js/build.js
@@ -19,8 +19,6 @@
*/
modules: getModulesList([
'course_bookmarks/js/course_bookmarks_factory',
- 'course_search/js/course_search_factory',
- 'course_search/js/dashboard_search_factory',
'discussion/js/discussion_board_factory',
'discussion/js/discussion_profile_page_factory',
'js/api_admin/catalog_preview_factory',
diff --git a/lms/static/lms/js/spec/main.js b/lms/static/lms/js/spec/main.js
index d8bc1417e86e..e50c888739af 100644
--- a/lms/static/lms/js/spec/main.js
+++ b/lms/static/lms/js/spec/main.js
@@ -678,7 +678,6 @@
'course_bookmarks/js/spec/bookmark_button_view_spec.js',
'course_bookmarks/js/spec/bookmarks_list_view_spec.js',
'course_bookmarks/js/spec/course_bookmarks_factory_spec.js',
- 'course_search/js/spec/course_search_spec.js',
'discussion/js/spec/discussion_board_factory_spec.js',
'discussion/js/spec/discussion_profile_page_factory_spec.js',
'discussion/js/spec/discussion_board_view_spec.js',
diff --git a/lms/templates/dashboard.html b/lms/templates/dashboard.html
index 34270eea53d5..2b8bf2ead37e 100644
--- a/lms/templates/dashboard.html
+++ b/lms/templates/dashboard.html
@@ -75,11 +75,6 @@
});
});
%static:webpack>
- % if settings.FEATURES.get('ENABLE_DASHBOARD_SEARCH'):
- <%static:require_module module_name="course_search/js/dashboard_search_factory" class_name="DashboardSearchFactory">
- DashboardSearchFactory();
- %static:require_module>
- % endif
% if redirect_message:
<%static:require_module module_name="js/views/message_banner" class_name="MessageBannerView">
var banner = new MessageBannerView({urgency: 'low', type: 'warning'});
@@ -275,24 +270,6 @@
-
-
-
-
-
-
diff --git a/openedx/features/course_search/static/course_search/fixtures/course_search_results_page.html b/openedx/features/course_search/static/course_search/fixtures/course_search_results_page.html
deleted file mode 100644
index 1fb8c41cfb8a..000000000000
--- a/openedx/features/course_search/static/course_search/fixtures/course_search_results_page.html
+++ /dev/null
@@ -1,37 +0,0 @@
-
diff --git a/openedx/features/course_search/static/course_search/fixtures/dashboard_search_page.html b/openedx/features/course_search/static/course_search/fixtures/dashboard_search_page.html
deleted file mode 100644
index d711f4e4c62d..000000000000
--- a/openedx/features/course_search/static/course_search/fixtures/dashboard_search_page.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
diff --git a/openedx/features/course_search/static/course_search/js/collections/search_collection.js b/openedx/features/course_search/static/course_search/js/collections/search_collection.js
deleted file mode 100644
index c9b1d94ef6da..000000000000
--- a/openedx/features/course_search/static/course_search/js/collections/search_collection.js
+++ /dev/null
@@ -1,126 +0,0 @@
-(function(define) {
- 'use strict';
-
- define([
- 'underscore',
- 'backbone',
- 'course_search/js/models/search_result'
- ], function(_, Backbone, SearchResult) {
- return Backbone.Collection.extend({
-
- model: SearchResult,
- pageSize: 20,
- totalCount: 0,
- latestModelsCount: 0,
- accessDeniedCount: 0,
- searchTerm: '',
- page: 0,
- url: '/search/',
- fetchXhr: null,
-
- initialize: function(models, options) {
- // call super constructor
- Backbone.Collection.prototype.initialize.apply(this, arguments);
- if (options && options.courseId) {
- this.url += options.courseId;
- }
- },
-
- extractErrorMessage: function(response) {
- var errorMessage;
- if (response.responseJSON && response.responseJSON.error) {
- // eslint-disable-next-line no-param-reassign
- errorMessage = response.responseJSON.error || '';
- } else {
- errorMessage = ''; // eslint-disable-line no-param-reassign
- }
- return errorMessage;
- },
-
- performSearch: function(searchTerm) {
- if (this.fetchXhr) {
- this.fetchXhr.abort();
- }
- this.searchTerm = searchTerm || '';
- this.resetState();
- this.fetchXhr = this.fetch({
- data: {
- search_string: searchTerm,
- page_size: this.pageSize,
- page_index: 0
- },
- type: 'POST',
- success: function(self) {
- self.errorMessage = ''; // eslint-disable-line no-param-reassign
- self.trigger('search');
- },
- error: function(self, response) {
- self.errorMessage = self.extractErrorMessage(response); // eslint-disable-line no-param-reassign
- self.trigger('error');
- }
- });
- },
-
- loadNextPage: function() {
- if (this.fetchXhr) {
- this.fetchXhr.abort();
- }
- this.fetchXhr = this.fetch({
- data: {
- search_string: this.searchTerm,
- page_size: this.pageSize,
- page_index: this.page + 1
- },
- type: 'POST',
- success: function(self) {
- self.errorMessage = ''; // eslint-disable-line no-param-reassign
- self.page += 1; // eslint-disable-line no-param-reassign
- self.trigger('next');
- },
- error: function(self, response) {
- self.errorMessage = self.extractErrorMessage(response); // eslint-disable-line no-param-reassign
- self.trigger('error');
- },
- add: true,
- reset: false,
- remove: false
- });
- },
-
- cancelSearch: function() {
- if (this.fetchXhr) {
- this.fetchXhr.abort();
- }
- this.resetState();
- },
-
- parse: function(response) {
- this.latestModelsCount = response.results.length;
- this.totalCount = response.total;
- this.accessDeniedCount += response.access_denied_count;
- this.totalCount -= this.accessDeniedCount;
- return _.map(response.results, function(result) {
- return result.data;
- });
- },
-
- resetState: function() {
- this.page = 0;
- this.totalCount = 0;
- this.latestModelsCount = 0;
- this.accessDeniedCount = 0;
- // empty the entire collection
- this.reset();
- },
-
- hasNextPage: function() {
- return this.totalCount - ((this.page + 1) * this.pageSize) > 0;
- },
-
- latestModels: function() {
- return this.last(this.latestModelsCount);
- }
-
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/course_search_factory.js b/openedx/features/course_search/static/course_search/js/course_search_factory.js
deleted file mode 100644
index e7fb824a6b4d..000000000000
--- a/openedx/features/course_search/static/course_search/js/course_search_factory.js
+++ /dev/null
@@ -1,61 +0,0 @@
-(function(define) {
- 'use strict';
-
- define([
- 'underscore', 'backbone', 'course_search/js/search_router', 'course_search/js/views/search_form',
- 'course_search/js/collections/search_collection', 'course_search/js/views/course_search_results_view'
- ],
- function(_, Backbone, SearchRouter, CourseSearchForm, SearchCollection, CourseSearchResultsView) {
- return function(options) {
- var courseId = options.courseId;
- var requestedQuery = options.query;
- var supportsActive = options.supportsActive;
- var router = new SearchRouter();
- var form = new CourseSearchForm({
- el: options.searchHeader,
- supportsActive: supportsActive
- });
- var collection = new SearchCollection([], {courseId: courseId});
- var results = new CourseSearchResultsView({collection: collection});
- var dispatcher = _.clone(Backbone.Events);
-
- dispatcher.listenTo(router, 'search', function(query) {
- form.doSearch(query);
- });
-
- dispatcher.listenTo(form, 'search', function(query) {
- results.showLoadingMessage();
- collection.performSearch(query);
- router.navigate('search/' + query, {replace: true});
- });
-
- dispatcher.listenTo(form, 'clear', function() {
- collection.cancelSearch();
- results.clear();
- router.navigate('');
- });
-
- dispatcher.listenTo(results, 'next', function() {
- collection.loadNextPage();
- });
-
- dispatcher.listenTo(collection, 'search', function() {
- results.render();
- });
-
- dispatcher.listenTo(collection, 'next', function() {
- results.renderNext();
- });
-
- dispatcher.listenTo(collection, 'error', function() {
- results.showErrorMessage();
- });
-
- // Perform a search if an initial query has been provided.
- if (requestedQuery) {
- router.trigger('search', requestedQuery);
- }
- };
- }
- );
-}).call(this, define || RequireJS.define);
diff --git a/openedx/features/course_search/static/course_search/js/dashboard_search_factory.js b/openedx/features/course_search/static/course_search/js/dashboard_search_factory.js
deleted file mode 100644
index 3697ce381a14..000000000000
--- a/openedx/features/course_search/static/course_search/js/dashboard_search_factory.js
+++ /dev/null
@@ -1,55 +0,0 @@
-(function(define) {
- 'use strict';
-
- define([
- 'underscore', 'backbone', 'course_search/js/search_router', 'course_search/js/views/search_form',
- 'course_search/js/collections/search_collection', 'course_search/js/views/dashboard_search_results_view'
- ],
- function(_, Backbone, SearchRouter, SearchForm, SearchCollection, DashboardSearchResultsView) {
- return function() {
- var router = new SearchRouter();
- var form = new SearchForm({
- el: $('#dashboard-search-bar')
- });
- var collection = new SearchCollection([]);
- var results = new DashboardSearchResultsView({collection: collection});
- var dispatcher = _.clone(Backbone.Events);
-
- dispatcher.listenTo(router, 'search', function(query) {
- form.doSearch(query);
- });
-
- dispatcher.listenTo(form, 'search', function(query) {
- results.showLoadingMessage();
- collection.performSearch(query);
- router.navigate('search/' + query, {replace: true});
- });
-
- dispatcher.listenTo(form, 'clear', function() {
- collection.cancelSearch();
- results.clear();
- router.navigate('');
- });
-
- dispatcher.listenTo(results, 'next', function() {
- collection.loadNextPage();
- });
-
- dispatcher.listenTo(results, 'reset', function() {
- form.resetSearchForm();
- });
-
- dispatcher.listenTo(collection, 'search', function() {
- results.render();
- });
-
- dispatcher.listenTo(collection, 'next', function() {
- results.renderNext();
- });
-
- dispatcher.listenTo(collection, 'error', function() {
- results.showErrorMessage();
- });
- };
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/models/search_result.js b/openedx/features/course_search/static/course_search/js/models/search_result.js
deleted file mode 100644
index 825090eda907..000000000000
--- a/openedx/features/course_search/static/course_search/js/models/search_result.js
+++ /dev/null
@@ -1,14 +0,0 @@
-(function(define) {
- 'use strict';
-
- define(['backbone'], function(Backbone) {
- return Backbone.Model.extend({
- defaults: {
- location: [],
- content_type: '',
- excerpt: '',
- url: ''
- }
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/search_router.js b/openedx/features/course_search/static/course_search/js/search_router.js
deleted file mode 100644
index 097995ad1ddb..000000000000
--- a/openedx/features/course_search/static/course_search/js/search_router.js
+++ /dev/null
@@ -1,14 +0,0 @@
-(function(define) {
- 'use strict';
-
- define(['backbone'], function(Backbone) {
- return Backbone.Router.extend({
- routes: {
- 'search/:query': 'search'
- },
- search: function(query) {
- this.trigger('search', query);
- }
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/spec/course_search_spec.js b/openedx/features/course_search/static/course_search/js/spec/course_search_spec.js
deleted file mode 100644
index 281369f94d85..000000000000
--- a/openedx/features/course_search/static/course_search/js/spec/course_search_spec.js
+++ /dev/null
@@ -1,681 +0,0 @@
-define([
- 'jquery',
- 'backbone',
- 'logger',
- 'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers',
- 'common/js/spec_helpers/page_helpers',
- 'common/js/spec_helpers/template_helpers',
- 'course_search/js/models/search_result',
- 'course_search/js/collections/search_collection',
- 'course_search/js/search_router',
- 'course_search/js/views/search_form',
- 'course_search/js/views/search_item_view',
- 'course_search/js/views/course_search_results_view',
- 'course_search/js/views/dashboard_search_results_view',
- 'course_search/js/course_search_factory',
- 'course_search/js/dashboard_search_factory',
- 'text!course_search/templates/course_search_item.underscore'
-], function(
- $,
- Backbone,
- Logger,
- AjaxHelpers,
- PageHelpers,
- TemplateHelpers,
- SearchResult,
- SearchCollection,
- SearchRouter,
- SearchForm,
- SearchItemView,
- CourseSearchResultsView,
- DashSearchResultsView,
- CourseSearchFactory,
- DashboardSearchFactory,
- courseSearchItemTemplate
-) {
- 'use strict';
-
- describe('Course Search', function() {
- beforeEach(function() {
- PageHelpers.preventBackboneChangingUrl();
- });
-
- describe('SearchResult', function() {
- beforeEach(function() {
- this.result = new SearchResult();
- });
-
- it('has properties', function() {
- expect(this.result.get('location')).toBeDefined();
- expect(this.result.get('content_type')).toBeDefined();
- expect(this.result.get('excerpt')).toBeDefined();
- expect(this.result.get('url')).toBeDefined();
- });
- });
-
- describe('SearchCollection', function() {
- beforeEach(function() {
- this.collection = new SearchCollection();
-
- this.onSearch = jasmine.createSpy('onSearch');
- this.collection.on('search', this.onSearch);
-
- this.onNext = jasmine.createSpy('onNext');
- this.collection.on('next', this.onNext);
-
- this.onError = jasmine.createSpy('onError');
- this.collection.on('error', this.onError);
- });
-
- it('sends a request without a course ID', function() {
- var collection = new SearchCollection([]);
- spyOn($, 'ajax');
- collection.performSearch('search string');
- expect($.ajax.calls.mostRecent().args[0].url).toEqual('/search/');
- });
-
- it('sends a request with course ID', function() {
- var collection = new SearchCollection([], {courseId: 'edx101'});
- spyOn($, 'ajax');
- collection.performSearch('search string');
- expect($.ajax.calls.mostRecent().args[0].url).toEqual('/search/edx101');
- });
-
- it('sends a request and parses the json result', function() {
- var requests = AjaxHelpers.requests(this);
- var response = {
- total: 2,
- access_denied_count: 1,
- results: [{
- data: {
- location: ['section', 'subsection', 'unit'],
- url: '/some/url/to/content',
- content_type: 'text',
- excerpt: 'this is a short excerpt'
- }
- }]
- };
- this.collection.performSearch('search string');
- AjaxHelpers.respondWithJson(requests, response);
-
- expect(this.onSearch).toHaveBeenCalled();
- expect(this.collection.totalCount).toEqual(1);
- expect(this.collection.latestModelsCount).toEqual(1);
- expect(this.collection.accessDeniedCount).toEqual(1);
- expect(this.collection.page).toEqual(0);
- expect(this.collection.first().attributes).toEqual(response.results[0].data);
- });
-
- it('handles errors', function() {
- var requests = AjaxHelpers.requests(this);
- this.collection.performSearch('search string');
- AjaxHelpers.respondWithError(requests, 500);
- expect(this.onSearch).not.toHaveBeenCalled();
- expect(this.onError).toHaveBeenCalled();
- });
-
- it('loads next page', function() {
- var requests = AjaxHelpers.requests(this);
- var response = {total: 35, results: []};
- this.collection.loadNextPage();
- AjaxHelpers.respondWithJson(requests, response);
- expect(this.onNext).toHaveBeenCalled();
- expect(this.onError).not.toHaveBeenCalled();
- });
-
- it('sends correct paging parameters', function() {
- var requests = AjaxHelpers.requests(this);
- var searchString = 'search string';
- var response = {total: 52, results: []};
- this.collection.performSearch(searchString);
- AjaxHelpers.respondWithJson(requests, response);
- this.collection.loadNextPage();
- AjaxHelpers.respondWithJson(requests, response);
- spyOn($, 'ajax');
- this.collection.loadNextPage();
- expect($.ajax.calls.mostRecent().args[0].url).toEqual(this.collection.url);
- expect($.ajax.calls.mostRecent().args[0].data.search_string).toEqual(searchString);
- expect($.ajax.calls.mostRecent().args[0].data.page_size).toEqual(this.collection.pageSize);
- expect($.ajax.calls.mostRecent().args[0].data.page_index).toEqual(2);
- });
-
- it('has next page', function() {
- var requests = AjaxHelpers.requests(this);
- var response = {total: 35, access_denied_count: 5, results: []};
- this.collection.performSearch('search string');
- AjaxHelpers.respondWithJson(requests, response);
- expect(this.collection.hasNextPage()).toEqual(true);
- this.collection.loadNextPage();
- AjaxHelpers.respondWithJson(requests, response);
- expect(this.collection.hasNextPage()).toEqual(false);
- });
-
- it('aborts any previous request', function() {
- var requests = AjaxHelpers.requests(this);
- var response = {total: 35, results: []};
-
- this.collection.performSearch('old search');
- this.collection.performSearch('new search');
- AjaxHelpers.skipResetRequest(requests);
- AjaxHelpers.respondWithJson(requests, response);
- expect(this.onSearch.calls.count()).toEqual(1);
-
- this.collection.performSearch('old search');
- this.collection.cancelSearch();
- AjaxHelpers.skipResetRequest(requests);
- expect(this.onSearch.calls.count()).toEqual(1);
-
- this.collection.loadNextPage();
- this.collection.loadNextPage();
- AjaxHelpers.skipResetRequest(requests);
- AjaxHelpers.respondWithJson(requests, response);
- expect(this.onNext.calls.count()).toEqual(1);
- });
-
- describe('reset state', function() {
- beforeEach(function() {
- this.collection.page = 2;
- this.collection.totalCount = 35;
- this.collection.latestModelsCount = 5;
- });
-
- it('resets state when performing new search', function() {
- this.collection.performSearch('search string');
- expect(this.collection.models.length).toEqual(0);
- expect(this.collection.page).toEqual(0);
- expect(this.collection.totalCount).toEqual(0);
- expect(this.collection.latestModelsCount).toEqual(0);
- });
-
- it('resets state when canceling a search', function() {
- this.collection.cancelSearch();
- expect(this.collection.models.length).toEqual(0);
- expect(this.collection.page).toEqual(0);
- expect(this.collection.totalCount).toEqual(0);
- expect(this.collection.latestModelsCount).toEqual(0);
- });
- });
- });
-
- describe('SearchRouter', function() {
- beforeEach(function() {
- this.router = new SearchRouter();
- this.onSearch = jasmine.createSpy('onSearch');
- this.router.on('search', this.onSearch);
- });
-
- it('has a search route', function() {
- expect(this.router.routes['search/:query']).toEqual('search');
- });
-
- it('triggers a search event', function() {
- var query = 'mercury';
- this.router.search(query);
- expect(this.onSearch).toHaveBeenCalledWith(query);
- });
- });
-
- describe('SearchItemView', function() {
- beforeEach(function() {
- this.model = new SearchResult({
- location: ['section', 'subsection', 'unit'],
- content_type: 'Video',
- course_name: 'Course Name',
- excerpt: 'A short excerpt.',
- url: 'path/to/content'
- });
-
- this.seqModel = new SearchResult({
- location: ['section', 'subsection'],
- content_type: 'Sequence',
- course_name: 'Course Name',
- excerpt: 'A short excerpt.',
- url: 'path/to/content'
- });
-
- this.item = new SearchItemView({
- model: this.model,
- template: courseSearchItemTemplate
- });
- this.item.render();
- this.seqItem = new SearchItemView({
- model: this.seqModel,
- template: courseSearchItemTemplate
- });
- this.seqItem.render();
- });
-
- it('rendersItem', function() {
- expect(this.item.$el).toHaveAttr('role', 'region');
- expect(this.item.$el).toHaveAttr('aria-label', 'search result');
- expect(this.item.$el).toContainElement('a[href="' + this.model.get('url') + '"]');
- expect(this.item.$el.find('.result-type i')).toHaveClass('fa-' + this.item.unitIcon());
- expect(this.item.$el.find('.result-excerpt')).toContainHtml(this.model.get('excerpt'));
- expect(this.item.$el.find('.result-link')).toContainHtml('section / subsection / unit');
- });
-
- it('rendersSequentialItem', function() {
- expect(this.seqItem.$el).toHaveAttr('role', 'region');
- expect(this.seqItem.$el).toHaveAttr('aria-label', 'search result');
- expect(this.seqItem.$el).toContainElement('a[href="' + this.seqModel.get('url') + '"]');
- expect(this.seqItem.$el.find('.result-type i')).toHaveClass('fa-' + this.seqItem.unitIcon());
- expect(this.seqItem.$el.find('.result-excerpt')).toBeEmpty();
- expect(this.seqItem.$el.find('.result-link')).toContainHtml('section / subsection');
- });
-
- it('logsSearchItemViewEvent', function() {
- this.model.collection = new SearchCollection([this.model], {course_id: 'edx101'});
- this.item.render();
- // Mock the redirect call
- spyOn(this.item, 'redirect').and.callFake(function() {});
- spyOn(Logger, 'log').and.returnValue($.Deferred().resolve());
- this.item.$el.find('a').trigger('click');
- expect(this.item.redirect).toHaveBeenCalled();
- this.item.$el.trigger('click');
- expect(this.item.redirect).toHaveBeenCalled();
- });
- });
-
- describe('SearchForm', function() {
- function trimsInputString() {
- var term = ' search string ';
- $('.search-field').val(term);
- $('form').trigger('submit');
- expect(this.onSearch).toHaveBeenCalledWith($.trim(term));
- }
-
- function doesSearch() {
- var term = ' search string ';
- $('.search-field').val(term);
- this.form.doSearch(term);
- expect(this.onSearch).toHaveBeenCalledWith($.trim(term));
- expect($('.search-field').val()).toEqual(term.trim());
- expect($('.search-field')).toHaveClass('is-active');
- expect($('.search-button')).toBeHidden();
- expect($('.cancel-button')).toBeVisible();
- }
-
- function triggersSearchEvent() {
- var term = 'search string';
- $('.search-field').val(term);
- $('form').trigger('submit');
- expect(this.onSearch).toHaveBeenCalledWith(term);
- expect($('.search-field')).toHaveClass('is-active');
- expect($('.search-button')).toBeHidden();
- expect($('.cancel-button')).toBeVisible();
- }
-
- function clearsSearchOnCancel() {
- $('.search-field').val('search string');
- $('.search-button').trigger('click');
- $('.cancel-button').trigger('click');
- expect($('.search-field')).not.toHaveClass('is-active');
- expect($('.search-button')).toBeVisible();
- expect($('.cancel-button')).toBeHidden();
- expect($('.search-field')).toHaveValue('');
- }
-
- function clearsSearchOnEmpty() {
- $('.search-field').val('');
- $('form').trigger('submit');
- expect(this.onClear).toHaveBeenCalled();
- expect($('.search-field')).not.toHaveClass('is-active');
- expect($('.cancel-button')).toBeHidden();
- expect($('.search-button')).toBeVisible();
- }
-
- describe('SearchForm', function() {
- beforeEach(function() {
- loadFixtures('course_search/fixtures/course_content_page.html');
- this.form = new SearchForm({
- el: '.search-bar'
- });
- this.onClear = jasmine.createSpy('onClear');
- this.onSearch = jasmine.createSpy('onSearch');
- this.form.on('clear', this.onClear);
- this.form.on('search', this.onSearch);
- });
- it('trims input string', trimsInputString);
- it('handles calls to doSearch', doesSearch);
- it('triggers a search event and changes to active state', triggersSearchEvent);
- it('clears search when clicking on cancel button', clearsSearchOnCancel);
- it('clears search when search box is empty', clearsSearchOnEmpty);
- });
- });
-
- describe('SearchResultsView', function() {
- function showsLoadingMessage() {
- this.resultsView.showLoadingMessage();
- expect(this.resultsView.$el).toBeVisible();
- expect(this.resultsView.$el).not.toBeEmpty();
- }
-
- function showsErrorMessage() {
- this.resultsView.showErrorMessage();
- expect(this.resultsView.$el).toBeVisible();
- expect(this.resultsView.$el).not.toBeEmpty();
- }
-
- function returnsToContent() {
- this.resultsView.clear();
- expect(this.resultsView.$el).toBeHidden();
- expect(this.resultsView.$el).toBeEmpty();
- }
-
- function showsNoResultsMessage() {
- this.collection.reset();
- this.resultsView.render();
- expect(this.resultsView.$el).toContainHtml('no results');
- expect(this.resultsView.$el.find('ol')).not.toExist();
- }
-
- function rendersSearchResults() {
- var searchResults = [{
- location: ['section', 'subsection', 'unit'],
- url: '/some/url/to/content',
- content_type: 'text',
- course_name: '',
- excerpt: 'this is a short excerpt'
- }];
- this.collection.set(searchResults);
- this.collection.latestModelsCount = 1;
- this.collection.totalCount = 1;
-
- this.resultsView.render();
- expect(this.resultsView.$el.find('ol')[0]).toExist();
- expect(this.resultsView.$el.find('li').length).toEqual(1);
- expect(this.resultsView.$el).toContainHtml(
- this.collection.totalCount
- + ' result found for "'
- + this.collection.searchTerm + '"'
- );
- expect(this.resultsView.$el).toContainHtml('this is a short excerpt');
-
- this.collection.set(searchResults);
- this.collection.totalCount = 2;
- this.resultsView.renderNext();
- expect(this.resultsView.$el.find('li').length).toEqual(2);
- }
-
- function showsMoreResultsLink() {
- this.collection.totalCount = 123;
- this.collection.hasNextPage = function() { return true; };
- this.resultsView.render();
- expect(this.resultsView.$el.find('a.search-load-next')[0]).toExist();
-
- this.collection.totalCount = 123;
- this.collection.hasNextPage = function() { return false; };
- this.resultsView.render();
- expect(this.resultsView.$el.find('a.search-load-next')[0]).not.toExist();
- }
-
- function triggersNextPageEvent() {
- var onNext = jasmine.createSpy('onNext');
- this.resultsView.on('next', onNext);
- this.collection.totalCount = 123;
- this.collection.hasNextPage = function() { return true; };
- this.resultsView.render();
- this.resultsView.$el.find('a.search-load-next').click();
- expect(onNext).toHaveBeenCalled();
- }
-
- function showsLoadMoreSpinner() {
- this.collection.totalCount = 123;
- this.collection.hasNextPage = function() { return true; };
- this.resultsView.render();
- expect(this.resultsView.$el.find('a.search-load-next .icon')).toBeHidden();
- this.resultsView.loadNext();
- // toBeVisible does not work with inline
- expect(this.resultsView.$el.find('a.search-load-next .icon')).toHaveCss({
- display: 'inline'
- });
- this.resultsView.renderNext();
- expect(this.resultsView.$el.find('a.search-load-next .icon')).toBeHidden();
- }
-
- function beforeEachHelper(SearchResultsView) {
- var MockCollection = Backbone.Collection.extend({
- hasNextPage: function() {},
- latestModelsCount: 0,
- pageSize: 20,
- latestModels: function() {
- return SearchCollection.prototype.latestModels.apply(this, arguments);
- }
- });
-
- this.collection = new MockCollection();
- this.collection.searchTerm = 'demo';
- this.resultsView = new SearchResultsView({collection: this.collection});
- }
-
- describe('CourseSearchResultsView', function() {
- beforeEach(function() {
- loadFixtures('course_search/fixtures/course_content_page.html');
- beforeEachHelper.call(this, CourseSearchResultsView);
- this.contentElementDisplayValue = 'table-cell';
- });
- it('shows loading message', showsLoadingMessage);
- it('shows error message', showsErrorMessage);
- xit('returns to content', returnsToContent);
- it('shows a message when there are no results', showsNoResultsMessage);
- it('renders search results', rendersSearchResults);
- it('shows a link to load more results', showsMoreResultsLink);
- it('triggers an event for next page', triggersNextPageEvent);
- it('shows a spinner when loading more results', showsLoadMoreSpinner);
- });
-
- describe('DashSearchResultsView', function() {
- beforeEach(function() {
- loadFixtures('course_search/fixtures/dashboard_search_page.html');
- beforeEachHelper.call(this, DashSearchResultsView);
- this.contentElementDisplayValue = 'block';
- });
- it('shows loading message', showsLoadingMessage);
- it('shows error message', showsErrorMessage);
- it('returns to content', returnsToContent);
- it('shows a message when there are no results', showsNoResultsMessage);
- it('renders search results', rendersSearchResults);
- it('shows a link to load more results', showsMoreResultsLink);
- it('triggers an event for next page', triggersNextPageEvent);
- it('shows a spinner when loading more results', showsLoadMoreSpinner);
- });
- });
-
- describe('SearchApp', function() {
- function showsLoadingMessage() {
- $('.search-field').val('search string');
- $('.search-button').trigger('click');
- expect(this.$searchResults).toBeVisible();
- expect(this.$searchResults).not.toBeEmpty();
- }
-
- function performsSearch() {
- var requests = AjaxHelpers.requests(this);
- $('.search-field').val('search string');
- $('.search-button').trigger('click');
- AjaxHelpers.respondWithJson(requests, {
- total: 1337,
- access_denied_count: 12,
- results: [{
- data: {
- location: ['section', 'subsection', 'unit'],
- url: '/some/url/to/content',
- content_type: 'text',
- excerpt: 'this is a short excerpt',
- course_name: ''
- }
- }]
- });
- expect($('.search-info')).toExist();
- expect($('.search-result-list')).toBeVisible();
- expect(this.$searchResults.find('li').length).toEqual(1);
- }
-
- function showsErrorMessage() {
- var requests = AjaxHelpers.requests(this);
- $('.search-field').val('search string');
- $('.search-button').trigger('click');
- AjaxHelpers.respondWithError(requests, 500, {});
- expect(this.$searchResults).toContainHtml('There was an error');
- }
-
- function updatesNavigationHistory() {
- $('.search-field').val('edx');
- $('.search-button').trigger('click');
- expect(Backbone.history.navigate.calls.mostRecent().args[0]).toContain('search/edx');
- $('.cancel-button').trigger('click');
- expect(Backbone.history.navigate.calls.argsFor(1)[0]).toBe('');
- }
-
- function cancelsSearchRequest() {
- var requests = AjaxHelpers.requests(this);
- // send search request to server
- $('.search-field').val('search string');
- $('.search-button').trigger('click');
- // cancel the search and then skip the request that was marked as reset
- $('.cancel-button').trigger('click');
- AjaxHelpers.skipResetRequest(requests);
- // there should be no results
- expect(this.$searchResults).toBeHidden();
- }
-
- function clearsResults() {
- $('.cancel-button').trigger('click');
- expect(this.$searchResults).toBeHidden();
- }
-
- function loadsNextPage() {
- var requests = AjaxHelpers.requests(this);
- var response = {
- total: 1337,
- access_denied_count: 12,
- results: [{
- data: {
- location: ['section', 'subsection', 'unit'],
- url: '/some/url/to/content',
- content_type: 'text',
- excerpt: 'this is a short excerpt',
- course_name: ''
- }
- }]
- };
- var body;
- $('.search-field').val('query');
- $('.search-button').trigger('click');
- AjaxHelpers.respondWithJson(requests, response);
- expect(this.$searchResults.find('li').length).toEqual(1);
- expect($('.search-load-next')).toBeVisible();
- $('.search-load-next').trigger('click');
- body = requests[1].requestBody;
- expect(body).toContain('search_string=query');
- expect(body).toContain('page_index=1');
- AjaxHelpers.respondWithJson(requests, response);
- expect(this.$searchResults.find('li').length).toEqual(2);
- }
-
- function navigatesToSearch() {
- var requests = AjaxHelpers.requests(this);
- Backbone.history.start();
- Backbone.history.loadUrl('search/query');
- expect(requests[0].requestBody).toContain('search_string=query');
- }
-
- describe('CourseSearchApp', function() {
- beforeEach(function() {
- var courseId = 'a/b/c';
- loadFixtures('course_search/fixtures/course_content_page.html');
- CourseSearchFactory({
- courseId: courseId,
- searchHeader: $('.search-bar')
- });
- spyOn(Backbone.history, 'navigate');
- this.$contentElement = $('#course-content');
- this.contentElementDisplayValue = 'table-cell';
- this.$searchResults = $('.search-results');
- });
-
- afterEach(function() {
- Backbone.history.stop();
- });
-
- it('shows loading message on search', showsLoadingMessage);
- it('performs search', performsSearch);
- it('shows an error message', showsErrorMessage);
- it('updates navigation history', updatesNavigationHistory);
- xit('cancels search request', cancelsSearchRequest);
- xit('clears results', clearsResults);
- it('loads next page', loadsNextPage);
- it('navigates to search', navigatesToSearch);
- });
-
- describe('DashboardSearchApp', function() {
- beforeEach(function() {
- loadFixtures('course_search/fixtures/dashboard_search_page.html');
- DashboardSearchFactory();
-
- spyOn(Backbone.history, 'navigate');
- this.contentElementDisplayValue = 'block';
- this.$searchResults = $('.search-results');
- });
-
- afterEach(function() {
- Backbone.history.stop();
- });
-
- it('shows loading message on search', showsLoadingMessage);
- it('performs search', performsSearch);
- it('shows an error message', showsErrorMessage);
- it('updates navigation history', updatesNavigationHistory);
- it('cancels search request', cancelsSearchRequest);
- it('clears results', clearsResults);
- it('loads next page', loadsNextPage);
- it('navigates to search', navigatesToSearch);
- it('returns to course list', function() {
- var requests = AjaxHelpers.requests(this);
- $('.search-field').val('search string');
- $('.search-button').trigger('click');
- AjaxHelpers.respondWithJson(requests, {
- total: 1337,
- access_denied_count: 12,
- results: [{
- data: {
- location: ['section', 'subsection', 'unit'],
- url: '/some/url/to/content',
- content_type: 'text',
- excerpt: 'this is a short excerpt',
- course_name: ''
- }
- }]
- });
- $('.search-form .cancel-button').trigger('click');
- expect(this.$searchResults).toBeHidden();
- expect(this.$searchResults).toBeEmpty();
- });
- });
-
- describe('Course Search Results Page', function() {
- beforeEach(function() {
- var courseId = 'a/b/c';
- loadFixtures('course_search/fixtures/course_search_results_page.html');
- CourseSearchFactory({
- courseId: courseId,
- searchHeader: $('.page-header-search')
- });
- spyOn(Backbone.history, 'navigate');
- this.$contentElement = null; // The search results page does not show over a content element
- this.contentElementDisplayValue = 'table-cell';
- this.$searchResults = $('.search-results');
- });
-
- afterEach(function() {
- Backbone.history.stop();
- });
-
- it('shows loading message on search', showsLoadingMessage);
- it('performs search', performsSearch);
- it('shows an error message', showsErrorMessage);
- it('loads next page', loadsNextPage);
- });
- });
- });
-});
diff --git a/openedx/features/course_search/static/course_search/js/views/course_search_results_view.js b/openedx/features/course_search/static/course_search/js/views/course_search_results_view.js
deleted file mode 100644
index e0b8159b4742..000000000000
--- a/openedx/features/course_search/static/course_search/js/views/course_search_results_view.js
+++ /dev/null
@@ -1,36 +0,0 @@
-(function(define) {
- 'use strict';
-
- define([
- 'course_search/js/views/search_results_view',
- 'text!course_search/templates/course_search_results.underscore',
- 'text!course_search/templates/course_search_item.underscore'
- ], function(
- SearchResultsView,
- courseSearchResultsTemplate,
- courseSearchItemTemplate
- ) {
- return SearchResultsView.extend({
- el: '.search-results',
- contentElement: '#course-content',
- coursewareResultsWrapperElement: '.courseware-results-wrapper',
- resultsTemplate: courseSearchResultsTemplate,
- itemTemplate: courseSearchItemTemplate,
- events: {
- 'click .search-load-next': 'loadNext'
- },
-
- clear: function() {
- SearchResultsView.prototype.clear.call(this);
- $(this.coursewareResultsWrapperElement).hide();
- this.$contentElement.css('display', 'table-cell');
- },
-
- showResults: function() {
- SearchResultsView.prototype.showResults.call(this);
- $(this.coursewareResultsWrapperElement).css('display', 'table-cell');
- }
-
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js b/openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js
deleted file mode 100644
index cd1f2458802c..000000000000
--- a/openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js
+++ /dev/null
@@ -1,29 +0,0 @@
-(function(define) {
- 'use strict';
-
- define([
- 'course_search/js/views/search_results_view',
- 'text!course_search/templates/dashboard_search_results.underscore',
- 'text!course_search/templates/dashboard_search_item.underscore'
- ], function(
- SearchResultsView,
- dashboardSearchResultsTemplate,
- dashboardSearchItemTemplate
- ) {
- return SearchResultsView.extend({
- el: '.search-results',
- resultsTemplate: dashboardSearchResultsTemplate,
- itemTemplate: dashboardSearchItemTemplate,
- events: {
- 'click .search-load-next': 'loadNext'
- },
-
- backToCourses: function() {
- this.clear();
- this.trigger('reset');
- return false;
- }
-
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/views/search_form.js b/openedx/features/course_search/static/course_search/js/views/search_form.js
deleted file mode 100644
index e31fc816c6b4..000000000000
--- a/openedx/features/course_search/static/course_search/js/views/search_form.js
+++ /dev/null
@@ -1,68 +0,0 @@
-(function(define) {
- 'use strict';
-
- define(['jquery', 'backbone'], function($, Backbone) {
- return Backbone.View.extend({
-
- el: '',
- events: {
- 'submit .search-form': 'submitForm',
- 'click .cancel-button': 'clearSearch'
- },
-
- initialize: function(options) {
- this.$searchField = this.$el.find('.search-field');
- this.$searchButton = this.$el.find('.search-button');
- this.$cancelButton = this.$el.find('.cancel-button');
- this.supportsActive = options.supportsActive === undefined ? true : options.supportsActive;
- },
-
- submitForm: function(event) {
- event.preventDefault();
- this.doSearch();
- },
-
- doSearch: function(term) {
- var trimmedTerm;
- if (term) {
- trimmedTerm = term.trim();
- this.$searchField.val(trimmedTerm);
- } else {
- trimmedTerm = this.$searchField.val().trim();
- }
- if (trimmedTerm) {
- this.setActiveStyle();
- this.trigger('search', trimmedTerm);
- } else {
- this.clearSearch();
- }
- },
-
- resetSearchForm: function() {
- this.$searchField.val('');
- this.setInitialStyle();
- },
-
- clearSearch: function() {
- this.resetSearchForm();
- this.trigger('clear');
- },
-
- setActiveStyle: function() {
- if (this.supportsActive) {
- this.$searchField.addClass('is-active');
- this.$searchButton.hide();
- this.$cancelButton.show();
- }
- },
-
- setInitialStyle: function() {
- if (this.supportsActive) {
- this.$searchField.removeClass('is-active');
- this.$searchButton.show();
- this.$cancelButton.hide();
- }
- }
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/views/search_item_view.js b/openedx/features/course_search/static/course_search/js/views/search_item_view.js
deleted file mode 100644
index 997ba697dd61..000000000000
--- a/openedx/features/course_search/static/course_search/js/views/search_item_view.js
+++ /dev/null
@@ -1,95 +0,0 @@
-(function(define) {
- 'use strict';
-
- define([
- 'jquery',
- 'underscore',
- 'backbone',
- 'gettext',
- 'logger',
- 'edx-ui-toolkit/js/utils/html-utils'
- ], function($, _, Backbone, gettext, Logger, HtmlUtils) {
- return Backbone.View.extend({
-
- tagName: 'li',
- className: 'search-results-item',
- attributes: {
- role: 'region',
- 'aria-label': 'search result'
- },
-
- events: {
- click: 'logSearchItem'
- },
-
- initialize: function(options) {
- this.template = options.template;
- },
-
- unitIcon: function() {
- var icon = null;
- switch (this.model.attributes.content_type) {
- case 'Video':
- icon = 'film';
- break;
- case 'CAPA':
- icon = 'edit';
- break;
- case 'Sequence':
- icon = 'compass';
- break;
- default:
- icon = 'book';
- break;
- }
- return icon;
- },
-
- render: function() {
- var data = _.clone(this.model.attributes);
-
- // Drop the preview text and result type if the search term is found
- // in the title/location in the course hierarchy
- if (this.model.get('content_type') === 'Sequence') {
- data.excerpt = '';
- data.content_type = '';
- }
- data.unit_icon = this.unitIcon();
- data.excerptHtml = HtmlUtils.HTML(data.excerpt);
- delete data.excerpt;
- HtmlUtils.setHtml(this.$el, HtmlUtils.template(this.template)(data));
- return this;
- },
-
- /**
- * Redirect to a URL. Mainly useful for mocking out in tests.
- * @param {string} url The URL to redirect to.
- */
- redirect: function(url) {
- window.location.href = url;
- },
-
- logSearchItem: function(event) {
- var self = this;
- var target = this.model.id;
- var link = this.model.get('url');
- var collection = this.model.collection;
- var page = collection.page;
- var pageSize = collection.pageSize;
- var searchTerm = collection.searchTerm;
- var index = collection.indexOf(this.model);
-
- event.preventDefault();
-
- Logger.log('edx.course.search.result_selected', {
- search_term: searchTerm,
- result_position: (page * pageSize) + index,
- result_link: target
- }).always(function() {
- self.redirect(link);
- });
- }
-
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/js/views/search_results_view.js b/openedx/features/course_search/static/course_search/js/views/search_results_view.js
deleted file mode 100644
index ecce90d18174..000000000000
--- a/openedx/features/course_search/static/course_search/js/views/search_results_view.js
+++ /dev/null
@@ -1,121 +0,0 @@
-(function(define) {
- 'use strict';
-
- define([
- 'jquery',
- 'underscore',
- 'backbone',
- 'edx-ui-toolkit/js/utils/html-utils',
- 'edx-ui-toolkit/js/utils/string-utils',
- 'course_search/js/views/search_item_view',
- 'text!course_search/templates/search_loading.underscore',
- 'text!course_search/templates/search_error.underscore'
- ], function($, _, Backbone, HtmlUtils, StringUtils, SearchItemView, searchLoadingTemplate, searchErrorTemplate) {
- return Backbone.View.extend({
-
- // these should be defined by subclasses
- el: '',
- contentElement: '',
- resultsTemplate: null,
- itemTemplate: null,
- loadingTemplate: searchLoadingTemplate,
- errorTemplate: searchErrorTemplate,
- events: {},
- spinner: '.search-load-next .icon',
-
- initialize: function() {
- this.$contentElement = this.contentElement ? $(this.contentElement) : $([]);
- },
-
- render: function() {
- HtmlUtils.setHtml(this.$el, HtmlUtils.template(this.resultsTemplate)({
- totalCount: this.collection.totalCount,
- totalCountMsg: this.totalCountMsg(),
- pageSize: this.collection.pageSize,
- hasMoreResults: this.collection.hasNextPage(),
- searchTerm: this.collection.searchTerm
- }));
- this.renderItems();
- this.$el.find(this.spinner).hide();
- this.showResults();
- return this;
- },
-
- renderNext: function() {
- // total count may have changed
- this.$el.find('.search-count').text(this.totalCountMsg());
- this.renderItems();
- if (!this.collection.hasNextPage()) {
- this.$el.find('.search-load-next').remove();
- }
- this.$el.find(this.spinner).hide();
- },
-
- renderItems: function() {
- var latest = this.collection.latestModels();
- var items = latest.map(function(result) {
- var item = new SearchItemView({
- model: result,
- template: this.itemTemplate
- });
- return item.render().el;
- }, this);
- // xss-lint: disable=javascript-jquery-append
- this.$el.find('ol').append(items);
- },
-
- totalCountMsg: function() {
- var fmt = ngettext(
- '{total_results} result found for "{search_term}"',
- '{total_results} results found for "{search_term}"',
- this.collection.totalCount
- );
- return StringUtils.interpolate(fmt, {
- total_results: this.collection.totalCount,
- search_term: this.collection.searchTerm
- });
- },
-
- clear: function() {
- this.$el.hide().empty();
- this.$contentElement.show();
- },
-
- showResults: function() {
- this.$el.show();
- this.$contentElement.hide();
- },
-
- showLoadingMessage: function() {
- // Empty any previous loading/error message
- $('#loading-message').html('');
- $('#error-message').html('');
-
- // Show the loading message
- HtmlUtils.setHtml(this.$el, HtmlUtils.template(this.loadingTemplate)());
-
- // Show the results
- this.showResults();
- },
-
- showErrorMessage: function() {
- HtmlUtils.setHtml(
- this.$el,
- HtmlUtils.template(this.errorTemplate)({
- errorMessage: this.collection.errorMessage
- }));
- this.showResults();
- },
-
- loadNext: function(event) {
- if (event) {
- event.preventDefault();
- }
- this.$el.find(this.spinner).show();
- this.trigger('next');
- return false;
- }
-
- });
- });
-}(define || RequireJS.define));
diff --git a/openedx/features/course_search/static/course_search/templates/course_search_item.underscore b/openedx/features/course_search/static/course_search/templates/course_search_item.underscore
deleted file mode 100644
index 99f14cd218dc..000000000000
--- a/openedx/features/course_search/static/course_search/templates/course_search_item.underscore
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/openedx/features/course_search/static/course_search/templates/course_search_results.underscore b/openedx/features/course_search/static/course_search/templates/course_search_results.underscore
deleted file mode 100644
index 78040fc9b1cf..000000000000
--- a/openedx/features/course_search/static/course_search/templates/course_search_results.underscore
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
<%- totalCountMsg %>
-
-
-<% if (totalCount > 0 ) { %>
-
-
-
- <% if (hasMoreResults) { %>
-
- <%-
- StringUtils.interpolate(
- ngettext("Load next {num_items} result", "Load next {num_items} results", pageSize),
- {
- num_items: pageSize
- }
- )
- %>
-
-
- <% } %>
-
-<% } else { %>
-
-
<%- gettext("Sorry, no results were found.") %>
-
-<% } %>
diff --git a/openedx/features/course_search/static/course_search/templates/dashboard_search_item.underscore b/openedx/features/course_search/static/course_search/templates/dashboard_search_item.underscore
deleted file mode 100644
index 3e0486974506..000000000000
--- a/openedx/features/course_search/static/course_search/templates/dashboard_search_item.underscore
+++ /dev/null
@@ -1,5 +0,0 @@
-
<%= HtmlUtils.ensureHtml(excerptHtml) %>
-
<%- gettext("View") %>
-
<%- course_name %>:
-
<%- location.join(' ▸ ') %>
-
<%- content_type %>
diff --git a/openedx/features/course_search/static/course_search/templates/dashboard_search_results.underscore b/openedx/features/course_search/static/course_search/templates/dashboard_search_results.underscore
deleted file mode 100644
index 8a7b94163300..000000000000
--- a/openedx/features/course_search/static/course_search/templates/dashboard_search_results.underscore
+++ /dev/null
@@ -1,28 +0,0 @@
-
- <%- gettext("Search Results") %>
- <%- totalCountMsg %>
-
-
-<% if (totalCount > 0 ) { %>
-
-
-
- <% if (hasMoreResults) { %>
-
- <%-
- StringUtils.interpolate(
- ngettext("Load next {num_items} result", "Load next {num_items} results", pageSize),
- {
- num_items: pageSize
- }
- )
- %>
-
-
- <% } %>
-
-<% } else { %>
-
-
<%- gettext("Sorry, no results were found.") %>
-
-<% } %>
diff --git a/openedx/features/course_search/static/course_search/templates/search_error.underscore b/openedx/features/course_search/static/course_search/templates/search_error.underscore
deleted file mode 100644
index 4d4dcbe4972a..000000000000
--- a/openedx/features/course_search/static/course_search/templates/search_error.underscore
+++ /dev/null
@@ -1 +0,0 @@
-<% if (errorMessage) { %><%- errorMessage %><%} else {%><%- gettext("There was an error, try searching again.") %><% } %>
diff --git a/openedx/features/course_search/static/course_search/templates/search_loading.underscore b/openedx/features/course_search/static/course_search/templates/search_loading.underscore
deleted file mode 100644
index 8b6601544236..000000000000
--- a/openedx/features/course_search/static/course_search/templates/search_loading.underscore
+++ /dev/null
@@ -1,2 +0,0 @@
-
<%- gettext("Loading") %>
-