lcms-engine 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. checksums.yaml +4 -4
  2. data/{spec/dummy/.env.docker → .env.docker} +0 -0
  3. data/.env.template +34 -0
  4. data/.gitignore +0 -1
  5. data/CHANGELOG.md +25 -0
  6. data/Dockerfile +1 -0
  7. data/Gemfile +0 -1
  8. data/Gemfile.lock +682 -0
  9. data/README.md +5 -11
  10. data/app/assets/javascripts/lcms/engine/admin/application.js +2 -11
  11. data/app/assets/javascripts/lcms/engine/application.js +1 -44
  12. data/app/assets/javascripts/lcms/engine/application_lti.js +1 -29
  13. data/app/assets/javascripts/lcms/engine/initializers/foundation.js +5 -0
  14. data/app/assets/stylesheets/lcms/engine/admin.scss +0 -1
  15. data/app/assets/stylesheets/lcms/engine/application.scss +6 -61
  16. data/app/assets/stylesheets/lcms/engine/base/_colors.scss +2 -2
  17. data/app/assets/stylesheets/lcms/engine/components/lesson/_icons.scss +0 -25
  18. data/app/assets/stylesheets/lcms/engine/layout/_footer.scss +2 -0
  19. data/app/assets/stylesheets/lcms/engine/layout/_header.scss +1 -210
  20. data/app/assets/stylesheets/lcms/engine/pdf.scss +3 -27
  21. data/app/assets/stylesheets/lcms/engine/pdf_plain.scss +3 -11
  22. data/app/assets/stylesheets/lcms/engine/print/_typography.scss +0 -5
  23. data/app/assets/stylesheets/lcms/engine/utils/_variables.scss +4 -4
  24. data/app/controllers/concerns/lcms/engine/reimportable.rb +9 -0
  25. data/app/controllers/lcms/engine/admin/admin_controller.rb +2 -0
  26. data/app/controllers/lcms/engine/admin/documents_controller.rb +7 -17
  27. data/app/controllers/lcms/engine/admin/materials_controller.rb +16 -19
  28. data/app/controllers/lcms/engine/admin/resources_controller.rb +77 -41
  29. data/app/controllers/lcms/engine/surveys_controller.rb +3 -14
  30. data/app/forms/lcms/engine/material_form.rb +1 -0
  31. data/app/helpers/lcms/engine/application_helper.rb +6 -2
  32. data/app/helpers/lcms/engine/resource_helper.rb +0 -17
  33. data/app/presenters/lcms/engine/content_presenter.rb +1 -1
  34. data/app/presenters/lcms/engine/document_presenter.rb +3 -5
  35. data/app/views/devise/confirmations/new.html.erb +1 -1
  36. data/app/views/devise/passwords/edit.html.erb +1 -1
  37. data/app/views/devise/passwords/new.html.erb +1 -1
  38. data/app/views/devise/registrations/new.html.erb +1 -1
  39. data/app/views/devise/sessions/new.html.erb +2 -2
  40. data/app/views/layouts/lcms/engine/admin.html.erb +1 -3
  41. data/app/views/layouts/lcms/engine/application.html.erb +0 -6
  42. data/app/views/layouts/lcms/engine/cg_pdf.erb +0 -38
  43. data/app/views/layouts/lcms/engine/lti.html.erb +0 -1
  44. data/app/views/lcms/engine/admin/curriculums/edit.html.erb +3 -0
  45. data/app/views/lcms/engine/admin/materials/index.html.erb +1 -1
  46. data/app/views/lcms/engine/admin/resource_bulk_edits/new.html.erb +3 -3
  47. data/app/views/lcms/engine/admin/shared/_header.html.erb +1 -8
  48. data/app/views/lcms/engine/documents/_content.html.erb +0 -1
  49. data/app/views/lcms/engine/documents/_sticky_header.html.erb +1 -1
  50. data/app/views/lcms/engine/documents/_sticky_site_menu.html.erb +0 -1
  51. data/app/views/lcms/engine/resources/_download.html.erb +2 -2
  52. data/app/views/lcms/engine/resources/_unit_bundles.html.erb +2 -2
  53. data/app/views/lcms/engine/resources/show.html.erb +2 -2
  54. data/app/views/lcms/engine/shared/_footer.html.erb +1 -3
  55. data/app/views/lcms/engine/shared/_header.html.erb +2 -36
  56. data/app/views/lcms/engine/surveys/show.html.erb +1 -1
  57. data/app/views/lcms/engine/welcome/index.html.erb +1 -80
  58. data/config/locales/admin/en.yml +1 -0
  59. data/config/routes.rb +2 -36
  60. data/db/migrate/20200422130652_add_reimported_at_to_documents.rb +1 -1
  61. data/db/migrate/20200429130353_drop_pages.rb +13 -0
  62. data/docs/env-variables.md +87 -0
  63. data/docs/google-cloud-platform-setup.md +106 -0
  64. data/lcms-engine.gemspec +50 -59
  65. data/lib/doc_template/document.rb +2 -2
  66. data/lib/doc_template/tables/activity.rb +1 -2
  67. data/lib/doc_template/tables/base.rb +4 -0
  68. data/lib/doc_template/tables/section.rb +1 -2
  69. data/lib/doc_template/xpath_functions.rb +3 -1
  70. data/lib/lcms/engine/engine.rb +0 -8
  71. data/lib/lcms/engine/version.rb +1 -1
  72. data/lib/lt/lcms/metadata/context.rb +5 -7
  73. data/spec/controllers/admin/admin_controller_spec.rb +1 -1
  74. data/spec/controllers/admin/documents_controller_spec.rb +38 -6
  75. data/spec/controllers/admin/materials_controller_spec.rb +64 -0
  76. data/spec/controllers/admin/resources_controller_spec.rb +72 -0
  77. data/spec/dummy/config/lcms-admin.yml +3 -3
  78. data/spec/dummy/db/schema.rb +29 -37
  79. data/spec/features/welcome_spec.rb +1 -1
  80. data/spec/fixtures/tables/activity-metadata-3activities.html +1 -0
  81. data/spec/fixtures/tables/document-metadata-2paragpraphs.html +97 -0
  82. data/spec/fixtures/tables/document-metadata-2spans.html +96 -0
  83. data/spec/fixtures/tables/document-metadata.html +96 -0
  84. data/spec/lib/doc_template/tables/activity_spec.rb +28 -0
  85. data/spec/lib/doc_template/tables/metadata_spec.rb +40 -0
  86. data/spec/lib/doc_template/tables/shared_examples/remove_table.rb +11 -0
  87. data/spec/rails_helper.rb +1 -0
  88. data/spec/support/fixture_helper.rb +16 -0
  89. data/vendor/assets/javascripts/selectize.min.js +4 -0
  90. data/vendor/assets/stylesheets/selectize.scss +333 -0
  91. data/yarn.lock +634 -452
  92. metadata +274 -494
  93. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.eot +0 -0
  94. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.svg +0 -689
  95. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.ttf +0 -0
  96. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.woff +0 -0
  97. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.eot +0 -0
  98. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.svg +0 -697
  99. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.ttf +0 -0
  100. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.woff +0 -0
  101. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.eot +0 -0
  102. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.svg +0 -768
  103. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.ttf +0 -0
  104. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.woff +0 -0
  105. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.eot +0 -0
  106. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.svg +0 -685
  107. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.ttf +0 -0
  108. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.woff +0 -0
  109. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.eot +0 -0
  110. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.svg +0 -5603
  111. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.woff +0 -0
  112. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.eot +0 -0
  113. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.svg +0 -5763
  114. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.woff +0 -0
  115. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.eot +0 -0
  116. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.otf +0 -0
  117. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.svg +0 -5400
  118. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.woff +0 -0
  119. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.eot +0 -0
  120. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.html +0 -15
  121. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.otf +0 -0
  122. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.svg +0 -13061
  123. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.woff +0 -0
  124. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.eot +0 -0
  125. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.html +0 -15
  126. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.otf +0 -0
  127. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.svg +0 -13075
  128. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.woff +0 -0
  129. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.eot +0 -0
  130. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.otf +0 -0
  131. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.svg +0 -13142
  132. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.woff +0 -0
  133. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.eot +0 -0
  134. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.ttf +0 -0
  135. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.woff +0 -0
  136. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.woff2 +0 -0
  137. data/app/assets/fonts/lcms/engine/cursive/Sriracha-Regular.ttf +0 -0
  138. data/app/assets/fonts/lcms/engine/icons/ubicons.eot +0 -0
  139. data/app/assets/fonts/lcms/engine/icons/ubicons.svg +0 -50
  140. data/app/assets/fonts/lcms/engine/icons/ubicons.ttf +0 -0
  141. data/app/assets/fonts/lcms/engine/icons/ubicons.woff +0 -0
  142. data/app/assets/fonts/lcms/engine/ub/UBIcons.eot +0 -0
  143. data/app/assets/fonts/lcms/engine/ub/UBIcons.svg +0 -18
  144. data/app/assets/fonts/lcms/engine/ub/UBIcons.ttf +0 -0
  145. data/app/assets/fonts/lcms/engine/ub/UBIcons.woff +0 -0
  146. data/app/assets/images/lcms/engine/lessons/ld_p1.png +0 -0
  147. data/app/assets/images/lcms/engine/lessons/ld_p2.png +0 -0
  148. data/app/assets/images/lcms/engine/lessons/ld_p3.png +0 -0
  149. data/app/assets/images/lcms/engine/lessons/tens.png +0 -0
  150. data/app/assets/images/lcms/engine/lessons/wp.svg +0 -30
  151. data/app/assets/images/lcms/engine/tile-wide.png +0 -0
  152. data/app/assets/images/lcms/engine/tile.png +0 -0
  153. data/app/assets/javascripts/lcms/engine/components.js +0 -7
  154. data/app/assets/javascripts/lcms/engine/components/.gitkeep +0 -0
  155. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMap.js.jsx +0 -31
  156. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapLesson.js.jsx +0 -18
  157. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapModule.js.jsx +0 -59
  158. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapUnit.js.jsx +0 -56
  159. data/app/assets/javascripts/lcms/engine/components/curriculum-map/ResourceHover.js.jsx +0 -27
  160. data/app/assets/javascripts/lcms/engine/components/curriculum-map/ResourcePreview.js.jsx +0 -29
  161. data/app/assets/javascripts/lcms/engine/components/enhance-instruction/EnhanceInstructionCards.js.jsx +0 -13
  162. data/app/assets/javascripts/lcms/engine/components/enhance-instruction/EnhanceInstructionPage.js.jsx +0 -139
  163. data/app/assets/javascripts/lcms/engine/components/enhance-instruction/GenericResourceCard.js.jsx +0 -20
  164. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumCardItem.js.jsx +0 -152
  165. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumGradeMap.js.jsx +0 -44
  166. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumHeader.js.jsx +0 -10
  167. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumItem.js.jsx +0 -77
  168. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumModuleMap.js.jsx +0 -59
  169. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumOpr.js.jsx +0 -62
  170. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumPage.js.jsx +0 -258
  171. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumUnitMap.js.jsx +0 -50
  172. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterBarResponsive.js.jsx +0 -62
  173. data/app/assets/javascripts/lcms/engine/components/filterbar/Filterbar.js.jsx +0 -258
  174. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarFacet.js.jsx +0 -12
  175. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarGrade.js.jsx +0 -14
  176. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarSearch.js.jsx +0 -48
  177. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarSubject.js.jsx +0 -12
  178. data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsCards.js.jsx +0 -11
  179. data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsCardsEmpty.js.jsx +0 -17
  180. data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsPage.js.jsx +0 -58
  181. data/app/assets/javascripts/lcms/engine/components/helpers/FreshdeskBtn.js.jsx +0 -9
  182. data/app/assets/javascripts/lcms/engine/components/helpers/MediaTime.js.jsx +0 -6
  183. data/app/assets/javascripts/lcms/engine/components/helpers/SearchResultsHeader.js.jsx +0 -41
  184. data/app/assets/javascripts/lcms/engine/components/helpers/TimeToTeach.js.jsx +0 -29
  185. data/app/assets/javascripts/lcms/engine/components/instruction-card/InstructionCard.js.jsx +0 -57
  186. data/app/assets/javascripts/lcms/engine/components/lesson-card/LessonCard.js.jsx +0 -45
  187. data/app/assets/javascripts/lcms/engine/components/materials/CollapsedMaterial.js.jsx +0 -40
  188. data/app/assets/javascripts/lcms/engine/components/materials/DocumentMaterialsList.js.jsx +0 -33
  189. data/app/assets/javascripts/lcms/engine/components/materials/ExpandedMaterial.js.jsx +0 -37
  190. data/app/assets/javascripts/lcms/engine/components/materials/MaterialsContainer.js.jsx +0 -92
  191. data/app/assets/javascripts/lcms/engine/components/materials/MaterialsList.js.jsx +0 -19
  192. data/app/assets/javascripts/lcms/engine/components/modals/DownloadModal.js.jsx +0 -68
  193. data/app/assets/javascripts/lcms/engine/components/related-instruction/RelatedInstruction.js.jsx +0 -72
  194. data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdown.js.jsx +0 -159
  195. data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdownResult.js.jsx +0 -12
  196. data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdownResults.js.jsx +0 -36
  197. data/app/assets/javascripts/lcms/engine/components/search/SearchPage.js.jsx +0 -44
  198. data/app/assets/javascripts/lcms/engine/components/search/SearchResult.js.jsx +0 -22
  199. data/app/assets/javascripts/lcms/engine/components/search/SearchResults.js.jsx +0 -17
  200. data/app/assets/javascripts/lcms/engine/components/search/SearchResultsEmpty.js.jsx +0 -25
  201. data/app/assets/javascripts/lcms/engine/components/search/searchPageWrapper.js.jsx +0 -77
  202. data/app/assets/javascripts/lcms/engine/components/select-activity/SelectActivityConfirmationModal.js.jsx +0 -107
  203. data/app/assets/javascripts/lcms/engine/components/select-activity/SelectActivityToggle.js.jsx +0 -39
  204. data/app/assets/javascripts/lcms/engine/components/stores/ExcludesStore.js.jsx +0 -11
  205. data/app/assets/javascripts/lcms/engine/components/tabs/SimpleTab.js.jsx +0 -130
  206. data/app/assets/javascripts/lcms/engine/components/utils/UrlHistory.js.jsx +0 -113
  207. data/app/assets/javascripts/lcms/engine/components/utils/colorcodecss.js.jsx +0 -4
  208. data/app/assets/javascripts/lcms/engine/components/utils/converttobem.js.jsx +0 -3
  209. data/app/assets/javascripts/lcms/engine/components/utils/filterbarupdate.js.jsx +0 -5
  210. data/app/assets/javascripts/lcms/engine/components/utils/heaptrackpd.js.jsx +0 -5
  211. data/app/assets/javascripts/lcms/engine/components/utils/regexpescape.js.jsx +0 -5
  212. data/app/assets/javascripts/lcms/engine/components/utils/scalenumber.js.jsx +0 -8
  213. data/app/assets/javascripts/lcms/engine/initializers/about_people.js +0 -8
  214. data/app/assets/javascripts/lcms/engine/initializers/analytics.js +0 -10
  215. data/app/assets/javascripts/lcms/engine/initializers/bundles.js +0 -12
  216. data/app/assets/javascripts/lcms/engine/initializers/events.js +0 -3
  217. data/app/assets/javascripts/lcms/engine/initializers/freshdesk.js +0 -18
  218. data/app/assets/javascripts/lcms/engine/initializers/header_dropdown.js +0 -44
  219. data/app/assets/javascripts/lcms/engine/initializers/heap_analytics.js +0 -78
  220. data/app/assets/javascripts/lcms/engine/initializers/leadership.js +0 -22
  221. data/app/assets/javascripts/lcms/engine/initializers/lessons.js +0 -299
  222. data/app/assets/javascripts/lcms/engine/initializers/loadasync.js +0 -30
  223. data/app/assets/javascripts/lcms/engine/initializers/pdf_preview.js +0 -15
  224. data/app/assets/javascripts/lcms/engine/initializers/resource_details.js +0 -21
  225. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SideBar.js.jsx +0 -86
  226. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarCGMenu.js.jsx +0 -37
  227. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarDocMenu.js.jsx +0 -75
  228. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarMobile.js.jsx +0 -43
  229. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx +0 -43
  230. data/app/assets/javascripts/lcms/engine/initializers/sidebar/TopScroll.js.jsx +0 -21
  231. data/app/assets/javascripts/lcms/engine/initializers/social_sharing.js +0 -29
  232. data/app/assets/javascripts/lcms/engine/initializers/soundcloud.js +0 -52
  233. data/app/assets/javascripts/lcms/engine/initializers/subscribe_placeholder.js +0 -12
  234. data/app/assets/javascripts/lcms/engine/initializers/survey.js +0 -31
  235. data/app/assets/stylesheets/lcms/engine/base/_cg-colors.scss +0 -48
  236. data/app/assets/stylesheets/lcms/engine/base/_fonts.scss +0 -103
  237. data/app/assets/stylesheets/lcms/engine/base/_icons.scss +0 -342
  238. data/app/assets/stylesheets/lcms/engine/components/_buttons.scss +0 -200
  239. data/app/assets/stylesheets/lcms/engine/components/_cards.scss +0 -36
  240. data/app/assets/stylesheets/lcms/engine/components/_cg-base.scss +0 -22
  241. data/app/assets/stylesheets/lcms/engine/components/_curriculum-cards.scss +0 -237
  242. data/app/assets/stylesheets/lcms/engine/components/_curriculum-map.scss +0 -214
  243. data/app/assets/stylesheets/lcms/engine/components/_download-modal.scss +0 -56
  244. data/app/assets/stylesheets/lcms/engine/components/_filterbar-modal.scss +0 -20
  245. data/app/assets/stylesheets/lcms/engine/components/_filterbar.scss +0 -184
  246. data/app/assets/stylesheets/lcms/engine/components/_generic-resource.scss +0 -58
  247. data/app/assets/stylesheets/lcms/engine/components/_inputs.scss +0 -12
  248. data/app/assets/stylesheets/lcms/engine/components/_instruction-cards.scss +0 -160
  249. data/app/assets/stylesheets/lcms/engine/components/_lesson-base.scss +0 -31
  250. data/app/assets/stylesheets/lcms/engine/components/_lesson-cards.scss +0 -119
  251. data/app/assets/stylesheets/lcms/engine/components/_ls-post.scss +0 -38
  252. data/app/assets/stylesheets/lcms/engine/components/_material-base.scss +0 -6
  253. data/app/assets/stylesheets/lcms/engine/components/_media-resources.scss +0 -6
  254. data/app/assets/stylesheets/lcms/engine/components/_media.scss +0 -95
  255. data/app/assets/stylesheets/lcms/engine/components/_pagination.scss +0 -84
  256. data/app/assets/stylesheets/lcms/engine/components/_panel-dsc.scss +0 -37
  257. data/app/assets/stylesheets/lcms/engine/components/_panel.scss +0 -7
  258. data/app/assets/stylesheets/lcms/engine/components/_related-instruction.scss +0 -31
  259. data/app/assets/stylesheets/lcms/engine/components/_resource.scss +0 -217
  260. data/app/assets/stylesheets/lcms/engine/components/_search-dropdown.scss +0 -23
  261. data/app/assets/stylesheets/lcms/engine/components/_search-header.scss +0 -45
  262. data/app/assets/stylesheets/lcms/engine/components/_search.scss +0 -57
  263. data/app/assets/stylesheets/lcms/engine/components/_sidebar.scss +0 -159
  264. data/app/assets/stylesheets/lcms/engine/components/_simple-tab.scss +0 -57
  265. data/app/assets/stylesheets/lcms/engine/components/_social-sharing.scss +0 -20
  266. data/app/assets/stylesheets/lcms/engine/components/_titles.scss +0 -33
  267. data/app/assets/stylesheets/lcms/engine/components/_top-scroll-button.scss +0 -28
  268. data/app/assets/stylesheets/lcms/engine/components/_unit-bundles.scss +0 -14
  269. data/app/assets/stylesheets/lcms/engine/components/cg/_annotations.scss +0 -48
  270. data/app/assets/stylesheets/lcms/engine/components/cg/_colorscheme.scss +0 -60
  271. data/app/assets/stylesheets/lcms/engine/components/cg/_contents-modal.scss +0 -20
  272. data/app/assets/stylesheets/lcms/engine/components/cg/_elements.scss +0 -11
  273. data/app/assets/stylesheets/lcms/engine/components/cg/_faq.scss +0 -35
  274. data/app/assets/stylesheets/lcms/engine/components/cg/_footnote.scss +0 -20
  275. data/app/assets/stylesheets/lcms/engine/components/cg/_hacks.scss +0 -11
  276. data/app/assets/stylesheets/lcms/engine/components/cg/_icons.scss +0 -30
  277. data/app/assets/stylesheets/lcms/engine/components/cg/_keywords.scss +0 -5
  278. data/app/assets/stylesheets/lcms/engine/components/cg/_links.scss +0 -3
  279. data/app/assets/stylesheets/lcms/engine/components/cg/_quotes.scss +0 -18
  280. data/app/assets/stylesheets/lcms/engine/components/cg/_standards.scss +0 -23
  281. data/app/assets/stylesheets/lcms/engine/components/cg/_table.scss +0 -50
  282. data/app/assets/stylesheets/lcms/engine/components/cg/_task.scss +0 -43
  283. data/app/assets/stylesheets/lcms/engine/components/cg/_video.scss +0 -10
  284. data/app/assets/stylesheets/lcms/engine/components/support/_helpdesk.scss +0 -25
  285. data/app/assets/stylesheets/lcms/engine/freshdesk/base/_colors.scss +0 -25
  286. data/app/assets/stylesheets/lcms/engine/freshdesk/base/_typography.scss +0 -19
  287. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_block.scss +0 -5
  288. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_buttons.scss +0 -5
  289. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_help-center.scss +0 -59
  290. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_tabs.scss +0 -33
  291. data/app/assets/stylesheets/lcms/engine/freshdesk/freshdesk.scss +0 -42
  292. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_footer.scss +0 -44
  293. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_header.scss +0 -49
  294. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_page.scss +0 -40
  295. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/footer.liquid +0 -14
  296. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/header.liquid +0 -41
  297. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/page.liquid +0 -22
  298. data/app/assets/stylesheets/lcms/engine/freshdesk/pages/_portal-home.scss +0 -18
  299. data/app/assets/stylesheets/lcms/engine/freshdesk/pages/portal.home.liquid +0 -74
  300. data/app/assets/stylesheets/lcms/engine/freshdesk/themes/_settings.scss +0 -19
  301. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_breakpoint.scss +0 -288
  302. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_helpers.scss +0 -22
  303. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_unit.scss +0 -95
  304. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_value.scss +0 -138
  305. data/app/assets/stylesheets/lcms/engine/layout/_connect.scss +0 -63
  306. data/app/assets/stylesheets/lcms/engine/layout/_header-search-form.scss +0 -30
  307. data/app/assets/stylesheets/lcms/engine/layout/_sticky-header.scss +0 -179
  308. data/app/assets/stylesheets/lcms/engine/layout/_sticky-navigation.scss +0 -124
  309. data/app/assets/stylesheets/lcms/engine/layout/_subscribe.scss +0 -68
  310. data/app/assets/stylesheets/lcms/engine/pages/_about-people.scss +0 -115
  311. data/app/assets/stylesheets/lcms/engine/pages/_about.scss +0 -61
  312. data/app/assets/stylesheets/lcms/engine/pages/_content-guide.scss +0 -205
  313. data/app/assets/stylesheets/lcms/engine/pages/_enhance-instruction.scss +0 -19
  314. data/app/assets/stylesheets/lcms/engine/pages/_explore-curriculum.scss +0 -46
  315. data/app/assets/stylesheets/lcms/engine/pages/_find-lessons.scss +0 -1
  316. data/app/assets/stylesheets/lcms/engine/pages/_home.scss +0 -237
  317. data/app/assets/stylesheets/lcms/engine/pages/_leadership.scss +0 -263
  318. data/app/assets/stylesheets/lcms/engine/pages/_lesson-document.scss +0 -138
  319. data/app/assets/stylesheets/lcms/engine/pages/_unsupported.scss +0 -18
  320. data/app/assets/stylesheets/lcms/engine/print/_b64-fonts.scss.erb +0 -65
  321. data/app/assets/stylesheets/lcms/engine/print/_cg-base.scss +0 -4
  322. data/app/assets/stylesheets/lcms/engine/print/_hacks.scss +0 -6
  323. data/app/assets/stylesheets/lcms/engine/print/cg/_base-typography.scss +0 -21
  324. data/app/assets/stylesheets/lcms/engine/print/cg/_breaks.scss +0 -7
  325. data/app/assets/stylesheets/lcms/engine/print/cg/_elements-typography.scss +0 -14
  326. data/app/assets/stylesheets/lcms/engine/vendors/swiper.css +0 -547
  327. data/app/controllers/concerns/lcms/engine/analytics_tracking.rb +0 -51
  328. data/app/controllers/concerns/lcms/engine/heap_notifyable.rb +0 -20
  329. data/app/controllers/lcms/engine/admin/configurable_admin.rb +0 -56
  330. data/app/controllers/lcms/engine/admin/google_oauth2_controller.rb +0 -15
  331. data/app/controllers/lcms/engine/admin/pages_controller.rb +0 -54
  332. data/app/controllers/lcms/engine/analytics_exclusion_controller.rb +0 -14
  333. data/app/controllers/lcms/engine/downloads_controller.rb +0 -50
  334. data/app/controllers/lcms/engine/enhance_instruction_controller.rb +0 -18
  335. data/app/controllers/lcms/engine/explore_curriculum_controller.rb +0 -28
  336. data/app/controllers/lcms/engine/find_lessons_controller.rb +0 -15
  337. data/app/controllers/lcms/engine/pages_controller.rb +0 -26
  338. data/app/controllers/lcms/engine/search_controller.rb +0 -15
  339. data/app/controllers/lcms/engine/sessions_controller.rb +0 -19
  340. data/app/models/lcms/engine/page.rb +0 -13
  341. data/app/services/lcms/engine/generate_thumbnails.rb +0 -54
  342. data/app/services/lcms/engine/svg_social_thumbnail.rb +0 -223
  343. data/app/views/layouts/lcms/engine/ld_docx.html.erb +0 -16
  344. data/app/views/lcms/engine/admin/pages/_form.html.erb +0 -8
  345. data/app/views/lcms/engine/admin/pages/edit.html.erb +0 -9
  346. data/app/views/lcms/engine/admin/pages/index.html.erb +0 -25
  347. data/app/views/lcms/engine/admin/pages/new.html.erb +0 -5
  348. data/app/views/lcms/engine/documents/_helpdesk.html.erb +0 -9
  349. data/app/views/lcms/engine/pages/_about_people_staff.html.erb +0 -27
  350. data/app/views/lcms/engine/pages/_leadership_in_action.html.erb +0 -25
  351. data/app/views/lcms/engine/pages/_leadership_why_i_lead.html.erb +0 -34
  352. data/app/views/lcms/engine/pages/about.html.erb +0 -87
  353. data/app/views/lcms/engine/pages/about_people.html.erb +0 -27
  354. data/app/views/lcms/engine/pages/forthcoming.html.erb +0 -9
  355. data/app/views/lcms/engine/pages/leadership.html.erb +0 -82
  356. data/app/views/lcms/engine/pages/not_found.html.erb +0 -9
  357. data/app/views/lcms/engine/pages/privacy.html.erb +0 -9
  358. data/app/views/lcms/engine/pages/show.html.erb +0 -8
  359. data/app/views/lcms/engine/pages/show_slug.html.erb +0 -0
  360. data/app/views/lcms/engine/pages/tos.html.erb +0 -9
  361. data/app/views/lcms/engine/shared/_connect.html.erb +0 -60
  362. data/app/views/lcms/engine/shared/_freshdesk.html.erb +0 -22
  363. data/app/views/lcms/engine/shared/_google_analytics.html.erb +0 -9
  364. data/app/views/lcms/engine/shared/_heap_analytics.html.erb +0 -7
  365. data/app/views/lcms/engine/shared/_open_graph_meta.html.erb +0 -15
  366. data/app/views/lcms/engine/shared/_open_graph_meta_js.html.erb +0 -39
  367. data/app/views/lcms/engine/shared/_search_form.html.erb +0 -10
  368. data/app/views/lcms/engine/shared/_social_sharing_menu.html.erb +0 -34
  369. data/app/views/lcms/engine/shared/_subscribe.html.erb +0 -30
  370. data/app/views/lcms/engine/shared/_unsupported.html.erb +0 -3
  371. data/app/views/lcms/engine/shared/social_thumbnail.svg.erb +0 -54
  372. data/config/initializers/heap.rb +0 -3
  373. data/lib/tasks/thumbnails.rake +0 -59
  374. data/spec/controllers/admin/pages_controller_spec.rb +0 -19
  375. data/spec/controllers/enhance_instruction_controller_spec.rb +0 -15
  376. data/spec/controllers/explore_curriculum_controller_spec.rb +0 -29
  377. data/spec/controllers/find_lessons_controller_spec.rb +0 -50
  378. data/spec/controllers/pages_controller_spec.rb +0 -32
  379. data/spec/controllers/search_controller_spec.rb +0 -16
  380. data/spec/factories/pages.rb +0 -21
  381. data/spec/features/admin/pages_spec.rb +0 -79
  382. data/spec/features/pages/page_not_found_spec.rb +0 -26
  383. data/spec/features/pages/page_titles_spec.rb +0 -86
  384. data/spec/support/heap.rb +0 -3
  385. data/vendor/assets/javascripts/foundation.initialize.js +0 -115
  386. data/vendor/assets/javascripts/foundation.magellanex.js +0 -335
  387. data/vendor/assets/javascripts/freshwidget.js +0 -1
  388. data/vendor/assets/javascripts/jquery.easytabs.js +0 -704
  389. data/vendor/assets/javascripts/jquery.hashchange.js +0 -9
  390. data/vendor/assets/javascripts/modernizr-custom.js +0 -3
  391. data/vendor/assets/javascripts/smoothscrolling.js +0 -22
  392. data/vendor/assets/javascripts/swiper.jquery.js +0 -3777
  393. data/vendor/assets/javascripts/tabs.js +0 -6
