From c45de5c32b02976a2dd264dbd9e586bb715aa986 Mon Sep 17 00:00:00 2001 From: Calen Pennington <calen.pennington@gmail.com> Date: Wed, 28 Feb 2018 11:06:39 -0500 Subject: [PATCH] =?UTF-8?q?Revert=20"Revert=20"Revert=20"Merge=20pull=20re?= =?UTF-8?q?quest=20#17325=20from=20cpennington/switch-ass=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/static/cms/js/build.js | 1 + cms/static/js/factories/base.js | 6 +- cms/static/js/pages/asset_index.js | 7 -- cms/static/js/pages/course.js | 11 -- cms/static/js/pages/login.js | 2 +- cms/static/js/sock.js | 7 +- cms/templates/asset_index.html | 18 +-- cms/templates/base.html | 56 ++++----- .../templates/static_content.html | 24 ++-- common/djangoapps/terrain/ui_helpers.py | 6 + webpack-config/file-lists.js | 108 ------------------ webpack.common.config.js | 91 ++++----------- 12 files changed, 75 insertions(+), 262 deletions(-) delete mode 100644 cms/static/js/pages/asset_index.js delete mode 100644 cms/static/js/pages/course.js delete mode 100644 webpack-config/file-lists.js diff --git a/cms/static/cms/js/build.js b/cms/static/cms/js/build.js index a92365aaece..3f86a8c891e 100644 --- a/cms/static/cms/js/build.js +++ b/cms/static/cms/js/build.js @@ -17,6 +17,7 @@ * done. */ modules: getModulesList([ + 'js/factories/asset_index', 'js/factories/base', 'js/factories/container', 'js/factories/course_create_rerun', diff --git a/cms/static/js/factories/base.js b/cms/static/js/factories/base.js index 7f61b473c9e..abaeb89d17a 100644 --- a/cms/static/js/factories/base.js +++ b/cms/static/js/factories/base.js @@ -1,6 +1,2 @@ define(['js/base', 'cms/js/main', 'js/src/logger', 'datepair', 'accessibility', - 'ieshim', 'tooltip_manager', 'lang_edx', 'js/models/course'], - function() { - 'use strict'; - } -); + 'ieshim', 'tooltip_manager', 'lang_edx', 'js/models/course']); diff --git a/cms/static/js/pages/asset_index.js b/cms/static/js/pages/asset_index.js deleted file mode 100644 index 4644fac60e9..00000000000 --- a/cms/static/js/pages/asset_index.js +++ /dev/null @@ -1,7 +0,0 @@ -define( - ['js/factories/asset_index', 'common/js/utils/page_factory', 'js/factories/base'], - function(AssetIndexFactory, invokePageFactory) { - 'use strict'; - invokePageFactory('AssetIndexFactory', AssetIndexFactory); - } -); diff --git a/cms/static/js/pages/course.js b/cms/static/js/pages/course.js deleted file mode 100644 index 892f6c6acb7..00000000000 --- a/cms/static/js/pages/course.js +++ /dev/null @@ -1,11 +0,0 @@ -(function(define) { - 'use strict'; - - define( - ['js/models/course'], - function(ContextCourse) { - window.course = new ContextCourse(window.pageFactoryArguments.ContextCourse[0]); - } - ); -}).call(this, define || RequireJS.define); - diff --git a/cms/static/js/pages/login.js b/cms/static/js/pages/login.js index 449a1190f64..8caff6a8338 100644 --- a/cms/static/js/pages/login.js +++ b/cms/static/js/pages/login.js @@ -1,5 +1,5 @@ define( - ['js/factories/login', 'common/js/utils/page_factory', 'js/factories/base'], + ['js/factories/login', 'common/js/utils/page_factory'], function(LoginFactory, invokePageFactory) { 'use strict'; invokePageFactory('LoginFactory', LoginFactory); diff --git a/cms/static/js/sock.js b/cms/static/js/sock.js index 44653981ff6..9a536a3c78d 100644 --- a/cms/static/js/sock.js +++ b/cms/static/js/sock.js @@ -1,7 +1,5 @@ -define(['domReady', 'jquery', 'jquery.smoothScroll'], +require(['domReady', 'jquery', 'jquery.smoothScroll'], function(domReady, $) { - 'use strict'; - var toggleSock = function(e) { e.preventDefault(); @@ -35,5 +33,4 @@ define(['domReady', 'jquery', 'jquery.smoothScroll'], // toggling footer additional support $('.cta-show-sock').bind('click', toggleSock); }); - } -); + }); diff --git a/cms/templates/asset_index.html b/cms/templates/asset_index.html index 2b1c0a943e2..8d323b7a4ab 100644 --- a/cms/templates/asset_index.html +++ b/cms/templates/asset_index.html @@ -28,16 +28,16 @@ % endif </%block> -<%block name="page_bundle"> +<%block name="requirejs"> % if not waffle_flag_enabled: - <%static:invoke_page_bundle page_name="js/pages/asset_index" class_name="AssetIndexFactory"> - { - assetCallbackUrl: "${asset_callback_url|n, js_escaped_string}", - uploadChunkSizeInMBs: ${ chunk_size_in_mbs| n, dump_js_escaped_json }, - maxFileSizeInMBs: ${ max_file_size_in_mbs| n, dump_js_escaped_json }, - maxFileSizeRedirectUrl: "${max_file_size_redirect_url|n, js_escaped_string}" - } - </%static:invoke_page_bundle> + require(["js/factories/asset_index"], function (AssetIndexFactory) { + AssetIndexFactory({ + assetCallbackUrl: "${asset_callback_url|n, js_escaped_string}", + uploadChunkSizeInMBs: ${chunk_size_in_mbs|n, dump_js_escaped_json}, + maxFileSizeInMBs: ${max_file_size_in_mbs|n, dump_js_escaped_json}, + maxFileSizeRedirectUrl: "${max_file_size_redirect_url|n, js_escaped_string}" + }); + }); % endif </%block> diff --git a/cms/templates/base.html b/cms/templates/base.html index f4e7907954f..631db5a72aa 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -121,39 +121,29 @@ from openedx.core.djangolib.markup import HTML <%block name="modal_placeholder"></%block> <%block name="jsextra"></%block> - - % if context_course: - <script type="text/javascript"> - if (typeof window.pageFactoryArguments == "undefined") { - window.pageFactoryArguments = {}; - } - - window.pageFactoryArguments['ContextCourse'] = { - id: "${context_course.id | n, js_escaped_string}", - name: "${context_course.display_name_with_default | n, js_escaped_string}", - url_name: "${context_course.location.block_id | n, js_escaped_string}", - org: "${context_course.location.org | n, js_escaped_string}", - num: "${context_course.location.course | n, js_escaped_string}", - display_course_number: "${context_course.display_coursenumber | n, js_escaped_string}", - revision: "${context_course.location.branch | n, js_escaped_string}", - self_paced: ${ context_course.self_paced | n, dump_js_escaped_json } - } - </script> - % endif - % if user.is_authenticated(): - <%static:invoke_page_bundle page_name='js/sock'/> - % endif - <%block name='page_bundle'> - <script type="text/javascript"> - require(['js/factories/base'], function () { - require(['js/models/course'], function(Course) { - % if context_course: - window.course = new Course(window.pageFactoryArguments['ContextCourse']); - % endif - <%block name='requirejs'></%block> - }); - }); - </script> + <%block name="page_bundle"> + <script type="text/javascript"> + require(['js/factories/base'], function () { + require(['js/models/course'], function(Course) { + % if context_course: + window.course = new Course({ + id: "${context_course.id | n, js_escaped_string}", + name: "${context_course.display_name_with_default | n, js_escaped_string}", + url_name: "${context_course.location.block_id | n, js_escaped_string}", + org: "${context_course.location.org | n, js_escaped_string}", + num: "${context_course.location.course | n, js_escaped_string}", + display_course_number: "${context_course.display_coursenumber | n, js_escaped_string}", + revision: "${context_course.location.branch | n, js_escaped_string}", + self_paced: ${context_course.self_paced | n, dump_js_escaped_json} + }); + % endif + % if user.is_authenticated(): + require(['js/sock']); + % endif + <%block name='requirejs'></%block> + }); + }); + </script> </%block> <%include file="widgets/segment-io-footer.html" /> <div class="modal-cover"></div> diff --git a/common/djangoapps/pipeline_mako/templates/static_content.html b/common/djangoapps/pipeline_mako/templates/static_content.html index 6f7db5be07c..068bf4d7547 100644 --- a/common/djangoapps/pipeline_mako/templates/static_content.html +++ b/common/djangoapps/pipeline_mako/templates/static_content.html @@ -164,7 +164,7 @@ source, template_path = Loader(engine).load_template_source(path) </script> </%def> -<%def name="invoke_page_bundle(page_name, class_name=None)"> +<%def name="invoke_page_bundle(page_name, class_name)"> <%doc> Loads Javascript onto your page synchronously. Uses RequireJS in development and a plain script tag in production. @@ -174,18 +174,16 @@ source, template_path = Loader(engine).load_template_source(path) <% body = capture(caller.body) %> - % if class_name: - <script type="text/javascript"> - if (typeof pageFactoryArguments == "undefined") { - var pageFactoryArguments = {}; - } - % if body: - pageFactoryArguments['${class_name | n, js_escaped_string}'] = [${ body | n, decode.utf8 }]; - % else: - pageFactoryArguments['${class_name | n, js_escaped_string}'] = []; - % endif - </script> - % endif + <script type="text/javascript"> + if (typeof pageFactoryArguments == "undefined") { + var pageFactoryArguments = {}; + } + % if body: + pageFactoryArguments['${class_name | n, js_escaped_string}'] = [${ body | n, decode.utf8 }]; + % else: + pageFactoryArguments['${class_name | n, js_escaped_string}'] = []; + % endif + </script> <%self:webpack entry="${page_name}"/> </%def> diff --git a/common/djangoapps/terrain/ui_helpers.py b/common/djangoapps/terrain/ui_helpers.py index a5ed62268f4..86aa39ca4b6 100644 --- a/common/djangoapps/terrain/ui_helpers.py +++ b/common/djangoapps/terrain/ui_helpers.py @@ -51,6 +51,12 @@ REQUIREJS_WAIT = { "js/sock", "gettext", "js/base", "jquery.ui", "cms/js/main", "underscore"], + # Upload + re.compile(r'^\s*Files & Uploads'): [ + 'js/base', 'jquery.ui', 'cms/js/main', 'underscore', + 'js/views/assets', 'js/views/asset' + ], + # Pages re.compile(r'^Pages \|'): [ 'js/models/explicit_url', 'js/views/tabs', diff --git a/webpack-config/file-lists.js b/webpack-config/file-lists.js deleted file mode 100644 index fde698a0ab6..00000000000 --- a/webpack-config/file-lists.js +++ /dev/null @@ -1,108 +0,0 @@ -var path = require('path'); - -module.exports = { - namespacedRequire: [ - path.resolve(__dirname, '../common/static/common/js/components/views/feedback_notification.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/feedback_prompt.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/feedback.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/paging_footer.js'), - path.resolve(__dirname, '../cms/static/js/views/paging.js'), - path.resolve(__dirname, '../common/static/common/js/components/utils/view_utils.js') - ], - - // These files are used by RequireJS as well, so we can't remove - // the instances of "text!some/file.underscore" (which webpack currently - // processes twice). So instead we have webpack dynamically remove the `text!` prefix - // until we can remove RequireJS from the system. - textBangUnderscore: [ - path.resolve(__dirname, '../cms/static/js/certificates/views/certificate_details.js'), - path.resolve(__dirname, '../cms/static/js/certificates/views/certificate_editor.js'), - path.resolve(__dirname, '../cms/static/js/certificates/views/certificate_preview.js'), - path.resolve(__dirname, '../cms/static/js/certificates/views/signatory_details.js'), - path.resolve(__dirname, '../cms/static/js/certificates/views/signatory_editor.js'), - path.resolve(__dirname, '../cms/static/js/views/active_video_upload_list.js'), - path.resolve(__dirname, '../cms/static/js/views/assets.js'), - path.resolve(__dirname, '../cms/static/js/views/course_video_settings.js'), - path.resolve(__dirname, '../cms/static/js/views/edit_chapter.js'), - path.resolve(__dirname, '../cms/static/js/views/experiment_group_edit.js'), - path.resolve(__dirname, '../cms/static/js/views/license.js'), - path.resolve(__dirname, '../cms/static/js/views/modals/move_xblock_modal.js'), - path.resolve(__dirname, '../cms/static/js/views/move_xblock_breadcrumb.js'), - path.resolve(__dirname, '../cms/static/js/views/move_xblock_list.js'), - path.resolve(__dirname, '../cms/static/js/views/paging_header.js'), - path.resolve(__dirname, '../cms/static/js/views/previous_video_upload_list.js'), - path.resolve(__dirname, '../cms/static/js/views/previous_video_upload.js'), - path.resolve(__dirname, '../cms/static/js/views/video_thumbnail.js'), - path.resolve(__dirname, '../cms/static/js/views/video_transcripts.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/feedback.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/paginated_view.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/paging_footer.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/paging_header.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/progress_circle_view.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/search_field.js'), - path.resolve(__dirname, '../common/static/common/js/components/views/tabbed_view.js'), - path.resolve(__dirname, '../lms/djangoapps/discussion/static/discussion/js/views/discussion_board_view.js'), - path.resolve(__dirname, '../lms/djangoapps/discussion/static/discussion/js/views/discussion_fake_breadcrumbs.js'), - path.resolve(__dirname, '../lms/djangoapps/discussion/static/discussion/js/views/discussion_search_view.js'), - path.resolve(__dirname, '../lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js'), - path.resolve(__dirname, '../lms/djangoapps/support/static/support/js/views/certificates.js'), - path.resolve(__dirname, '../lms/djangoapps/support/static/support/js/views/enrollment_modal.js'), - path.resolve(__dirname, '../lms/djangoapps/support/static/support/js/views/enrollment.js'), - path.resolve(__dirname, '../lms/djangoapps/support/static/support/js/views/manage_user.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/edit_team_members.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/edit_team.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/instructor_tools.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/team_card.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/team_profile_header_actions.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/team_profile.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/teams_tab.js'), - path.resolve(__dirname, '../lms/djangoapps/teams/static/teams/js/views/topic_teams.js'), - path.resolve(__dirname, '../lms/static/js/api_admin/views/catalog_preview.js'), - path.resolve(__dirname, '../lms/static/js/components/card/views/card.js'), - path.resolve(__dirname, '../lms/static/js/components/header/views/header.js'), - path.resolve(__dirname, '../lms/static/js/financial-assistance/views/financial_assistance_form_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/certificate_list_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/certificate_status_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/collection_list_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/course_card_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/course_enroll_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/course_entitlement_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/expired_notification_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/explore_new_programs_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/program_card_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/program_details_sidebar_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/program_details_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/program_header_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/sidebar_view.js'), - path.resolve(__dirname, '../lms/static/js/learner_dashboard/views/upgrade_message_view.js'), - path.resolve(__dirname, '../lms/static/js/student_account/views/account_section_view.js'), - path.resolve(__dirname, '../lms/static/js/student_account/views/account_settings_fields.js'), - path.resolve(__dirname, '../lms/static/js/student_account/views/account_settings_view.js'), - path.resolve(__dirname, '../lms/static/js/student_account/views/FormView.js'), - path.resolve(__dirname, '../lms/static/js/student_account/views/LoginView.js'), - path.resolve(__dirname, '../lms/static/js/student_account/views/RegisterView.js'), - path.resolve(__dirname, '../lms/static/js/views/fields.js'), - path.resolve(__dirname, '../lms/static/js/views/image_field.js'), - path.resolve(__dirname, '../lms/static/js/views/message_banner.js'), - path.resolve(__dirname, '../openedx/features/course_bookmarks/static/course_bookmarks/js/views/bookmarks_list.js'), - path.resolve(__dirname, '../openedx/features/course_search/static/course_search/js/spec/course_search_spec.js'), - path.resolve( - __dirname, - 'openedx/features/course_search/static/course_search/js/views/course_search_results_view.js' - ), - path.resolve( - __dirname, - 'openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js' - ), - path.resolve(__dirname, '../openedx/features/course_search/static/course_search/js/views/search_results_view.js'), - path.resolve(__dirname, '../openedx/features/learner_profile/static/learner_profile/js/views/badge_list_container.js'), - path.resolve(__dirname, '../openedx/features/learner_profile/static/learner_profile/js/views/badge_list_view.js'), - path.resolve(__dirname, '../openedx/features/learner_profile/static/learner_profile/js/views/badge_view.js'), - path.resolve( - __dirname, - 'openedx/features/learner_profile/static/learner_profile/js/views/learner_profile_fields.js' - ), - path.resolve(__dirname, '../openedx/features/learner_profile/static/learner_profile/js/views/section_two_tab.js'), - path.resolve(__dirname, '../openedx/features/learner_profile/static/learner_profile/js/views/share_modal_view.js') - ] -} diff --git a/webpack.common.config.js b/webpack.common.config.js index 728169d47fe..bc5693410b8 100644 --- a/webpack.common.config.js +++ b/webpack.common.config.js @@ -7,7 +7,12 @@ var webpack = require('webpack'); var BundleTracker = require('webpack-bundle-tracker'); var StringReplace = require('string-replace-webpack-plugin'); -var files = require('./webpack-config/file-lists.js'); +var namespacedRequireFiles = [ + path.resolve(__dirname, 'common/static/common/js/components/views/feedback_notification.js'), + path.resolve(__dirname, 'common/static/common/js/components/views/feedback_prompt.js'), + path.resolve(__dirname, 'common/static/common/js/components/views/feedback.js'), + path.resolve(__dirname, 'common/static/common/js/components/utils/view_utils.js') +]; var defineHeader = /\(function ?\(define(, require)?\) ?\{/; var defineFooter = /\}\)\.call\(this, define \|\| RequireJS\.define(, require \|\| RequireJS\.require)?\);/; @@ -20,8 +25,6 @@ module.exports = { Import: './cms/static/js/features/import/factories/import.js', CourseOrLibraryListing: './cms/static/js/features_jsx/studio/CourseOrLibraryListing.jsx', 'js/pages/login': './cms/static/js/pages/login.js', - 'js/pages/asset_index': './cms/static/js/pages/asset_index.js', - 'js/sock': './cms/static/js/sock.js', // LMS SingleSupportForm: './lms/static/support/jsx/single_support_form.jsx', @@ -94,7 +97,7 @@ module.exports = { ], rules: [ { - test: files.namespacedRequire, + test: namespacedRequireFiles, loader: StringReplace.replace( ['babel-loader'], { @@ -111,26 +114,11 @@ module.exports = { } ) }, - { - test: files.textBangUnderscore, - loader: StringReplace.replace( - ['babel-loader'], - { - replacements: [ - { - pattern: /text!(.*\.underscore)/, - replacement: function(match, p1) { return p1; } - } - ] - } - ) - }, { test: /\.(js|jsx)$/, exclude: [ /node_modules/, - files.namespacedRequire, - files.textBangUnderscore + namespacedRequireFiles ], use: 'babel-loader' }, @@ -142,16 +130,9 @@ module.exports = { use: 'babel-loader' }, { - test: path.resolve(__dirname, 'common/static/coffee/src/ajax_prefix.js'), - use: [ - 'babel-loader', - { - loader: 'exports-loader', - options: { - 'this.AjaxPrefix': true - } - } - ] + test: /\.coffee$/, + exclude: /node_modules/, + use: 'coffee-loader' }, { test: /\.underscore$/, @@ -161,34 +142,13 @@ module.exports = { // This file is used by both RequireJS and Webpack and depends on window globals // This is a dirty hack and shouldn't be replicated for other files. test: path.resolve(__dirname, 'cms/static/cms/js/main.js'), - loader: StringReplace.replace( - ['babel-loader'], - { - replacements: [ - { - pattern: /\(function\(AjaxPrefix\) {/, - replacement: function() { return ''; } - }, - { - pattern: /], function\(domReady, \$, str, Backbone, gettext, NotificationView\) {/, - replacement: function() { - // eslint-disable-next-line - return '], function(domReady, $, str, Backbone, gettext, NotificationView, AjaxPrefix) {'; - } - }, - { - pattern: /'..\/..\/common\/js\/components\/views\/feedback_notification',/, - replacement: function() { - return "'../../common/js/components/views/feedback_notification', 'AjaxPrefix',"; - } - }, - { - pattern: /}\).call\(this, AjaxPrefix\);/, - replacement: function() { return ''; } - } - ] + use: { + loader: 'imports-loader', + options: { + AjaxPrefix: + 'exports-loader?this.AjaxPrefix!../../../../common/static/coffee/src/ajax_prefix.coffee' } - ) + } }, { test: /\.(woff2?|ttf|svg|eot)(\?v=\d+\.\d+\.\d+)?$/, @@ -198,9 +158,8 @@ module.exports = { }, resolve: { - extensions: ['.js', '.jsx', '.json'], + extensions: ['.js', '.jsx', '.json', '.coffee'], alias: { - AjaxPrefix: 'ajax_prefix', 'edx-ui-toolkit': 'edx-ui-toolkit/src/', // @TODO: some paths in toolkit are not valid relative paths 'jquery.ui': 'jQuery-File-Upload/js/vendor/jquery.ui.widget.js', jquery: 'jquery/src/jquery', // Use the non-dist form of jQuery for better debugging + optimization @@ -209,21 +168,13 @@ module.exports = { // https://github.com/webpack/webpack/issues/304#issuecomment-272150177 // (I've tried every other suggestion solution on that page, this // was the only one that worked.) - sinon: __dirname + '/node_modules/sinon/pkg/sinon.js', - 'jquery.smoothScroll': 'jquery.smooth-scroll.min', - 'jquery.timepicker': 'timepicker/jquery.timepicker', - datepair: 'timepicker/datepair', - accessibility: 'accessibility_tools', - ieshim: 'ie_shim' + sinon: __dirname + '/node_modules/sinon/pkg/sinon.js' }, modules: [ 'node_modules', - 'cms/static', - 'common/static', - 'common/static/js/src', 'common/static/js/vendor/', - 'common/static/js/vendor/jQuery-File-Upload/js/', - 'common/static/coffee/src' + 'cms/static', + 'common/static/js/src' ] }, -- GitLab