lcms-engine 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{spec/dummy/.env.docker → .env.docker} +0 -0
- data/.env.template +34 -0
- data/.gitignore +0 -1
- data/CHANGELOG.md +25 -0
- data/Dockerfile +1 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +682 -0
- data/README.md +5 -11
- data/app/assets/javascripts/lcms/engine/admin/application.js +2 -11
- data/app/assets/javascripts/lcms/engine/application.js +1 -44
- data/app/assets/javascripts/lcms/engine/application_lti.js +1 -29
- data/app/assets/javascripts/lcms/engine/initializers/foundation.js +5 -0
- data/app/assets/stylesheets/lcms/engine/admin.scss +0 -1
- data/app/assets/stylesheets/lcms/engine/application.scss +6 -61
- data/app/assets/stylesheets/lcms/engine/base/_colors.scss +2 -2
- data/app/assets/stylesheets/lcms/engine/components/lesson/_icons.scss +0 -25
- data/app/assets/stylesheets/lcms/engine/layout/_footer.scss +2 -0
- data/app/assets/stylesheets/lcms/engine/layout/_header.scss +1 -210
- data/app/assets/stylesheets/lcms/engine/pdf.scss +3 -27
- data/app/assets/stylesheets/lcms/engine/pdf_plain.scss +3 -11
- data/app/assets/stylesheets/lcms/engine/print/_typography.scss +0 -5
- data/app/assets/stylesheets/lcms/engine/utils/_variables.scss +4 -4
- data/app/controllers/concerns/lcms/engine/reimportable.rb +9 -0
- data/app/controllers/lcms/engine/admin/admin_controller.rb +2 -0
- data/app/controllers/lcms/engine/admin/documents_controller.rb +7 -17
- data/app/controllers/lcms/engine/admin/materials_controller.rb +16 -19
- data/app/controllers/lcms/engine/admin/resources_controller.rb +77 -41
- data/app/controllers/lcms/engine/surveys_controller.rb +3 -14
- data/app/forms/lcms/engine/material_form.rb +1 -0
- data/app/helpers/lcms/engine/application_helper.rb +6 -2
- data/app/helpers/lcms/engine/resource_helper.rb +0 -17
- data/app/presenters/lcms/engine/content_presenter.rb +1 -1
- data/app/presenters/lcms/engine/document_presenter.rb +3 -5
- data/app/views/devise/confirmations/new.html.erb +1 -1
- data/app/views/devise/passwords/edit.html.erb +1 -1
- data/app/views/devise/passwords/new.html.erb +1 -1
- data/app/views/devise/registrations/new.html.erb +1 -1
- data/app/views/devise/sessions/new.html.erb +2 -2
- data/app/views/layouts/lcms/engine/admin.html.erb +1 -3
- data/app/views/layouts/lcms/engine/application.html.erb +0 -6
- data/app/views/layouts/lcms/engine/cg_pdf.erb +0 -38
- data/app/views/layouts/lcms/engine/lti.html.erb +0 -1
- data/app/views/lcms/engine/admin/curriculums/edit.html.erb +3 -0
- data/app/views/lcms/engine/admin/materials/index.html.erb +1 -1
- data/app/views/lcms/engine/admin/resource_bulk_edits/new.html.erb +3 -3
- data/app/views/lcms/engine/admin/shared/_header.html.erb +1 -8
- data/app/views/lcms/engine/documents/_content.html.erb +0 -1
- data/app/views/lcms/engine/documents/_sticky_header.html.erb +1 -1
- data/app/views/lcms/engine/documents/_sticky_site_menu.html.erb +0 -1
- data/app/views/lcms/engine/resources/_download.html.erb +2 -2
- data/app/views/lcms/engine/resources/_unit_bundles.html.erb +2 -2
- data/app/views/lcms/engine/resources/show.html.erb +2 -2
- data/app/views/lcms/engine/shared/_footer.html.erb +1 -3
- data/app/views/lcms/engine/shared/_header.html.erb +2 -36
- data/app/views/lcms/engine/surveys/show.html.erb +1 -1
- data/app/views/lcms/engine/welcome/index.html.erb +1 -80
- data/config/locales/admin/en.yml +1 -0
- data/config/routes.rb +2 -36
- data/db/migrate/20200422130652_add_reimported_at_to_documents.rb +1 -1
- data/db/migrate/20200429130353_drop_pages.rb +13 -0
- data/docs/env-variables.md +87 -0
- data/docs/google-cloud-platform-setup.md +106 -0
- data/lcms-engine.gemspec +50 -59
- data/lib/doc_template/document.rb +2 -2
- data/lib/doc_template/tables/activity.rb +1 -2
- data/lib/doc_template/tables/base.rb +4 -0
- data/lib/doc_template/tables/section.rb +1 -2
- data/lib/doc_template/xpath_functions.rb +3 -1
- data/lib/lcms/engine/engine.rb +0 -8
- data/lib/lcms/engine/version.rb +1 -1
- data/lib/lt/lcms/metadata/context.rb +5 -7
- data/spec/controllers/admin/admin_controller_spec.rb +1 -1
- data/spec/controllers/admin/documents_controller_spec.rb +38 -6
- data/spec/controllers/admin/materials_controller_spec.rb +64 -0
- data/spec/controllers/admin/resources_controller_spec.rb +72 -0
- data/spec/dummy/config/lcms-admin.yml +3 -3
- data/spec/dummy/db/schema.rb +29 -37
- data/spec/features/welcome_spec.rb +1 -1
- data/spec/fixtures/tables/activity-metadata-3activities.html +1 -0
- data/spec/fixtures/tables/document-metadata-2paragpraphs.html +97 -0
- data/spec/fixtures/tables/document-metadata-2spans.html +96 -0
- data/spec/fixtures/tables/document-metadata.html +96 -0
- data/spec/lib/doc_template/tables/activity_spec.rb +28 -0
- data/spec/lib/doc_template/tables/metadata_spec.rb +40 -0
- data/spec/lib/doc_template/tables/shared_examples/remove_table.rb +11 -0
- data/spec/rails_helper.rb +1 -0
- data/spec/support/fixture_helper.rb +16 -0
- data/vendor/assets/javascripts/selectize.min.js +4 -0
- data/vendor/assets/stylesheets/selectize.scss +333 -0
- data/yarn.lock +634 -452
- metadata +274 -494
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.eot +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.svg +0 -689
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.ttf +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.woff +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.eot +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.svg +0 -697
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.ttf +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.woff +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.eot +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.svg +0 -768
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.ttf +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.woff +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.eot +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.svg +0 -685
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.ttf +0 -0
- data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.eot +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.svg +0 -5603
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.eot +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.svg +0 -5763
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.eot +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.otf +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.svg +0 -5400
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.eot +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.html +0 -15
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.otf +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.svg +0 -13061
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.eot +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.html +0 -15
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.otf +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.svg +0 -13075
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.eot +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.otf +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.svg +0 -13142
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.eot +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.ttf +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.woff +0 -0
- data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.woff2 +0 -0
- data/app/assets/fonts/lcms/engine/cursive/Sriracha-Regular.ttf +0 -0
- data/app/assets/fonts/lcms/engine/icons/ubicons.eot +0 -0
- data/app/assets/fonts/lcms/engine/icons/ubicons.svg +0 -50
- data/app/assets/fonts/lcms/engine/icons/ubicons.ttf +0 -0
- data/app/assets/fonts/lcms/engine/icons/ubicons.woff +0 -0
- data/app/assets/fonts/lcms/engine/ub/UBIcons.eot +0 -0
- data/app/assets/fonts/lcms/engine/ub/UBIcons.svg +0 -18
- data/app/assets/fonts/lcms/engine/ub/UBIcons.ttf +0 -0
- data/app/assets/fonts/lcms/engine/ub/UBIcons.woff +0 -0
- data/app/assets/images/lcms/engine/lessons/ld_p1.png +0 -0
- data/app/assets/images/lcms/engine/lessons/ld_p2.png +0 -0
- data/app/assets/images/lcms/engine/lessons/ld_p3.png +0 -0
- data/app/assets/images/lcms/engine/lessons/tens.png +0 -0
- data/app/assets/images/lcms/engine/lessons/wp.svg +0 -30
- data/app/assets/images/lcms/engine/tile-wide.png +0 -0
- data/app/assets/images/lcms/engine/tile.png +0 -0
- data/app/assets/javascripts/lcms/engine/components.js +0 -7
- data/app/assets/javascripts/lcms/engine/components/.gitkeep +0 -0
- data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMap.js.jsx +0 -31
- data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapLesson.js.jsx +0 -18
- data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapModule.js.jsx +0 -59
- data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapUnit.js.jsx +0 -56
- data/app/assets/javascripts/lcms/engine/components/curriculum-map/ResourceHover.js.jsx +0 -27
- data/app/assets/javascripts/lcms/engine/components/curriculum-map/ResourcePreview.js.jsx +0 -29
- data/app/assets/javascripts/lcms/engine/components/enhance-instruction/EnhanceInstructionCards.js.jsx +0 -13
- data/app/assets/javascripts/lcms/engine/components/enhance-instruction/EnhanceInstructionPage.js.jsx +0 -139
- data/app/assets/javascripts/lcms/engine/components/enhance-instruction/GenericResourceCard.js.jsx +0 -20
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumCardItem.js.jsx +0 -152
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumGradeMap.js.jsx +0 -44
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumHeader.js.jsx +0 -10
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumItem.js.jsx +0 -77
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumModuleMap.js.jsx +0 -59
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumOpr.js.jsx +0 -62
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumPage.js.jsx +0 -258
- data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumUnitMap.js.jsx +0 -50
- data/app/assets/javascripts/lcms/engine/components/filterbar/FilterBarResponsive.js.jsx +0 -62
- data/app/assets/javascripts/lcms/engine/components/filterbar/Filterbar.js.jsx +0 -258
- data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarFacet.js.jsx +0 -12
- data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarGrade.js.jsx +0 -14
- data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarSearch.js.jsx +0 -48
- data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarSubject.js.jsx +0 -12
- data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsCards.js.jsx +0 -11
- data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsCardsEmpty.js.jsx +0 -17
- data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsPage.js.jsx +0 -58
- data/app/assets/javascripts/lcms/engine/components/helpers/FreshdeskBtn.js.jsx +0 -9
- data/app/assets/javascripts/lcms/engine/components/helpers/MediaTime.js.jsx +0 -6
- data/app/assets/javascripts/lcms/engine/components/helpers/SearchResultsHeader.js.jsx +0 -41
- data/app/assets/javascripts/lcms/engine/components/helpers/TimeToTeach.js.jsx +0 -29
- data/app/assets/javascripts/lcms/engine/components/instruction-card/InstructionCard.js.jsx +0 -57
- data/app/assets/javascripts/lcms/engine/components/lesson-card/LessonCard.js.jsx +0 -45
- data/app/assets/javascripts/lcms/engine/components/materials/CollapsedMaterial.js.jsx +0 -40
- data/app/assets/javascripts/lcms/engine/components/materials/DocumentMaterialsList.js.jsx +0 -33
- data/app/assets/javascripts/lcms/engine/components/materials/ExpandedMaterial.js.jsx +0 -37
- data/app/assets/javascripts/lcms/engine/components/materials/MaterialsContainer.js.jsx +0 -92
- data/app/assets/javascripts/lcms/engine/components/materials/MaterialsList.js.jsx +0 -19
- data/app/assets/javascripts/lcms/engine/components/modals/DownloadModal.js.jsx +0 -68
- data/app/assets/javascripts/lcms/engine/components/related-instruction/RelatedInstruction.js.jsx +0 -72
- data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdown.js.jsx +0 -159
- data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdownResult.js.jsx +0 -12
- data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdownResults.js.jsx +0 -36
- data/app/assets/javascripts/lcms/engine/components/search/SearchPage.js.jsx +0 -44
- data/app/assets/javascripts/lcms/engine/components/search/SearchResult.js.jsx +0 -22
- data/app/assets/javascripts/lcms/engine/components/search/SearchResults.js.jsx +0 -17
- data/app/assets/javascripts/lcms/engine/components/search/SearchResultsEmpty.js.jsx +0 -25
- data/app/assets/javascripts/lcms/engine/components/search/searchPageWrapper.js.jsx +0 -77
- data/app/assets/javascripts/lcms/engine/components/select-activity/SelectActivityConfirmationModal.js.jsx +0 -107
- data/app/assets/javascripts/lcms/engine/components/select-activity/SelectActivityToggle.js.jsx +0 -39
- data/app/assets/javascripts/lcms/engine/components/stores/ExcludesStore.js.jsx +0 -11
- data/app/assets/javascripts/lcms/engine/components/tabs/SimpleTab.js.jsx +0 -130
- data/app/assets/javascripts/lcms/engine/components/utils/UrlHistory.js.jsx +0 -113
- data/app/assets/javascripts/lcms/engine/components/utils/colorcodecss.js.jsx +0 -4
- data/app/assets/javascripts/lcms/engine/components/utils/converttobem.js.jsx +0 -3
- data/app/assets/javascripts/lcms/engine/components/utils/filterbarupdate.js.jsx +0 -5
- data/app/assets/javascripts/lcms/engine/components/utils/heaptrackpd.js.jsx +0 -5
- data/app/assets/javascripts/lcms/engine/components/utils/regexpescape.js.jsx +0 -5
- data/app/assets/javascripts/lcms/engine/components/utils/scalenumber.js.jsx +0 -8
- data/app/assets/javascripts/lcms/engine/initializers/about_people.js +0 -8
- data/app/assets/javascripts/lcms/engine/initializers/analytics.js +0 -10
- data/app/assets/javascripts/lcms/engine/initializers/bundles.js +0 -12
- data/app/assets/javascripts/lcms/engine/initializers/events.js +0 -3
- data/app/assets/javascripts/lcms/engine/initializers/freshdesk.js +0 -18
- data/app/assets/javascripts/lcms/engine/initializers/header_dropdown.js +0 -44
- data/app/assets/javascripts/lcms/engine/initializers/heap_analytics.js +0 -78
- data/app/assets/javascripts/lcms/engine/initializers/leadership.js +0 -22
- data/app/assets/javascripts/lcms/engine/initializers/lessons.js +0 -299
- data/app/assets/javascripts/lcms/engine/initializers/loadasync.js +0 -30
- data/app/assets/javascripts/lcms/engine/initializers/pdf_preview.js +0 -15
- data/app/assets/javascripts/lcms/engine/initializers/resource_details.js +0 -21
- data/app/assets/javascripts/lcms/engine/initializers/sidebar/SideBar.js.jsx +0 -86
- data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarCGMenu.js.jsx +0 -37
- data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarDocMenu.js.jsx +0 -75
- data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarMobile.js.jsx +0 -43
- data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx +0 -43
- data/app/assets/javascripts/lcms/engine/initializers/sidebar/TopScroll.js.jsx +0 -21
- data/app/assets/javascripts/lcms/engine/initializers/social_sharing.js +0 -29
- data/app/assets/javascripts/lcms/engine/initializers/soundcloud.js +0 -52
- data/app/assets/javascripts/lcms/engine/initializers/subscribe_placeholder.js +0 -12
- data/app/assets/javascripts/lcms/engine/initializers/survey.js +0 -31
- data/app/assets/stylesheets/lcms/engine/base/_cg-colors.scss +0 -48
- data/app/assets/stylesheets/lcms/engine/base/_fonts.scss +0 -103
- data/app/assets/stylesheets/lcms/engine/base/_icons.scss +0 -342
- data/app/assets/stylesheets/lcms/engine/components/_buttons.scss +0 -200
- data/app/assets/stylesheets/lcms/engine/components/_cards.scss +0 -36
- data/app/assets/stylesheets/lcms/engine/components/_cg-base.scss +0 -22
- data/app/assets/stylesheets/lcms/engine/components/_curriculum-cards.scss +0 -237
- data/app/assets/stylesheets/lcms/engine/components/_curriculum-map.scss +0 -214
- data/app/assets/stylesheets/lcms/engine/components/_download-modal.scss +0 -56
- data/app/assets/stylesheets/lcms/engine/components/_filterbar-modal.scss +0 -20
- data/app/assets/stylesheets/lcms/engine/components/_filterbar.scss +0 -184
- data/app/assets/stylesheets/lcms/engine/components/_generic-resource.scss +0 -58
- data/app/assets/stylesheets/lcms/engine/components/_inputs.scss +0 -12
- data/app/assets/stylesheets/lcms/engine/components/_instruction-cards.scss +0 -160
- data/app/assets/stylesheets/lcms/engine/components/_lesson-base.scss +0 -31
- data/app/assets/stylesheets/lcms/engine/components/_lesson-cards.scss +0 -119
- data/app/assets/stylesheets/lcms/engine/components/_ls-post.scss +0 -38
- data/app/assets/stylesheets/lcms/engine/components/_material-base.scss +0 -6
- data/app/assets/stylesheets/lcms/engine/components/_media-resources.scss +0 -6
- data/app/assets/stylesheets/lcms/engine/components/_media.scss +0 -95
- data/app/assets/stylesheets/lcms/engine/components/_pagination.scss +0 -84
- data/app/assets/stylesheets/lcms/engine/components/_panel-dsc.scss +0 -37
- data/app/assets/stylesheets/lcms/engine/components/_panel.scss +0 -7
- data/app/assets/stylesheets/lcms/engine/components/_related-instruction.scss +0 -31
- data/app/assets/stylesheets/lcms/engine/components/_resource.scss +0 -217
- data/app/assets/stylesheets/lcms/engine/components/_search-dropdown.scss +0 -23
- data/app/assets/stylesheets/lcms/engine/components/_search-header.scss +0 -45
- data/app/assets/stylesheets/lcms/engine/components/_search.scss +0 -57
- data/app/assets/stylesheets/lcms/engine/components/_sidebar.scss +0 -159
- data/app/assets/stylesheets/lcms/engine/components/_simple-tab.scss +0 -57
- data/app/assets/stylesheets/lcms/engine/components/_social-sharing.scss +0 -20
- data/app/assets/stylesheets/lcms/engine/components/_titles.scss +0 -33
- data/app/assets/stylesheets/lcms/engine/components/_top-scroll-button.scss +0 -28
- data/app/assets/stylesheets/lcms/engine/components/_unit-bundles.scss +0 -14
- data/app/assets/stylesheets/lcms/engine/components/cg/_annotations.scss +0 -48
- data/app/assets/stylesheets/lcms/engine/components/cg/_colorscheme.scss +0 -60
- data/app/assets/stylesheets/lcms/engine/components/cg/_contents-modal.scss +0 -20
- data/app/assets/stylesheets/lcms/engine/components/cg/_elements.scss +0 -11
- data/app/assets/stylesheets/lcms/engine/components/cg/_faq.scss +0 -35
- data/app/assets/stylesheets/lcms/engine/components/cg/_footnote.scss +0 -20
- data/app/assets/stylesheets/lcms/engine/components/cg/_hacks.scss +0 -11
- data/app/assets/stylesheets/lcms/engine/components/cg/_icons.scss +0 -30
- data/app/assets/stylesheets/lcms/engine/components/cg/_keywords.scss +0 -5
- data/app/assets/stylesheets/lcms/engine/components/cg/_links.scss +0 -3
- data/app/assets/stylesheets/lcms/engine/components/cg/_quotes.scss +0 -18
- data/app/assets/stylesheets/lcms/engine/components/cg/_standards.scss +0 -23
- data/app/assets/stylesheets/lcms/engine/components/cg/_table.scss +0 -50
- data/app/assets/stylesheets/lcms/engine/components/cg/_task.scss +0 -43
- data/app/assets/stylesheets/lcms/engine/components/cg/_video.scss +0 -10
- data/app/assets/stylesheets/lcms/engine/components/support/_helpdesk.scss +0 -25
- data/app/assets/stylesheets/lcms/engine/freshdesk/base/_colors.scss +0 -25
- data/app/assets/stylesheets/lcms/engine/freshdesk/base/_typography.scss +0 -19
- data/app/assets/stylesheets/lcms/engine/freshdesk/components/_block.scss +0 -5
- data/app/assets/stylesheets/lcms/engine/freshdesk/components/_buttons.scss +0 -5
- data/app/assets/stylesheets/lcms/engine/freshdesk/components/_help-center.scss +0 -59
- data/app/assets/stylesheets/lcms/engine/freshdesk/components/_tabs.scss +0 -33
- data/app/assets/stylesheets/lcms/engine/freshdesk/freshdesk.scss +0 -42
- data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_footer.scss +0 -44
- data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_header.scss +0 -49
- data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_page.scss +0 -40
- data/app/assets/stylesheets/lcms/engine/freshdesk/layout/footer.liquid +0 -14
- data/app/assets/stylesheets/lcms/engine/freshdesk/layout/header.liquid +0 -41
- data/app/assets/stylesheets/lcms/engine/freshdesk/layout/page.liquid +0 -22
- data/app/assets/stylesheets/lcms/engine/freshdesk/pages/_portal-home.scss +0 -18
- data/app/assets/stylesheets/lcms/engine/freshdesk/pages/portal.home.liquid +0 -74
- data/app/assets/stylesheets/lcms/engine/freshdesk/themes/_settings.scss +0 -19
- data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_breakpoint.scss +0 -288
- data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_helpers.scss +0 -22
- data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_unit.scss +0 -95
- data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_value.scss +0 -138
- data/app/assets/stylesheets/lcms/engine/layout/_connect.scss +0 -63
- data/app/assets/stylesheets/lcms/engine/layout/_header-search-form.scss +0 -30
- data/app/assets/stylesheets/lcms/engine/layout/_sticky-header.scss +0 -179
- data/app/assets/stylesheets/lcms/engine/layout/_sticky-navigation.scss +0 -124
- data/app/assets/stylesheets/lcms/engine/layout/_subscribe.scss +0 -68
- data/app/assets/stylesheets/lcms/engine/pages/_about-people.scss +0 -115
- data/app/assets/stylesheets/lcms/engine/pages/_about.scss +0 -61
- data/app/assets/stylesheets/lcms/engine/pages/_content-guide.scss +0 -205
- data/app/assets/stylesheets/lcms/engine/pages/_enhance-instruction.scss +0 -19
- data/app/assets/stylesheets/lcms/engine/pages/_explore-curriculum.scss +0 -46
- data/app/assets/stylesheets/lcms/engine/pages/_find-lessons.scss +0 -1
- data/app/assets/stylesheets/lcms/engine/pages/_home.scss +0 -237
- data/app/assets/stylesheets/lcms/engine/pages/_leadership.scss +0 -263
- data/app/assets/stylesheets/lcms/engine/pages/_lesson-document.scss +0 -138
- data/app/assets/stylesheets/lcms/engine/pages/_unsupported.scss +0 -18
- data/app/assets/stylesheets/lcms/engine/print/_b64-fonts.scss.erb +0 -65
- data/app/assets/stylesheets/lcms/engine/print/_cg-base.scss +0 -4
- data/app/assets/stylesheets/lcms/engine/print/_hacks.scss +0 -6
- data/app/assets/stylesheets/lcms/engine/print/cg/_base-typography.scss +0 -21
- data/app/assets/stylesheets/lcms/engine/print/cg/_breaks.scss +0 -7
- data/app/assets/stylesheets/lcms/engine/print/cg/_elements-typography.scss +0 -14
- data/app/assets/stylesheets/lcms/engine/vendors/swiper.css +0 -547
- data/app/controllers/concerns/lcms/engine/analytics_tracking.rb +0 -51
- data/app/controllers/concerns/lcms/engine/heap_notifyable.rb +0 -20
- data/app/controllers/lcms/engine/admin/configurable_admin.rb +0 -56
- data/app/controllers/lcms/engine/admin/google_oauth2_controller.rb +0 -15
- data/app/controllers/lcms/engine/admin/pages_controller.rb +0 -54
- data/app/controllers/lcms/engine/analytics_exclusion_controller.rb +0 -14
- data/app/controllers/lcms/engine/downloads_controller.rb +0 -50
- data/app/controllers/lcms/engine/enhance_instruction_controller.rb +0 -18
- data/app/controllers/lcms/engine/explore_curriculum_controller.rb +0 -28
- data/app/controllers/lcms/engine/find_lessons_controller.rb +0 -15
- data/app/controllers/lcms/engine/pages_controller.rb +0 -26
- data/app/controllers/lcms/engine/search_controller.rb +0 -15
- data/app/controllers/lcms/engine/sessions_controller.rb +0 -19
- data/app/models/lcms/engine/page.rb +0 -13
- data/app/services/lcms/engine/generate_thumbnails.rb +0 -54
- data/app/services/lcms/engine/svg_social_thumbnail.rb +0 -223
- data/app/views/layouts/lcms/engine/ld_docx.html.erb +0 -16
- data/app/views/lcms/engine/admin/pages/_form.html.erb +0 -8
- data/app/views/lcms/engine/admin/pages/edit.html.erb +0 -9
- data/app/views/lcms/engine/admin/pages/index.html.erb +0 -25
- data/app/views/lcms/engine/admin/pages/new.html.erb +0 -5
- data/app/views/lcms/engine/documents/_helpdesk.html.erb +0 -9
- data/app/views/lcms/engine/pages/_about_people_staff.html.erb +0 -27
- data/app/views/lcms/engine/pages/_leadership_in_action.html.erb +0 -25
- data/app/views/lcms/engine/pages/_leadership_why_i_lead.html.erb +0 -34
- data/app/views/lcms/engine/pages/about.html.erb +0 -87
- data/app/views/lcms/engine/pages/about_people.html.erb +0 -27
- data/app/views/lcms/engine/pages/forthcoming.html.erb +0 -9
- data/app/views/lcms/engine/pages/leadership.html.erb +0 -82
- data/app/views/lcms/engine/pages/not_found.html.erb +0 -9
- data/app/views/lcms/engine/pages/privacy.html.erb +0 -9
- data/app/views/lcms/engine/pages/show.html.erb +0 -8
- data/app/views/lcms/engine/pages/show_slug.html.erb +0 -0
- data/app/views/lcms/engine/pages/tos.html.erb +0 -9
- data/app/views/lcms/engine/shared/_connect.html.erb +0 -60
- data/app/views/lcms/engine/shared/_freshdesk.html.erb +0 -22
- data/app/views/lcms/engine/shared/_google_analytics.html.erb +0 -9
- data/app/views/lcms/engine/shared/_heap_analytics.html.erb +0 -7
- data/app/views/lcms/engine/shared/_open_graph_meta.html.erb +0 -15
- data/app/views/lcms/engine/shared/_open_graph_meta_js.html.erb +0 -39
- data/app/views/lcms/engine/shared/_search_form.html.erb +0 -10
- data/app/views/lcms/engine/shared/_social_sharing_menu.html.erb +0 -34
- data/app/views/lcms/engine/shared/_subscribe.html.erb +0 -30
- data/app/views/lcms/engine/shared/_unsupported.html.erb +0 -3
- data/app/views/lcms/engine/shared/social_thumbnail.svg.erb +0 -54
- data/config/initializers/heap.rb +0 -3
- data/lib/tasks/thumbnails.rake +0 -59
- data/spec/controllers/admin/pages_controller_spec.rb +0 -19
- data/spec/controllers/enhance_instruction_controller_spec.rb +0 -15
- data/spec/controllers/explore_curriculum_controller_spec.rb +0 -29
- data/spec/controllers/find_lessons_controller_spec.rb +0 -50
- data/spec/controllers/pages_controller_spec.rb +0 -32
- data/spec/controllers/search_controller_spec.rb +0 -16
- data/spec/factories/pages.rb +0 -21
- data/spec/features/admin/pages_spec.rb +0 -79
- data/spec/features/pages/page_not_found_spec.rb +0 -26
- data/spec/features/pages/page_titles_spec.rb +0 -86
- data/spec/support/heap.rb +0 -3
- data/vendor/assets/javascripts/foundation.initialize.js +0 -115
- data/vendor/assets/javascripts/foundation.magellanex.js +0 -335
- data/vendor/assets/javascripts/freshwidget.js +0 -1
- data/vendor/assets/javascripts/jquery.easytabs.js +0 -704
- data/vendor/assets/javascripts/jquery.hashchange.js +0 -9
- data/vendor/assets/javascripts/modernizr-custom.js +0 -3
- data/vendor/assets/javascripts/smoothscrolling.js +0 -22
- data/vendor/assets/javascripts/swiper.jquery.js +0 -3777
- data/vendor/assets/javascripts/tabs.js +0 -6
data/app/assets/javascripts/lcms/engine/components/enhance-instruction/GenericResourceCard.js.jsx
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line no-unused-vars
|
2
|
-
function GenericResourceCard(props) {
|
3
|
-
const item = props.item;
|
4
|
-
const mainClass = 'o-generic-card';
|
5
|
-
const bemClass = _.partial(convertToBEM, mainClass);
|
6
|
-
const cssGeneric = classNames(
|
7
|
-
mainClass,
|
8
|
-
`cs-link-bg--${colorCodeCss(item.subject, item.grade_avg)}`
|
9
|
-
);
|
10
|
-
|
11
|
-
return (
|
12
|
-
// eslint-disable-next-line no-undef
|
13
|
-
<a className={cssGeneric} href={item.path} onClick={heapTrackPd.bind(null, item)}>
|
14
|
-
<div className={bemClass('wrap')}>
|
15
|
-
<div className={bemClass('title')}>{item.title}</div>
|
16
|
-
<div className={bemClass('teaser')}>{item.teaser}</div>
|
17
|
-
</div>
|
18
|
-
</a>
|
19
|
-
);
|
20
|
-
}
|
@@ -1,152 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line no-unused-vars
|
2
|
-
class ExploreCurriculumCardItem extends React.Component {
|
3
|
-
componentDidMount() {
|
4
|
-
if (this._dropdown) {
|
5
|
-
new Foundation.DropdownMenu($(this._dropdown),
|
6
|
-
{ 'alignment': 'right',
|
7
|
-
'forceFollow': false,
|
8
|
-
'closingTime': Modernizr.touchevents ? 0 : 5000 });
|
9
|
-
}
|
10
|
-
}
|
11
|
-
|
12
|
-
componentWillUnmount() {
|
13
|
-
if (this._dropdown) {
|
14
|
-
$(this._dropdown).foundation('destroy');
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
render() {
|
19
|
-
const props = this.props;
|
20
|
-
const resource = props.curriculum.resource;
|
21
|
-
const hasDownloads = resource.downloads && resource.downloads.length > 0;
|
22
|
-
const hasRelated = resource.has_related;
|
23
|
-
const colorCode = props.colorCode;
|
24
|
-
|
25
|
-
const curriculumComponent = {
|
26
|
-
// eslint-disable-next-line no-undef
|
27
|
-
'grade': ExploreCurriculumGradeMap,
|
28
|
-
// eslint-disable-next-line no-undef
|
29
|
-
'module': ExploreCurriculumModuleMap,
|
30
|
-
// eslint-disable-next-line no-undef
|
31
|
-
'unit': ExploreCurriculumUnitMap,
|
32
|
-
// eslint-disable-next-line no-undef
|
33
|
-
'lesson': ExploreCurriculumGradeMap
|
34
|
-
}[props.curriculum.type];
|
35
|
-
|
36
|
-
const curriculumMap = React.createElement(curriculumComponent, {
|
37
|
-
expanded: props.shouldItemExpand,
|
38
|
-
curriculum: props.curriculum,
|
39
|
-
colorCode: colorCode
|
40
|
-
});
|
41
|
-
|
42
|
-
const cssClasses = classNames(
|
43
|
-
'o-cur-card',
|
44
|
-
`o-cur-card-hover--${props.colorCode}`,
|
45
|
-
{ [`o-cur-card-active--${props.colorCode}`]: props.isActive},
|
46
|
-
{ 'o-cur-card--short': !props.shouldItemExpand },
|
47
|
-
`o-cur-card--${props.curriculum.type}`
|
48
|
-
);
|
49
|
-
|
50
|
-
const cssBodyClasses = classNames(
|
51
|
-
'o-cur-card__body',
|
52
|
-
{ 'o-cur-card__body--medium': props.shouldItemExpand },
|
53
|
-
{ 'o-cur-card__body--short': !props.shouldItemExpand }
|
54
|
-
);
|
55
|
-
|
56
|
-
const cssActionClasses = classNames(
|
57
|
-
'o-cur-card__actions',
|
58
|
-
{'o-cur-card__actions--short': !props.shouldItemExpand },
|
59
|
-
{'u-hidden': _.includes(['grade', 'module'], props.curriculum.type) || resource.is_assessment}
|
60
|
-
);
|
61
|
-
|
62
|
-
const cssActionDropdownClasses = classNames(
|
63
|
-
'o-cur-card__menu o-cur-card__menu--short o-cur-card--show-short',
|
64
|
-
{'u-hidden': _.includes(['grade', 'module'], props.curriculum.type)}
|
65
|
-
);
|
66
|
-
|
67
|
-
const cssDownloadBtnClasses = classNames(
|
68
|
-
'o-ub-btn', 'o-ub-btn--bordered', 'o-ub-btn--curriculum',
|
69
|
-
{'o-ub-btn--disabled': !hasDownloads }
|
70
|
-
);
|
71
|
-
|
72
|
-
const cssRelatedBtnClasses = classNames(
|
73
|
-
'o-ub-btn', 'o-ub-btn--bordered', 'o-ub-btn--curriculum',
|
74
|
-
{'o-ub-btn--disabled': !hasRelated }
|
75
|
-
);
|
76
|
-
|
77
|
-
const cssDownloadLinkClasses = classNames(
|
78
|
-
{'u-link--disabled': !hasDownloads }
|
79
|
-
);
|
80
|
-
|
81
|
-
const cssHeaderClasses = classNames(
|
82
|
-
`cs-txt--${colorCode}`,
|
83
|
-
{'o-title__type o-title__type--top-align': props.shouldItemExpand},
|
84
|
-
{'o-title__type--short': !props.shouldItemExpand },
|
85
|
-
{'u-hidden': resource.is_assessment}
|
86
|
-
);
|
87
|
-
|
88
|
-
const cssTitleClasses = classNames(
|
89
|
-
{'u-txt--card-title-medium': props.shouldItemExpand && !resource.is_assessment },
|
90
|
-
{'u-txt--card-title-short': !props.shouldItemExpand && !resource.is_assessment },
|
91
|
-
{'u-txt--card-assesment-medium': props.shouldItemExpand && resource.is_assessment },
|
92
|
-
{'u-txt--card-assesment-short': !props.shouldItemExpand && resource.is_assessment }
|
93
|
-
);
|
94
|
-
|
95
|
-
const cssShow = classNames(
|
96
|
-
'u-hidden'
|
97
|
-
);
|
98
|
-
|
99
|
-
const resourceType = resource.type.name === 'grade' ? 'curriculum' : resource.type.name;
|
100
|
-
const downloadBtnLabel = `Download ${_.capitalize(resourceType)}`;
|
101
|
-
const downloadModalId = `downloads-modal-${resource.id}`;
|
102
|
-
|
103
|
-
return (
|
104
|
-
<div id={props.curriculum.id} name={resource.path} onClick={props.onClickElement} className={cssClasses} data-magellanhash-target>
|
105
|
-
{curriculumMap}
|
106
|
-
<div className={cssBodyClasses}>
|
107
|
-
<div className="o-title u-text--uppercase show-for-ipad">
|
108
|
-
<span className={cssHeaderClasses}>{resource.short_title}</span>
|
109
|
-
<span className={`${cssShow} o-title__duration o-cur-card--show-medium`}><TimeToTeach duration={resource.time_to_teach} /></span>
|
110
|
-
</div>
|
111
|
-
<h3 className={cssTitleClasses}>{resource.title}</h3>
|
112
|
-
<div className={`${cssShow} o-title u-text--uppercase hide-for-ipad u-padding-top--xs`}>
|
113
|
-
<span className="o-title__duration u-float-none"><TimeToTeach duration={resource.time_to_teach} /></span>
|
114
|
-
</div>
|
115
|
-
<div className="o-cur-card--show-medium o-cur-card__dsc">{resource.teaser}</div>
|
116
|
-
</div>
|
117
|
-
<div className={cssActionClasses}>
|
118
|
-
<ul className="o-cur-card__menu o-cur-card__menu--medium o-cur-card--show-medium">
|
119
|
-
<li>
|
120
|
-
<a className="o-ub-btn o-ub-btn--yellow o-ub-btn--subtle" href={resource.path}>
|
121
|
-
View Details
|
122
|
-
</a>
|
123
|
-
</li>
|
124
|
-
<li>
|
125
|
-
<a className={cssDownloadBtnClasses} data-open={downloadModalId}>
|
126
|
-
{downloadBtnLabel}
|
127
|
-
</a>
|
128
|
-
</li>
|
129
|
-
<li>
|
130
|
-
<a className={cssRelatedBtnClasses} href={`${resource.path}#related-instruction`}>
|
131
|
-
Related Resources
|
132
|
-
</a>
|
133
|
-
</li>
|
134
|
-
</ul>
|
135
|
-
<div className={`${cssHeaderClasses} u-text--uppercase hide-for-ipad`}>
|
136
|
-
{resource.short_title}
|
137
|
-
</div>
|
138
|
-
<ul className={cssActionDropdownClasses} ref={(ref) => this._dropdown = ref}>
|
139
|
-
<li>
|
140
|
-
<a href="" data-turbolinks="false" className="o-cur-card__ellipsis"><i className="ub-ellipsis fa-3x"></i></a>
|
141
|
-
<ul className="menu">
|
142
|
-
<li><a href={resource.path}>View Details</a></li>
|
143
|
-
<li><a className={cssDownloadLinkClasses} data-open={downloadModalId}>{downloadBtnLabel}</a></li>
|
144
|
-
<li><a className="u-link--disabled">Related Instruction</a></li>
|
145
|
-
</ul>
|
146
|
-
</li>
|
147
|
-
</ul>
|
148
|
-
</div>
|
149
|
-
</div>
|
150
|
-
);
|
151
|
-
}
|
152
|
-
}
|
@@ -1,44 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line no-unused-vars
|
2
|
-
function ExploreCurriculumGradeMap(props) {
|
3
|
-
const mapClass = classNames({
|
4
|
-
'o-cur-card__map': true,
|
5
|
-
'o-cur-card__map--medium': props.expanded,
|
6
|
-
'o-cur-card__map--short': !props.expanded
|
7
|
-
});
|
8
|
-
|
9
|
-
const mainClass = classNames({
|
10
|
-
'o-ch-map': true,
|
11
|
-
'o-ch-map--medium': props.expanded,
|
12
|
-
'o-ch-map--short': !props.expanded
|
13
|
-
});
|
14
|
-
|
15
|
-
const details = props.expanded ?
|
16
|
-
<div className="o-ch-map__details">
|
17
|
-
<span>Show Modules</span>
|
18
|
-
</div> : '';
|
19
|
-
|
20
|
-
const min = Math.min(...props.curriculum.module_sizes),
|
21
|
-
max = Math.max(...props.curriculum.module_sizes);
|
22
|
-
|
23
|
-
// eslint-disable-next-line no-undef
|
24
|
-
const scale = _.curry(scaleNumber)(70, 100, min, max);
|
25
|
-
const bemClass = _.partial(convertToBEM, mainClass);
|
26
|
-
|
27
|
-
const grades = props.curriculum.module_sizes.map((size, i) => {
|
28
|
-
const styles = { width: `${scale(size)}%` };
|
29
|
-
return (
|
30
|
-
<div key={i} className={bemClass('module-wrap')}>
|
31
|
-
<div className={classNames(bemClass('module'), `cs-bg--${props.colorCode}`)} style={styles}></div>
|
32
|
-
</div>
|
33
|
-
);
|
34
|
-
});
|
35
|
-
|
36
|
-
return (
|
37
|
-
<div className={mapClass}>
|
38
|
-
<div className={mainClass}>
|
39
|
-
{grades}
|
40
|
-
</div>
|
41
|
-
{details}
|
42
|
-
</div>
|
43
|
-
);
|
44
|
-
}
|
data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumItem.js.jsx
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line no-unused-vars
|
2
|
-
class ExploreCurriculumItem extends React.Component {
|
3
|
-
curriculum() {
|
4
|
-
return this.props.index[this.props.id];
|
5
|
-
}
|
6
|
-
|
7
|
-
downloadModal() {
|
8
|
-
const resource = this.curriculum().resource;
|
9
|
-
return (resource.downloads && resource.downloads.length > 0) ?
|
10
|
-
<DownloadModal resource={resource} /> : '';
|
11
|
-
}
|
12
|
-
|
13
|
-
render() {
|
14
|
-
const props = this.props;
|
15
|
-
const curriculum = this.curriculum();
|
16
|
-
const colorCode = colorCodeCss(curriculum.resource.subject, curriculum.resource.grade);
|
17
|
-
|
18
|
-
// An item should expand if its parent is the last parent in the active branch.
|
19
|
-
// Collapsed Grade -> Collapsed Mod -> Expanded Unit 1, Unit 2, Unit 3
|
20
|
-
const activeParent = props.index[props.active[props.active.length - 2]];
|
21
|
-
const shouldItemExpand = props.active.length === 1 ||
|
22
|
-
_.some(activeParent.children, c => c.id === props.id);
|
23
|
-
const isItemActive = props.active.length > 1 && props.active[props.active.length - 2] === props.id;
|
24
|
-
|
25
|
-
let onClickItem = shouldItemExpand ? props.onClickViewDetails.bind(this, props.parentage) : props.onClickExpand.bind(this, props.parentage);
|
26
|
-
if (curriculum.resource.is_assessment) {
|
27
|
-
onClickItem = function() { location.href = curriculum.resource.path; };
|
28
|
-
}
|
29
|
-
|
30
|
-
const item =
|
31
|
-
<ExploreCurriculumCardItem
|
32
|
-
curriculum={curriculum}
|
33
|
-
onClickElement={onClickItem}
|
34
|
-
shouldItemExpand={shouldItemExpand}
|
35
|
-
isActive={isItemActive}
|
36
|
-
colorCode={colorCode} />;
|
37
|
-
|
38
|
-
// Children should be rendered if the item is a parent in the active branch.
|
39
|
-
const shouldRenderChildren = props.active.length > 1 &&
|
40
|
-
_.includes(props.active, props.id) &&
|
41
|
-
_.last(props.active) !== props.id;
|
42
|
-
|
43
|
-
const cssClasses = classNames( 'c-ec-cards__children',
|
44
|
-
{ 'c-ec-cards__children--lessons': curriculum.type === 'unit',
|
45
|
-
'c-ec-cards__children--expanded': shouldRenderChildren });
|
46
|
-
|
47
|
-
const children = _.filter(curriculum.children, x => !x.resource.is_opr);
|
48
|
-
|
49
|
-
const childrenElements = shouldRenderChildren ?
|
50
|
-
children.map(c => (
|
51
|
-
c.type === 'lesson' ?
|
52
|
-
<LessonCard key={c.resource.id} lesson={c.resource} with_breadcrumb={false} colorCode={colorCode} /> :
|
53
|
-
<ExploreCurriculumItem
|
54
|
-
key={c.id}
|
55
|
-
id={c.id}
|
56
|
-
index={props.index}
|
57
|
-
onClickExpand={props.onClickExpand}
|
58
|
-
onClickViewDetails={props.onClickViewDetails}
|
59
|
-
parentage={[...props.parentage, c.id]}
|
60
|
-
active={props.active} />
|
61
|
-
)) : [];
|
62
|
-
|
63
|
-
const shouldRenderOpr = shouldRenderChildren && curriculum.type === 'unit';
|
64
|
-
const opr = shouldRenderOpr ? <ExploreCurriculumOpr colorCode={colorCode} curriculum={curriculum}/> : [];
|
65
|
-
|
66
|
-
return (
|
67
|
-
<div>
|
68
|
-
{item}
|
69
|
-
{opr}
|
70
|
-
<div className={cssClasses}>
|
71
|
-
{childrenElements}
|
72
|
-
</div>
|
73
|
-
{this.downloadModal()}
|
74
|
-
</div>
|
75
|
-
);
|
76
|
-
}
|
77
|
-
}
|
@@ -1,59 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line no-unused-vars
|
2
|
-
function ExploreCurriculumModuleMap(props) {
|
3
|
-
const mapClass = classNames({
|
4
|
-
'o-cur-card__map': true,
|
5
|
-
'o-cur-card__map--medium': props.expanded,
|
6
|
-
'o-cur-card__map--short': !props.expanded
|
7
|
-
});
|
8
|
-
|
9
|
-
const mainClass = classNames({
|
10
|
-
'o-ch-map': true,
|
11
|
-
'o-ch-map--medium': props.expanded,
|
12
|
-
'o-ch-map--short': !props.expanded
|
13
|
-
});
|
14
|
-
|
15
|
-
const bemClass = _.partial(convertToBEM, mainClass);
|
16
|
-
const colorCodeClass = `cs-bg--${props.colorCode}`;
|
17
|
-
|
18
|
-
const details = props.expanded ?
|
19
|
-
<div className="o-ch-map__details">
|
20
|
-
<span>Show Units</span>
|
21
|
-
</div> : '';
|
22
|
-
|
23
|
-
const units = props.curriculum.unit_sizes.map((size, i) => {
|
24
|
-
const lessons = [];
|
25
|
-
const unit = props.curriculum.children[i];
|
26
|
-
|
27
|
-
for (let j = 0; j < size; j++) {
|
28
|
-
const child = unit ? unit.children[j] : null;
|
29
|
-
if (child && child.resource.is_opr) continue;
|
30
|
-
const prereqClass = child && child.resource.is_prerequisite ? 'o-ch-unit-map__prerequisite' : '';
|
31
|
-
const assessmentClass = unit && unit.resource.is_assessment ? `o-ch-unit-map__assessment--${props.colorCode}` : '';
|
32
|
-
lessons.push((
|
33
|
-
<div key={j} className={classNames(bemClass('lesson'), colorCodeClass, assessmentClass, prereqClass)}></div>
|
34
|
-
));
|
35
|
-
}
|
36
|
-
|
37
|
-
return (
|
38
|
-
<div key={i} className={bemClass('unit')}>
|
39
|
-
{lessons}
|
40
|
-
</div>
|
41
|
-
);
|
42
|
-
});
|
43
|
-
|
44
|
-
return (
|
45
|
-
<div className={mapClass}>
|
46
|
-
<div className={mainClass}>
|
47
|
-
<div className={bemClass('module-wrap')}>
|
48
|
-
<div className={classNames(bemClass('module'), colorCodeClass)}></div>
|
49
|
-
</div>
|
50
|
-
<div className={bemClass('units-wrap')}>
|
51
|
-
<div className={bemClass('units')}>
|
52
|
-
{units}
|
53
|
-
</div>
|
54
|
-
</div>
|
55
|
-
</div>
|
56
|
-
{details}
|
57
|
-
</div>
|
58
|
-
);
|
59
|
-
}
|
data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumOpr.js.jsx
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line no-unused-vars
|
2
|
-
class ExploreCurriculumOpr extends React.Component {
|
3
|
-
constructor(props) {
|
4
|
-
super(props);
|
5
|
-
this.children = _
|
6
|
-
.filter(this.props.curriculum.children, x => x.resource.is_opr)
|
7
|
-
.sort((a, b) => parseInt(a.resource.short_title.split(' ')[1]) - parseInt(b.resource.short_title.split(' ')[1]));
|
8
|
-
this.state = { renderChildren: false };
|
9
|
-
this.oprDescription = this.props.curriculum.resource.opr_description;
|
10
|
-
|
11
|
-
// Amount of OPR lessons to show in the expanded version of the block
|
12
|
-
this.numLessonsToTake = 5;
|
13
|
-
}
|
14
|
-
|
15
|
-
onClick() {
|
16
|
-
this.setState({renderChildren: !this.state.renderChildren});
|
17
|
-
}
|
18
|
-
|
19
|
-
render() {
|
20
|
-
if (this.children.length === 0) return (null);
|
21
|
-
|
22
|
-
const operationLabel = this.state.renderChildren ? 'Hide' : 'View';
|
23
|
-
|
24
|
-
const containerClasses = 'c-ec-cards__children c-ec-cards__children--expanded c-ec-cards-opr';
|
25
|
-
const titleClasses = 'c-ec-cards-opr__title';
|
26
|
-
const wrapperClasses = 'c-ec-cards-opr__wrapper';
|
27
|
-
|
28
|
-
const childrenComponents = () => {
|
29
|
-
const childrenElements = _.take(this.children, this.numLessonsToTake).map(c => {
|
30
|
-
return <LessonCard key={c.resource.id} lesson={c.resource} with_breadcrumb={false}
|
31
|
-
colorCode={this.props.colorCode}/>;
|
32
|
-
});
|
33
|
-
|
34
|
-
const lessonClasses = 'c-ec-cards__children--lessons';
|
35
|
-
|
36
|
-
const oprDescElement = (this.oprDescription && this.oprDescription.length) ?
|
37
|
-
<div className="c-ec-cards__children c-ec-cards-opr">{this.props.curriculum.resource.opr_description}</div>
|
38
|
-
: null;
|
39
|
-
|
40
|
-
return (
|
41
|
-
<div>
|
42
|
-
{oprDescElement}
|
43
|
-
<div className={lessonClasses}>
|
44
|
-
{childrenElements}
|
45
|
-
</div>
|
46
|
-
</div>
|
47
|
-
);
|
48
|
-
};
|
49
|
-
|
50
|
-
return (
|
51
|
-
<div className={wrapperClasses}>
|
52
|
-
<div className={containerClasses}>
|
53
|
-
<div className={titleClasses}>Need additional Prerequisite Lessons to help students access core learning?</div>
|
54
|
-
<div>
|
55
|
-
<button className="button" type="button" onClick={this.onClick.bind(this)}>{operationLabel} Recommendations</button>
|
56
|
-
</div>
|
57
|
-
</div>
|
58
|
-
{this.state.renderChildren ? childrenComponents() : null}
|
59
|
-
</div>
|
60
|
-
);
|
61
|
-
}
|
62
|
-
}
|
data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumPage.js.jsx
DELETED
@@ -1,258 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line no-unused-vars
|
2
|
-
class ExploreCurriculumPage extends React.Component {
|
3
|
-
constructor(props) {
|
4
|
-
super(props);
|
5
|
-
|
6
|
-
this.state = this.buildStateFromProps(props);
|
7
|
-
this.ANIMATION_DURATION = 400;
|
8
|
-
this._curriculumList = null;
|
9
|
-
}
|
10
|
-
|
11
|
-
updateUrl($active) {
|
12
|
-
if (!$active && !/p=/.test(location.search)) return;
|
13
|
-
if ($active && !$active.length) return;
|
14
|
-
|
15
|
-
let query = { p: null, e: null };
|
16
|
-
if ($active) {
|
17
|
-
query['p'] = $active[0].getAttribute('name');
|
18
|
-
if ( this.state.active[this.state.active.length - 2] === $active[0].id ) {
|
19
|
-
query['e'] = '1';
|
20
|
-
}
|
21
|
-
}
|
22
|
-
|
23
|
-
urlHistory.update(query, { replace: true });
|
24
|
-
}
|
25
|
-
|
26
|
-
componentDidMount() {
|
27
|
-
this._curriculumList = $('#curriculumList');
|
28
|
-
new Foundation.MaggelanHash(this._curriculumList,
|
29
|
-
{ deepLinking: true,
|
30
|
-
updateUrl: this.updateUrl.bind(this),
|
31
|
-
threshold: 20,
|
32
|
-
animationDuration: this.ANIMATION_DURATION,
|
33
|
-
onScrollFinished: this.onScrollFinished.bind(this)
|
34
|
-
});
|
35
|
-
let elm;
|
36
|
-
if (this.scrollImmediately === 'item') {
|
37
|
-
elm = document.getElementById(this.state.active[this.state.active.length-1]);
|
38
|
-
if (!elm) {
|
39
|
-
elm = document.getElementById(this.state.active[this.state.active.length-2]);
|
40
|
-
}
|
41
|
-
this.scrollToActive(elm);
|
42
|
-
} else if (this.scrollImmediately === 'expanded') {
|
43
|
-
elm = document.getElementById(this.state.active[this.state.active.length-2]);
|
44
|
-
this.scrollToActive(elm);
|
45
|
-
}
|
46
|
-
}
|
47
|
-
|
48
|
-
componentWillUnmount() {
|
49
|
-
if (this._curriculumList) {
|
50
|
-
this._curriculumList.foundation('destroy');
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
componentWillUpdate(_nextProps, _nextState) {
|
55
|
-
if (this._curriculumList) {
|
56
|
-
this._curriculumList.foundation('mutexScrollLock');
|
57
|
-
}
|
58
|
-
}
|
59
|
-
|
60
|
-
componentDidUpdate(_prevProps, _prevState) {
|
61
|
-
if (this._curriculumList) {
|
62
|
-
this._curriculumList.foundation('mutexScrollUnlock');
|
63
|
-
}
|
64
|
-
}
|
65
|
-
|
66
|
-
onScrollFinished(el) {
|
67
|
-
_.delay(() => { if (el && $(el).length) {
|
68
|
-
const yOffset = $(el).offset().top;
|
69
|
-
// fix animation sync, will get inside in very rare cases
|
70
|
-
if (Math.abs($(document).scrollTop() - yOffset) > 25) {
|
71
|
-
$('html, body').scrollTop(yOffset);
|
72
|
-
}
|
73
|
-
}
|
74
|
-
this._curriculumList.foundation('mutexScrollUnlock');
|
75
|
-
this._curriculumList.foundation('reflow');
|
76
|
-
}, this.ANIMATION_DURATION / 4);
|
77
|
-
}
|
78
|
-
|
79
|
-
scrollToActive(el) {
|
80
|
-
if (el && $(el).length) {
|
81
|
-
this._curriculumList.foundation('mutexScrollLock');
|
82
|
-
this._curriculumList.foundation('scrollToLoc', el);
|
83
|
-
}
|
84
|
-
else {
|
85
|
-
this.updateUrl(null);
|
86
|
-
}
|
87
|
-
}
|
88
|
-
|
89
|
-
reflow() {
|
90
|
-
this._curriculumList.foundation('reflow');
|
91
|
-
}
|
92
|
-
|
93
|
-
buildStateFromProps(props) {
|
94
|
-
let active;
|
95
|
-
|
96
|
-
if (props.active) {
|
97
|
-
active = props.active;
|
98
|
-
|
99
|
-
if (props.expanded) {
|
100
|
-
this.scrollImmediately = 'expanded';
|
101
|
-
} else {
|
102
|
-
this.scrollImmediately = 'item';
|
103
|
-
}
|
104
|
-
} else {
|
105
|
-
active = props.results.length ? [props.results[0].id] : null;
|
106
|
-
}
|
107
|
-
|
108
|
-
return {
|
109
|
-
curriculums: props.results,
|
110
|
-
curriculumsIndex: this.buildIndex(props.results),
|
111
|
-
filterbar: props.filterbar,
|
112
|
-
active: active
|
113
|
-
};
|
114
|
-
}
|
115
|
-
|
116
|
-
buildIndex(curriculums, zip = {}) {
|
117
|
-
_.forEach(curriculums, curriculum => {
|
118
|
-
zip[curriculum.id] = curriculum;
|
119
|
-
|
120
|
-
if (curriculum.children.length) {
|
121
|
-
this.buildIndex(curriculum.children, zip);
|
122
|
-
}
|
123
|
-
});
|
124
|
-
|
125
|
-
return zip;
|
126
|
-
}
|
127
|
-
|
128
|
-
createQuery(state) {
|
129
|
-
return {
|
130
|
-
format: 'json',
|
131
|
-
...state.filterbar
|
132
|
-
};
|
133
|
-
}
|
134
|
-
|
135
|
-
fetch(state) {
|
136
|
-
const query = this.createQuery(state);
|
137
|
-
const url = Routes.lcms_engine_explore_curriculum_index_path(query);
|
138
|
-
return $.getJSON(url);
|
139
|
-
}
|
140
|
-
|
141
|
-
fetchOne(id) {
|
142
|
-
const url = Routes.lcms_engine_explore_curriculum_path(id);
|
143
|
-
return $.getJSON(url);
|
144
|
-
}
|
145
|
-
|
146
|
-
getActive(parentage, cur) {
|
147
|
-
return cur.children.length > 0 ?
|
148
|
-
[...parentage, cur.children[0].id] :
|
149
|
-
[...parentage];
|
150
|
-
}
|
151
|
-
|
152
|
-
setActive(parentage, cur, el) {
|
153
|
-
this.setState({
|
154
|
-
...this.state,
|
155
|
-
active: this.getActive(parentage, cur)
|
156
|
-
}, this.scrollToActive.bind(this, el));
|
157
|
-
}
|
158
|
-
|
159
|
-
handleClickExpand(parentage, e) {
|
160
|
-
if (e.target.nodeName === 'A') return;
|
161
|
-
e.preventDefault();
|
162
|
-
const currentTarget = `#${e.currentTarget.id}`;
|
163
|
-
if (parentage[parentage.length-1] === this.state.active[parentage.length-1]) {
|
164
|
-
this.setState({
|
165
|
-
...this.state,
|
166
|
-
active: parentage
|
167
|
-
}, this.scrollToActive.bind(this, currentTarget));
|
168
|
-
} else {
|
169
|
-
this.handleClickViewDetails(parentage, e);
|
170
|
-
}
|
171
|
-
}
|
172
|
-
|
173
|
-
handleClickViewDetails(parentage, e) {
|
174
|
-
if ((e.target.nodeName === 'A') || (e.target.nodeName === 'I')) return;
|
175
|
-
e.preventDefault();
|
176
|
-
const currentTarget = `#${e.currentTarget.id}`;
|
177
|
-
const id = _.last(parentage);
|
178
|
-
const cur = this.state.curriculumsIndex[id];
|
179
|
-
const hasCached = cur &&
|
180
|
-
(cur.requested ||
|
181
|
-
(cur.children.length &&
|
182
|
-
this.state.curriculumsIndex[cur.children[0].id]));
|
183
|
-
|
184
|
-
if (hasCached) {
|
185
|
-
this.setActive(parentage, cur, currentTarget);
|
186
|
-
} else {
|
187
|
-
this.fetchOne(id).then(response => {
|
188
|
-
response.requested = true;
|
189
|
-
const newIndex = { ...this.state.curriculumsIndex };
|
190
|
-
this.buildIndex([response], newIndex);
|
191
|
-
this.setState({
|
192
|
-
...this.state,
|
193
|
-
curriculumsIndex: newIndex,
|
194
|
-
active: this.getActive(parentage, response)
|
195
|
-
}, this.scrollToActive.bind(this, currentTarget));
|
196
|
-
});
|
197
|
-
}
|
198
|
-
}
|
199
|
-
|
200
|
-
handleFilterbarUpdate(filterbar) {
|
201
|
-
const newFilterbar = _.omit(filterbar, 'search_term');
|
202
|
-
const oldFilterbar = _.omit(this.state.filterbar, 'search_term');
|
203
|
-
const onlyChangedSearchTerm = $.param(newFilterbar) === $.param(oldFilterbar);
|
204
|
-
|
205
|
-
const newState = _.assign({}, this.state, { filterbar: filterbar });
|
206
|
-
|
207
|
-
if (onlyChangedSearchTerm) {
|
208
|
-
this.setState(newState);
|
209
|
-
} else {
|
210
|
-
this.fetch(newState).then(response => {
|
211
|
-
this.setState(this.buildStateFromProps(response),
|
212
|
-
this.reflow.bind(this));
|
213
|
-
});
|
214
|
-
}
|
215
|
-
}
|
216
|
-
|
217
|
-
render() {
|
218
|
-
const curriculums = this.state.curriculums.map(
|
219
|
-
c => <ExploreCurriculumItem
|
220
|
-
key={c.id}
|
221
|
-
id={c.id}
|
222
|
-
index={this.state.curriculumsIndex}
|
223
|
-
onClickExpand={this.handleClickExpand.bind(this)}
|
224
|
-
onClickViewDetails={this.handleClickViewDetails.bind(this)}
|
225
|
-
parentage={[c.id]}
|
226
|
-
active={this.state.active} />
|
227
|
-
);
|
228
|
-
|
229
|
-
return (
|
230
|
-
<div>
|
231
|
-
<div className="u-bg--base-gradient">
|
232
|
-
<div className="o-page">
|
233
|
-
<div className="o-page__module">
|
234
|
-
<div className="o-filterbar-title">
|
235
|
-
<h2>Explore Curriculum</h2>
|
236
|
-
<div className="o-filterbar-title__subheader">
|
237
|
-
Explore ELA and Math lessons for the grades below. Review, adapt, download, and share.
|
238
|
-
</div>
|
239
|
-
</div>
|
240
|
-
<FilterbarResponsive
|
241
|
-
onUpdate={this.handleFilterbarUpdate.bind(this)}
|
242
|
-
searchLabel='What do you want to teach?'
|
243
|
-
withSearch={true}
|
244
|
-
withDropdown={true}
|
245
|
-
{...this.state.filterbar} />
|
246
|
-
</div>
|
247
|
-
</div>
|
248
|
-
</div>
|
249
|
-
<div className="o-page o-page--margin-bottom">
|
250
|
-
<div className="o-page__module">
|
251
|
-
<ExploreCurriculumHeader totalItems={this.state.curriculums.length} />
|
252
|
-
{curriculums}
|
253
|
-
</div>
|
254
|
-
</div>
|
255
|
-
</div>
|
256
|
-
);
|
257
|
-
}
|
258
|
-
}
|