@@ -10,10 +10,9 @@ module DocTemplate
10
10
 
11
11
  def parse(fragment, *args)
12
12
  template_type = args.extract_options![:template_type].presence || 'core'
13
- path = ".//table/*/tr[1]/td//*[case_insensitive_equals(text(),'#{HEADER_LABEL}')]"
14
13
  idx = 0
15
14
  [].tap do |result|
16
- fragment.xpath(path, XpathFunctions.new).each do |el|
15
+ fragment.xpath(xpath_meta_headers, XpathFunctions.new).each do |el|
17
16
  table = el.ancestors('table').first
18
17
  data = fetch table
19
18
 
@@ -132,6 +132,10 @@ module DocTemplate
132
132
  end
133
133
  end
134
134
  end
135
+
136
+ def xpath_meta_headers
137
+ ".//table/*/tr[1]/td[1][case_insensitive_equals(normalize-space(),'#{self.class::HEADER_LABEL}')]"
138
+ end
135
139
  end
136
140
  end
137
141
  end
@@ -9,8 +9,7 @@ module DocTemplate
9
9
  MATERIALS_KEY = 'section-materials'
10
10
 
11
11
  def parse(fragment, *args)
12
- path = ".//table/*/tr[1]/td//*[case_insensitive_equals(text(),'#{HEADER_LABEL}')]"
13
- section_tables = fragment.xpath(path, XpathFunctions.new)
12
+ section_tables = fragment.xpath(xpath_meta_headers, XpathFunctions.new)
14
13
 
