├── .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 |
4 |
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 |
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 |
14 |
15 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/scripts/compressed/history.adapter.jquery.js:
--------------------------------------------------------------------------------
1 | (function(e,t){"use strict";var n=e.History=e.History||{},r=e.jQuery;if(typeof n.Adapter!="undefined")throw new Error("History.js Adapter has already been loaded...");n.Adapter={bind:function(e,t,n){r(e).bind(t,n)},trigger:function(e,t,n){r(e).trigger(t,n)},extractEventData:function(e,n,r){var i=n&&n.originalEvent&&n.originalEvent[e]||r&&r[e]||t;return i},onDomLoad:function(e){r(e)}},typeof n.init!="undefined"&&n.init()})(window)
--------------------------------------------------------------------------------
/ui/static/bower/history.js/scripts/compressed/history.adapter.mootools.js:
--------------------------------------------------------------------------------
1 | (function(e,t){"use strict";var n=e.History=e.History||{},r=e.MooTools,i=e.Element;if(typeof n.Adapter!="undefined")throw new Error("History.js Adapter has already been loaded...");Object.append(i.NativeEvents,{popstate:2,hashchange:2}),n.Adapter={bind:function(e,t,n){var r=typeof e=="string"?document.id(e):e;r.addEvent(t,n)},trigger:function(e,t,n){var r=typeof e=="string"?document.id(e):e;r.fireEvent(t,n)},extractEventData:function(e,n){var r=n&&n.event&&n.event[e]||n&&n[e]||t;return r},onDomLoad:function(t){e.addEvent("domready",t)}},typeof n.init!="undefined"&&n.init()})(window)
--------------------------------------------------------------------------------
/ui/static/bower/history.js/scripts/compressed/history.adapter.right.js:
--------------------------------------------------------------------------------
1 | (function(e,t){"use strict";var n=e.History=e.History||{},r=e.document,i=e.RightJS,s=i.$;if(typeof n.Adapter!="undefined")throw new Error("History.js Adapter has already been loaded...");n.Adapter={bind:function(e,t,n){s(e).on(t,n)},trigger:function(e,t,n){s(e).fire(t,n)},extractEventData:function(e,n){var r=n&&n._&&n._[e]||t;return r},onDomLoad:function(e){s(r).onReady(e)}},typeof n.init!="undefined"&&n.init()})(window)
--------------------------------------------------------------------------------
/ui/static/bower/history.js/scripts/compressed/history.adapter.zepto.js:
--------------------------------------------------------------------------------
1 | (function(e,t){"use strict";var n=e.History=e.History||{},r=e.Zepto;if(typeof n.Adapter!="undefined")throw new Error("History.js Adapter has already been loaded...");n.Adapter={bind:function(e,t,n){(new r(e)).bind(t,n)},trigger:function(e,t){(new r(e)).trigger(t)},extractEventData:function(e,n){var r=n&&n[e]||t;return r},onDomLoad:function(e){new r(e)}},typeof n.init!="undefined"&&n.init()})(window)
--------------------------------------------------------------------------------
/ui/static/bower/history.js/tests.src/_header.php:
--------------------------------------------------------------------------------
1 | Tests
24 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/tests/.htaccess:
--------------------------------------------------------------------------------
1 | Options +FollowSymlinks
2 | RewriteEngine On
3 |
4 | # Clean Adapter
5 | RewriteCond %{REQUEST_FILENAME} !-f
6 | RewriteCond %{REQUEST_FILENAME} !-d
7 | RewriteRule ([^\.]+)$ $1.html [NC,L,QSA]
8 |
9 | # Can someone smarter than me make it so:
10 | # http://localhost/history.js/tests/uncompressed-html5-persistant-jquery
11 | # Does not redirect to:
12 | # http://localhost/history.js/tests/uncompressed-html5-persistant-jquery.html
13 | # But still accesses that url
14 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/tests/image.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | QUnit Test Suite
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | test markup
15 |
16 |
17 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/vendor/qunit/test/logs.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | QUnit Test Suite
6 |
7 |
8 |
9 |
10 |
11 |
12 | test markup
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/vendor/qunit/test/swarminject.js:
--------------------------------------------------------------------------------
1 | // load testswarm agent
2 | (function() {
3 | var url = window.location.search;
4 | url = decodeURIComponent( url.slice( url.indexOf("swarmURL=") + 9 ) );
5 | if ( !url || url.indexOf("http") !== 0 ) {
6 | return;
7 | }
8 | /*jshint evil:true */
9 | document.write("");
10 | })();
11 |
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/aero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/aero.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/aero@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/aero@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/blue.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/blue@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/blue@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/flat.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/flat@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/flat@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/green.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/green@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/green@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/grey.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/grey@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/grey@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/orange.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/orange.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/orange@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/orange@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/pink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/pink.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/pink@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/pink@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/purple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/purple.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/purple@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/purple@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/red.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/red@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/red@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/yellow.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/flat/yellow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/flat/yellow@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/futurico/futurico.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/futurico/futurico.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/futurico/futurico@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/futurico/futurico@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/line/line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/line/line.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/line/line@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/line/line@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/aero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/aero.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/aero@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/aero@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/blue.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/blue@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/blue@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/green.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/green@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/green@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/grey.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/grey@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/grey@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/minimal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/minimal.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/minimal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/minimal@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/orange.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/orange.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/orange@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/orange@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/pink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/pink.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/pink@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/pink@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/purple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/purple.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/purple@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/purple@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/red.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/red@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/red@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/yellow.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/minimal/yellow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/minimal/yellow@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/polaris/polaris.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/polaris/polaris.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/polaris/polaris@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/polaris/polaris@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/aero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/aero.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/aero@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/aero@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/blue.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/blue@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/blue@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/green.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/green@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/green@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/grey.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/grey@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/grey@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/orange.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/orange.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/orange@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/orange@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/pink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/pink.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/pink@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/pink@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/purple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/purple.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/purple@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/purple@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/red.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/red@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/red@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/square.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/square@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/square@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/yellow.png
--------------------------------------------------------------------------------
/ui/static/bower/icheck/skins/square/yellow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/icheck/skins/square/yellow@2x.png
--------------------------------------------------------------------------------
/ui/static/bower/jquery/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jquery",
3 | "version": "2.1.4",
4 | "main": "dist/jquery.js",
5 | "license": "MIT",
6 | "ignore": [
7 | "**/.*",
8 | "build",
9 | "dist/cdn",
10 | "speed",
11 | "test",
12 | "*.md",
13 | "AUTHORS.txt",
14 | "Gruntfile.js",
15 | "package.json"
16 | ],
17 | "devDependencies": {
18 | "sizzle": "2.1.1-jquery.2.1.2",
19 | "requirejs": "2.1.10",
20 | "qunit": "1.14.0",
21 | "sinon": "1.8.1"
22 | },
23 | "keywords": [
24 | "jquery",
25 | "javascript",
26 | "library"
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/ajax/parseJSON.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // Support: Android 2.3
6 | // Workaround failure to string-cast null input
7 | jQuery.parseJSON = function( data ) {
8 | return JSON.parse( data + "" );
9 | };
10 |
11 | return jQuery.parseJSON;
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/ajax/parseXML.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // Cross-browser xml parsing
6 | jQuery.parseXML = function( data ) {
7 | var xml, tmp;
8 | if ( !data || typeof data !== "string" ) {
9 | return null;
10 | }
11 |
12 | // Support: IE9
13 | try {
14 | tmp = new DOMParser();
15 | xml = tmp.parseFromString( data, "text/xml" );
16 | } catch ( e ) {
17 | xml = undefined;
18 | }
19 |
20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
21 | jQuery.error( "Invalid XML: " + data );
22 | }
23 | return xml;
24 | };
25 |
26 | return jQuery.parseXML;
27 |
28 | });
29 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/attributes.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "./attributes/attr",
4 | "./attributes/prop",
5 | "./attributes/classes",
6 | "./attributes/val"
7 | ], function( jQuery ) {
8 |
9 | // Return jQuery for attributes-only inclusion
10 | return jQuery;
11 | });
12 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/css/addGetHookIf.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 |
3 | function addGetHookIf( conditionFn, hookFn ) {
4 | // Define the hook, we'll check on the first run if it's really needed.
5 | return {
6 | get: function() {
7 | if ( conditionFn() ) {
8 | // Hook not needed (or it's not possible to use it due
9 | // to missing dependency), remove it.
10 | delete this.get;
11 | return;
12 | }
13 |
14 | // Hook needed; redefine it so that the support test is not executed again.
15 | return (this.get = hookFn).apply( this, arguments );
16 | }
17 | };
18 | }
19 |
20 | return addGetHookIf;
21 |
22 | });
23 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/css/hiddenVisibleSelectors.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../selector"
4 | ], function( jQuery ) {
5 |
6 | jQuery.expr.filters.hidden = function( elem ) {
7 | // Support: Opera <= 12.12
8 | // Opera reports offsetWidths and offsetHeights less than zero on some elements
9 | return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
10 | };
11 | jQuery.expr.filters.visible = function( elem ) {
12 | return !jQuery.expr.filters.hidden( elem );
13 | };
14 |
15 | });
16 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/css/swap.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // A method for quickly swapping in/out CSS properties to get correct calculations.
6 | jQuery.swap = function( elem, options, callback, args ) {
7 | var ret, name,
8 | old = {};
9 |
10 | // Remember the old values, and insert the new ones
11 | for ( name in options ) {
12 | old[ name ] = elem.style[ name ];
13 | elem.style[ name ] = options[ name ];
14 | }
15 |
16 | ret = callback.apply( elem, args || [] );
17 |
18 | // Revert the old values
19 | for ( name in options ) {
20 | elem.style[ name ] = old[ name ];
21 | }
22 |
23 | return ret;
24 | };
25 |
26 | return jQuery.swap;
27 |
28 | });
29 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/data/accepts.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | /**
6 | * Determines whether an object can have data
7 | */
8 | jQuery.acceptData = function( owner ) {
9 | // Accepts only:
10 | // - Node
11 | // - Node.ELEMENT_NODE
12 | // - Node.DOCUMENT_NODE
13 | // - Object
14 | // - Any
15 | /* jshint -W018 */
16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
17 | };
18 |
19 | return jQuery.acceptData;
20 | });
21 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/deprecated.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "./traversing"
4 | ], function( jQuery ) {
5 |
6 | // The number of elements contained in the matched element set
7 | jQuery.fn.size = function() {
8 | return this.length;
9 | };
10 |
11 | jQuery.fn.andSelf = jQuery.fn.addBack;
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/effects/animatedSelector.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../selector",
4 | "../effects"
5 | ], function( jQuery ) {
6 |
7 | jQuery.expr.filters.animated = function( elem ) {
8 | return jQuery.grep(jQuery.timers, function( fn ) {
9 | return elem === fn.elem;
10 | }).length;
11 | };
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/event/ajax.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../event"
4 | ], function( jQuery ) {
5 |
6 | // Attach a bunch of functions for handling common AJAX events
7 | jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
8 | jQuery.fn[ type ] = function( fn ) {
9 | return this.on( type, fn );
10 | };
11 | });
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/event/support.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../var/support"
3 | ], function( support ) {
4 |
5 | support.focusinBubbles = "onfocusin" in window;
6 |
7 | return support;
8 |
9 | });
10 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/manipulation/_evalUrl.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../ajax"
3 | ], function( jQuery ) {
4 |
5 | jQuery._evalUrl = function( url ) {
6 | return jQuery.ajax({
7 | url: url,
8 | type: "GET",
9 | dataType: "script",
10 | async: false,
11 | global: false,
12 | "throws": true
13 | });
14 | };
15 |
16 | return jQuery._evalUrl;
17 |
18 | });
19 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/outro.js:
--------------------------------------------------------------------------------
1 | }));
2 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/queue/delay.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../queue",
4 | "../effects" // Delay is optional because of this dependency
5 | ], function( jQuery ) {
6 |
7 | // Based off of the plugin by Clint Helfers, with permission.
8 | // http://blindsignals.com/index.php/2009/07/jquery-delay/
9 | jQuery.fn.delay = function( time, type ) {
10 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
11 | type = type || "fx";
12 |
13 | return this.queue( type, function( next, hooks ) {
14 | var timeout = setTimeout( next, time );
15 | hooks.stop = function() {
16 | clearTimeout( timeout );
17 | };
18 | });
19 | };
20 |
21 | return jQuery.fn.delay;
22 | });
23 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/selector-sizzle.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "sizzle"
4 | ], function( jQuery, Sizzle ) {
5 |
6 | jQuery.find = Sizzle;
7 | jQuery.expr = Sizzle.selectors;
8 | jQuery.expr[":"] = jQuery.expr.pseudos;
9 | jQuery.unique = Sizzle.uniqueSort;
10 | jQuery.text = Sizzle.getText;
11 | jQuery.isXMLDoc = Sizzle.isXML;
12 | jQuery.contains = Sizzle.contains;
13 |
14 | });
15 |
--------------------------------------------------------------------------------
/ui/static/bower/jquery/src/selector.js:
--------------------------------------------------------------------------------
1 | define([ "./selector-sizzle" ]);
2 |
--------------------------------------------------------------------------------
/ui/static/bower/lodash/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "lodash",
3 | "version": "3.9.3",
4 | "main": "lodash.js",
5 | "ignore": [
6 | ".*",
7 | "*.custom.*",
8 | "*.log",
9 | "*.map",
10 | "*.md",
11 | "lodash.src.js",
12 | "component.json",
13 | "package.json",
14 | "doc",
15 | "node_modules",
16 | "perf",
17 | "test",
18 | "vendor"
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "modernizr",
3 | "homepage": "https://github.com/Modernizr/Modernizr",
4 | "version": "2.8.3",
5 | "_release": "2.8.3",
6 | "_resolution": {
7 | "type": "version",
8 | "tag": "v2.8.3",
9 | "commit": "d6bb30c0f12ebb3ddd01e90b0bf435e1c34e6f11"
10 | },
11 | "_source": "git://github.com/Modernizr/Modernizr.git",
12 | "_target": "~2.8.3",
13 | "_originalSource": "modernizr",
14 | "_direct": true
15 | }
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/.gitignore:
--------------------------------------------------------------------------------
1 | modernizr.min.js
2 | .DS_Store
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 0.8
4 | before_script:
5 | - npm install grunt
6 | script: grunt travis --verbose
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/a-download.js:
--------------------------------------------------------------------------------
1 |
2 | // a[download] attribute
3 | // When used on an , this attribute signifies that the resource it
4 | // points to should be downloaded by the browser rather than navigating to it.
5 | // http://developers.whatwg.org/links.html#downloading-resources
6 | // By Addy Osmani
7 |
8 | Modernizr.addTest('adownload', 'download' in document.createElement('a'));
9 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/audio-audiodata-api.js:
--------------------------------------------------------------------------------
1 | // Mozilla Audio Data API
2 | // https://wiki.mozilla.org/Audio_Data_API
3 | // by Addy Osmani
4 | Modernizr.addTest('audiodata', !!(window.Audio));
5 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/audio-webaudio-api.js:
--------------------------------------------------------------------------------
1 | // Web Audio API
2 | // https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
3 | // By Addy Osmani
4 | Modernizr.addTest('webaudio', !!(window.webkitAudioContext || window.AudioContext));
5 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/battery-api.js:
--------------------------------------------------------------------------------
1 |
2 | // Battery API
3 | // https://developer.mozilla.org/en/DOM/window.navigator.mozBattery
4 | // By: Paul Sayre
5 |
6 | Modernizr.addTest('battery',
7 | !!Modernizr.prefixed('battery', navigator)
8 | );
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/battery-level.js:
--------------------------------------------------------------------------------
1 |
2 | // Low Battery Level
3 | // Enable a developer to remove CPU intensive CSS/JS when battery is low
4 | // developer.mozilla.org/en/DOM/window.navigator.mozBattery
5 | // By: Paul Sayre
6 |
7 | Modernizr.addTest('lowbattery', function () {
8 | var minLevel = 0.20,
9 | battery = Modernizr.prefixed('battery', navigator);
10 | return !!(battery && !battery.charging && battery.level <= minLevel);
11 | });
12 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/blob-constructor.js:
--------------------------------------------------------------------------------
1 | // Blob constructor
2 | // http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob
3 |
4 | Modernizr.addTest('blobconstructor', function () {
5 | try {
6 | return !!new Blob();
7 | } catch (e) {
8 | return false;
9 | }
10 | });
11 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/contenteditable.js:
--------------------------------------------------------------------------------
1 | // contentEditable
2 | // http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#contenteditable
3 |
4 | // this is known to false positive in some mobile browsers
5 | // here is a whitelist of verified working browsers:
6 | // https://github.com/NielsLeenheer/html5test/blob/549f6eac866aa861d9649a0707ff2c0157895706/scripts/engine.js#L2083
7 |
8 | Modernizr.addTest('contenteditable',
9 | 'contentEditable' in document.documentElement);
10 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/contentsecuritypolicy.js:
--------------------------------------------------------------------------------
1 | // Test for (experimental) Content Security Policy 1.1 support.
2 | //
3 | // This feature is still quite experimental, but is available now in Chrome 22.
4 | // If the `SecurityPolicy` property is available, you can be sure the browser
5 | // supports CSP. If it's not available, the browser still might support an
6 | // earlier version of the CSP spec.
7 | //
8 | // Editor's Draft: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
9 |
10 | Modernizr.addTest('contentsecuritypolicy', ('securityPolicy' in document || 'SecurityPolicy' in document));
11 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/contextmenu.js:
--------------------------------------------------------------------------------
1 | // http://www.w3.org/TR/html5/interactive-elements.html#context-menus
2 | // Demo at http://thewebrocks.com/demos/context-menu/
3 | Modernizr.addTest(
4 | 'contextmenu',
5 | ('contextMenu' in document.documentElement && 'HTMLMenuItemElement' in window)
6 | );
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/cookies.js:
--------------------------------------------------------------------------------
1 |
2 | // by tauren
3 | // https://github.com/Modernizr/Modernizr/issues/191
4 |
5 | Modernizr.addTest('cookies', function () {
6 | // Quick test if browser has cookieEnabled host property
7 | if (navigator.cookieEnabled) return true;
8 | // Create cookie
9 | document.cookie = "cookietest=1";
10 | var ret = document.cookie.indexOf("cookietest=") != -1;
11 | // Delete cookie
12 | document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
13 | return ret;
14 | });
15 |
16 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/cors.js:
--------------------------------------------------------------------------------
1 | // cors
2 | // By Theodoor van Donge
3 | Modernizr.addTest('cors', !!(window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()));
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-backgroundposition-shorthand.js:
--------------------------------------------------------------------------------
1 | /*
2 | https://developer.mozilla.org/en/CSS/background-position
3 | http://www.w3.org/TR/css3-background/#background-position
4 |
5 | Example: http://jsfiddle.net/Blink/bBXvt/
6 | */
7 |
8 | (function() {
9 |
10 | var elem = document.createElement('a'),
11 | eStyle = elem.style,
12 | val = "right 10px bottom 10px";
13 |
14 | Modernizr.addTest('bgpositionshorthand', function(){
15 | eStyle.cssText = "background-position: " + val + ";";
16 | return (eStyle.backgroundPosition === val);
17 | });
18 |
19 | }());
20 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-backgroundsizecover.js:
--------------------------------------------------------------------------------
1 |
2 | // developer.mozilla.org/en/CSS/background-size
3 |
4 | Modernizr.testStyles( '#modernizr{background-size:cover}', function( elem ) {
5 | var style = window.getComputedStyle ?
6 | window.getComputedStyle( elem, null )
7 | : elem.currentStyle;
8 |
9 | Modernizr.addTest( 'bgsizecover', style.backgroundSize == 'cover' );
10 | });
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-boxsizing.js:
--------------------------------------------------------------------------------
1 |
2 | // developer.mozilla.org/en/CSS/box-sizing
3 | // github.com/Modernizr/Modernizr/issues/248
4 |
5 | Modernizr.addTest("boxsizing",function(){
6 | return Modernizr.testAllProps("boxSizing") && (document.documentMode === undefined || document.documentMode > 7);
7 | });
8 |
9 |
10 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-calc.js:
--------------------------------------------------------------------------------
1 | // Method of allowing calculated values for length units, i.e. width: calc(100%-3em) http://caniuse.com/#search=calc
2 | // By @calvein
3 |
4 | Modernizr.addTest('csscalc', function() {
5 | var prop = 'width:';
6 | var value = 'calc(10px);';
7 | var el = document.createElement('div');
8 |
9 | el.style.cssText = prop + Modernizr._prefixes.join(value + prop);
10 |
11 | return !!el.style.length;
12 | });
13 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-cubicbezierrange.js:
--------------------------------------------------------------------------------
1 | // cubic-bezier values can't be > 1 for Webkit until bug #45761 (https://bugs.webkit.org/show_bug.cgi?id=45761) is fixed
2 | // By @calvein
3 |
4 | Modernizr.addTest('cubicbezierrange', function() {
5 | var el = document.createElement('div');
6 | el.style.cssText = Modernizr._prefixes.join('transition-timing-function' + ':cubic-bezier(1,0,0,1.1); ');
7 | return !!el.style.length;
8 | });
9 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-displayrunin.js:
--------------------------------------------------------------------------------
1 |
2 | // by alanhogan
3 |
4 | // https://github.com/Modernizr/Modernizr/issues/198
5 | // http://css-tricks.com/596-run-in/
6 |
7 |
8 |
9 | Modernizr.testStyles(' #modernizr { display: run-in; } ', function(elem, rule){
10 |
11 | var ret = (window.getComputedStyle ?
12 | getComputedStyle(elem, null).getPropertyValue('display') :
13 | elem.currentStyle['display']);
14 |
15 | Modernizr.addTest('display-runin', ret == 'run-in');
16 |
17 | });
18 |
19 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-filters.js:
--------------------------------------------------------------------------------
1 | // https://github.com/Modernizr/Modernizr/issues/615
2 | // documentMode is needed for false positives in oldIE, please see issue above
3 | Modernizr.addTest('cssfilters', function() {
4 | var el = document.createElement('div');
5 | el.style.cssText = Modernizr._prefixes.join('filter' + ':blur(2px); ');
6 | return !!el.style.length && ((document.documentMode === undefined || document.documentMode > 9));
7 | });
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-lastchild.js:
--------------------------------------------------------------------------------
1 | // last-child pseudo selector
2 | // https://github.com/Modernizr/Modernizr/pull/304
3 |
4 |
5 | Modernizr.addTest('lastchild', function(){
6 |
7 | return Modernizr.testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function (elem) {
8 | return elem.lastChild.offsetWidth > elem.firstChild.offsetWidth;
9 | }, 2);
10 |
11 | });
12 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-mask.js:
--------------------------------------------------------------------------------
1 | // this tests passes for webkit's proprietary `-webkit-mask` feature
2 | // www.webkit.org/blog/181/css-masks/
3 | // developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html
4 |
5 | // it does not pass mozilla's implementation of `mask` for SVG
6 |
7 | // developer.mozilla.org/en/CSS/mask
8 | // developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content
9 |
10 | // Can combine with clippaths for awesomeness: http://generic.cx/for/webkit/test.html
11 |
12 | Modernizr.addTest('cssmask', Modernizr.testAllProps('maskRepeat'));
13 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-mediaqueries.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | Modernizr.addTest('mediaqueries', Modernizr.mq('only all'));
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-objectfit.js:
--------------------------------------------------------------------------------
1 |
2 | // dev.opera.com/articles/view/css3-object-fit-object-position/
3 |
4 | Modernizr.addTest('object-fit',
5 | !!Modernizr.prefixed('objectFit')
6 | );
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-overflow-scrolling.js:
--------------------------------------------------------------------------------
1 |
2 | // johanbrook.com/browsers/native-momentum-scrolling-ios-5/
3 | // introduced in iOS5b2. Possible API may change...
4 |
5 | Modernizr.addTest("overflowscrolling",function(){
6 | return Modernizr.testAllProps("overflowScrolling");
7 | });
8 |
9 |
10 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-positionsticky.js:
--------------------------------------------------------------------------------
1 | // Sticky positioning - constrains an element to be positioned inside the
2 | // intersection of its container box, and the viewport.
3 | Modernizr.addTest('csspositionsticky', function () {
4 |
5 | var prop = 'position:';
6 | var value = 'sticky';
7 | var el = document.createElement('modernizr');
8 | var mStyle = el.style;
9 |
10 | mStyle.cssText = prop + Modernizr._prefixes.join(value + ';' + prop).slice(0, -prop.length);
11 |
12 | return mStyle.position.indexOf(value) !== -1;
13 | });
14 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-remunit.js:
--------------------------------------------------------------------------------
1 |
2 | // test by github.com/nsfmc
3 |
4 | // "The 'rem' unit ('root em') is relative to the computed
5 | // value of the 'font-size' value of the root element."
6 | // http://www.w3.org/TR/css3-values/#relative0
7 | // you can test by checking if the prop was ditched
8 |
9 | // http://snook.ca/archives/html_and_css/font-size-with-rem
10 |
11 | Modernizr.addTest('cssremunit', function(){
12 |
13 | var div = document.createElement('div');
14 | try {
15 | div.style.fontSize = '3rem';
16 | } catch(er){}
17 | return (/rem/).test(div.style.fontSize);
18 |
19 | });
20 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-resize.js:
--------------------------------------------------------------------------------
1 |
2 | // Test for CSS 3 UI "resize" property
3 | // http://www.w3.org/TR/css3-ui/#resize
4 | // https://developer.mozilla.org/en/CSS/resize
5 |
6 | Modernizr.addTest('cssresize', Modernizr.testAllProps('resize'));
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-scrollbars.js:
--------------------------------------------------------------------------------
1 | // Stylable scrollbars detection
2 | Modernizr.addTest('cssscrollbar', function() {
3 |
4 | var bool,
5 |
6 | styles = "#modernizr{overflow: scroll; width: 40px }#" +
7 | Modernizr._prefixes
8 | .join("scrollbar{width:0px}"+' #modernizr::')
9 | .split('#')
10 | .slice(1)
11 | .join('#') + "scrollbar{width:0px}";
12 |
13 | Modernizr.testStyles(styles, function(node) {
14 | bool = 'scrollWidth' in node && node.scrollWidth == 40;
15 | });
16 |
17 | return bool;
18 |
19 | });
20 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-shapes.js:
--------------------------------------------------------------------------------
1 |
2 | // http://html.adobe.com/webplatform/layout/shapes
3 |
4 | Modernizr.addTest('shapes', Modernizr.testAllProps('shapeOutside', 'content-box', true));
5 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-supports.js:
--------------------------------------------------------------------------------
1 | // http://dev.w3.org/csswg/css3-conditional/#at-supports
2 | // github.com/Modernizr/Modernizr/issues/648
3 | // Relies on the fact that a browser vendor should expose the CSSSupportsRule interface
4 | // http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface
5 |
6 | Modernizr.addTest("supports","CSSSupportsRule" in window);
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-userselect.js:
--------------------------------------------------------------------------------
1 | // -moz-user-select:none test.
2 |
3 | // by ryan seddon
4 | //https://github.com/Modernizr/Modernizr/issues/250
5 |
6 |
7 | Modernizr.addTest("userselect",function(){
8 | return Modernizr.testAllProps("user-select");
9 | });
10 |
11 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-vhunit.js:
--------------------------------------------------------------------------------
1 | // https://github.com/Modernizr/Modernizr/issues/572
2 | // Similar to http://jsfiddle.net/FWeinb/etnYC/
3 | Modernizr.addTest('cssvhunit', function() {
4 | var bool;
5 | Modernizr.testStyles("#modernizr { height: 50vh; }", function(elem, rule) {
6 | var height = parseInt(window.innerHeight/2,10),
7 | compStyle = parseInt((window.getComputedStyle ?
8 | getComputedStyle(elem, null) :
9 | elem.currentStyle)["height"],10);
10 |
11 | bool= (compStyle == height);
12 | });
13 | return bool;
14 | });
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-vmaxunit.js:
--------------------------------------------------------------------------------
1 | // https://github.com/Modernizr/Modernizr/issues/572
2 | // http://jsfiddle.net/glsee/JDsWQ/4/
3 | Modernizr.addTest('cssvmaxunit', function(){
4 | var bool;
5 | Modernizr.testStyles("#modernizr { width: 50vmax; }", function(elem, rule) {
6 | var one_vw = window.innerWidth/100,
7 | one_vh = window.innerHeight/100,
8 | compWidth = parseInt((window.getComputedStyle ?
9 | getComputedStyle(elem, null) :
10 | elem.currentStyle)['width'],10);
11 | bool = ( parseInt(Math.max(one_vw, one_vh)*50,10) == compWidth );
12 | });
13 | return bool;
14 | });
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-vminunit.js:
--------------------------------------------------------------------------------
1 | // https://github.com/Modernizr/Modernizr/issues/572
2 | // http://jsfiddle.net/glsee/JRmdq/8/
3 | Modernizr.addTest('cssvminunit', function(){
4 | var bool;
5 | Modernizr.testStyles("#modernizr { width: 50vmin; }", function(elem, rule) {
6 | var one_vw = window.innerWidth/100,
7 | one_vh = window.innerHeight/100,
8 | compWidth = parseInt((window.getComputedStyle ?
9 | getComputedStyle(elem, null) :
10 | elem.currentStyle)['width'],10);
11 | bool = ( parseInt(Math.min(one_vw, one_vh)*50,10) == compWidth );
12 | });
13 | return bool;
14 | });
15 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/css-vwunit.js:
--------------------------------------------------------------------------------
1 | // https://github.com/Modernizr/Modernizr/issues/572
2 | // http://jsfiddle.net/FWeinb/etnYC/
3 | Modernizr.addTest('cssvwunit', function(){
4 | var bool;
5 | Modernizr.testStyles("#modernizr { width: 50vw; }", function(elem, rule) {
6 | var width = parseInt(window.innerWidth/2,10),
7 | compStyle = parseInt((window.getComputedStyle ?
8 | getComputedStyle(elem, null) :
9 | elem.currentStyle)["width"],10);
10 |
11 | bool= (compStyle == width);
12 | });
13 | return bool;
14 | });
15 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/custom-protocol-handler.js:
--------------------------------------------------------------------------------
1 | /*
2 | Custom protocol handler support
3 | http://developers.whatwg.org/timers.html#custom-handlers
4 |
5 | Added by @benschwarz
6 | */
7 |
8 | Modernizr.addTest('customprotocolhandler', function () {
9 | return !!navigator.registerProtocolHandler;
10 | });
11 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/dart.js:
--------------------------------------------------------------------------------
1 | // Dart
2 | // By Theodoor van Donge
3 |
4 | // https://chromiumcodereview.appspot.com/9232049/
5 |
6 | Modernizr.addTest('dart', !!Modernizr.prefixed('startDart', navigator));
7 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/dataview-api.js:
--------------------------------------------------------------------------------
1 | // DataView
2 | // https://developer.mozilla.org/en/JavaScript_typed_arrays/DataView
3 | // By Addy Osmani
4 | Modernizr.addTest('dataview', (typeof DataView !== 'undefined' && 'getFloat64' in DataView.prototype));
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/dom-classlist.js:
--------------------------------------------------------------------------------
1 | // classList
2 | // https://developer.mozilla.org/en/DOM/element.classList
3 | // By Addy Osmani
4 | Modernizr.addTest('classlist', 'classList' in document.documentElement);
5 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/dom-createElement-attrs.js:
--------------------------------------------------------------------------------
1 | // by james a rosen.
2 | // https://github.com/Modernizr/Modernizr/issues/258
3 |
4 | Modernizr.addTest('createelement-attrs', function() {
5 | try {
6 | return document.createElement("").getAttribute('name') == 'test';
7 | } catch(e) {
8 | return false;
9 | }
10 | });
11 |
12 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/dom-dataset.js:
--------------------------------------------------------------------------------
1 |
2 | // dataset API for data-* attributes
3 | // test by @phiggins42
4 |
5 | Modernizr.addTest('dataset', function(){
6 | var n = document.createElement("div");
7 | n.setAttribute("data-a-b", "c");
8 | return !!(n.dataset && n.dataset.aB === "c");
9 | });
10 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/dom-microdata.js:
--------------------------------------------------------------------------------
1 | // Microdata support
2 | // http://www.w3.org/TR/html5/microdata.html
3 | // By Addy Osmani
4 | Modernizr.addTest('microdata', !!(document['getItems']));
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/elem-datalist.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | // lol. we already have a test for datalist built in! silly you.
4 |
5 |
6 | // Helpful links while you're here, though..
7 |
8 | // http://css-tricks.com/15346-relevant-dropdowns-polyfill-for-datalist/
9 | // http://miketaylr.com/test/datalist.html
10 | // http://miketaylr.com/code/datalist.html
11 |
12 | Modernizr.addTest('datalistelem', Modernizr.input.list );
13 |
--------------------------------------------------------------------------------
/ui/static/bower/modernizr/feature-detects/elem-output.js:
--------------------------------------------------------------------------------
1 | //
4 |
5 |
--------------------------------------------------------------------------------
/learningresources/tests/testdata/courses/toy/video/Video_Resources.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/learningresources/tests/testdata/courses/toy/video/Welcome.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/learningresources/tests/testdata/courses/toy/videosequence/Toy_Videos.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/learningresources/tests/testdata/courses/toy2/course.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/learningresources/tests/testdata/courses/two_courses/not_a_thing/not_course.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/learningresources/tests/testdata/courses/two_courses/not_a_thing/not_course.xml
--------------------------------------------------------------------------------
/learningresources/tests/testdata/courses/two_courses/toy:
--------------------------------------------------------------------------------
1 | ../toy
--------------------------------------------------------------------------------
/learningresources/tests/testdata/courses/two_courses/toy2:
--------------------------------------------------------------------------------
1 | ../toy2
--------------------------------------------------------------------------------
/lore/__init__.py:
--------------------------------------------------------------------------------
1 | """
2 | As described in
3 | http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html
4 | """
5 | from __future__ import absolute_import
6 |
7 | # This will make sure the app is always imported when
8 | # Django starts so that shared_task will use this app.
9 | from .celery import async as celery_app
10 |
--------------------------------------------------------------------------------
/lore/celery.py:
--------------------------------------------------------------------------------
1 | """
2 | As described in
3 | http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html
4 | """
5 | from __future__ import absolute_import
6 |
7 | import os
8 | import logging
9 |
10 | from celery import Celery
11 |
12 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lore.settings')
13 |
14 | from django.conf import settings
15 |
16 | log = logging.getLogger(__name__)
17 |
18 | async = Celery('lore')
19 |
20 | # Using a string here means the worker will not have to
21 | # pickle the object when using Windows.
22 | async.config_from_object('django.conf:settings')
23 | async.autodiscover_tasks(lambda: settings.INSTALLED_APPS) # pragma: no cover
24 |
--------------------------------------------------------------------------------
/lore/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for lore project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/
8 | """
9 |
10 | from __future__ import unicode_literals
11 |
12 | import os
13 |
14 | from django.core.wsgi import get_wsgi_application
15 | from dj_static import Cling
16 |
17 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lore.settings")
18 |
19 | application = Cling(get_wsgi_application())
20 |
--------------------------------------------------------------------------------
/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | """
3 | Standard manage.py command from django starproject
4 | """
5 |
6 | from __future__ import unicode_literals
7 |
8 | import os
9 | import sys
10 |
11 | if __name__ == "__main__":
12 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lore.settings")
13 |
14 | from django.core.management import execute_from_command_line
15 |
16 | execute_from_command_line(sys.argv)
17 |
--------------------------------------------------------------------------------
/pylintrc:
--------------------------------------------------------------------------------
1 | [BASIC]
2 | # Allow django's urlpatterns, and our log preference
3 | const-rgx = (([A-Z_][A-Z0-9_]*)|(__.*__)|log|urlpatterns)$
4 |
5 | [TYPECHECK]
6 | generated-members =
7 | status_code
8 | ignored-classes=
9 | six,
10 | six.moves,
11 | ignored-modules=
12 | six,
13 | six.moves,
14 |
15 | [MESSAGES CONTROL]
16 | disable = no-member, old-style-class, no-init, too-few-public-methods, abstract-method, invalid-name, too-many-ancestors
17 |
--------------------------------------------------------------------------------
/pytest.ini:
--------------------------------------------------------------------------------
1 | [pytest]
2 | addopts = --cov . --cov-config .coveragerc --pep8 --pylint --cov-report term --cov-report html --ds=lore.settings
3 | pep8ignore =
4 | */migrations/* ALL
5 | docs/conf.py ALL
6 | lore/celery.py E402
7 | norecursedirs = node_modules .git .tox static templates .* CVS _darcs {arch} *.egg
8 |
--------------------------------------------------------------------------------
/rest/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/rest/__init__.py
--------------------------------------------------------------------------------
/rest/pagination.py:
--------------------------------------------------------------------------------
1 | """
2 | Pagination classes for Lore's REST API.
3 | """
4 |
5 | from __future__ import unicode_literals
6 |
7 | from rest_framework.pagination import PageNumberPagination
8 |
9 |
10 | class LorePagination(PageNumberPagination):
11 | """
12 | Pagination class for Lore's REST API.
13 | """
14 | page_size = 20
15 | page_size_query_param = 'page_size'
16 | max_page_size = 1000
17 |
--------------------------------------------------------------------------------
/rest/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/rest/tests/__init__.py
--------------------------------------------------------------------------------
/roles/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/roles/__init__.py
--------------------------------------------------------------------------------
/roles/management/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/roles/management/__init__.py
--------------------------------------------------------------------------------
/roles/management/commands/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/roles/management/commands/__init__.py
--------------------------------------------------------------------------------
/roles/management/commands/sync_permissions.py:
--------------------------------------------------------------------------------
1 | """
2 | Shell command to synchronize permissions and apply the latest to all groups
3 | """
4 |
5 | from __future__ import unicode_literals
6 |
7 | from django.core.management.base import BaseCommand
8 |
9 | from roles.utils import sync_groups_permissions
10 |
11 |
12 | class Command(BaseCommand):
13 | """
14 | Command for sync_permissions
15 | """
16 | help = "Synchronizes and updates permissions of the repository groups"
17 |
18 | def handle(self, *args, **options):
19 | """Command handler"""
20 | sync_groups_permissions()
21 |
--------------------------------------------------------------------------------
/roles/models.py:
--------------------------------------------------------------------------------
1 | """
2 | No models, just import of signals
3 | """
4 | from __future__ import unicode_literals
5 |
6 | # pylint: disable=unused-import
7 | import roles.signals
8 |
--------------------------------------------------------------------------------
/roles/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/roles/tests/__init__.py
--------------------------------------------------------------------------------
/roles/utils.py:
--------------------------------------------------------------------------------
1 | """
2 | Utility functions for roles
3 | """
4 | from __future__ import unicode_literals
5 |
6 | from learningresources.models import Repository
7 | from roles.api import roles_init_new_repo, roles_clear_repo_permissions
8 |
9 |
10 | def sync_groups_permissions():
11 | """
12 | Synchronize latest permissions and applies them to all
13 | existing group repositories
14 |
15 | Args:
16 | None
17 | Returns:
18 | None
19 | """
20 | for repo in Repository.objects.all():
21 | # this needs to be idempotent
22 | roles_clear_repo_permissions(repo)
23 | roles_init_new_repo(repo)
24 |
--------------------------------------------------------------------------------
/search/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/search/__init__.py
--------------------------------------------------------------------------------
/search/exceptions.py:
--------------------------------------------------------------------------------
1 | """
2 | Exceptions related to search.
3 | """
4 |
5 | from __future__ import unicode_literals
6 |
7 |
8 | class ReindexException(Exception):
9 | """
10 | Exception thrown when reindexing Elasticsearch.
11 | """
12 |
--------------------------------------------------------------------------------
/search/management/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/search/management/__init__.py
--------------------------------------------------------------------------------
/search/management/commands/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/search/management/commands/__init__.py
--------------------------------------------------------------------------------
/search/management/commands/recreate_index.py:
--------------------------------------------------------------------------------
1 | """
2 | Shell command to refresh the Elasticsearch index.
3 | """
4 |
5 | from __future__ import unicode_literals
6 |
7 | from django.core.management.base import BaseCommand
8 |
9 | from search.utils import recreate_index
10 |
11 |
12 | class Command(BaseCommand):
13 | """
14 | Command for recreate_index.
15 | """
16 | help = "Clears the Elasticsearch index and recreates it."
17 |
18 | def handle(self, *args, **options):
19 | """Command for recreate_index"""
20 | recreate_index()
21 |
--------------------------------------------------------------------------------
/search/management/commands/refresh_index.py:
--------------------------------------------------------------------------------
1 | """
2 | Shell command to refresh the Elasticsearch index.
3 | """
4 |
5 | from __future__ import unicode_literals
6 |
7 | from django.core.management.base import BaseCommand
8 |
9 | from learningresources.models import LearningResource
10 | from search.utils import index_resources, create_mapping
11 |
12 |
13 | class Command(BaseCommand):
14 | """
15 | Command for refresh_index
16 | """
17 | help = "Updates the Elasticsearch index and mapping."
18 |
19 | def handle(self, *args, **options):
20 | """Refreshes the Elasticsearch index."""
21 | create_mapping()
22 | index_resources(LearningResource.objects.values_list("id", flat=True))
23 |
--------------------------------------------------------------------------------
/search/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/search/migrations/__init__.py
--------------------------------------------------------------------------------
/search/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/search/tests/__init__.py
--------------------------------------------------------------------------------
/taxonomy/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/taxonomy/__init__.py
--------------------------------------------------------------------------------
/taxonomy/migrations/0004_finish_slug.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from __future__ import unicode_literals
3 |
4 | from django.db import models, migrations
5 |
6 |
7 | # pylint: skip-file
8 |
9 | class Migration(migrations.Migration):
10 |
11 | dependencies = [
12 | ('taxonomy', '0003_populate_slug_values'),
13 | ]
14 |
15 | operations = [
16 | migrations.AlterField(
17 | model_name='term',
18 | name='slug',
19 | field=models.CharField(unique=True, max_length=256),
20 | preserve_default=False,
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/taxonomy/migrations/0007_vocabulary_multi_terms.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from __future__ import unicode_literals
3 |
4 | from django.db import models, migrations
5 | # pylint: skip-file
6 |
7 |
8 | class Migration(migrations.Migration):
9 |
10 | dependencies = [
11 | ('taxonomy', '0006_auto_20150630_1327'),
12 | ]
13 |
14 | operations = [
15 | migrations.AddField(
16 | model_name='vocabulary',
17 | name='multi_terms',
18 | field=models.BooleanField(default=False),
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/taxonomy/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/taxonomy/migrations/__init__.py
--------------------------------------------------------------------------------
/taxonomy/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/taxonomy/tests/__init__.py
--------------------------------------------------------------------------------
/test_requirements.txt:
--------------------------------------------------------------------------------
1 | # Core project/common application testing requirements
2 |
3 | pytest<2.8
4 | pytest-pep8
5 | pytest-pylint
6 | pytest-cov
7 | pytest-django
8 | pytest-capturelog
9 | pytest-watch
10 | pytest-xdist
11 | mock
12 | ipdb
13 | ipython
14 | urltools
15 | semantic_version
16 | responses
17 |
--------------------------------------------------------------------------------
/ui/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/__init__.py
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/dist/js/npm.js:
--------------------------------------------------------------------------------
1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
2 | require('../../js/transition.js')
3 | require('../../js/alert.js')
4 | require('../../js/button.js')
5 | require('../../js/carousel.js')
6 | require('../../js/collapse.js')
7 | require('../../js/dropdown.js')
8 | require('../../js/modal.js')
9 | require('../../js/tooltip.js')
10 | require('../../js/popover.js')
11 | require('../../js/scrollspy.js')
12 | require('../../js/tab.js')
13 | require('../../js/affix.js')
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/bootstrap/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/grunt/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends" : "../js/.jshintrc",
3 | "asi" : false,
4 | "browser" : false,
5 | "es3" : false,
6 | "node" : true
7 | }
8 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/js/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "asi" : true,
3 | "browser" : true,
4 | "eqeqeq" : false,
5 | "eqnull" : true,
6 | "es3" : true,
7 | "expr" : true,
8 | "jquery" : true,
9 | "latedef" : true,
10 | "laxbreak" : true,
11 | "nonbsp" : true,
12 | "strict" : true,
13 | "undef" : true,
14 | "unused" : true
15 | }
16 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/.csslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "adjoining-classes": false,
3 | "box-sizing": false,
4 | "box-model": false,
5 | "compatible-vendor-prefixes": false,
6 | "floats": false,
7 | "font-sizes": false,
8 | "gradients": false,
9 | "important": false,
10 | "known-properties": false,
11 | "outline-none": false,
12 | "qualified-headings": false,
13 | "regex-selectors": false,
14 | "shorthand": false,
15 | "text-indent": false,
16 | "unique-headings": false,
17 | "universal-selector": false,
18 | "unqualified-attributes": false
19 | }
20 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/alerts.less:
--------------------------------------------------------------------------------
1 | // Alerts
2 |
3 | .alert-variant(@background; @border; @text-color) {
4 | background-color: @background;
5 | border-color: @border;
6 | color: @text-color;
7 |
8 | hr {
9 | border-top-color: darken(@border, 5%);
10 | }
11 | .alert-link {
12 | color: darken(@text-color, 10%);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/background-variant.less:
--------------------------------------------------------------------------------
1 | // Contextual backgrounds
2 |
3 | .bg-variant(@color) {
4 | background-color: @color;
5 | a&:hover,
6 | a&:focus {
7 | background-color: darken(@color, 10%);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/border-radius.less:
--------------------------------------------------------------------------------
1 | // Single side border-radius
2 |
3 | .border-top-radius(@radius) {
4 | border-top-right-radius: @radius;
5 | border-top-left-radius: @radius;
6 | }
7 | .border-right-radius(@radius) {
8 | border-bottom-right-radius: @radius;
9 | border-top-right-radius: @radius;
10 | }
11 | .border-bottom-radius(@radius) {
12 | border-bottom-right-radius: @radius;
13 | border-bottom-left-radius: @radius;
14 | }
15 | .border-left-radius(@radius) {
16 | border-bottom-left-radius: @radius;
17 | border-top-left-radius: @radius;
18 | }
19 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/center-block.less:
--------------------------------------------------------------------------------
1 | // Center-align a block level element
2 |
3 | .center-block() {
4 | display: block;
5 | margin-left: auto;
6 | margin-right: auto;
7 | }
8 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/hide-text.less:
--------------------------------------------------------------------------------
1 | // CSS image replacement
2 | //
3 | // Heads up! v3 launched with only `.hide-text()`, but per our pattern for
4 | // mixins being reused as classes with the same name, this doesn't hold up. As
5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
6 | //
7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
8 |
9 | // Deprecated as of v3.0.1 (will be removed in v4)
10 | .hide-text() {
11 | font: ~"0/0" a;
12 | color: transparent;
13 | text-shadow: none;
14 | background-color: transparent;
15 | border: 0;
16 | }
17 |
18 | // New mixin to use as of v3.0.1
19 | .text-hide() {
20 | .hide-text();
21 | }
22 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/labels.less:
--------------------------------------------------------------------------------
1 | // Labels
2 |
3 | .label-variant(@color) {
4 | background-color: @color;
5 |
6 | &[href] {
7 | &:hover,
8 | &:focus {
9 | background-color: darken(@color, 10%);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/list-group.less:
--------------------------------------------------------------------------------
1 | // List Groups
2 |
3 | .list-group-item-variant(@state; @background; @color) {
4 | .list-group-item-@{state} {
5 | color: @color;
6 | background-color: @background;
7 |
8 | a&,
9 | button& {
10 | color: @color;
11 |
12 | .list-group-item-heading {
13 | color: inherit;
14 | }
15 |
16 | &:hover,
17 | &:focus {
18 | color: @color;
19 | background-color: darken(@background, 5%);
20 | }
21 | &.active,
22 | &.active:hover,
23 | &.active:focus {
24 | color: #fff;
25 | background-color: @color;
26 | border-color: @color;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/nav-divider.less:
--------------------------------------------------------------------------------
1 | // Horizontal dividers
2 | //
3 | // Dividers (basically an hr) within dropdowns and nav lists
4 |
5 | .nav-divider(@color: #e5e5e5) {
6 | height: 1px;
7 | margin: ((@line-height-computed / 2) - 1) 0;
8 | overflow: hidden;
9 | background-color: @color;
10 | }
11 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/nav-vertical-align.less:
--------------------------------------------------------------------------------
1 | // Navbar vertical align
2 | //
3 | // Vertically center elements in the navbar.
4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
5 |
6 | .navbar-vertical-align(@element-height) {
7 | margin-top: ((@navbar-height - @element-height) / 2);
8 | margin-bottom: ((@navbar-height - @element-height) / 2);
9 | }
10 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/opacity.less:
--------------------------------------------------------------------------------
1 | // Opacity
2 |
3 | .opacity(@opacity) {
4 | opacity: @opacity;
5 | // IE8 filter
6 | @opacity-ie: (@opacity * 100);
7 | filter: ~"alpha(opacity=@{opacity-ie})";
8 | }
9 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/pagination.less:
--------------------------------------------------------------------------------
1 | // Pagination
2 |
3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
4 | > li {
5 | > a,
6 | > span {
7 | padding: @padding-vertical @padding-horizontal;
8 | font-size: @font-size;
9 | line-height: @line-height;
10 | }
11 | &:first-child {
12 | > a,
13 | > span {
14 | .border-left-radius(@border-radius);
15 | }
16 | }
17 | &:last-child {
18 | > a,
19 | > span {
20 | .border-right-radius(@border-radius);
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/panels.less:
--------------------------------------------------------------------------------
1 | // Panels
2 |
3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
4 | border-color: @border;
5 |
6 | & > .panel-heading {
7 | color: @heading-text-color;
8 | background-color: @heading-bg-color;
9 | border-color: @heading-border;
10 |
11 | + .panel-collapse > .panel-body {
12 | border-top-color: @border;
13 | }
14 | .badge {
15 | color: @heading-bg-color;
16 | background-color: @heading-text-color;
17 | }
18 | }
19 | & > .panel-footer {
20 | + .panel-collapse > .panel-body {
21 | border-bottom-color: @border;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/progress-bar.less:
--------------------------------------------------------------------------------
1 | // Progress bars
2 |
3 | .progress-bar-variant(@color) {
4 | background-color: @color;
5 |
6 | // Deprecated parent class requirement as of v3.2.0
7 | .progress-striped & {
8 | #gradient > .striped();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/reset-filter.less:
--------------------------------------------------------------------------------
1 | // Reset filters for IE
2 | //
3 | // When you need to remove a gradient background, do not forget to use this to reset
4 | // the IE filter for IE9 and below.
5 |
6 | .reset-filter() {
7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
8 | }
9 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/reset-text.less:
--------------------------------------------------------------------------------
1 | .reset-text() {
2 | font-family: @font-family-base;
3 | // We deliberately do NOT reset font-size.
4 | font-style: normal;
5 | font-weight: normal;
6 | letter-spacing: normal;
7 | line-break: auto;
8 | line-height: @line-height-base;
9 | text-align: left; // Fallback for where `start` is not supported
10 | text-align: start;
11 | text-decoration: none;
12 | text-shadow: none;
13 | text-transform: none;
14 | white-space: normal;
15 | word-break: normal;
16 | word-spacing: normal;
17 | word-wrap: normal;
18 | }
19 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/resize.less:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | .resizable(@direction) {
4 | resize: @direction; // Options: horizontal, vertical, both
5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
6 | }
7 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/responsive-visibility.less:
--------------------------------------------------------------------------------
1 | // Responsive utilities
2 |
3 | //
4 | // More easily include all the states for responsive-utilities.less.
5 | .responsive-visibility() {
6 | display: block !important;
7 | table& { display: table !important; }
8 | tr& { display: table-row !important; }
9 | th&,
10 | td& { display: table-cell !important; }
11 | }
12 |
13 | .responsive-invisibility() {
14 | display: none !important;
15 | }
16 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/size.less:
--------------------------------------------------------------------------------
1 | // Sizing shortcuts
2 |
3 | .size(@width; @height) {
4 | width: @width;
5 | height: @height;
6 | }
7 |
8 | .square(@size) {
9 | .size(@size; @size);
10 | }
11 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/tab-focus.less:
--------------------------------------------------------------------------------
1 | // WebKit-style focus
2 |
3 | .tab-focus() {
4 | // Default
5 | outline: thin dotted;
6 | // WebKit
7 | outline: 5px auto -webkit-focus-ring-color;
8 | outline-offset: -2px;
9 | }
10 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/text-emphasis.less:
--------------------------------------------------------------------------------
1 | // Typography
2 |
3 | .text-emphasis-variant(@color) {
4 | color: @color;
5 | a&:hover,
6 | a&:focus {
7 | color: darken(@color, 10%);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/mixins/text-overflow.less:
--------------------------------------------------------------------------------
1 | // Text overflow
2 | // Requires inline-block or block for proper styling
3 |
4 | .text-overflow() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/ui/static/bower/bootstrap/less/wells.less:
--------------------------------------------------------------------------------
1 | //
2 | // Wells
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .well {
8 | min-height: 20px;
9 | padding: 19px;
10 | margin-bottom: 20px;
11 | background-color: @well-bg;
12 | border: 1px solid @well-border;
13 | border-radius: @border-radius-base;
14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
15 | blockquote {
16 | border-color: #ddd;
17 | border-color: rgba(0,0,0,.15);
18 | }
19 | }
20 |
21 | // Sizes
22 | .well-lg {
23 | padding: 24px;
24 | border-radius: @border-radius-large;
25 | }
26 | .well-sm {
27 | padding: 9px;
28 | border-radius: @border-radius-small;
29 | }
30 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/.gitignore:
--------------------------------------------------------------------------------
1 | /components/
2 | /data/
3 | /vendor/
4 | composer.lock
5 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/components-font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mitodl/lore/d9aaedc4788eddf31801960263bb1faec373c1af/ui/static/bower/components-font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/less/bordered-pulled.less:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em @fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .pull-right { float: right; }
11 | .pull-left { float: left; }
12 |
13 | .@{fa-css-prefix} {
14 | &.pull-left { margin-right: .3em; }
15 | &.pull-right { margin-left: .3em; }
16 | }
17 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/less/core.less:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .@{fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/less/fixed-width.less:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .@{fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/less/font-awesome.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables.less";
7 | @import "mixins.less";
8 | @import "path.less";
9 | @import "core.less";
10 | @import "larger.less";
11 | @import "fixed-width.less";
12 | @import "list.less";
13 | @import "bordered-pulled.less";
14 | @import "animated.less";
15 | @import "rotated-flipped.less";
16 | @import "stacked.less";
17 | @import "icons.less";
18 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/less/larger.less:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .@{fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .@{fa-css-prefix}-2x { font-size: 2em; }
11 | .@{fa-css-prefix}-3x { font-size: 3em; }
12 | .@{fa-css-prefix}-4x { font-size: 4em; }
13 | .@{fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/less/list.less:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: @fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .@{fa-css-prefix}-li {
11 | position: absolute;
12 | left: -@fa-li-width;
13 | width: @fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.@{fa-css-prefix}-lg {
17 | left: (-@fa-li-width + (4em / 14));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/less/stacked.less:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; }
21 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/scss/_bordered-pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em $fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .pull-right { float: right; }
11 | .pull-left { float: left; }
12 |
13 | .#{$fa-css-prefix} {
14 | &.pull-left { margin-right: .3em; }
15 | &.pull-right { margin-left: .3em; }
16 | }
17 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/scss/_core.scss:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/scss/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .#{$fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/scss/_larger.scss:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .#{$fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .#{$fa-css-prefix}-2x { font-size: 2em; }
11 | .#{$fa-css-prefix}-3x { font-size: 3em; }
12 | .#{$fa-css-prefix}-4x { font-size: 4em; }
13 | .#{$fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/scss/_list.scss:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: $fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .#{$fa-css-prefix}-li {
11 | position: absolute;
12 | left: -$fa-li-width;
13 | width: $fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.#{$fa-css-prefix}-lg {
17 | left: -$fa-li-width + (4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/scss/_stacked.scss:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; }
21 |
--------------------------------------------------------------------------------
/ui/static/bower/components-font-awesome/scss/font-awesome.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables";
7 | @import "mixins";
8 | @import "path";
9 | @import "core";
10 | @import "larger";
11 | @import "fixed-width";
12 | @import "list";
13 | @import "bordered-pulled";
14 | @import "animated";
15 | @import "rotated-flipped";
16 | @import "stacked";
17 | @import "icons";
18 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "history.js",
3 | "version": "1.8.0",
4 | "homepage": "https://github.com/browserstate/history.js",
5 | "_release": "1.8.0",
6 | "_resolution": {
7 | "type": "version",
8 | "tag": "1.8.0",
9 | "commit": "6c6c8b951b03fa725adb11b1087d73b0b6f0ac82"
10 | },
11 | "_source": "git://github.com/browserstate/history.js.git",
12 | "_target": "~1.8.0",
13 | "_originalSource": "history.js",
14 | "_direct": true
15 | }
--------------------------------------------------------------------------------
/ui/static/bower/history.js/.gitignore:
--------------------------------------------------------------------------------
1 | .build
2 | /node_modules
3 | /.idea
4 | npm-debug.log
5 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "history.js",
3 | "version": "1.8.0"
4 | }
5 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/component.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "history.js",
3 | "version": "1.8.0"
4 | }
5 |
--------------------------------------------------------------------------------
/ui/static/bower/history.js/demo/navigator.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Navigator Output
7 |
8 |
12 |
13 |