Skip to content

Commit 0096c80

Browse files
andy-armstrongdianakhuang
authored andcommittedJun 13, 2017
Refactor course search into openedx/features
1 parent 7721237 commit 0096c80

34 files changed

+197
-284
lines changed
 

‎lms/envs/common.py

+1
Original file line numberDiff line numberDiff line change
@@ -2230,6 +2230,7 @@
22302230
# Features
22312231
'openedx.features.course_bookmarks',
22322232
'openedx.features.course_experience',
2233+
'openedx.features.course_search',
22332234
'openedx.features.enterprise_support',
22342235
)
22352236

‎lms/static/course_search

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../openedx/features/course_search/static/course_search

‎lms/static/js/search/course/views/search_form.js

-11
This file was deleted.

‎lms/static/js/search/course/views/search_item_view.js

-11
This file was deleted.

‎lms/static/js/search/dashboard/views/search_form.js

-11
This file was deleted.

‎lms/static/js/search/dashboard/views/search_item_view.js

-11
This file was deleted.

‎lms/static/karma_lms.conf.js

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ var options = {
2828
sourceFiles: [
2929
{pattern: 'coffee/src/**/!(*spec).js'},
3030
{pattern: 'course_bookmarks/**/!(*spec).js'},
31+
{pattern: 'course_search/**/!(*spec).js'},
3132
{pattern: 'discussion/js/**/!(*spec).js'},
3233
{pattern: 'js/**/!(*spec|djangojs).js'},
3334
{pattern: 'lms/js/**/!(*spec).js'},

‎lms/static/lms/js/build.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
*/
2020
modules: getModulesList([
2121
'course_bookmarks/js/course_bookmarks_factory',
22+
'course_search/js/course_search_factory',
23+
'course_search/js/dashboard_search_factory',
2224
'discussion/js/discussion_board_factory',
2325
'discussion/js/discussion_profile_page_factory',
2426
'js/api_admin/catalog_preview_factory',
@@ -32,8 +34,6 @@
3234
'js/header_factory',
3335
'js/learner_dashboard/program_details_factory',
3436
'js/learner_dashboard/program_list_factory',
35-
'js/search/course/course_search_factory',
36-
'js/search/dashboard/dashboard_search_factory',
3737
'js/student_account/logistration_factory',
3838
'js/student_account/views/account_settings_factory',
3939
'js/student_account/views/finish_auth_factory',

‎lms/static/lms/js/spec/main.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -676,6 +676,7 @@
676676
'course_bookmarks/js/spec/bookmark_button_view_spec.js',
677677
'course_bookmarks/js/spec/bookmarks_list_view_spec.js',
678678
'course_bookmarks/js/spec/course_bookmarks_factory_spec.js',
679+
'course_search/js/spec/search_spec.js',
679680
'discussion/js/spec/discussion_board_factory_spec.js',
680681
'discussion/js/spec/discussion_profile_page_factory_spec.js',
681682
'discussion/js/spec/discussion_board_view_spec.js',
@@ -749,7 +750,6 @@
749750
'js/spec/markdown_editor_spec.js',
750751
'js/spec/dateutil_factory_spec.js',
751752
'js/spec/navigation_spec.js',
752-
'js/spec/search/search_spec.js',
753753
'js/spec/shoppingcart/shoppingcart_spec.js',
754754
'js/spec/staff_debug_actions_spec.js',
755755
'js/spec/student_account/access_spec.js',

‎lms/templates/courseware/courseware.html

+1-9
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,6 @@
3737
</script>
3838
% endfor
3939

40-
% if settings.FEATURES.get('ENABLE_COURSEWARE_SEARCH'):
41-
% for template_name in ["course_search_item", "course_search_results", "search_loading", "search_error"]:
42-
<script type="text/template" id="${template_name}-tpl">
43-
<%static:include path="search/${template_name}.underscore" />
44-
</script>
45-
% endfor
46-
% endif
47-
4840
% if include_special_exams is not UNDEFINED and include_special_exams:
4941
% for template_name in ["proctored-exam-status"]:
5042
<script type="text/template" id="${template_name}-tpl">
@@ -81,7 +73,7 @@
8173
<%include file="/mathjax_include.html" args="disable_fast_preview=True"/>
8274

8375
% if settings.FEATURES.get('ENABLE_COURSEWARE_SEARCH'):
84-
<%static:require_module module_name="js/search/course/course_search_factory" class_name="CourseSearchFactory">
76+
<%static:require_module module_name="course_search/js/course_search_factory" class_name="CourseSearchFactory">
8577
var courseId = $('.courseware-results').data('courseId');
8678
CourseSearchFactory(courseId);
8779
</%static:require_module>

‎lms/templates/dashboard.html

+1-7
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@
2828
<%static:include path="dashboard/${template_name}.underscore" />
2929
</script>
3030
% endfor
31-
32-
% for template_name in ["dashboard_search_item", "dashboard_search_results", "search_loading", "search_error"]:
33-
<script type="text/template" id="${template_name}-tpl">
34-
<%static:include path="search/${template_name}.underscore" />
35-
</script>
36-
% endfor
3731
</%block>
3832

3933
<%block name="js_extra">
@@ -49,7 +43,7 @@
4943
});
5044
</script>
5145
% if settings.FEATURES.get('ENABLE_DASHBOARD_SEARCH'):
52-
<%static:require_module module_name="js/search/dashboard/dashboard_search_factory" class_name="DashboardSearchFactory">
46+
<%static:require_module module_name="course_search/js/dashboard/dashboard_search_factory" class_name="DashboardSearchFactory">
5347
DashboardSearchFactory();
5448
</%static:require_module>
5549
% endif

‎openedx/features/course_bookmarks/urls.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
Defines URLs for the course experience.
2+
Defines URLs for course bookmarks.
33
"""
44

55
from django.conf.urls import url

‎lms/static/js/search/base/collections/search_collection.js ‎openedx/features/course_search/static/course_search/js/collections/search_collection.js

+20-13
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
(function(define) {
2+
'use strict';
3+
24
define([
5+
'underscore',
36
'backbone',
4-
'js/search/base/models/search_result'
5-
], function(Backbone, SearchResult) {
6-
'use strict';
7-
7+
'course_search/js/models/search_result'
8+
], function(_, Backbone, SearchResult) {
89
return Backbone.Collection.extend({
910

1011
model: SearchResult,
@@ -26,7 +27,9 @@
2627
},
2728

2829
performSearch: function(searchTerm) {
29-
this.fetchXhr && this.fetchXhr.abort();
30+
if (this.fetchXhr) {
31+
this.fetchXhr.abort();
32+
}
3033
this.searchTerm = searchTerm || '';
3134
this.resetState();
3235
this.fetchXhr = this.fetch({
@@ -36,29 +39,31 @@
3639
page_index: 0
3740
},
3841
type: 'POST',
39-
success: function(self, xhr) {
42+
success: function(self) {
4043
self.trigger('search');
4144
},
42-
error: function(self, xhr) {
45+
error: function(self) {
4346
self.trigger('error');
4447
}
4548
});
4649
},
4750

4851
loadNextPage: function() {
49-
this.fetchXhr && this.fetchXhr.abort();
52+
if (this.fetchXhr) {
53+
this.fetchXhr.abort();
54+
}
5055
this.fetchXhr = this.fetch({
5156
data: {
5257
search_string: this.searchTerm,
5358
page_size: this.pageSize,
5459
page_index: this.page + 1
5560
},
5661
type: 'POST',
57-
success: function(self, xhr) {
58-
self.page += 1;
62+
success: function(self) {
63+
self.page += 1; // eslint-disable-line no-param-reassign
5964
self.trigger('next');
6065
},
61-
error: function(self, xhr) {
66+
error: function(self) {
6267
self.trigger('error');
6368
},
6469
add: true,
@@ -68,7 +73,9 @@
6873
},
6974

7075
cancelSearch: function() {
71-
this.fetchXhr && this.fetchXhr.abort();
76+
if (this.fetchXhr) {
77+
this.fetchXhr.abort();
78+
}
7279
this.resetState();
7380
},
7481

@@ -101,4 +108,4 @@
101108

102109
});
103110
});
104-
})(define || RequireJS.define);
111+
}(define || RequireJS.define));

‎lms/static/js/search/course/course_search_factory.js ‎openedx/features/course_search/static/course_search/js/course_search_factory.js

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
(function(define) {
22
'use strict';
33

4-
define(['backbone', 'js/search/base/routers/search_router', 'js/search/course/views/search_form',
5-
'js/search/base/collections/search_collection', 'js/search/course/views/search_results_view'],
6-
function(Backbone, SearchRouter, CourseSearchForm, SearchCollection, SearchResultsView) {
4+
define([
5+
'underscore', 'backbone', 'course_search/js/search_router', 'course_search/js/views/search_form',
6+
'course_search/js/collections/search_collection', 'course_search/js/views/course_search_results_view'
7+
],
8+
function(_, Backbone, SearchRouter, CourseSearchForm, SearchCollection, CourseSearchResultsView) {
79
return function(courseId) {
810
var router = new SearchRouter();
911
var form = new CourseSearchForm();
1012
var collection = new SearchCollection([], {courseId: courseId});
11-
var results = new SearchResultsView({collection: collection});
13+
var results = new CourseSearchResultsView({collection: collection});
1214
var dispatcher = _.clone(Backbone.Events);
1315

1416
dispatcher.listenTo(router, 'search', function(query) {
@@ -44,4 +46,4 @@
4446
});
4547
};
4648
});
47-
})(define || RequireJS.define);
49+
}(define || RequireJS.define));

‎lms/static/js/search/dashboard/dashboard_search_factory.js ‎openedx/features/course_search/static/course_search/js/dashboard_search_factory.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
(function(define) {
22
'use strict';
33

4-
define(['backbone', 'js/search/base/routers/search_router', 'js/search/dashboard/views/search_form',
5-
'js/search/base/collections/search_collection', 'js/search/dashboard/views/search_results_view'],
6-
function(Backbone, SearchRouter, SearchForm, SearchCollection, SearchListView) {
4+
define([
5+
'underscore', 'backbone', 'course_search/js/search_router', 'course_search/js/views/search_form',
6+
'course_search/js/collections/search_collection', 'course_search/js/views/dashboard_search_results_view'
7+
],
8+
function(_, Backbone, SearchRouter, SearchForm, SearchCollection, SearchListView) {
79
return function() {
810
var router = new SearchRouter();
9-
var form = new SearchForm();
11+
var form = new SearchForm({
12+
el: $('#dashboard-search-bar')
13+
});
1014
var collection = new SearchCollection([]);
1115
var results = new SearchListView({collection: collection});
1216
var dispatcher = _.clone(Backbone.Events);
@@ -48,4 +52,4 @@
4852
});
4953
};
5054
});
51-
})(define || RequireJS.define);
55+
}(define || RequireJS.define));
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(function(define) {
2-
define(['backbone'], function(Backbone) {
3-
'use strict';
2+
'use strict';
43

4+
define(['backbone'], function(Backbone) {
55
return Backbone.Model.extend({
66
defaults: {
77
location: [],
@@ -11,4 +11,4 @@
1111
}
1212
});
1313
});
14-
})(define || RequireJS.define);
14+
}(define || RequireJS.define));
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(function(define) {
2-
define(['backbone'], function(Backbone) {
3-
'use strict';
2+
'use strict';
43

4+
define(['backbone'], function(Backbone) {
55
return Backbone.Router.extend({
66
routes: {
77
'search/:query': 'search'
@@ -11,4 +11,4 @@
1111
}
1212
});
1313
});
14-
})(define || RequireJS.define);
14+
}(define || RequireJS.define));

0 commit comments

Comments
 (0)
Please sign in to comment.