Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,521 changes: 512 additions & 1,009 deletions package-lock.json

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions xblocks_contrib/discussion/assets/jasmine.common.conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/* eslint-env node */

'use strict';

// By default, fixtures are loaded from spec/javascripts/fixtures but in karma everything gets served from /base
jasmine.getFixtures().fixturesPath = '/base/static/spec/fixtures/';

// https://github.com/edx/js-test-tool/blob/master/js_test_tool/templates/jasmine_test_runner.html#L10
// Stub out modal dialog alerts, which will prevent
// us from accessing the test results in the DOM
window.confirm = function() { return true; };
window.alert = function() { };
112 changes: 112 additions & 0 deletions xblocks_contrib/discussion/assets/karma.conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/* eslint-env node */
'use strict';

const path = require('path');

const discussionRoot = __dirname;
const uiToolkitRoot = path.dirname(require.resolve('edx-ui-toolkit/package.json'));

module.exports = function (config) {
config.set({
basePath: discussionRoot,

frameworks: ['jasmine'],

files: [
{ pattern: require.resolve('jquery/dist/jquery.js'), included: true },
{ pattern: require.resolve('jasmine-jquery/lib/jasmine-jquery.js'), included: true },
{ pattern: require.resolve('underscore/underscore.js'), included: true },
{ pattern: require.resolve('backbone/backbone.js'), included: true },
{ pattern: path.join(uiToolkitRoot, 'src/js/utils/global-loader.js'), included: true },
{ pattern: path.join(uiToolkitRoot, 'src/js/utils/string-utils.js'), included: true },
{ pattern: path.join(uiToolkitRoot, 'src/js/utils/html-utils.js'), included: true },
{ pattern: 'static/spec/spec_helpers/i18n.js', included: true },
{ pattern: 'jasmine.common.conf.js', included: true },
{ pattern: require.resolve('draggabilly/dist/draggabilly.pkgd.js'), included: true },
{ pattern: 'static/js/vendor/URI.min.js', included: true },
{ pattern: 'static/js/vendor/jquery.leanModal.js', included: true },
{ pattern: 'static/js/vendor/Markdown.Converter.js', included: true },
{ pattern: 'static/js/vendor/Markdown.Sanitizer.js', included: true },
{ pattern: 'static/js/vendor/Markdown.Editor.js', included: true },
{ pattern: 'static/js/vendor/jquery.ajaxfileupload.js', included: true },
{ pattern: 'static/js/vendor/jquery.timeago.js', included: true },
{ pattern: 'static/js/vendor/jquery.truncate.js', included: true },
{ pattern: 'static/js/vendor/split.js', included: true },
{ pattern: 'static/js/mathjax_accessible.js', included: true },
{ pattern: 'static/js/mathjax_delay_renderer.js', included: true },
{ pattern: 'static/js/common/utils.js', included: true },
{ pattern: 'static/js/common/models/*.js', included: true },
{ pattern: 'static/js/common/content.js', included: true },
{ pattern: 'static/js/common/discussion.js', included: true },
{ pattern: 'static/js/common/mathjax_include.js', included: true },
{ pattern: 'static/js/customwmd.js', included: true },
{ pattern: 'static/js/common/views/*.js', included: true },
{ pattern: 'static/spec/spec_helpers/discussion_spec_helper.js', included: true },
{ pattern: 'static/spec/view/discussion_view_spec_helper.js', included: true },
{ pattern: 'static/spec/fixtures/**/*', included: false, served: true },
{ pattern: 'static/spec/**/*_spec.js', included: true }
],

exclude: [
'**/public/**'
],

preprocessors: {
'static/js/**/*.js': ['sourcemap'],
'static/spec/view/discussion_thread_view_spec.js': ['regex', 'sourcemap'],
'static/spec/**/*.js': ['sourcemap']
},

regexPreprocessor: {
rules: [
{
fileName: 'discussion_thread_view_spec.js',
replacement: [
{ replace: /return function\(\) \{\s*/g, with: '' },
{ replace: / \};\s*\n \}\);\s*\n describe\('thread responses'/g, with: ' });\n describe(\'thread responses\'' }
]
}
]
},

plugins: [
'karma-regex-preprocessor',
'karma-jasmine',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-sourcemap-loader',
'karma-coverage',
require('karma-spec-reporter')
],

reporters: ['spec', 'coverage'],

coverageReporter: {
dir: 'coverage/',
reporters: [
{ type: 'html', subdir: 'report-html' },
{ type: 'lcov', subdir: 'report-lcov' }
]
},

port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['FirefoxNoUpdates'],

customLaunchers: {
FirefoxNoUpdates: {
base: 'Firefox',
prefs: {
'app.update.auto': false,
'app.update.enabled': false
}
}
},

singleRun: true,
concurrency: Infinity,
client: { captureConsole: true }
});
};
33 changes: 33 additions & 0 deletions xblocks_contrib/discussion/assets/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"private": true,
"scripts": {
"build": "webpack --config webpack.prod.config.js",
"build-dev": "webpack --config webpack.dev.config.js",
"test": "karma start karma.conf.js",
"test-ci": "xvfb-run --auto-servernum karma start karma.conf.js"
},
"devDependencies": {
"backbone": "^1",
"backbone-associations": "^0.6",
"backbone.paginator": "^2",
"append-prepend-loader": "^1.0.0",
"copy-webpack-plugin": "13.0.1",
"imports-loader": "^0.8",
"webpack": "^5",
"webpack-cli": "^5",
"draggabilly": "^3.0.0",
"edx-ui-toolkit": "^1",
"jasmine-core": "2.6.4",
"jasmine-jquery": "git+https://git@github.com/velesin/jasmine-jquery.git#ebad463d592d3fea00c69f26ea18a930e09c7b58",
"jquery": "^2",
"karma": "^0.13",
"karma-chrome-launcher": "^3",
"karma-coverage": "^2",
"karma-firefox-launcher": "^2",
"karma-jasmine": "^0.3",
"karma-regex-preprocessor": "^1.0.1",
"karma-sourcemap-loader": "^0.4.0",
"karma-spec-reporter": "0.0.20",
"underscore": "^1"
}
}
40 changes: 40 additions & 0 deletions xblocks_contrib/discussion/assets/static/js/discussion_main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
Webpack entry: imports all discussion JS in dependency order.
*/