15
14
  # # Allows to handle ELA as Math:: inject fake section
16
15
  return fake_section(fragment) if section_tables.empty? && args.extract_options![:force_inject]
@@ -3,7 +3,9 @@
3
3
  module DocTemplate
4
4
  class XpathFunctions
5
5
  def case_insensitive_equals(node_set, str_to_match)
6
- node_set.find_all { |node| node.to_s.casecmp(str_to_match).zero? }
6
+ return node_set.to_s.squish.casecmp(str_to_match).zero? if node_set.is_a?(String)
7
+
8
+ node_set.find_all { |node| node.to_s.squish.casecmp(str_to_match).zero? }
7
9
  end
8
10
 
9
11
  def case_insensitive_contains(node_set, str_to_match)
@@ -7,7 +7,6 @@ require 'carrierwave'
7
7
  require 'carrierwave/orm/activerecord'
8
8
  require 'closure_tree'
9
9
  require 'devise'
10
- require 'heap'
11
10
  require 'jquery-rails'
12
11
  require 'pdfjs_viewer-rails'
13
12
  require 'ransack'
@@ -25,13 +24,6 @@ require 'font-awesome-sass'
25
24
  require 'foundation-rails'
26
25
  require 'js-routes'
27
26
  require 'nested_form'
28
- require 'rails-assets-classnames'
29
- require 'rails-assets-es6-promise'
30
- require 'rails-assets-eventemitter3'
31
- require 'rails-assets-fetch'
32
- require 'rails-assets-jstree'
33
- require 'rails-assets-lodash'
34
- require 'rails-assets-selectize'
35
27
  require 'webpacker'
