├── .bowerrc ├── .coveragerc ├── .dockerignore ├── .env.example ├── .gitignore ├── .jscsrc ├── .jshintrc ├── .travis.yml ├── Dockerfile ├── LICENSE ├── Procfile ├── README.rst ├── RELEASE.rst ├── apiary.apib ├── app.json ├── apt.txt ├── audit ├── __init__.py └── models.py ├── bin └── post_compile ├── bower.json ├── cas ├── __init__.py ├── conf.py ├── models.py ├── tests │ ├── __init__.py │ └── test_cas.py └── urls.py ├── doc_requirements.txt ├── docker-compose.yml ├── docker-karma.yml ├── docs ├── Makefile ├── _static │ └── forgit.txt ├── api.rst ├── conf.py ├── index.rst ├── jsdocs.conf.json ├── make.bat ├── release.rst ├── release_process.rst └── test_plan.rst ├── exporter ├── __init__.py ├── api.py ├── tasks.py └── tests │ ├── __init__.py │ └── test_export.py ├── importer ├── __init__.py ├── api │ └── __init__.py ├── migrations │ └── __init__.py ├── tasks.py └── tests │ ├── __init__.py │ ├── test_forms.py │ ├── test_import.py │ └── test_xanalytics.py ├── karma.conf.js ├── learningresources ├── __init__.py ├── api.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── update_description_paths.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_permissions.py │ ├── 0003_add_permissions.py │ ├── 0004_static_assets.py │ ├── 0005_auto_adds_audit_fields.py │ ├── 0006_move_datestamp_data.py │ ├── 0007_remove_old_date_fields.py │ ├── 0008_remove_staticasset_learning_resources.py │ ├── 0009_allow_blank_description.py │ ├── 0010_static_asset_file_length.py │ ├── 0011_learningresource_url_name.py │ ├── 0012_learningresource_description_path.py │ ├── 0013_populate_description_path.py │ ├── 0014_learning_resource_related_name.py │ ├── 0015_backfill_curator_vocabularies.py │ ├── 0016_revert_backfill.py │ ├── 0017_learningresource_missing_title_update.py │ ├── 0018_fill_empty_slugs.py │ └── __init__.py ├── models.py └── tests │ ├── __init__.py │ ├── base.py │ ├── test_api.py │ ├── test_models.py │ ├── test_utils.py │ ├── test_xanalytics.py │ └── testdata │ └── courses │ ├── nested_problem │ ├── about │ │ └── overview.html │ ├── chapter │ │ └── Intro_chapter.xml │ ├── course.xml │ ├── course │ │ └── 2013_Spring.xml │ ├── html │ │ └── Overview_text_html.xml │ ├── policies │ │ └── 2013_Spring │ │ │ ├── grading_policy.json │ │ │ └── policy.json │ ├── problem │ │ └── problem_2.xml │ ├── sequential │ │ └── a sequential.xml │ └── vertical │ │ ├── vertical_1.xml │ │ └── vertical_2.xml │ ├── simple │ └── toy │ ├── toy │ ├── README │ ├── chapter │ │ ├── 1414ffd5143b4b508f739b563ab468b7.xml │ │ └── Overview.xml │ ├── course.xml │ ├── course │ │ └── TT_2012_Fall.xml │ ├── html │ │ ├── 6b6bee43c7c641509da71c9299cc9f5a.html │ │ └── 6b6bee43c7c641509da71c9299cc9f5a.xml │ ├── policies │ │ └── TT_2012_Fall │ │ │ ├── grading_policy.json │ │ │ └── policy.json │ ├── sequential │ │ └── workflow.xml │ ├── static │ │ ├── essays_x250.png │ │ ├── subdir │ │ │ └── subtext.txt │ │ ├── subs_CCxmtcICYNc.srt.sjson │ │ ├── test.txt │ │ └── webGLDemo.css │ ├── vertical │ │ └── d6eaa391d2be41dea20b8b1bfbcb1c45.xml │ ├── video │ │ ├── Video_Resources.xml │ │ └── Welcome.xml │ └── videosequence │ │ └── Toy_Videos.xml │ ├── toy2 │ └── course.xml │ └── two_courses │ ├── not_a_thing │ └── not_course.xml │ ├── toy │ └── toy2 ├── lore ├── __init__.py ├── celery.py ├── settings.py └── wsgi.py ├── manage.py ├── package.json ├── pylintrc ├── pytest.ini ├── requirements.txt ├── rest ├── __init__.py ├── pagination.py ├── permissions.py ├── serializers.py ├── tasks.py ├── tests │ ├── __init__.py │ ├── base.py │ ├── test_course.py │ ├── test_learning_resource.py │ ├── test_members.py │ ├── test_misc.py │ ├── test_repository.py │ ├── test_search.py │ ├── test_tasks.py │ └── test_vocabulary.py ├── urls.py ├── util.py └── views.py ├── roles ├── __init__.py ├── api.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── sync_permissions.py ├── models.py ├── permissions.py ├── signals.py ├── tests │ ├── __init__.py │ ├── test_api.py │ ├── test_permissions.py │ ├── test_user_models.py │ └── test_utils.py ├── user_models.py └── utils.py ├── search ├── __init__.py ├── api.py ├── exceptions.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ ├── recreate_index.py │ │ └── refresh_index.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_update_mapping.py │ └── __init__.py ├── search_indexes.py ├── signals.py ├── sorting.py ├── tasks.py ├── tests │ ├── __init__.py │ ├── base.py │ ├── base_es.py │ ├── test_api.py │ ├── test_es_indexing.py │ ├── test_indexing.py │ └── test_sorting.py └── utils.py ├── taxonomy ├── __init__.py ├── api.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_add_slug_field.py │ ├── 0003_populate_slug_values.py │ ├── 0004_finish_slug.py │ ├── 0005_adds_audit_fields.py │ ├── 0006_auto_20150630_1327.py │ ├── 0007_vocabulary_multi_terms.py │ ├── 0008_fill_empty_slugs.py │ └── __init__.py ├── models.py └── tests │ ├── __init__.py │ ├── test_api.py │ └── test_models.py ├── test_requirements.txt ├── tests ├── test_settings.py ├── test_storage.py └── test_urls.py ├── tox.ini ├── ui ├── __init__.py ├── forms.py ├── jstests │ ├── exports │ │ ├── test_exports_component.jsx │ │ └── test_lr_exports.jsx │ ├── learningresources │ │ ├── test-learning-resource.jsx │ │ ├── test-static-assets.jsx │ │ ├── test-xml_panel.jsx │ │ ├── test_learning_resource_panel.jsx │ │ ├── test_term_list.jsx │ │ ├── test_term_select.jsx │ │ └── test_vocab_select.jsx │ ├── listing │ │ ├── test_facets.jsx │ │ ├── test_listing.jsx │ │ ├── test_listing_resources.jsx │ │ └── test_pagination.jsx │ ├── taxonomy │ │ ├── test_add_terms_component.jsx │ │ ├── test_add_vocabulary.jsx │ │ ├── test_manage_taxonomies.jsx │ │ ├── test_taxonomy_component.jsx │ │ ├── test_term_component.jsx │ │ └── test_vocabulary_component.jsx │ ├── test-main.js │ ├── test-utils.jsx │ └── util │ │ ├── test-icheckbox.jsx │ │ ├── test-select2.jsx │ │ ├── test_confirmation_dialog.jsx │ │ ├── test_infinite_list.jsx │ │ └── test_react_spinner.jsx ├── static │ ├── bower │ │ ├── bootstrap │ │ │ ├── .bower.json │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ ├── bootstrap.css.map │ │ │ │ │ └── bootstrap.min.css │ │ │ │ ├── fonts │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ │ └── js │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ ├── bootstrap.min.js │ │ │ │ │ └── npm.js │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── grunt │ │ │ │ ├── .jshintrc │ │ │ │ ├── bs-commonjs-generator.js │ │ │ │ ├── bs-glyphicons-data-generator.js │ │ │ │ ├── bs-lessdoc-parser.js │ │ │ │ ├── bs-raw-files-generator.js │ │ │ │ ├── configBridge.json │ │ │ │ └── sauce_browsers.yml │ │ │ ├── js │ │ │ │ ├── .jscsrc │ │ │ │ ├── .jshintrc │ │ │ │ ├── affix.js │ │ │ │ ├── alert.js │ │ │ │ ├── button.js │ │ │ │ ├── carousel.js │ │ │ │ ├── collapse.js │ │ │ │ ├── dropdown.js │ │ │ │ ├── modal.js │ │ │ │ ├── popover.js │ │ │ │ ├── scrollspy.js │ │ │ │ ├── tab.js │ │ │ │ ├── tooltip.js │ │ │ │ └── transition.js │ │ │ ├── less │ │ │ │ ├── .csscomb.json │ │ │ │ ├── .csslintrc │ │ │ │ ├── alerts.less │ │ │ │ ├── badges.less │ │ │ │ ├── bootstrap.less │ │ │ │ ├── breadcrumbs.less │ │ │ │ ├── button-groups.less │ │ │ │ ├── buttons.less │ │ │ │ ├── carousel.less │ │ │ │ ├── close.less │ │ │ │ ├── code.less │ │ │ │ ├── component-animations.less │ │ │ │ ├── dropdowns.less │ │ │ │ ├── forms.less │ │ │ │ ├── glyphicons.less │ │ │ │ ├── grid.less │ │ │ │ ├── input-groups.less │ │ │ │ ├── jumbotron.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── media.less │ │ │ │ ├── mixins.less │ │ │ │ ├── mixins │ │ │ │ │ ├── alerts.less │ │ │ │ │ ├── background-variant.less │ │ │ │ │ ├── border-radius.less │ │ │ │ │ ├── buttons.less │ │ │ │ │ ├── center-block.less │ │ │ │ │ ├── clearfix.less │ │ │ │ │ ├── forms.less │ │ │ │ │ ├── gradients.less │ │ │ │ │ ├── grid-framework.less │ │ │ │ │ ├── grid.less │ │ │ │ │ ├── hide-text.less │ │ │ │ │ ├── image.less │ │ │ │ │ ├── labels.less │ │ │ │ │ ├── list-group.less │ │ │ │ │ ├── nav-divider.less │ │ │ │ │ ├── nav-vertical-align.less │ │ │ │ │ ├── opacity.less │ │ │ │ │ ├── pagination.less │ │ │ │ │ ├── panels.less │ │ │ │ │ ├── progress-bar.less │ │ │ │ │ ├── reset-filter.less │ │ │ │ │ ├── reset-text.less │ │ │ │ │ ├── resize.less │ │ │ │ │ ├── responsive-visibility.less │ │ │ │ │ ├── size.less │ │ │ │ │ ├── tab-focus.less │ │ │ │ │ ├── table-row.less │ │ │ │ │ ├── text-emphasis.less │ │ │ │ │ ├── text-overflow.less │ │ │ │ │ └── vendor-prefixes.less │ │ │ │ ├── modals.less │ │ │ │ ├── navbar.less │ │ │ │ ├── navs.less │ │ │ │ ├── normalize.less │ │ │ │ ├── pager.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── popovers.less │ │ │ │ ├── print.less │ │ │ │ ├── progress-bars.less │ │ │ │ ├── responsive-embed.less │ │ │ │ ├── responsive-utilities.less │ │ │ │ ├── scaffolding.less │ │ │ │ ├── tables.less │ │ │ │ ├── theme.less │ │ │ │ ├── thumbnails.less │ │ │ │ ├── tooltip.less │ │ │ │ ├── type.less │ │ │ │ ├── utilities.less │ │ │ │ ├── variables.less │ │ │ │ └── wells.less │ │ │ ├── package.js │ │ │ └── package.json │ │ ├── components-font-awesome │ │ │ ├── .bower.json │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── css │ │ │ │ ├── font-awesome.css │ │ │ │ └── font-awesome.min.css │ │ │ ├── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ ├── less │ │ │ │ ├── animated.less │ │ │ │ ├── bordered-pulled.less │ │ │ │ ├── core.less │ │ │ │ ├── fixed-width.less │ │ │ │ ├── font-awesome.less │ │ │ │ ├── icons.less │ │ │ │ ├── larger.less │ │ │ │ ├── list.less │ │ │ │ ├── mixins.less │ │ │ │ ├── path.less │ │ │ │ ├── rotated-flipped.less │ │ │ │ ├── stacked.less │ │ │ │ └── variables.less │ │ │ └── scss │ │ │ │ ├── _animated.scss │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ ├── _core.scss │ │ │ │ ├── _fixed-width.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _larger.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _path.scss │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ ├── _stacked.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── font-awesome.scss │ │ ├── history.js │ │ │ ├── .bower.json │ │ │ ├── .gitignore │ │ │ ├── History.md │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── buildr-uncompressed.coffee │ │ │ ├── buildr.coffee │ │ │ ├── component.json │ │ │ ├── demo │ │ │ │ ├── bcherry-orig.html │ │ │ │ ├── bcherry.html │ │ │ │ ├── chrome.html │ │ │ │ ├── index.html │ │ │ │ ├── native-auto.html │ │ │ │ ├── native.html │ │ │ │ ├── navigator.html │ │ │ │ ├── safari.html │ │ │ │ └── unicode.html │ │ │ ├── license.txt │ │ │ ├── package.json │ │ │ ├── scripts │ │ │ │ ├── bundled-uncompressed │ │ │ │ │ ├── html4+html5 │ │ │ │ │ │ ├── dojo.history.js │ │ │ │ │ │ ├── extjs.history.js │ │ │ │ │ │ ├── jquery.history.js │ │ │ │ │ │ ├── mootools.history.js │ │ │ │ │ │ ├── native.history.js │ │ │ │ │ │ ├── right.history.js │ │ │ │ │ │ └── zepto.history.js │ │ │ │ │ └── html5 │ │ │ │ │ │ ├── dojo.history.js │ │ │ │ │ │ ├── extjs.history.js │ │ │ │ │ │ ├── jquery.history.js │ │ │ │ │ │ ├── mootools.history.js │ │ │ │ │ │ ├── native.history.js │ │ │ │ │ │ ├── right.history.js │ │ │ │ │ │ └── zepto.history.js │ │ │ │ ├── bundled │ │ │ │ │ ├── html4+html5 │ │ │ │ │ │ ├── dojo.history.js │ │ │ │ │ │ ├── extjs.history.js │ │ │ │ │ │ ├── jquery.history.js │ │ │ │ │ │ ├── mootools.history.js │ │ │ │ │ │ ├── native.history.js │ │ │ │ │ │ ├── right.history.js │ │ │ │ │ │ └── zepto.history.js │ │ │ │ │ └── html5 │ │ │ │ │ │ ├── dojo.history.js │ │ │ │ │ │ ├── extjs.history.js │ │ │ │ │ │ ├── jquery.history.js │ │ │ │ │ │ ├── mootools.history.js │ │ │ │ │ │ ├── native.history.js │ │ │ │ │ │ ├── right.history.js │ │ │ │ │ │ └── zepto.history.js │ │ │ │ ├── compressed │ │ │ │ │ ├── history.adapter.dojo.js │ │ │ │ │ ├── history.adapter.extjs.js │ │ │ │ │ ├── history.adapter.jquery.js │ │ │ │ │ ├── history.adapter.mootools.js │ │ │ │ │ ├── history.adapter.native.js │ │ │ │ │ ├── history.adapter.right.js │ │ │ │ │ ├── history.adapter.zepto.js │ │ │ │ │ ├── history.html4.js │ │ │ │ │ ├── history.js │ │ │ │ │ └── json2.js │ │ │ │ └── uncompressed │ │ │ │ │ ├── history.adapter.dojo.js │ │ │ │ │ ├── history.adapter.extjs.js │ │ │ │ │ ├── history.adapter.jquery.js │ │ │ │ │ ├── history.adapter.mootools.js │ │ │ │ │ ├── history.adapter.native.js │ │ │ │ │ ├── history.adapter.right.js │ │ │ │ │ ├── history.adapter.zepto.js │ │ │ │ │ ├── history.html4.js │ │ │ │ │ ├── history.js │ │ │ │ │ └── json2.js │ │ │ ├── tests.src │ │ │ │ ├── _header.php │ │ │ │ ├── all.php │ │ │ │ ├── each.php │ │ │ │ └── index.php │ │ │ ├── tests │ │ │ │ ├── .htaccess │ │ │ │ ├── html4+html5.dojo.html │ │ │ │ ├── html4+html5.extjs.html │ │ │ │ ├── html4+html5.jquery.html │ │ │ │ ├── html4+html5.mootools.html │ │ │ │ ├── html4+html5.native.html │ │ │ │ ├── html4+html5.right.html │ │ │ │ ├── html4+html5.zepto.html │ │ │ │ ├── html5.dojo.html │ │ │ │ ├── html5.extjs.html │ │ │ │ ├── html5.jquery.html │ │ │ │ ├── html5.mootools.html │ │ │ │ ├── html5.native.html │ │ │ │ ├── html5.right.html │ │ │ │ ├── html5.zepto.html │ │ │ │ ├── image.php │ │ │ │ ├── index.html │ │ │ │ └── tests.js │ │ │ └── vendor │ │ │ │ ├── dojo.js │ │ │ │ ├── extjs.js │ │ │ │ ├── jquery.js │ │ │ │ ├── mootools.js │ │ │ │ ├── qunit │ │ │ │ ├── .gitignore │ │ │ │ ├── AUTHORS.txt │ │ │ │ ├── History.md │ │ │ │ ├── README.md │ │ │ │ ├── grunt.js │ │ │ │ ├── package.json │ │ │ │ ├── qunit │ │ │ │ │ ├── .jshintrc │ │ │ │ │ ├── qunit.css │ │ │ │ │ └── qunit.js │ │ │ │ └── test │ │ │ │ │ ├── .jshintrc │ │ │ │ │ ├── async.html │ │ │ │ │ ├── async.js │ │ │ │ │ ├── deepEqual.js │ │ │ │ │ ├── headless.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── logs.html │ │ │ │ │ ├── logs.js │ │ │ │ │ ├── narwhal-test.js │ │ │ │ │ ├── node-test.js │ │ │ │ │ ├── same.js │ │ │ │ │ ├── swarminject.js │ │ │ │ │ └── test.js │ │ │ │ ├── right.js │ │ │ │ └── zepto.js │ │ ├── icheck │ │ │ ├── .bower.json │ │ │ ├── bower.json │ │ │ ├── icheck.jquery.json │ │ │ ├── icheck.js │ │ │ ├── icheck.min.js │ │ │ └── skins │ │ │ │ ├── all.css │ │ │ │ ├── flat │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── aero.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue.css │ │ │ │ ├── blue.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── flat.css │ │ │ │ ├── flat.png │ │ │ │ ├── flat@2x.png │ │ │ │ ├── green.css │ │ │ │ ├── green.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey.css │ │ │ │ ├── grey.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── orange.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── pink.css │ │ │ │ ├── pink.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple.css │ │ │ │ ├── purple.png │ │ │ │ ├── purple@2x.png │ │ │ │ ├── red.css │ │ │ │ ├── red.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── yellow.css │ │ │ │ ├── yellow.png │ │ │ │ └── yellow@2x.png │ │ │ │ ├── futurico │ │ │ │ ├── futurico.css │ │ │ │ ├── futurico.png │ │ │ │ └── futurico@2x.png │ │ │ │ ├── line │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── blue.css │ │ │ │ ├── green.css │ │ │ │ ├── grey.css │ │ │ │ ├── line.css │ │ │ │ ├── line.png │ │ │ │ ├── line@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── pink.css │ │ │ │ ├── purple.css │ │ │ │ ├── red.css │ │ │ │ └── yellow.css │ │ │ │ ├── minimal │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── aero.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue.css │ │ │ │ ├── blue.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── green.css │ │ │ │ ├── green.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey.css │ │ │ │ ├── grey.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── minimal.css │ │ │ │ ├── minimal.png │ │ │ │ ├── minimal@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── orange.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── pink.css │ │ │ │ ├── pink.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple.css │ │ │ │ ├── purple.png │ │ │ │ ├── purple@2x.png │ │ │ │ ├── red.css │ │ │ │ ├── red.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── yellow.css │ │ │ │ ├── yellow.png │ │ │ │ └── yellow@2x.png │ │ │ │ ├── polaris │ │ │ │ ├── polaris.css │ │ │ │ ├── polaris.png │ │ │ │ └── polaris@2x.png │ │ │ │ └── square │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── aero.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue.css │ │ │ │ ├── blue.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── green.css │ │ │ │ ├── green.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey.css │ │ │ │ ├── grey.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── orange.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── pink.css │ │ │ │ ├── pink.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple.css │ │ │ │ ├── purple.png │ │ │ │ ├── purple@2x.png │ │ │ │ ├── red.css │ │ │ │ ├── red.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── square.css │ │ │ │ ├── square.png │ │ │ │ ├── square@2x.png │ │ │ │ ├── yellow.css │ │ │ │ ├── yellow.png │ │ │ │ └── yellow@2x.png │ │ ├── jquery │ │ │ ├── .bower.json │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── jquery.js │ │ │ │ ├── jquery.min.js │ │ │ │ └── jquery.min.map │ │ │ └── src │ │ │ │ ├── ajax.js │ │ │ │ ├── ajax │ │ │ │ ├── jsonp.js │ │ │ │ ├── load.js │ │ │ │ ├── parseJSON.js │ │ │ │ ├── parseXML.js │ │ │ │ ├── script.js │ │ │ │ └── xhr.js │ │ │ │ ├── attributes.js │ │ │ │ ├── attributes │ │ │ │ ├── attr.js │ │ │ │ ├── classes.js │ │ │ │ ├── prop.js │ │ │ │ ├── support.js │ │ │ │ └── val.js │ │ │ │ ├── callbacks.js │ │ │ │ ├── core.js │ │ │ │ ├── core │ │ │ │ ├── access.js │ │ │ │ ├── init.js │ │ │ │ ├── parseHTML.js │ │ │ │ └── ready.js │ │ │ │ ├── css.js │ │ │ │ ├── css │ │ │ │ ├── addGetHookIf.js │ │ │ │ ├── curCSS.js │ │ │ │ ├── defaultDisplay.js │ │ │ │ ├── hiddenVisibleSelectors.js │ │ │ │ ├── support.js │ │ │ │ └── swap.js │ │ │ │ ├── data.js │ │ │ │ ├── data │ │ │ │ ├── Data.js │ │ │ │ └── accepts.js │ │ │ │ ├── deferred.js │ │ │ │ ├── deprecated.js │ │ │ │ ├── dimensions.js │ │ │ │ ├── effects.js │ │ │ │ ├── effects │ │ │ │ ├── Tween.js │ │ │ │ └── animatedSelector.js │ │ │ │ ├── event.js │ │ │ │ ├── event │ │ │ │ ├── ajax.js │ │ │ │ ├── alias.js │ │ │ │ └── support.js │ │ │ │ ├── exports │ │ │ │ ├── amd.js │ │ │ │ └── global.js │ │ │ │ ├── intro.js │ │ │ │ ├── jquery.js │ │ │ │ ├── manipulation.js │ │ │ │ ├── manipulation │ │ │ │ ├── _evalUrl.js │ │ │ │ └── support.js │ │ │ │ ├── offset.js │ │ │ │ ├── outro.js │ │ │ │ ├── queue.js │ │ │ │ ├── queue │ │ │ │ └── delay.js │ │ │ │ ├── selector-native.js │ │ │ │ ├── selector-sizzle.js │ │ │ │ ├── selector.js │ │ │ │ ├── serialize.js │ │ │ │ ├── sizzle │ │ │ │ └── dist │ │ │ │ │ ├── sizzle.js │ │ │ │ │ ├── sizzle.min.js │ │ │ │ │ └── sizzle.min.map │ │ │ │ ├── traversing.js │ │ │ │ ├── traversing │ │ │ │ └── findFilter.js │ │ │ │ └── wrap.js │ │ ├── lodash │ │ │ ├── .bower.json │ │ │ ├── LICENSE.txt │ │ │ ├── bower.json │ │ │ ├── lodash.js │ │ │ └── lodash.min.js │ │ ├── modernizr │ │ │ ├── .bower.json │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── feature-detects │ │ │ │ ├── a-download.js │ │ │ │ ├── audio-audiodata-api.js │ │ │ │ ├── audio-webaudio-api.js │ │ │ │ ├── battery-api.js │ │ │ │ ├── battery-level.js │ │ │ │ ├── blob-constructor.js │ │ │ │ ├── canvas-todataurl-type.js │ │ │ │ ├── contenteditable.js │ │ │ │ ├── contentsecuritypolicy.js │ │ │ │ ├── contextmenu.js │ │ │ │ ├── cookies.js │ │ │ │ ├── cors.js │ │ │ │ ├── css-backgroundposition-shorthand.js │ │ │ │ ├── css-backgroundposition-xy.js │ │ │ │ ├── css-backgroundrepeat.js │ │ │ │ ├── css-backgroundsizecover.js │ │ │ │ ├── css-boxsizing.js │ │ │ │ ├── css-calc.js │ │ │ │ ├── css-cubicbezierrange.js │ │ │ │ ├── css-displayrunin.js │ │ │ │ ├── css-displaytable.js │ │ │ │ ├── css-filters.js │ │ │ │ ├── css-hyphens.js │ │ │ │ ├── css-lastchild.js │ │ │ │ ├── css-mask.js │ │ │ │ ├── css-mediaqueries.js │ │ │ │ ├── css-objectfit.js │ │ │ │ ├── css-overflow-scrolling.js │ │ │ │ ├── css-pointerevents.js │ │ │ │ ├── css-positionsticky.js │ │ │ │ ├── css-regions.js │ │ │ │ ├── css-remunit.js │ │ │ │ ├── css-resize.js │ │ │ │ ├── css-scrollbars.js │ │ │ │ ├── css-shapes.js │ │ │ │ ├── css-subpixelfont.js │ │ │ │ ├── css-supports.js │ │ │ │ ├── css-userselect.js │ │ │ │ ├── css-vhunit.js │ │ │ │ ├── css-vmaxunit.js │ │ │ │ ├── css-vminunit.js │ │ │ │ ├── css-vwunit.js │ │ │ │ ├── custom-protocol-handler.js │ │ │ │ ├── dart.js │ │ │ │ ├── dataview-api.js │ │ │ │ ├── dom-classlist.js │ │ │ │ ├── dom-createElement-attrs.js │ │ │ │ ├── dom-dataset.js │ │ │ │ ├── dom-microdata.js │ │ │ │ ├── elem-datalist.js │ │ │ │ ├── elem-details.js │ │ │ │ ├── elem-output.js │ │ │ │ ├── elem-progress-meter.js │ │ │ │ ├── elem-ruby.js │ │ │ │ ├── elem-time.js │ │ │ │ ├── elem-track.js │ │ │ │ ├── emoji.js │ │ │ │ ├── es5-strictmode.js │ │ │ │ ├── event-deviceorientation-motion.js │ │ │ │ ├── exif-orientation.js │ │ │ │ ├── file-api.js │ │ │ │ ├── file-filesystem.js │ │ │ │ ├── forms-fileinput.js │ │ │ │ ├── forms-formattribute.js │ │ │ │ ├── forms-inputnumber-l10n.js │ │ │ │ ├── forms-placeholder.js │ │ │ │ ├── forms-speechinput.js │ │ │ │ ├── forms-validation.js │ │ │ │ ├── fullscreen-api.js │ │ │ │ ├── gamepad.js │ │ │ │ ├── getusermedia.js │ │ │ │ ├── ie8compat.js │ │ │ │ ├── iframe-sandbox.js │ │ │ │ ├── iframe-seamless.js │ │ │ │ ├── iframe-srcdoc.js │ │ │ │ ├── img-apng.js │ │ │ │ ├── img-webp.js │ │ │ │ ├── json.js │ │ │ │ ├── lists-reversed.js │ │ │ │ ├── mathml.js │ │ │ │ ├── network-connection.js │ │ │ │ ├── network-eventsource.js │ │ │ │ ├── network-xhr2.js │ │ │ │ ├── notification.js │ │ │ │ ├── performance.js │ │ │ │ ├── pointerlock-api.js │ │ │ │ ├── quota-management-api.js │ │ │ │ ├── requestanimationframe.js │ │ │ │ ├── script-async.js │ │ │ │ ├── script-defer.js │ │ │ │ ├── style-scoped.js │ │ │ │ ├── svg-filters.js │ │ │ │ ├── unicode.js │ │ │ │ ├── url-data-uri.js │ │ │ │ ├── userdata.js │ │ │ │ ├── vibration.js │ │ │ │ ├── web-intents.js │ │ │ │ ├── webgl-extensions.js │ │ │ │ ├── websockets-binary.js │ │ │ │ ├── window-framed.js │ │ │ │ ├── workers-blobworkers.js │ │ │ │ ├── workers-dataworkers.js │ │ │ │ └── workers-sharedworkers.js │ │ │ ├── grunt.js │ │ │ ├── media │ │ │ │ ├── Modernizr 2 Logo.ai │ │ │ │ ├── Modernizr 2 Logo.eps │ │ │ │ ├── Modernizr 2 Logo.pdf │ │ │ │ ├── Modernizr 2 Logo.png │ │ │ │ └── Modernizr 2 Logo.svg │ │ │ ├── modernizr.js │ │ │ ├── readme.md │ │ │ └── test │ │ │ │ ├── basic.html │ │ │ │ ├── caniuse.html │ │ │ │ ├── caniuse_files │ │ │ │ ├── Windsong-webfont.eot │ │ │ │ ├── Windsong-webfont.otf │ │ │ │ ├── Windsong-webfont.svg │ │ │ │ ├── Windsong-webfont.ttf │ │ │ │ ├── Windsong-webfont.woff │ │ │ │ ├── alpha.png │ │ │ │ ├── apng_test.png │ │ │ │ ├── before-after.png │ │ │ │ ├── form_validation.html │ │ │ │ ├── ga.js │ │ │ │ ├── green5x5.png │ │ │ │ ├── hashchange.html │ │ │ │ ├── jquery.min.js │ │ │ │ ├── mathml.html │ │ │ │ ├── mathml_ref.png │ │ │ │ ├── modernizr-1.7.min.js │ │ │ │ ├── png_alpha_result.png │ │ │ │ ├── pushstate.html │ │ │ │ ├── red30x30.png │ │ │ │ ├── ruby.png │ │ │ │ ├── stroked-text.png │ │ │ │ ├── style.css │ │ │ │ ├── svg-html-blur.png │ │ │ │ ├── svg-img.svg │ │ │ │ ├── svg-img.svg.1 │ │ │ │ ├── svg_blur.png │ │ │ │ ├── table.png │ │ │ │ ├── text-shadow1.png │ │ │ │ ├── text-shadow2.png │ │ │ │ ├── windsong_font.png │ │ │ │ └── xhtml.html │ │ │ │ ├── index.html │ │ │ │ ├── js │ │ │ │ ├── basic.html │ │ │ │ ├── dumpdata.js │ │ │ │ ├── setup.js │ │ │ │ ├── unit-caniuse.js │ │ │ │ └── unit.js │ │ │ │ └── qunit │ │ │ │ ├── qunit.css │ │ │ │ ├── qunit.js │ │ │ │ └── run-qunit.js │ │ ├── react-infinite │ │ │ ├── .bower.json │ │ │ ├── Gulpfile.js │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── __tests__ │ │ │ │ ├── array_infinite_computer_test.js │ │ │ │ ├── binary_search_test.js │ │ │ │ ├── constant_infinite_computer_test.js │ │ │ │ └── infinite_test.js │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── react-infinite.js │ │ │ │ └── react-infinite.min.js │ │ │ ├── examples │ │ │ │ ├── example.html │ │ │ │ ├── index.jsx │ │ │ │ ├── window.html │ │ │ │ └── window.jsx │ │ │ ├── package.json │ │ │ ├── preprocessor.js │ │ │ └── src │ │ │ │ ├── computers │ │ │ │ ├── array_infinite_computer.js │ │ │ │ ├── constant_infinite_computer.js │ │ │ │ └── infinite_computer.js │ │ │ │ ├── react-infinite.jsx │ │ │ │ └── utils │ │ │ │ └── binary_index_search.js │ │ ├── react │ │ │ ├── .bower.json │ │ │ ├── JSXTransformer.js │ │ │ ├── LICENSE │ │ │ ├── PATENTS │ │ │ ├── bower.json │ │ │ ├── react-with-addons.js │ │ │ ├── react-with-addons.min.js │ │ │ ├── react.js │ │ │ └── react.min.js │ │ ├── requirejs │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ └── require.js │ │ ├── retina.js │ │ │ ├── .bower.json │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── retina-1.3.0.zip │ │ │ │ ├── retina.js │ │ │ │ └── retina.min.js │ │ │ ├── package.json │ │ │ └── src │ │ │ │ ├── _retina.sass │ │ │ │ ├── _retina.scss │ │ │ │ ├── retina.js │ │ │ │ └── retina.less │ │ ├── select2-bootstrap-theme │ │ │ ├── .bower.json │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── select2-bootstrap.css │ │ │ │ └── select2-bootstrap.min.css │ │ │ ├── docs │ │ │ │ ├── 4.0.0.html │ │ │ │ ├── _config.yml │ │ │ │ ├── _includes │ │ │ │ │ ├── footer-links.html │ │ │ │ │ ├── footer.html │ │ │ │ │ ├── head.html │ │ │ │ │ ├── navbar.html │ │ │ │ │ ├── scripts.html │ │ │ │ │ └── select2-select.html │ │ │ │ ├── _layouts │ │ │ │ │ ├── default.html │ │ │ │ │ └── minimal.html │ │ │ │ ├── _sass │ │ │ │ │ ├── _alert.sass │ │ │ │ │ ├── _anchorjs.sass │ │ │ │ │ ├── _buttons.sass │ │ │ │ │ ├── _common.sass │ │ │ │ │ ├── _extends.sass │ │ │ │ │ ├── _footer.sass │ │ │ │ │ ├── _home.sass │ │ │ │ │ ├── _jumbotron.sass │ │ │ │ │ ├── _mixins.sass │ │ │ │ │ ├── _navbar.sass │ │ │ │ │ ├── _select2-result-repository.sass │ │ │ │ │ └── _variables.sass │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap.min.css │ │ │ │ │ ├── gh-pages.sass │ │ │ │ │ └── select2-bootstrap.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── fonts │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ │ ├── index.html │ │ │ │ └── js │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ ├── bootstrap.min.js │ │ │ │ │ └── respond.min.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── build.less │ │ │ │ ├── build.scss │ │ │ │ ├── select2-bootstrap.less │ │ │ │ └── select2-bootstrap.scss │ │ │ └── tests │ │ │ │ ├── less_test.js │ │ │ │ ├── scss_test.js │ │ │ │ └── support │ │ │ │ ├── less.patch │ │ │ │ └── scss.patch │ │ ├── select2 │ │ │ ├── .bower.json │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .jshintignore │ │ │ ├── .jshintrc │ │ │ ├── .travis.yml │ │ │ ├── CONTRIBUTING.md │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── component.json │ │ │ ├── composer.json │ │ │ ├── dist │ │ │ │ ├── css │ │ │ │ │ ├── select2.css │ │ │ │ │ └── select2.min.css │ │ │ │ └── js │ │ │ │ │ ├── i18n │ │ │ │ │ ├── az.js │ │ │ │ │ ├── bg.js │ │ │ │ │ ├── ca.js │ │ │ │ │ ├── cs.js │ │ │ │ │ ├── da.js │ │ │ │ │ ├── de.js │ │ │ │ │ ├── en.js │ │ │ │ │ ├── es.js │ │ │ │ │ ├── et.js │ │ │ │ │ ├── eu.js │ │ │ │ │ ├── fa.js │ │ │ │ │ ├── fi.js │ │ │ │ │ ├── fr.js │ │ │ │ │ ├── gl.js │ │ │ │ │ ├── he.js │ │ │ │ │ ├── hi.js │ │ │ │ │ ├── hr.js │ │ │ │ │ ├── hu.js │ │ │ │ │ ├── id.js │ │ │ │ │ ├── is.js │ │ │ │ │ ├── it.js │ │ │ │ │ ├── ko.js │ │ │ │ │ ├── lt.js │ │ │ │ │ ├── lv.js │ │ │ │ │ ├── mk.js │ │ │ │ │ ├── nb.js │ │ │ │ │ ├── nl.js │ │ │ │ │ ├── pl.js │ │ │ │ │ ├── pt-BR.js │ │ │ │ │ ├── pt.js │ │ │ │ │ ├── ro.js │ │ │ │ │ ├── ru.js │ │ │ │ │ ├── sk.js │ │ │ │ │ ├── sr.js │ │ │ │ │ ├── sv.js │ │ │ │ │ ├── th.js │ │ │ │ │ ├── tr.js │ │ │ │ │ ├── uk.js │ │ │ │ │ ├── vi.js │ │ │ │ │ ├── zh-CN.js │ │ │ │ │ └── zh-TW.js │ │ │ │ │ ├── select2.full.js │ │ │ │ │ ├── select2.full.min.js │ │ │ │ │ ├── select2.js │ │ │ │ │ └── select2.min.js │ │ │ ├── docs │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── _includes │ │ │ │ │ ├── footer.html │ │ │ │ │ ├── head.html │ │ │ │ │ └── navigation.html │ │ │ │ ├── _layouts │ │ │ │ │ ├── default.html │ │ │ │ │ └── home.html │ │ │ │ ├── announcements-4.0.html │ │ │ │ ├── community.html │ │ │ │ ├── examples.html │ │ │ │ ├── index.html │ │ │ │ ├── options.html │ │ │ │ └── vendor │ │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap.min.css │ │ │ │ │ ├── font-awesome.min.css │ │ │ │ │ └── prettify.css │ │ │ │ │ ├── fonts │ │ │ │ │ ├── FontAwesome.otf │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ └── fontawesome-webfont.woff │ │ │ │ │ ├── images │ │ │ │ │ └── flags │ │ │ │ │ │ ├── ak.png │ │ │ │ │ │ ├── al.png │ │ │ │ │ │ ├── ar.png │ │ │ │ │ │ ├── az.png │ │ │ │ │ │ ├── ca.png │ │ │ │ │ │ ├── co.png │ │ │ │ │ │ ├── ct.png │ │ │ │ │ │ ├── de.png │ │ │ │ │ │ ├── fl.png │ │ │ │ │ │ ├── ga.png │ │ │ │ │ │ ├── hi.png │ │ │ │ │ │ ├── ia.png │ │ │ │ │ │ ├── id.png │ │ │ │ │ │ ├── il.png │ │ │ │ │ │ ├── in.png │ │ │ │ │ │ ├── ks.png │ │ │ │ │ │ ├── ky.png │ │ │ │ │ │ ├── la.png │ │ │ │ │ │ ├── ma.png │ │ │ │ │ │ ├── md.png │ │ │ │ │ │ ├── me.png │ │ │ │ │ │ ├── mi.png │ │ │ │ │ │ ├── mn.png │ │ │ │ │ │ ├── mo.png │ │ │ │ │ │ ├── ms.png │ │ │ │ │ │ ├── mt.png │ │ │ │ │ │ ├── nc.png │ │ │ │ │ │ ├── nd.png │ │ │ │ │ │ ├── ne.png │ │ │ │ │ │ ├── nh.png │ │ │ │ │ │ ├── nj.png │ │ │ │ │ │ ├── nm.png │ │ │ │ │ │ ├── nv.png │ │ │ │ │ │ ├── ny.png │ │ │ │ │ │ ├── oh.png │ │ │ │ │ │ ├── ok.png │ │ │ │ │ │ ├── or.png │ │ │ │ │ │ ├── pa.png │ │ │ │ │ │ ├── ri.png │ │ │ │ │ │ ├── sc.png │ │ │ │ │ │ ├── sd.png │ │ │ │ │ │ ├── tn.png │ │ │ │ │ │ ├── tx.png │ │ │ │ │ │ ├── ut.png │ │ │ │ │ │ ├── va.png │ │ │ │ │ │ ├── vt.png │ │ │ │ │ │ ├── wa.png │ │ │ │ │ │ ├── wi.png │ │ │ │ │ │ ├── wv.png │ │ │ │ │ │ └── wy.png │ │ │ │ │ └── js │ │ │ │ │ ├── bootstrap.min.js │ │ │ │ │ ├── jquery.min.js │ │ │ │ │ ├── placeholders.jquery.min.js │ │ │ │ │ └── prettify.min.js │ │ │ ├── package.json │ │ │ ├── select2.jquery.json │ │ │ ├── src │ │ │ │ ├── js │ │ │ │ │ ├── banner.end.js │ │ │ │ │ ├── banner.start.js │ │ │ │ │ ├── jquery.mousewheel.shim.js │ │ │ │ │ ├── jquery.select2.js │ │ │ │ │ ├── jquery.shim.js │ │ │ │ │ ├── select2 │ │ │ │ │ │ ├── compat │ │ │ │ │ │ │ ├── containerCss.js │ │ │ │ │ │ │ ├── dropdownCss.js │ │ │ │ │ │ │ ├── initSelection.js │ │ │ │ │ │ │ ├── inputData.js │ │ │ │ │ │ │ ├── matcher.js │ │ │ │ │ │ │ ├── query.js │ │ │ │ │ │ │ └── utils.js │ │ │ │ │ │ ├── core.js │ │ │ │ │ │ ├── data │ │ │ │ │ │ │ ├── ajax.js │ │ │ │ │ │ │ ├── array.js │ │ │ │ │ │ │ ├── base.js │ │ │ │ │ │ │ ├── maximumInputLength.js │ │ │ │ │ │ │ ├── maximumSelectionLength.js │ │ │ │ │ │ │ ├── minimumInputLength.js │ │ │ │ │ │ │ ├── select.js │ │ │ │ │ │ │ ├── tags.js │ │ │ │ │ │ │ └── tokenizer.js │ │ │ │ │ │ ├── defaults.js │ │ │ │ │ │ ├── diacritics.js │ │ │ │ │ │ ├── dropdown.js │ │ │ │ │ │ ├── dropdown │ │ │ │ │ │ │ ├── attachBody.js │ │ │ │ │ │ │ ├── attachContainer.js │ │ │ │ │ │ │ ├── closeOnSelect.js │ │ │ │ │ │ │ ├── hidePlaceholder.js │ │ │ │ │ │ │ ├── infiniteScroll.js │ │ │ │ │ │ │ ├── minimumResultsForSearch.js │ │ │ │ │ │ │ ├── search.js │ │ │ │ │ │ │ ├── selectOnClose.js │ │ │ │ │ │ │ └── stopPropagation.js │ │ │ │ │ │ ├── i18n │ │ │ │ │ │ │ ├── az.js │ │ │ │ │ │ │ ├── bg.js │ │ │ │ │ │ │ ├── ca.js │ │ │ │ │ │ │ ├── cs.js │ │ │ │ │ │ │ ├── da.js │ │ │ │ │ │ │ ├── de.js │ │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ │ ├── es.js │ │ │ │ │ │ │ ├── et.js │ │ │ │ │ │ │ ├── eu.js │ │ │ │ │ │ │ ├── fa.js │ │ │ │ │ │ │ ├── fi.js │ │ │ │ │ │ │ ├── fr.js │ │ │ │ │ │ │ ├── gl.js │ │ │ │ │ │ │ ├── he.js │ │ │ │ │ │ │ ├── hi.js │ │ │ │ │ │ │ ├── hr.js │ │ │ │ │ │ │ ├── hu.js │ │ │ │ │ │ │ ├── id.js │ │ │ │ │ │ │ ├── is.js │ │ │ │ │ │ │ ├── it.js │ │ │ │ │ │ │ ├── ko.js │ │ │ │ │ │ │ ├── lt.js │ │ │ │ │ │ │ ├── lv.js │ │ │ │ │ │ │ ├── mk.js │ │ │ │ │ │ │ ├── nb.js │ │ │ │ │ │ │ ├── nl.js │ │ │ │ │ │ │ ├── pl.js │ │ │ │ │ │ │ ├── pt-BR.js │ │ │ │ │ │ │ ├── pt.js │ │ │ │ │ │ │ ├── ro.js │ │ │ │ │ │ │ ├── ru.js │ │ │ │ │ │ │ ├── sk.js │ │ │ │ │ │ │ ├── sr.js │ │ │ │ │ │ │ ├── sv.js │ │ │ │ │ │ │ ├── th.js │ │ │ │ │ │ │ ├── tr.js │ │ │ │ │ │ │ ├── uk.js │ │ │ │ │ │ │ ├── vi.js │ │ │ │ │ │ │ ├── zh-CN.js │ │ │ │ │ │ │ └── zh-TW.js │ │ │ │ │ │ ├── keys.js │ │ │ │ │ │ ├── options.js │ │ │ │ │ │ ├── results.js │ │ │ │ │ │ ├── selection │ │ │ │ │ │ │ ├── allowClear.js │ │ │ │ │ │ │ ├── base.js │ │ │ │ │ │ │ ├── clickMask.js │ │ │ │ │ │ │ ├── eventRelay.js │ │ │ │ │ │ │ ├── multiple.js │ │ │ │ │ │ │ ├── placeholder.js │ │ │ │ │ │ │ ├── search.js │ │ │ │ │ │ │ ├── single.js │ │ │ │ │ │ │ └── stopPropagation.js │ │ │ │ │ │ ├── translation.js │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── wrapper.end.js │ │ │ │ │ └── wrapper.start.js │ │ │ │ └── scss │ │ │ │ │ ├── _dropdown.scss │ │ │ │ │ ├── _multiple.scss │ │ │ │ │ ├── _single.scss │ │ │ │ │ ├── core.scss │ │ │ │ │ ├── mixins │ │ │ │ │ └── _gradients.scss │ │ │ │ │ └── theme │ │ │ │ │ ├── classic │ │ │ │ │ ├── _defaults.scss │ │ │ │ │ ├── _multiple.scss │ │ │ │ │ ├── _single.scss │ │ │ │ │ └── layout.scss │ │ │ │ │ └── default │ │ │ │ │ ├── _multiple.scss │ │ │ │ │ ├── _single.scss │ │ │ │ │ └── layout.scss │ │ │ ├── tests │ │ │ │ ├── a11y │ │ │ │ │ └── selection-tests.js │ │ │ │ ├── data │ │ │ │ │ ├── array-tests.js │ │ │ │ │ ├── base-tests.js │ │ │ │ │ ├── inputData-tests.js │ │ │ │ │ ├── maximumInputLength-tests.js │ │ │ │ │ ├── maximumSelectionLength-tests.js │ │ │ │ │ ├── minimumInputLength-tests.js │ │ │ │ │ ├── select-tests.js │ │ │ │ │ └── tags-tests.js │ │ │ │ ├── dropdown │ │ │ │ │ ├── dropdownCss-tests.js │ │ │ │ │ ├── selectOnClose-tests.js │ │ │ │ │ └── stopPropagation-tests.js │ │ │ │ ├── helpers.js │ │ │ │ ├── integration.html │ │ │ │ ├── integration │ │ │ │ │ └── select2-methods.js │ │ │ │ ├── options │ │ │ │ │ ├── data-tests.js │ │ │ │ │ ├── deprecated-tests.js │ │ │ │ │ ├── translation-tests.js │ │ │ │ │ └── width-tests.js │ │ │ │ ├── selection │ │ │ │ │ ├── allowClear-tests.js │ │ │ │ │ ├── containerCss-tests.js │ │ │ │ │ ├── multiple-tests.js │ │ │ │ │ ├── placeholder-tests.js │ │ │ │ │ ├── single-tests.js │ │ │ │ │ └── stopPropagation-tests.js │ │ │ │ ├── unit.html │ │ │ │ ├── utils │ │ │ │ │ ├── decorator-tests.js │ │ │ │ │ └── escapeMarkup-tests.js │ │ │ │ └── vendor │ │ │ │ │ ├── jquery-1.7.2.js │ │ │ │ │ ├── qunit-1.14.0.css │ │ │ │ │ └── qunit-1.14.0.js │ │ │ └── vendor │ │ │ │ ├── almond-0.2.9.js │ │ │ │ ├── jquery-2.1.0.js │ │ │ │ └── jquery.mousewheel.js │ │ ├── spin.js │ │ │ ├── .bower.json │ │ │ ├── .gitignore │ │ │ ├── .jshintrc │ │ │ ├── .npmignore │ │ │ ├── .spmignore │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── jquery.spin.js │ │ │ ├── spin.js │ │ │ └── spin.min.js │ │ └── uri.js │ │ │ ├── .bower.json │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── contributing.md │ │ │ └── src │ │ │ ├── IPv6.js │ │ │ ├── SecondLevelDomains.js │ │ │ ├── URI.fragmentQuery.js │ │ │ ├── URI.fragmentURI.js │ │ │ ├── URI.js │ │ │ ├── URI.min.js │ │ │ ├── URITemplate.js │ │ │ ├── jquery.URI.js │ │ │ ├── jquery.URI.min.js │ │ │ └── punycode.js │ ├── lib │ │ ├── css │ │ │ └── index.min.css │ │ └── js │ │ │ └── react-datagrid.min.js │ └── ui │ │ ├── css │ │ ├── mit-lore.css │ │ └── slide-drawer.css │ │ ├── images │ │ ├── ic-book.png │ │ ├── ic-book@2x.png │ │ ├── ic-code.png │ │ ├── ic-code@2x.png │ │ ├── ic-pieces.png │ │ ├── ic-pieces@2x.png │ │ ├── ic-sequential.png │ │ ├── ic-sequential@2x.png │ │ ├── ic-vertical.png │ │ ├── ic-vertical@2x.png │ │ ├── ic-video.png │ │ ├── ic-video@2x.png │ │ ├── logo-mit-lore.png │ │ └── logo-mit-lore@2x.png │ │ └── js │ │ ├── csrf.js │ │ ├── exports │ │ ├── exports_component.jsx │ │ ├── exports_header.jsx │ │ └── lr_exports.jsx │ │ ├── learningresources │ │ ├── learning_resource_panel.jsx │ │ ├── learning_resources.jsx │ │ ├── static_assets.jsx │ │ ├── term_list.jsx │ │ ├── term_list_item.jsx │ │ ├── term_select.jsx │ │ ├── vocab_select.jsx │ │ └── xml_panel.jsx │ │ ├── listing │ │ ├── listing.jsx │ │ ├── listing_resources.jsx │ │ ├── lore_data_table.jsx │ │ └── pagination.jsx │ │ ├── require_config.js │ │ ├── taxonomy │ │ ├── add_terms_component.jsx │ │ ├── add_vocabulary.jsx │ │ ├── manage_taxonomies.jsx │ │ ├── taxonomy_component.jsx │ │ ├── term_component.jsx │ │ └── vocabulary_component.jsx │ │ └── util │ │ ├── confirmation_dialog.jsx │ │ ├── icheckbox.jsx │ │ ├── infinite_list.jsx │ │ ├── react_overlay_loader.jsx │ │ ├── react_spinner.jsx │ │ ├── select2_component.jsx │ │ ├── status_box.jsx │ │ └── utils.jsx ├── templates │ ├── base.html │ ├── create_repo.html │ ├── data.html │ ├── includes │ │ ├── exports_panel.html │ │ ├── members_panel.html │ │ ├── resource_panel.html │ │ └── taxonomy_panel.html │ ├── repo_base.html │ ├── repository.html │ ├── upload.html │ ├── vocabulary.html │ └── welcome.html ├── tests │ ├── test_data_views.py │ ├── test_ga.py │ ├── test_importer_views.py │ ├── test_learningresources_views.py │ └── test_repository_views.py ├── urls.py └── views.py ├── util ├── convert_lcov_to_coveralls.js ├── release_notes.ejs └── release_notes_rst.ejs ├── uwsgi.ini └── xanalytics ├── __init__.py ├── management ├── __init__.py └── commands │ ├── __init__.py │ └── populate_xanalytics.py └── tests ├── __init__.py ├── test_api.py └── test_mgmt_cmd.py /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "ui/static/bower/" 3 | } 4 | -------------------------------------------------------------------------------- /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | 3 | branch = True 4 | source = . 5 | omit = 6 | lore/wsgi.py 7 | manage.py 8 | ./.tox/* 9 | 10 | [report] 11 | exclude_lines = 12 | pragma: no cover 13 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | STATUS_TOKEN= 2 | -------------------------------------------------------------------------------- /.jscsrc: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "google", 3 | "validateQuoteMarks": null, 4 | "requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties", 5 | "fileExtensions": [".js", ".jsx"], 6 | "esprima": "esprima-fb", 7 | "disallowSpacesInAnonymousFunctionExpression": null 8 | } 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - '2.7' 4 | services: 5 | - elasticsearch 6 | - redis-server 7 | before_script: 8 | - sleep 10 9 | env: 10 | global: 11 | - DATABASE_URL=postgres://postgres@localhost:5432/postgres 12 | - BROKER_URL=redis://localhost:6379/4 13 | - HAYSTACK_URL=127.0.0.1:9200 14 | install: 15 | - "pip install 'tox>=2.0.2,<3.0.0'" 16 | - pip install coveralls 17 | script: 18 | - tox 19 | after_success: 20 | - coveralls --merge=coverage/coverage-js.json 21 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: newrelic-admin run-program uwsgi uwsgi.ini 2 | worker: celery -A lore worker 3 | -------------------------------------------------------------------------------- /apt.txt: -------------------------------------------------------------------------------- 1 | # Core requirements 2 | 3 | curl 4 | git 5 | libpq-dev 6 | python-dev 7 | python3-dev 8 | npm 9 | nodejs 10 | 11 | 12 | # Importer app requirements 13 | 14 | libxml2-dev 15 | libxslt1-dev 16 | libxslt1.1 17 | 18 | # developer requirements 19 | postgresql-client 20 | 21 | # required for phantomjs 22 | libfreetype6 23 | libfontconfig1 24 | -------------------------------------------------------------------------------- /audit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/audit/__init__.py -------------------------------------------------------------------------------- /audit/models.py: -------------------------------------------------------------------------------- 1 | """A base class for all models with audit fields.""" 2 | 3 | from django.db import models 4 | 5 | 6 | class BaseModel(models.Model): 7 | """A models.Model with audit fields.""" 8 | date_created = models.DateTimeField(auto_now_add=True) 9 | date_modified = models.DateTimeField(auto_now=True) 10 | 11 | class Meta: 12 | """Do not create a database table for BaseModel.""" 13 | abstract = True 14 | -------------------------------------------------------------------------------- /cas/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/cas/__init__.py -------------------------------------------------------------------------------- /cas/models.py: -------------------------------------------------------------------------------- 1 | """ 2 | Empty models required to load application configuration 3 | """ 4 | # HACK: This is required in order to initialize the application settings 5 | # since models is always imported: See note on 6 | # http://django-appconf.readthedocs.org/en/latest/ 7 | # pylint: disable=unused-import 8 | from cas.conf import CASAppConf 9 | -------------------------------------------------------------------------------- /cas/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/cas/tests/__init__.py -------------------------------------------------------------------------------- /cas/urls.py: -------------------------------------------------------------------------------- 1 | """CAS URL configuration""" 2 | from django.conf.urls import url 3 | 4 | urlpatterns = [ 5 | url(r'^login$', 'django_cas_ng.views.login', name="cas_login"), 6 | url(r'^logout$', 'django_cas_ng.views.logout', name="cas_logout"), 7 | ] 8 | -------------------------------------------------------------------------------- /doc_requirements.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | sphinx==1.3.1 3 | sphinx_bootstrap_theme==0.4.5 4 | sphinxcontrib-napoleon==0.3.5 5 | -------------------------------------------------------------------------------- /docker-karma.yml: -------------------------------------------------------------------------------- 1 | karma: 2 | image: lore_web 3 | ports: 4 | - "9876:9876" 5 | command: tox -e js -- --no-single --no-single-run --auto-watch 6 | volumes: 7 | - .:/src 8 | -------------------------------------------------------------------------------- /docs/_static/forgit.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/docs/_static/forgit.txt -------------------------------------------------------------------------------- /docs/api.rst: -------------------------------------------------------------------------------- 1 | LORE API Docs 2 | ------------- 3 | 4 | For convenient reference in development, here are the LORE 5 | API docs. 6 | 7 | 8 | LearningResources 9 | ================= 10 | 11 | .. automodule:: learningresources.api 12 | :members: 13 | :undoc-members: 14 | :show-inheritance: 15 | 16 | Importer 17 | ======== 18 | 19 | .. automodule:: importer.api 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | Taxonomy 25 | ======== 26 | 27 | .. automodule:: taxonomy.api 28 | :members: 29 | :undoc-members: 30 | :show-inheritance: 31 | 32 | Membership 33 | ========== 34 | 35 | .. automodule:: roles.api 36 | :members: 37 | :undoc-members: 38 | :show-inheritance: 39 | 40 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. LORE documentation master file, created by 2 | sphinx-quickstart on Wed May 27 13:09:39 2015. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | .. include:: ../README.rst 7 | 8 | Welcome to LORE's documentation! 9 | ================================ 10 | 11 | Contents: 12 | 13 | .. toctree:: 14 | :maxdepth: 2 15 | 16 | api 17 | release 18 | release_process 19 | test_plan 20 | 21 | Indices and tables 22 | ================== 23 | 24 | * :ref:`genindex` 25 | * :ref:`modindex` 26 | * :ref:`search` 27 | 28 | -------------------------------------------------------------------------------- /docs/jsdocs.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["plugins/markdown"] 3 | } 4 | -------------------------------------------------------------------------------- /docs/release.rst: -------------------------------------------------------------------------------- 1 | .. include:: ../RELEASE.rst 2 | -------------------------------------------------------------------------------- /exporter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/exporter/__init__.py -------------------------------------------------------------------------------- /exporter/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/exporter/tests/__init__.py -------------------------------------------------------------------------------- /importer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/importer/__init__.py -------------------------------------------------------------------------------- /importer/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/importer/migrations/__init__.py -------------------------------------------------------------------------------- /importer/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/importer/tests/__init__.py -------------------------------------------------------------------------------- /learningresources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/learningresources/__init__.py -------------------------------------------------------------------------------- /learningresources/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/learningresources/management/__init__.py -------------------------------------------------------------------------------- /learningresources/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/learningresources/management/commands/__init__.py -------------------------------------------------------------------------------- /learningresources/migrations/0007_remove_old_date_fields.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | # pylint: skip-file 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('learningresources', '0006_move_datestamp_data'), 13 | ] 14 | 15 | operations = [ 16 | migrations.RemoveField( 17 | model_name='course', 18 | name='import_date', 19 | ), 20 | migrations.RemoveField( 21 | model_name='repository', 22 | name='create_date', 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /learningresources/migrations/0008_remove_staticasset_learning_resources.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | # pylint: skip-file 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('learningresources', '0007_remove_old_date_fields'), 13 | ] 14 | 15 | operations = [ 16 | migrations.RemoveField( 17 | model_name='staticasset', 18 | name='learning_resources', 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /learningresources/migrations/0009_allow_blank_description.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | # pylint: skip-file 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('learningresources', '0008_remove_staticasset_learning_resources'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='learningresource', 17 | name='description', 18 | field=models.TextField(blank=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /learningresources/migrations/0011_learningresource_url_name.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | # pylint: skip-file 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('learningresources', '0010_static_asset_file_length'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='learningresource', 17 | name='url_name', 18 | field=models.TextField(null=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /learningresources/migrations/0012_learningresource_description_path.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | # pylint: skip-file 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('learningresources', '0011_learningresource_url_name'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AddField( 17 | model_name='learningresource', 18 | name='description_path', 19 | field=models.TextField(blank=True), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /learningresources/migrations/0014_learning_resource_related_name.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | # pylint: skip-file 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('learningresources', '0013_populate_description_path'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AlterField( 17 | model_name='learningresource', 18 | name='course', 19 | field=models.ForeignKey(related_name='resources', to='learningresources.Course'), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /learningresources/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/learningresources/migrations/__init__.py -------------------------------------------------------------------------------- /learningresources/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/learningresources/tests/__init__.py -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/about/overview.html: -------------------------------------------------------------------------------- 1 | hello overview -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/chapter/Intro_chapter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/course.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/course/2013_Spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/html/Overview_text_html.xml: -------------------------------------------------------------------------------- 1 | 2 | hello world 3 | 4 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/policies/2013_Spring/grading_policy.json: -------------------------------------------------------------------------------- 1 | y:2 -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/policies/2013_Spring/policy.json: -------------------------------------------------------------------------------- 1 | x:1 -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/problem/problem_2.xml: -------------------------------------------------------------------------------- 1 | 2 |

Problem #2

3 |
4 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/sequential/a sequential.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/vertical/vertical_1.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/nested_problem/vertical/vertical_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Problem #1

5 |
6 |
7 | 8 |
9 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/simple/toy: -------------------------------------------------------------------------------- 1 | ../toy -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/README: -------------------------------------------------------------------------------- 1 | A copy of the toy course, with different metadata. Used to test policy loading for course with identical org course fields and shared content. 2 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/chapter/1414ffd5143b4b508f739b563ab468b7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/chapter/Overview.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/course.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/course/TT_2012_Fall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/html/6b6bee43c7c641509da71c9299cc9f5a.html: -------------------------------------------------------------------------------- 1 | 2 | essays 3 | 4 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/html/6b6bee43c7c641509da71c9299cc9f5a.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/static/essays_x250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/learningresources/tests/testdata/courses/toy/static/essays_x250.png -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/static/subdir/subtext.txt: -------------------------------------------------------------------------------- 1 | foo 2 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/static/test.txt: -------------------------------------------------------------------------------- 1 | foo 2 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/static/webGLDemo.css: -------------------------------------------------------------------------------- 1 | #container { 2 | background-color: black; 3 | width: 400px; 4 | height:400px; 5 | } 6 | 7 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/vertical/d6eaa391d2be41dea20b8b1bfbcb1c45.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /learningresources/tests/testdata/courses/toy/video/Video_Resources.xml: -------------------------------------------------------------------------------- 1 |