// Vendor
import './vendor/Markdown.Converter.js';
import './vendor/Markdown.Sanitizer.js';
import './vendor/Markdown.Editor.js';
import './vendor/jquery.ajaxfileupload.js';
import './vendor/jquery.timeago.js';
import './vendor/jquery.timeago.locale.js';
import './vendor/jquery.truncate.js';
import './vendor/split.js';
// MathJax
import './mathjax_accessible.js';
import './mathjax_delay_renderer.js';
// Core
import './common/utils.js';
import './common/models/discussion_course_settings.js';
import './common/models/discussion_user.js';
import './common/content.js';
import './common/discussion.js';
import './common/mathjax_include.js';
import './customwmd.js';
// Views
import './common/views/discussion_content_view.js';
import './common/views/discussion_inline_view.js';
import './common/views/discussion_thread_edit_view.js';
import './common/views/discussion_thread_list_view.js';
import './common/views/discussion_thread_profile_view.js';
import './common/views/discussion_thread_show_view.js';
import './common/views/discussion_thread_view.js';
import './common/views/discussion_topic_menu_view.js';
import './common/views/new_post_view.js';
import './common/views/response_comment_edit_view.js';
import './common/views/response_comment_show_view.js';
import './common/views/response_comment_view.js';
import './common/views/thread_response_edit_view.js';
import './common/views/thread_response_show_view.js';
import './common/views/thread_response_view.js';
47 changes: 47 additions & 0 deletions xblocks_contrib/discussion/assets/static/js/vendor/URI.min.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// leanModal v1.1 by Ray Stone - http://finelysliced.com.au
// Dual licensed under the MIT and GPL

// Updated to prevent divs with duplicate IDs from being rendered.

(function($) {
$.fn.extend({
leanModal: function(options) {
var defaults = {
top: 100,
overlay: 0.5,
closeButton: null
};

// Only append the overlay element if it isn't already present.
if ($("#lean_overlay").length == 0) {
var overlay = $("<div id='lean_overlay'></div>");
$("body").append(overlay);
}

options = $.extend(defaults, options);
return this.each(function() {
var o = options;
$(this).click(function(e) {
var modal_id = $(this).attr("href");
$("#lean_overlay").click(function() {
close_modal(modal_id)
});
$(o.closeButton).click(function() {
close_modal(modal_id)
});
var modal_height = $(modal_id).outerHeight();
var modal_width = $(modal_id).outerWidth();
$("#lean_overlay").css({
"display": "block",
opacity: 0
});
$("#lean_overlay").fadeTo(200, o.overlay);
$(modal_id).css({
"display": "block",
"position": "fixed",
"opacity": 0,
"z-index": 11000,
"left": 50 + "%",
"margin-left": -(modal_width / 2) + "px",
"top": o.top + "px"
});
$(modal_id).fadeTo(200, 1);
e.preventDefault()
})
});

function close_modal(modal_id) {
$("#lean_overlay").fadeOut(200);
$(modal_id).css({
"display": "none"
})
}
}
})
})(jQuery);
Loading
Loading