36
28
 
37
29
  # LearningTapestry gems
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Lcms
4
4
  module Engine
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
6
6
  RAILS_5_VERSION = 5.2
7
7
  end
8
8
  end
@@ -17,11 +17,11 @@ module Lt
17
17
  # Is used inside `#find_or_create_resource` method
18
18
  #
19
19
  def update_grades_level_position_for(grades)
20
- update_level_position_for(grades) { |m| ::Lcms::Engine::Grades::GRADES.index(m.metadata['grade']) }
20
+ update_level_position_for(grades) { |g| ::Lcms::Engine::Grades::GRADES.index(g.metadata['grade']) }
21
21
  end
22
22
 
23
23
  #
24
- # Fix level position for modules (guidebooks)
24
+ # Fix level position for modules
25
25
  # Is used inside `#find_or_create_resource` method
26
26
  #
27
27
  def update_modules_level_position_for(modules)
@@ -30,11 +30,11 @@ module Lt
30
30
  end
31
31
 
32
32
  #
33
- # Fix level position for units (sections)
33
+ # Fix level position for units
34
34
  # Is used inside `#find_or_create_resource` method
35
35
  #
36
36
  def update_units_level_position_for(units)
37
- update_level_position_for(units) { |m| m.metadata['unit'][NUM_RE].to_i }
37
+ update_level_position_for(units) { |u| u.metadata['unit'][NUM_RE].to_i }
38
38
  end
39
39
 
40
40
  #
@@ -103,8 +103,6 @@ module Lt
103
103
  else
104
104
  set_lesson_position(parent, resource)
105
105
  end
106
-
107
- parent = resource
108
106
  end
109
107
 
110
108
  update resource
@@ -292,7 +290,7 @@ module Lt
292
290
  def set_lesson_position(parent, resource)
293
291
  next_lesson = parent.children.detect do |r|
294
292
  # first lesson with a bigger lesson num
295
- r.lesson_number > context[:lesson].to_i
293
+ r.metadata['lesson'].to_s[NUM_RE].to_i > context[:lesson].to_s[NUM_RE].to_i
296
294
  end
297
295
  next_lesson ? next_lesson.prepend_sibling(resource) : resource.save!
298
296
  end
@@ -10,7 +10,7 @@ describe Lcms::Engine::Admin::AdminController do
10
10
 
11
11
  context 'with host redirect' do
12
12
  it 'builds correct path' do
13
- expect(subject).to eq "/admin?#{args.to_param}"
13
+ expect(subject).to eq "/lcms-engine/admin?#{args.to_param}"
14
14
  end
15
15
  end
16
16
 
@@ -8,16 +8,13 @@ describe Lcms::Engine::Admin::DocumentsController do
8
8
  before { sign_in user }
9
9
 
10
10
  describe '#create' do
11
- let(:credentials) { double }
12
11
  let(:document) { create :document }
13
12
  let(:form) { instance_double('Lcms::Engine::DocumentForm', document: document, save: valid) }
14
- let(:params) { { link: 'link', link_fs: 'link_fs', reimport: '1' } }
13
+ let(:link) { 'link' }
14
+ let(:params) { { link: link, link_fs: 'link_fs', reimport: '1' } }
15
15
  let(:valid) { true }
16
16
 
17
- before do
18
- # allow(controller).to receive(:google_credentials).and_return(credentials)
19
- allow(Lcms::Engine::DocumentForm).to receive(:new).and_return(form)
20
- end
17
+ before { allow(Lcms::Engine::DocumentForm).to receive(:new).and_return(form) }
21
18
 
22
19
  subject { post :create, params: { document_form: params } }
23
20
 
@@ -37,6 +34,41 @@ describe Lcms::Engine::Admin::DocumentsController do
37
34
 
38
35
  it { is_expected.to render_template :new }
39
36
  end
37
+
38
+ context 'when a link to Google Documents folder passed in' do
39
+ let(:credentials) { double }
40
+ let(:file_ids) { ['file_id'] }
41
+ let(:folder_id) { 'folder_id' }
42
+ let(:link) { 'https://drive.google.com/drive/u/x/folders/fkjsdhfjkshfkjsdhf' }
43
+
44
+ before do
45
+ allow(controller).to receive(:google_credentials).and_return(credentials)
46
+ allow(::Lt::Google::Api::Drive).to \
47
+ receive(:folder_id_for).with(link).and_return(folder_id)
48
+ allow(::Lt::Google::Api::Drive).to \
49
+ receive_message_chain(:new, :list_file_ids_in, :map).and_return(file_ids)
50
+ end
51
+
52
+ it 'calls batch reimport' do
53
+ expect(Lcms::Engine::DocumentGenerator).to \
54
+ receive_message_chain(:document_parse_job, :perform_later).and_return(OpenStruct.new(job_id: 0))
55
+ subject
56
+ end
57
+
58
+ # TODO: Rails upgrade - move to system spec
59
+ xit 'renders import template' do
60
+ expect(subject).to render_template :import
61
+ end
62
+
63
+ context 'and when there are no documents' do
64
+ let(:file_ids) { [] }
65
+
66
+ it 'shows the message' do
67
+ subject
68
+ expect(flash[:alert]).to eq I18n.t('lcms.engine.admin.common.empty_folder')
69
+ end
70
+ end
71
+ end
40
72
  end
41
73
 
42
74
  describe '#destroy' do
@@ -7,6 +7,70 @@ describe Lcms::Engine::Admin::MaterialsController do
7
7
 
8
8
  before { sign_in user }
9
9
 
10
+ describe '#create' do
11
+ let(:material) { create :material }
12
+ let(:form) { instance_double('Lcms::Engine::MaterialForm', material: material, save: valid) }
13
+ let(:link) { 'link' }
14
+ let(:params) { { link: link, source_type: 'gdoc' } }
15
+ let(:valid) { true }
16
+
17
+ before { allow(Lcms::Engine::MaterialForm).to receive(:new).and_return(form) }
18
+
19
+ subject { post :create, params: { material_form: params } }
20
+
21
+ it 'creates MaterialForm object' do
22
+ expect(Lcms::Engine::MaterialForm).to receive(:new).with(hash_including(params))
23
+ subject
24
+ end
25
+
26
+ it 'redirects to material' do
27
+ subject
28
+ expect(response).to redirect_to Lcms::Engine::Admin::AdminController.material_path(material)
29
+ end
30
+
31
+ context 'when there is an error' do
32
+ let(:valid) { false }
33
+
34
+ # TODO: Rails upgrade - move to system spec
35
+ xit { is_expected.to render_template :new }
36
+ end
37
+
38
+ context 'when a link to Google Documents folder passed in' do
39
+ let(:credentials) { double }
40
+ let(:file_ids) { ['file_id'] }
41
+ let(:folder_id) { 'folder_id' }
42
+ let(:link) { 'https://drive.google.com/drive/u/x/folders/fkjsdhfjkshfkjsdhf' }
43
+
44
+ before do
45
+ allow(controller).to receive(:google_credentials).and_return(credentials)
46
+ allow(::Lt::Google::Api::Drive).to \
47
+ receive(:folder_id_for).with(link).and_return(folder_id)
48
+ allow(::Lt::Google::Api::Drive).to \
49
+ receive_message_chain(:new, :list_file_ids_in, :map).and_return(file_ids)
50
+ end
51
+
52
+ it 'calls batch reimport' do
53
+ expect(Lcms::Engine::DocumentGenerator).to \
54
+ receive_message_chain(:material_parse_job, :perform_later).and_return(OpenStruct.new(job_id: 0))
55
+ subject
56
+ end
57
+
58
+ # TODO: Rails upgrade - move to system spec
59
+ xit 'renders import template' do
60
+ expect(subject).to render_template :import
61
+ end
62
+
63
+ context 'and when there are no documents' do
64
+ let(:file_ids) { [] }
65
+
66
+ it 'shows the message' do
67
+ subject
68
+ expect(flash[:alert]).to eq I18n.t('lcms.engine.admin.common.empty_folder')
69
+ end
70
+ end
71
+ end
72
+ end
73
+
10
74
  describe '#destroy' do
11
75
  let!(:material) { create :material }
12
76
 
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ describe Lcms::Engine::Admin::ResourcesController do
6
+ let(:resource) { create :resource }
7
+ let(:user) { create :admin }
8
+
9
+ before { sign_in user }
10
+
11
+ describe '#edit' do
12
+ subject { get :edit, params: { id: resource.to_param } }
13
+
14
+ it { is_expected.to be_success }
15
+ end
16
+
17
+ describe '#index' do
18
+ subject { get :index }
19
+
20
+ it { is_expected.to be_success }
21
+ end
22
+
23
+ describe '#update' do
24
+ let(:description) { Faker::Lorem.sentence }
25
+ let(:params) { { description: description, directory: resource.metadata.keys.join(',') } }
26
+
27
+ subject { post :update, params: { id: resource.to_param, resource: params } }
28
+
29
+ context 'with valid params' do
30
+ it { is_expected.to redirect_to admin_resources_path }
31
+
32
+ it 'passes notice' do
33
+ subject
34
+ expect(flash[:notice]).to be_present
35
+ end
36
+ end
37
+
38
+ context 'with overridden parameters' do
39
+ let(:extra_param_array) { { extra_array: Faker::Lorem.words } }
40
+ let(:extra_param_simple) { { extra_simple: Faker::Lorem.word } }
41
+
42
+ subject do
43
+ post :update, params: { id: resource.to_param,
44
+ resource: params.merge(**extra_param_simple, **extra_param_array) }
45
+ end
46
+
47
+ before do
48
+ Lcms::Engine::Resource.class_eval do
49
+ attr_accessor :extra_array
50
+ attr_accessor :extra_simple
51
+ end
52
+
53
+ allow_any_instance_of(Lcms::Engine::Admin::ResourcesController).to \
54
+ receive(:form_params_arrays_override).and_return(extra_param_array.keys[0] => [])
55
+
56
+ allow_any_instance_of(Lcms::Engine::Admin::ResourcesController).to \
57
+ receive(:form_params_simple_override).and_return(extra_param_simple.keys)
58
+ end
59
+
60
+ it 'accepts overridden parameters' do
61
+ expect { subject }.to_not raise_error
62
+ end
63
+
64
+ after do
65
+ Lcms::Engine::Resource.class_eval do
66
+ delete :extra_array
67
+ delete :extra_simple
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -10,9 +10,9 @@ engine: 'Lcms::Engine::Engine'
10
10
  # Redirects
11
11
  redirect:
12
12
  host:
13
- root_path: 'admin_path'
14
- document_path: 'document_path'
15
- material_path: 'material_path'
13
+ # root_path: 'admin_path'
14
+ # document_path: 'document_path'
15
+ # material_path: 'material_path'
16
16
  engine:
17
17
  root_path: 'admin_path'
18
18
  document_path: 'document_path'
@@ -10,13 +10,13 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2020_04_22_130652) do
13
+ ActiveRecord::Schema.define(version: 2020_04_29_130353) do
14
14
 
15
15
  # These are extensions that must be enabled in order to support this database
16
16
  enable_extension "hstore"
17
17
  enable_extension "plpgsql"
18
18
 
19
- create_table "access_codes", force: :cascade do |t|
19
+ create_table "access_codes", id: :serial, force: :cascade do |t|
20
20
  t.string "code", null: false
21
21
  t.boolean "active", default: true, null: false
22
22
  t.datetime "created_at", null: false
@@ -24,14 +24,14 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
24
24
  t.index ["code"], name: "index_access_codes_on_code", unique: true
25
25
  end
26
26
 
27
- create_table "authors", force: :cascade do |t|
27
+ create_table "authors", id: :serial, force: :cascade do |t|
28
28
  t.string "name"
29
29
  t.string "slug"
30
30
  t.datetime "created_at", null: false
31
31
  t.datetime "updated_at", null: false
32
32
  end
33
33
 
34
- create_table "copyright_attributions", force: :cascade do |t|
34
+ create_table "copyright_attributions", id: :serial, force: :cascade do |t|
35
35
  t.string "disclaimer"
36
36
  t.string "value", null: false
37
37
  t.datetime "created_at", null: false
@@ -39,7 +39,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
39
39
  t.integer "resource_id", null: false
40
40
  end
41
41
 
42
- create_table "curriculums", force: :cascade do |t|
42
+ create_table "curriculums", id: :serial, force: :cascade do |t|
43
43
  t.string "name", null: false
44
44
  t.string "slug", null: false
45
45
  t.datetime "created_at", null: false
@@ -47,7 +47,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
47
47
  t.boolean "default", default: false, null: false
48
48
  end
49
49
 
50
- create_table "document_bundles", force: :cascade do |t|
50
+ create_table "document_bundles", id: :serial, force: :cascade do |t|
51
51
  t.string "category", null: false
52
52
  t.string "file"
53
53
  t.integer "resource_id"
@@ -58,7 +58,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
58
58
  t.index ["resource_id"], name: "index_document_bundles_on_resource_id"
59
59
  end
60
60
 
61
- create_table "document_parts", force: :cascade do |t|
61
+ create_table "document_parts", id: :serial, force: :cascade do |t|
62
62
  t.text "content"
63
63
  t.string "part_type"
64
64
  t.boolean "active"
@@ -78,7 +78,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
78
78
  t.index ["renderer_type", "renderer_id"], name: "index_document_parts_on_renderer_type_and_renderer_id"
79
79
  end
80
80
 
81
- create_table "documents", force: :cascade do |t|
81
+ create_table "documents", id: :serial, force: :cascade do |t|
82
82
  t.string "file_id"
83
83
  t.string "name"
84
84
  t.datetime "last_modified_at"
@@ -115,7 +115,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
115
115
  t.index ["material_id"], name: "index_documents_materials_on_material_id"
116
116
  end
117
117
 
118
- create_table "download_categories", force: :cascade do |t|
118
+ create_table "download_categories", id: :serial, force: :cascade do |t|
119
119
  t.string "title", null: false
120
120
  t.text "description"
121
121
  t.integer "position"
@@ -123,7 +123,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
123
123
  t.boolean "bundle", default: false, null: false
124
124
  end
125
125
 
126
- create_table "downloads", force: :cascade do |t|
126
+ create_table "downloads", id: :serial, force: :cascade do |t|
127
127
  t.string "filename"
128
128
  t.integer "filesize"
129
129
  t.string "url"
@@ -135,7 +135,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
135
135
  t.boolean "main", default: false, null: false
136
136
  end
137
137
 
138
- create_table "leadership_posts", force: :cascade do |t|
138
+ create_table "leadership_posts", id: :serial, force: :cascade do |t|
139
139
  t.string "first_name", null: false
140
140
  t.string "last_name", null: false
141
141
  t.string "school"
@@ -147,7 +147,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
147
147
  t.index ["order", "last_name"], name: "index_leadership_posts_on_order_and_last_name"
148
148
  end
149
149
 
150
- create_table "materials", force: :cascade do |t|
150
+ create_table "materials", id: :serial, force: :cascade do |t|
151
151
  t.string "file_id", null: false
152
152
  t.string "identifier"
153
153
  t.jsonb "metadata", default: {}, null: false
@@ -168,22 +168,14 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
168
168
  t.index ["metadata"], name: "index_materials_on_metadata", using: :gin
169
169
  end
170
170
 
171
- create_table "pages", force: :cascade do |t|
172
- t.text "body", null: false
173
- t.string "title", null: false
174
- t.datetime "created_at", null: false
175
- t.datetime "updated_at", null: false
176
- t.string "slug", null: false
177
- end
178
-
179
- create_table "reading_assignment_authors", force: :cascade do |t|
171
+ create_table "reading_assignment_authors", id: :serial, force: :cascade do |t|
180
172
  t.string "name", null: false
181
173
  t.datetime "created_at"
182
174
  t.datetime "updated_at"
183
175
  t.index ["name"], name: "index_reading_assignment_authors_on_name", unique: true
184
176
  end
185
177
 
186
- create_table "reading_assignment_texts", force: :cascade do |t|
178
+ create_table "reading_assignment_texts", id: :serial, force: :cascade do |t|
187
179
  t.string "name", null: false
188
180
  t.integer "reading_assignment_author_id", null: false
189
181
  t.datetime "created_at"
@@ -192,7 +184,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
192
184
  t.index ["reading_assignment_author_id"], name: "index_reading_assignment_texts_on_reading_assignment_author_id"
193
185
  end
194
186
 
195
- create_table "resource_additional_resources", force: :cascade do |t|
187
+ create_table "resource_additional_resources", id: :serial, force: :cascade do |t|
196
188
  t.integer "resource_id", null: false
197
189
  t.integer "additional_resource_id", null: false
198
190
  t.integer "position"
@@ -202,7 +194,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
202
194
  t.index ["resource_id", "additional_resource_id"], name: "index_resource_additional_resources", unique: true
203
195
  end
204
196
 
205
- create_table "resource_downloads", force: :cascade do |t|
197
+ create_table "resource_downloads", id: :serial, force: :cascade do |t|
206
198
  t.integer "resource_id"
207
199
  t.integer "download_id"
208
200
  t.datetime "created_at", null: false
@@ -223,14 +215,14 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
223
215
  t.index ["descendant_id"], name: "resource_desc_idx"
224
216
  end
225
217
 
226
- create_table "resource_reading_assignments", force: :cascade do |t|
218
+ create_table "resource_reading_assignments", id: :serial, force: :cascade do |t|
227
219
  t.integer "resource_id", null: false
228
220
  t.integer "reading_assignment_text_id", null: false
229
221
  t.index ["reading_assignment_text_id"], name: "idx_res_rea_asg_rea_asg_txt"
230
222
  t.index ["resource_id"], name: "index_resource_reading_assignments_on_resource_id"
231
223
  end
232
224
 
233
- create_table "resource_related_resources", force: :cascade do |t|
225
+ create_table "resource_related_resources", id: :serial, force: :cascade do |t|
234
226
  t.integer "resource_id"
235
227
  t.integer "related_resource_id"
236
228
  t.integer "position"
@@ -240,7 +232,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
240
232
  t.index ["resource_id"], name: "index_resource_related_resources_on_resource_id"
241
233
  end
242
234
 
243
- create_table "resource_standards", force: :cascade do |t|
235
+ create_table "resource_standards", id: :serial, force: :cascade do |t|
244
236
  t.integer "resource_id"
245
237
  t.integer "standard_id"
246
238
  t.datetime "created_at"
@@ -249,7 +241,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
249
241
  t.index ["standard_id"], name: "index_resource_standards_on_standard_id"
250
242
  end
251
243
 
252
- create_table "resources", force: :cascade do |t|
244
+ create_table "resources", id: :serial, force: :cascade do |t|
253
245
  t.datetime "created_at"
254
246
  t.datetime "updated_at"
255
247
  t.datetime "indexed_at"
@@ -287,7 +279,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
287
279
  t.index ["resource_type"], name: "index_resources_on_resource_type"
288
280
  end
289
281
 
290
- create_table "sessions", force: :cascade do |t|
282
+ create_table "sessions", id: :serial, force: :cascade do |t|
291
283
  t.string "session_id", null: false
292
284
  t.text "data"
293
285
  t.datetime "created_at"
@@ -296,11 +288,11 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
296
288
  t.index ["updated_at"], name: "index_sessions_on_updated_at"
297
289
  end
298
290
 
299
- create_table "settings", force: :cascade do |t|
291
+ create_table "settings", id: :serial, force: :cascade do |t|
300
292
  t.jsonb "data", default: {}, null: false
301
293
  end
302
294
 
303
- create_table "social_thumbnails", force: :cascade do |t|
295
+ create_table "social_thumbnails", id: :serial, force: :cascade do |t|
304
296
  t.integer "target_id", null: false
305
297
  t.string "target_type", null: false
306
298
  t.string "image", null: false
@@ -308,7 +300,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
308
300
  t.index ["target_type", "target_id"], name: "index_social_thumbnails_on_target_type_and_target_id"
309
301
  end
310
302
 
311
- create_table "staff_members", force: :cascade do |t|
303
+ create_table "staff_members", id: :serial, force: :cascade do |t|
312
304
  t.string "bio", limit: 4096
313
305
  t.string "position"
314
306
  t.datetime "created_at", null: false
@@ -322,7 +314,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
322
314
  t.index ["first_name", "last_name"], name: "index_staff_members_on_first_name_and_last_name"
323
315
  end
324
316
 
325
- create_table "standard_links", force: :cascade do |t|
317
+ create_table "standard_links", id: :serial, force: :cascade do |t|
326
318
  t.integer "standard_begin_id", null: false
327
319
  t.integer "standard_end_id", null: false
328
320
  t.string "link_type", null: false
@@ -332,7 +324,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
332
324
  t.index ["standard_end_id"], name: "index_standard_links_on_standard_end_id"
333
325
  end
334
326
 
335
- create_table "standards", force: :cascade do |t|
327
+ create_table "standards", id: :serial, force: :cascade do |t|
336
328
  t.string "name", null: false
337
329
  t.datetime "created_at"
338
330
  t.datetime "updated_at"
@@ -350,7 +342,7 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
350
342
  t.index ["subject"], name: "index_standards_on_subject"
351
343
  end
352
344
 
353
- create_table "taggings", force: :cascade do |t|
345
+ create_table "taggings", id: :serial, force: :cascade do |t|
354
346
  t.integer "tag_id"
355
347
  t.integer "taggable_id"
356
348
  t.string "taggable_type"
@@ -362,13 +354,13 @@ ActiveRecord::Schema.define(version: 2020_04_22_130652) do
362
354
  t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
363
355
  end
364
356
 
365
- create_table "tags", force: :cascade do |t|
357
+ create_table "tags", id: :serial, force: :cascade do |t|
366
358
  t.string "name"
367
359
  t.integer "taggings_count", default: 0
368
360
  t.index ["name"], name: "index_tags_on_name", unique: true
369
361
  end
370
362
 
371
- create_table "users", force: :cascade do |t|
363
+ create_table "users", id: :serial, force: :cascade do |t|
372
364
  t.string "name"
373
365
  t.datetime "created_at", null: false
374
366
  t.datetime "updated_at", null: false