lcms-engine 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (374) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -1
  3. data/.dockerignore +25 -0
  4. data/.env.docker +1 -1
  5. data/.eslintignore +2 -1
  6. data/.eslintrc +23 -73
  7. data/.nvmrc +1 -1
  8. data/.overcommit.yml +8 -2
  9. data/.prettierrc +7 -0
  10. data/.rubocop.yml +12 -8
  11. data/.ruby-version +1 -1
  12. data/.stylelintignore +9 -0
  13. data/.stylelintrc +8 -0
  14. data/CHANGELOG.md +50 -1
  15. data/Dockerfile +3 -3
  16. data/Gemfile.lock +408 -322
  17. data/README.md +20 -17
  18. data/app/assets/config/lcms_engine_manifest.js +4 -2
  19. data/app/assets/javascripts/lcms/engine/admin/{application.js → lcms_engine_application.js} +1 -3
  20. data/app/assets/javascripts/lcms/engine/initializers/foundation.js +1 -1
  21. data/app/assets/javascripts/lcms/engine/{application.js → lcms_engine_application.js} +0 -0
  22. data/app/assets/stylesheets/lcms/engine/admin/collections.scss +2 -1
  23. data/app/assets/stylesheets/lcms/engine/admin/components.scss +60 -19
  24. data/app/assets/stylesheets/lcms/engine/admin/curriculums.scss +12 -10
  25. data/app/assets/stylesheets/lcms/engine/admin/lessons.scss +21 -15
  26. data/app/assets/stylesheets/lcms/engine/admin/materials.scss +25 -17
  27. data/app/assets/stylesheets/lcms/engine/admin/resources.scss +8 -7
  28. data/app/assets/stylesheets/lcms/engine/admin/standards.scss +4 -1
  29. data/app/assets/stylesheets/lcms/engine/admin/users.scss +1 -1
  30. data/app/assets/stylesheets/lcms/engine/base/_colors.scss +8 -10
  31. data/app/assets/stylesheets/lcms/engine/base/_ld-colors.scss +10 -10
  32. data/app/assets/stylesheets/lcms/engine/components/_assoc-picker.scss +4 -5
  33. data/app/assets/stylesheets/lcms/engine/components/lesson/_activity.scss +6 -2
  34. data/app/assets/stylesheets/lcms/engine/components/lesson/_callout.scss +19 -5
  35. data/app/assets/stylesheets/lcms/engine/components/lesson/_columns.scss +4 -3
  36. data/app/assets/stylesheets/lcms/engine/components/lesson/_curriculum-map.scss +16 -7
  37. data/app/assets/stylesheets/lcms/engine/components/lesson/_def.scss +2 -2
  38. data/app/assets/stylesheets/lcms/engine/components/lesson/_expand.scss +9 -9
  39. data/app/assets/stylesheets/lcms/engine/components/lesson/_foundational-divider.scss +0 -1
  40. data/app/assets/stylesheets/lcms/engine/components/lesson/_group.scss +3 -1
  41. data/app/assets/stylesheets/lcms/engine/components/lesson/_icons.scss +1 -1
  42. data/app/assets/stylesheets/lcms/engine/components/lesson/_image-wrap.scss +2 -2
  43. data/app/assets/stylesheets/lcms/engine/components/lesson/_inset.scss +7 -2
  44. data/app/assets/stylesheets/lcms/engine/components/lesson/_materials.scss +1 -1
  45. data/app/assets/stylesheets/lcms/engine/components/lesson/_multiple-choice.scss +4 -1
  46. data/app/assets/stylesheets/lcms/engine/components/lesson/_override.scss +28 -9
  47. data/app/assets/stylesheets/lcms/engine/components/lesson/_pd.scss +7 -7
  48. data/app/assets/stylesheets/lcms/engine/components/lesson/_pv.scss +5 -4
  49. data/app/assets/stylesheets/lcms/engine/components/lesson/_section.scss +10 -3
  50. data/app/assets/stylesheets/lcms/engine/components/lesson/_selection-control.scss +14 -8
  51. data/app/assets/stylesheets/lcms/engine/components/lesson/_sidebar.scss +25 -10
  52. data/app/assets/stylesheets/lcms/engine/components/lesson/_title.scss +3 -1
  53. data/app/assets/stylesheets/lcms/engine/components/lesson/_unit-map.scss +1 -1
  54. data/app/assets/stylesheets/lcms/engine/components/material/_material.scss +3 -3
  55. data/app/assets/stylesheets/lcms/engine/components/material/_overlay.scss +12 -4
  56. data/app/assets/stylesheets/lcms/engine/components/material/_preview.scss +1 -1
  57. data/app/assets/stylesheets/lcms/engine/components/support/_survey.scss +3 -1
  58. data/app/assets/stylesheets/lcms/engine/layout/_footer.scss +29 -11
  59. data/app/assets/stylesheets/lcms/engine/layout/_header.scss +5 -5
  60. data/app/assets/stylesheets/lcms/engine/layout/_navigation.scss +4 -6
  61. data/app/assets/stylesheets/lcms/engine/layout/_page.scss +2 -2
  62. data/app/assets/stylesheets/lcms/engine/{admin.scss → lcms_engine_admin.scss} +26 -15
  63. data/app/assets/stylesheets/lcms/engine/lcms_engine_application.scss +9 -0
  64. data/app/assets/stylesheets/lcms/engine/pdf.scss +5 -26
  65. data/app/assets/stylesheets/lcms/engine/pdf_plain.scss +5 -23
  66. data/app/assets/stylesheets/lcms/engine/print/_base.scss +41 -12
  67. data/app/assets/stylesheets/lcms/engine/print/_cover.scss +12 -12
  68. data/app/assets/stylesheets/lcms/engine/print/_footer.scss +8 -3
  69. data/app/assets/stylesheets/lcms/engine/print/_gdoc-base.scss +10 -37
  70. data/app/assets/stylesheets/lcms/engine/print/_helpers.scss +5 -2
  71. data/app/assets/stylesheets/lcms/engine/print/_lesson-base.scss +2 -14
  72. data/app/assets/stylesheets/lcms/engine/print/_material-base.scss +1 -3
  73. data/app/assets/stylesheets/lcms/engine/print/_print.scss +15 -8
  74. data/app/assets/stylesheets/lcms/engine/print/_toc.scss +24 -9
  75. data/app/assets/stylesheets/lcms/engine/print/gdoc/_base-typography.scss +24 -6
  76. data/app/assets/stylesheets/lcms/engine/print/gdoc/_base.scss +10 -3
  77. data/app/assets/stylesheets/lcms/engine/print/gdoc/_colors.scss +3 -3
  78. data/app/assets/stylesheets/lcms/engine/print/gdoc/_header.scss +2 -2
  79. data/app/assets/stylesheets/lcms/engine/print/gdoc/_helpers.scss +1 -0
  80. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_activity.scss +1 -1
  81. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_agenda.scss +8 -2
  82. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_callout.scss +16 -6
  83. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_def.scss +1 -1
  84. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_dialogue.scss +3 -1
  85. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_expand.scss +5 -2
  86. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_image-wrap.scss +5 -3
  87. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_image.scss +1 -1
  88. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_optbreak.scss +1 -0
  89. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_section.scss +4 -1
  90. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_smp.scss +1 -0
  91. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_tables.scss +11 -3
  92. data/app/assets/stylesheets/lcms/engine/print/gdoc/material/_header.scss +5 -2
  93. data/app/assets/stylesheets/lcms/engine/print/lesson/_base-typography.scss +33 -9
  94. data/app/assets/stylesheets/lcms/engine/print/lesson/_group.scss +3 -1
  95. data/app/assets/stylesheets/lcms/engine/print/lesson/_image.scss +3 -1
  96. data/app/assets/stylesheets/lcms/engine/print/lesson/_materials.scss +1 -1
  97. data/app/assets/stylesheets/lcms/engine/print/lesson/_pd.scss +8 -4
  98. data/app/assets/stylesheets/lcms/engine/print/lesson/_section.scss +1 -1
  99. data/app/assets/stylesheets/lcms/engine/print/material/_header.scss +4 -1
  100. data/app/assets/stylesheets/lcms/engine/themes/_material.scss +11 -11
  101. data/app/assets/stylesheets/lcms/engine/utils/_colorcodes.scss +15 -5
  102. data/app/assets/stylesheets/lcms/engine/utils/_functions.scss +1 -1
  103. data/app/assets/stylesheets/lcms/engine/utils/_helpers.scss +23 -11
  104. data/app/assets/stylesheets/lcms/engine/utils/_placeholders.scss +1 -1
  105. data/app/assets/stylesheets/lcms/engine/utils/_variables.scss +11 -11
  106. data/app/assets/stylesheets/lcms/engine/vendors/{mathjax.css → mathjax.scss} +0 -0
  107. data/app/assets/stylesheets/lcms/engine/vendors/react-tagsinput.css +48 -0
  108. data/app/controllers/concerns/lcms/engine/reimportable.rb +12 -2
  109. data/app/controllers/lcms/engine/admin/access_codes_controller.rb +8 -3
  110. data/app/controllers/lcms/engine/admin/admin_controller.rb +6 -40
  111. data/app/controllers/lcms/engine/admin/association_picker_controller.rb +4 -1
  112. data/app/controllers/lcms/engine/admin/batch_reimports_controller.rb +2 -2
  113. data/app/controllers/lcms/engine/admin/curriculums_controller.rb +21 -2
  114. data/app/controllers/lcms/engine/admin/documents_controller.rb +41 -14
  115. data/app/controllers/lcms/engine/admin/materials_controller.rb +32 -13
  116. data/app/controllers/lcms/engine/admin/resource_bulk_edits_controller.rb +2 -2
  117. data/app/controllers/lcms/engine/admin/resources_controller.rb +9 -7
  118. data/app/controllers/lcms/engine/admin/settings_controller.rb +1 -1
  119. data/app/controllers/lcms/engine/admin/standards_controller.rb +7 -2
  120. data/app/controllers/lcms/engine/admin/users_controller.rb +15 -7
  121. data/app/controllers/lcms/engine/application_controller.rb +1 -1
  122. data/app/controllers/lcms/engine/resources_controller.rb +5 -5
  123. data/app/controllers/lcms/engine/welcome_controller.rb +11 -0
  124. data/app/entities/lcms/engine/grades.rb +17 -6
  125. data/app/entities/lcms/engine/hierarchical_position.rb +1 -2
  126. data/app/entities/lcms/engine/media_embed.rb +2 -2
  127. data/app/entities/lcms/engine/pagination.rb +14 -10
  128. data/app/entities/lcms/engine/roman_numerals.rb +2 -2
  129. data/app/exceptions/lcms/engine/document_error.rb +8 -0
  130. data/app/exceptions/lcms/engine/material_error.rb +8 -0
  131. data/app/forms/lcms/engine/document_form.rb +19 -14
  132. data/app/forms/lcms/engine/material_form.rb +3 -2
  133. data/app/helpers/admin/components_helper.rb +3 -3
  134. data/app/helpers/lcms/engine/path_helper.rb +32 -0
  135. data/app/helpers/lcms/engine/resource_helper.rb +1 -1
  136. data/app/helpers/lcms/engine/view_helper.rb +1 -9
  137. data/app/interactors/lcms/engine/explore_curriculum_interactor.rb +2 -2
  138. data/app/javascript/components/admin/ImportStatus.jsx +90 -56
  139. data/app/javascript/components/admin/Initializer.jsx +33 -35
  140. data/app/javascript/components/admin/MultiSelectedOperation.jsx +43 -18
  141. data/app/javascript/components/admin/association-picker/AssociationPicker.jsx +68 -47
  142. data/app/javascript/components/admin/association-picker/AssociationPickerItem.jsx +18 -7
  143. data/app/javascript/components/admin/association-picker/AssociationPickerResults.jsx +42 -17
  144. data/app/javascript/components/admin/association-picker/AssociationPickerWindow.jsx +47 -27
  145. data/app/javascript/components/admin/curriculum/CurriculumEditor.jsx +54 -32
  146. data/app/javascript/components/admin/curriculum/DirectoryPicker.jsx +80 -53
  147. data/app/javascript/components/admin/picker/PickerButton.jsx +16 -11
  148. data/app/javascript/components/admin/picker/pickerModal.jsx +6 -6
  149. data/app/javascript/components/admin/picker/pickerWindowWrapper.jsx +61 -40
  150. data/app/javascript/components/admin/resource-picker/ResourcePicker.jsx +54 -39
  151. data/app/javascript/components/admin/resource-picker/ResourcePickerResource.jsx +14 -3
  152. data/app/javascript/components/admin/resource-picker/ResourcePickerWindow.jsx +50 -21
  153. data/app/javascript/components/paginate/PageView.jsx +20 -8
  154. data/app/javascript/components/paginate/PaginationBoxView.jsx +78 -66
  155. data/app/javascript/components/paginate/PaginationListView.jsx +59 -45
  156. data/app/javascript/packs/lcms_engine_admin.js +15 -0
  157. data/app/javascript/packs/{application.js → lcms_engine_application.js} +5 -4
  158. data/app/javascript/packs/server_rendering.js +1 -0
  159. data/app/javascript/vendor/jstree/jstree.min.js +6 -0
  160. data/app/javascript/vendor/jstree/themes/default/32px.png +0 -0
  161. data/app/javascript/vendor/jstree/themes/default/40px.png +0 -0
  162. data/app/javascript/vendor/jstree/themes/default/style.css +1106 -0
  163. data/app/javascript/vendor/jstree/themes/default/style.min.css +1 -0
  164. data/app/javascript/vendor/jstree/themes/default/throbber.gif +0 -0
  165. data/app/javascript/vendor/jstree/themes/default-dark/32px.png +0 -0
  166. data/app/javascript/vendor/jstree/themes/default-dark/40px.png +0 -0
  167. data/app/javascript/vendor/jstree/themes/default-dark/style.css +1150 -0
  168. data/app/javascript/vendor/jstree/themes/default-dark/style.min.css +1 -0
  169. data/app/javascript/vendor/jstree/themes/default-dark/throbber.gif +0 -0
  170. data/app/jobs/concerns/lcms/engine/nested_resque_job.rb +1 -4
  171. data/app/jobs/lcms/engine/document_generate_gdoc_job.rb +2 -2
  172. data/app/jobs/lcms/engine/document_generate_job.rb +2 -2
  173. data/app/jobs/lcms/engine/document_generate_pdf_job.rb +5 -5
  174. data/app/jobs/lcms/engine/document_parse_job.rb +1 -1
  175. data/app/jobs/lcms/engine/material_generate_pdf_job.rb +4 -4
  176. data/app/models/concerns/lcms/engine/navigable.rb +6 -10
  177. data/app/models/concerns/lcms/engine/searchable.rb +7 -0
  178. data/app/models/lcms/engine/document.rb +1 -1
  179. data/app/models/lcms/engine/download.rb +1 -1
  180. data/app/models/lcms/engine/resource.rb +1 -1
  181. data/app/models/lcms/engine/search/document.rb +4 -3
  182. data/app/models/lcms/engine/search/repository.rb +1 -1
  183. data/app/presenters/lcms/engine/content_presenter.rb +1 -1
  184. data/app/presenters/lcms/engine/curriculum_presenter.rb +21 -18
  185. data/app/presenters/lcms/engine/document_presenter.rb +5 -3
  186. data/app/presenters/lcms/engine/resource_presenter.rb +6 -3
  187. data/app/queries/lcms/engine/admin_documents_query.rb +2 -2
  188. data/app/queries/lcms/engine/admin_materials_query.rb +11 -2
  189. data/app/queries/lcms/engine/base_query.rb +1 -1
  190. data/app/serializers/lcms/engine/previews_material_serializer.rb +1 -0
  191. data/app/services/lcms/engine/document_build_service.rb +6 -0
  192. data/app/services/lcms/engine/document_generator.rb +2 -2
  193. data/app/services/lcms/engine/google/drive_service.rb +7 -15
  194. data/app/services/lcms/engine/google/script_service.rb +7 -3
  195. data/app/services/lcms/engine/html_sanitizer.rb +6 -6
  196. data/app/services/lcms/engine/lessons_gdoc_bundler.rb +1 -1
  197. data/app/services/lcms/engine/lti_exporter.rb +1 -1
  198. data/app/services/lcms/engine/material_build_service.rb +6 -2
  199. data/app/services/lcms/engine/material_preview_generator.rb +3 -3
  200. data/app/services/lcms/engine/react_materials_resolver.rb +3 -2
  201. data/app/services/lcms/engine/s3_service.rb +14 -2
  202. data/app/tasks/resource_tasks.rb +2 -2
  203. data/app/views/layouts/lcms/engine/admin.html.erb +3 -3
  204. data/app/views/layouts/lcms/engine/application.html.erb +2 -2
  205. data/app/views/layouts/lcms/engine/lti.html.erb +1 -1
  206. data/app/views/lcms/engine/admin/access_codes/_form.html.erb +1 -1
  207. data/app/views/lcms/engine/admin/access_codes/index.html.erb +3 -3
  208. data/app/views/lcms/engine/admin/batch_reimports/_search_form.html.erb +2 -2
  209. data/app/views/lcms/engine/admin/curriculums/edit.html.erb +5 -5
  210. data/app/views/lcms/engine/admin/documents/_materials_links.html.erb +2 -2
  211. data/app/views/lcms/engine/admin/documents/_reimport.html.erb +1 -1
  212. data/app/views/lcms/engine/admin/documents/_search_form.html.erb +2 -2
  213. data/app/views/lcms/engine/admin/documents/import.html.erb +1 -1
  214. data/app/views/lcms/engine/admin/documents/index.html.erb +7 -5
  215. data/app/views/lcms/engine/admin/documents/new.html.erb +6 -2
  216. data/app/views/lcms/engine/admin/materials/_reimport.html.erb +1 -1
  217. data/app/views/lcms/engine/admin/materials/_search_form.html.erb +2 -2
  218. data/app/views/lcms/engine/admin/materials/import.html.erb +1 -1
  219. data/app/views/lcms/engine/admin/materials/index.html.erb +26 -22
  220. data/app/views/lcms/engine/admin/materials/new.html.erb +5 -1
  221. data/app/views/lcms/engine/admin/resource_bulk_edits/new.html.erb +2 -2
  222. data/app/views/lcms/engine/admin/resources/_fields.html.erb +4 -0
  223. data/app/views/lcms/engine/admin/resources/_form.html.erb +1 -1
  224. data/app/views/lcms/engine/admin/resources/_search_form.html.erb +2 -2
  225. data/app/views/lcms/engine/admin/resources/index.html.erb +7 -5
  226. data/app/views/lcms/engine/admin/shared/_header.html.erb +12 -12
  227. data/app/views/lcms/engine/admin/standards/_form.html.erb +3 -1
  228. data/app/views/lcms/engine/admin/standards/_search_form.html.erb +1 -1
  229. data/app/views/lcms/engine/admin/users/_form.html.erb +1 -1
  230. data/app/views/lcms/engine/admin/users/_search_form.html.erb +1 -1
  231. data/app/views/lcms/engine/admin/users/index.html.erb +6 -6
  232. data/app/views/lcms/engine/documents/gdoc/_agenda.html.erb +1 -1
  233. data/app/views/lcms/engine/documents/show.html.erb +1 -1
  234. data/app/views/lcms/engine/materials/show.html.erb +1 -1
  235. data/app/views/lcms/engine/pages/not_found.html.erb +5 -0
  236. data/app/views/lcms/engine/resources/_download.html.erb +2 -2
  237. data/app/views/lcms/engine/resources/_unit_bundles.html.erb +2 -2
  238. data/app/views/lcms/engine/resources/generic.html.erb +0 -4
  239. data/app/views/lcms/engine/resources/media.html.erb +0 -4
  240. data/app/views/lcms/engine/resources/show.html.erb +0 -2
  241. data/config/initializers/airbrake.rb +62 -10
  242. data/config/initializers/bitly.rb +1 -1
  243. data/config/initializers/carrier_wave.rb +6 -4
  244. data/config/initializers/ckeditor.rb +6 -0
  245. data/config/initializers/elasticsearch.rb +1 -1
  246. data/config/initializers/resque.rb +2 -2
  247. data/config/locales/admin/en.yml +1 -2
  248. data/config/locales/ui/en.yml +1 -0
  249. data/config/routes.rb +5 -2
  250. data/db/migrate/.keep +0 -0
  251. data/db/schema.rb +280 -312
  252. data/db/seeds.rb +0 -1
  253. data/docker-compose.ror4.yml +32 -0
  254. data/docker-compose.yml +6 -3
  255. data/docs/env-variables.md +40 -40
  256. data/docs/google-cloud-platform-setup.md +45 -17
  257. data/docs/how-to-build-and-publish.md +1 -0
  258. data/lcms-engine.gemspec +28 -20
  259. data/lib/doc_template/document.rb +3 -4
  260. data/lib/doc_template/document_toc.rb +2 -2
  261. data/lib/doc_template/objects/activity_metadata.rb +1 -1
  262. data/lib/doc_template/objects/agenda_metadata.rb +1 -1
  263. data/lib/doc_template/objects/metadata_helpers.rb +1 -1
  264. data/lib/doc_template/objects/toc_helpers.rb +4 -4
  265. data/lib/doc_template/objects/toc_metadata.rb +4 -6
  266. data/lib/doc_template/tables/base.rb +3 -2
  267. data/lib/doc_template/tags/activity_metadata_type_tag.rb +1 -1
  268. data/lib/doc_template/tags/answer_space_tag.rb +2 -2
  269. data/lib/doc_template/tags/base_tag.rb +5 -5
  270. data/lib/doc_template/tags/block_tag.rb +1 -1
  271. data/lib/doc_template/tags/columns_tag.rb +1 -1
  272. data/lib/doc_template/tags/def_tag.rb +1 -1
  273. data/lib/doc_template/tags/expand_tag.rb +1 -0
  274. data/lib/doc_template/tags/heading_tag.rb +1 -1
  275. data/lib/doc_template/tags/inset_tag.rb +2 -2
  276. data/lib/doc_template/tags/latex_tag.rb +1 -1
  277. data/lib/doc_template/tags/page_break_tag.rb +1 -1
  278. data/lib/doc_template/tags/pd_tag.rb +4 -4
  279. data/lib/doc_template/tags/section_tag.rb +2 -2
  280. data/lib/doc_template/tags/standard_tag.rb +3 -3
  281. data/lib/doc_template/tags/table_preserve_alignment_tag.rb +1 -1
  282. data/lib/doc_template/tags/table_tag.rb +1 -1
  283. data/lib/doc_template/template.rb +1 -1
  284. data/lib/doc_template.rb +9 -9
  285. data/lib/document_exporter/gdoc/base.rb +6 -3
  286. data/lib/document_exporter/pdf/base.rb +1 -1
  287. data/lib/document_exporter/pdf/document.rb +2 -2
  288. data/lib/document_exporter/pdf/material.rb +2 -2
  289. data/lib/document_exporter/pdf/student_material.rb +2 -2
  290. data/lib/document_exporter/pdf/teacher_material.rb +2 -2
  291. data/lib/document_renderer/part.rb +4 -6
  292. data/lib/elasticsearch/persistence/repository/response/results.rb +1 -1
  293. data/lib/lcms/engine/engine.rb +10 -9
  294. data/lib/lcms/engine/version.rb +1 -1
  295. data/lib/lcms/engine.rb +0 -1
  296. data/lib/lt/lcms/metadata/base_service.rb +2 -1
  297. data/lib/lt/lcms/metadata/context.rb +58 -54
  298. data/lib/lt/lcms/metadata/service.rb +6 -3
  299. data/lib/resque_job.rb +3 -6
  300. data/lib/standard_importer.rb +4 -4
  301. data/lib/tasks/cloud66.rake +8 -6
  302. data/lib/tasks/document.rake +7 -7
  303. data/lib/tasks/google.rake +29 -14
  304. data/lib/tasks/lcms/engine_tasks.rake +1 -1
  305. data/package.json +31 -9
  306. data/postcss.config.js +12 -0
  307. data/spec/controllers/admin/association_picker_controller_spec.rb +6 -8
  308. data/spec/controllers/admin/curriculums_controller_spec.rb +23 -0
  309. data/spec/controllers/admin/documents_controller_spec.rb +25 -3
  310. data/spec/controllers/admin/materials_controller_spec.rb +17 -4
  311. data/spec/controllers/admin/resource_bulk_edit_controller_spec.rb +1 -1
  312. data/spec/controllers/admin/resources_controller_spec.rb +3 -3
  313. data/spec/controllers/admin/settings_controller_spec.rb +1 -1
  314. data/spec/controllers/admin/standards_controller_spec.rb +1 -1
  315. data/spec/controllers/admin/welcome_controller_spec.rb +12 -10
  316. data/spec/controllers/resources_controller_spec.rb +3 -3
  317. data/spec/controllers/welcome_controller_spec.rb +38 -0
  318. data/spec/dummy/.env.docker +5 -0
  319. data/spec/dummy/.traceroute.yaml +0 -2
  320. data/spec/dummy/bin/webpack +18 -0
  321. data/spec/dummy/bin/webpack-dev-server +18 -0
  322. data/spec/dummy/config/application.rb +1 -1
  323. data/spec/dummy/config/environments/production.rb +1 -1
  324. data/spec/dummy/config/environments/test.rb +1 -1
  325. data/spec/dummy/config/initializers/assets.rb +6 -0
  326. data/spec/dummy/config/lcms-admin.yml +3 -7
  327. data/spec/dummy/config/puma.rb +3 -3
  328. data/spec/dummy/config/routes.rb +6 -0
  329. data/spec/dummy/db/schema.rb +5 -5
  330. data/spec/entities/grades_spec.rb +12 -0
  331. data/spec/factories/documents.rb +1 -0
  332. data/spec/factories/downloads.rb +1 -1
  333. data/spec/factories/resources.rb +2 -2
  334. data/spec/features/admin/lessons/add_lesson_spec.rb +3 -3
  335. data/spec/features/admin/materials/add_material_spec.rb +5 -3
  336. data/spec/features/admin/users_spec.rb +2 -2
  337. data/spec/forms/document_form_spec.rb +11 -1
  338. data/spec/{controllers/admin/admin_controller_spec.rb → helpers/path_helper_spec.rb} +6 -6
  339. data/spec/lib/doc_template/objects/activity_metadata_spec.rb +1 -1
  340. data/spec/lib/doc_template/objects/agenda_metadata_spec.rb +2 -0
  341. data/spec/lib/doc_template/objects/toc_metadata_spec.rb +1 -1
  342. data/spec/lib/doc_template/tables/shared_examples/remove_table.rb +1 -1
  343. data/spec/lib/doc_template/tags/page_break_tag_spec.rb +1 -1
  344. data/spec/lib/doc_template/tags/pd_tag_spec.rb +1 -1
  345. data/spec/models/document_spec.rb +1 -1
  346. data/spec/models/standard_spec.rb +2 -0
  347. data/spec/queries/lcms/engine/admin_materials_query_spec.rb +34 -0
  348. data/spec/rails_helper.rb +8 -2
  349. data/spec/services/document_build_service_spec.rb +4 -11
  350. data/spec/services/s3_service_spec.rb +31 -0
  351. data/spec/support/concerns/navigable.rb +2 -0
  352. data/spec/support/routes.rb +4 -0
  353. data/spec/support/shared_examples/content_tag.rb +4 -4
  354. data/templates/routes.rb +0 -1
  355. data/yarn.lock +3447 -2993
  356. metadata +208 -303
  357. data/app/assets/stylesheets/lcms/engine/application.scss +0 -36
  358. data/app/assets/stylesheets/lcms/engine/vendors/jquery.tagsinput.css +0 -1
  359. data/app/exceptions/components_api_error.rb +0 -4
  360. data/app/exceptions/document_error.rb +0 -4
  361. data/app/exceptions/material_error.rb +0 -4
  362. data/app/javascript/packs/admin.js +0 -14
  363. data/app/models/lcms/engine/component.rb +0 -88
  364. data/app/presenters/lcms/engine/social_media_presenter.rb +0 -83
  365. data/app/views/lcms/engine/shared/_social_sharing.html.erb +0 -22
  366. data/db/migrate/20200217160930_change_document_parts_to_polymorphic.rb +0 -36
  367. data/db/migrate/20200218144849_drop_material_parts_table.rb +0 -7
  368. data/db/migrate/20200422130652_add_reimported_at_to_documents.rb +0 -7
  369. data/db/migrate/20200429130353_drop_pages.rb +0 -13
  370. data/db/seeds/pages.seeds.rb +0 -26
  371. data/lib/document_exporter.rb +0 -6
  372. data/lib/lcms/engine/migration.rb +0 -16
  373. data/spec/models/component_spec.rb +0 -60
  374. data/vendor/assets/javascripts/jquery.tagsinput.js +0 -1
data/db/schema.rb CHANGED
@@ -1,423 +1,391 @@
1
- # encoding: UTF-8
2
1
  # This file is auto-generated from the current state of the database. Instead
3
2
  # of editing this file, please use the migrations feature of Active Record to
4
3
  # incrementally modify your database, and then regenerate this schema definition.
5
4
  #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
5
+ # This file is the source Rails uses to define your schema when running `bin/rails
6
+ # db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
7
+ # be faster and is potentially less error prone than running all of your
8
+ # migrations from scratch. Old migrations may fail to apply correctly if those
9
+ # migrations use external dependencies or application code.
11
10
  #
12
11
  # It's strongly recommended that you check this file into your version control system.
13
12
 
14
- ActiveRecord::Schema.define(version: 0) do
13
+ ActiveRecord::Schema.define(version: 2020_04_29_130353) do
15
14
 
16
15
  # These are extensions that must be enabled in order to support this database
17
- enable_extension "plpgsql"
18
16
  enable_extension "hstore"
17
+ enable_extension "plpgsql"
19
18
 
20
- create_table "access_codes", force: :cascade do |t|
21
- t.string "code", null: false
22
- t.boolean "active", default: true, null: false
23
- t.datetime "created_at", null: false
24
- t.datetime "updated_at", null: false
19
+ create_table "access_codes", id: :serial, force: :cascade do |t|
20
+ t.string "code", null: false
21
+ t.boolean "active", default: true, null: false
22
+ t.datetime "created_at", null: false
23
+ t.datetime "updated_at", null: false
24
+ t.index ["code"], name: "index_access_codes_on_code", unique: true
25
25
  end
26
26
 
27
- add_index "access_codes", ["code"], name: "index_access_codes_on_code", unique: true, using: :btree
28
-
29
- create_table "authors", force: :cascade do |t|
30
- t.string "name"
31
- t.string "slug"
27
+ create_table "authors", id: :serial, force: :cascade do |t|
28
+ t.string "name"
29
+ t.string "slug"
32
30
  t.datetime "created_at", null: false
33
31
  t.datetime "updated_at", null: false
34
32
  end
35
33
 
36
- create_table "copyright_attributions", force: :cascade do |t|
37
- t.string "disclaimer"
38
- t.string "value", null: false
39
- t.datetime "created_at", null: false
40
- t.datetime "updated_at", null: false
41
- t.integer "resource_id", null: false
34
+ create_table "copyright_attributions", id: :serial, force: :cascade do |t|
35
+ t.string "disclaimer"
36
+ t.string "value", null: false
37
+ t.datetime "created_at", null: false
38
+ t.datetime "updated_at", null: false
39
+ t.integer "resource_id", null: false
42
40
  end
43
41
 
44
- create_table "curriculums", force: :cascade do |t|
45
- t.string "name", null: false
46
- t.string "slug", null: false
47
- t.datetime "created_at", null: false
48
- t.datetime "updated_at", null: false
49
- t.boolean "default", default: false, null: false
42
+ create_table "curriculums", id: :serial, force: :cascade do |t|
43
+ t.string "name", null: false
44
+ t.string "slug", null: false
45
+ t.datetime "created_at", null: false
46
+ t.datetime "updated_at", null: false
47
+ t.boolean "default", default: false, null: false
50
48
  end
51
49
 
52
- create_table "document_bundles", force: :cascade do |t|
53
- t.string "category", null: false
54
- t.string "file"
55
- t.integer "resource_id"
56
- t.datetime "created_at", null: false
57
- t.datetime "updated_at", null: false
58
- t.string "url"
59
- t.string "content_type", default: "pdf", null: false
50
+ create_table "document_bundles", id: :serial, force: :cascade do |t|
51
+ t.string "category", null: false
52
+ t.string "file"
53
+ t.integer "resource_id"
54
+ t.datetime "created_at", null: false
55
+ t.datetime "updated_at", null: false
56
+ t.string "url"
57
+ t.string "content_type", default: "pdf", null: false
58
+ t.index ["resource_id"], name: "index_document_bundles_on_resource_id"
60
59
  end
61
60
 
62
- add_index "document_bundles", ["resource_id"], name: "index_document_bundles_on_resource_id", using: :btree
63
-
64
- create_table "document_parts", force: :cascade do |t|
65
- t.text "content"
66
- t.string "part_type"
67
- t.boolean "active"
68
- t.datetime "created_at", null: false
69
- t.datetime "updated_at", null: false
70
- t.string "placeholder"
71
- t.text "materials", default: [], null: false, array: true
72
- t.integer "context_type", default: 0
73
- t.string "anchor"
74
- t.boolean "optional", default: false, null: false
75
- t.jsonb "data", default: {}, null: false
76
- t.integer "renderer_id"
77
- t.string "renderer_type"
61
+ create_table "document_parts", id: :serial, force: :cascade do |t|
62
+ t.text "content"
63
+ t.string "part_type"
64
+ t.boolean "active"
65
+ t.datetime "created_at", null: false
66
+ t.datetime "updated_at", null: false
67
+ t.string "placeholder"
68
+ t.text "materials", default: [], null: false, array: true
69
+ t.integer "context_type", default: 0
70
+ t.string "anchor"
71
+ t.boolean "optional", default: false, null: false
72
+ t.jsonb "data", default: {}, null: false
73
+ t.integer "renderer_id"
74
+ t.string "renderer_type"
75
+ t.index ["anchor"], name: "index_document_parts_on_anchor"
76
+ t.index ["context_type"], name: "index_document_parts_on_context_type"
77
+ t.index ["placeholder"], name: "index_document_parts_on_placeholder"
78
+ t.index ["renderer_type", "renderer_id"], name: "index_document_parts_on_renderer_type_and_renderer_id"
78
79
  end
79
80
 
80
- add_index "document_parts", ["anchor"], name: "index_document_parts_on_anchor", using: :btree
81
- add_index "document_parts", ["context_type"], name: "index_document_parts_on_context_type", using: :btree
82
- add_index "document_parts", ["placeholder"], name: "index_document_parts_on_placeholder", using: :btree
83
- add_index "document_parts", ["renderer_type", "renderer_id"], name: "index_document_parts_on_renderer_type_and_renderer_id", using: :btree
84
-
85
- create_table "documents", force: :cascade do |t|
86
- t.string "file_id"
87
- t.string "name"
81
+ create_table "documents", id: :serial, force: :cascade do |t|
82
+ t.string "file_id"
83
+ t.string "name"
88
84
  t.datetime "last_modified_at"
89
- t.string "last_author_email"
90
- t.string "last_author_name"
91
- t.text "original_content"
92
- t.string "version"
93
- t.datetime "created_at", null: false
94
- t.datetime "updated_at", null: false
95
- t.jsonb "metadata", default: {}, null: false
96
- t.jsonb "activity_metadata"
97
- t.integer "resource_id"
98
- t.jsonb "toc"
99
- t.boolean "active", default: true, null: false
100
- t.hstore "foundational_metadata"
101
- t.text "css_styles"
102
- t.jsonb "links", default: {}, null: false
103
- t.jsonb "agenda_metadata"
104
- t.string "foundational_file_id"
105
- t.text "foundational_content"
106
- t.string "fs_name"
107
- t.jsonb "sections_metadata"
108
- t.boolean "reimported", default: true, null: false
85
+ t.string "last_author_email"
86
+ t.string "last_author_name"
87
+ t.text "original_content"
88
+ t.string "version"
89
+ t.datetime "created_at", null: false
90
+ t.datetime "updated_at", null: false
91
+ t.jsonb "metadata", default: {}, null: false
92
+ t.jsonb "activity_metadata"
93
+ t.integer "resource_id"
94
+ t.jsonb "toc"
95
+ t.boolean "active", default: true, null: false
96
+ t.hstore "foundational_metadata"
97
+ t.text "css_styles"
98
+ t.jsonb "links", default: {}, null: false
99
+ t.jsonb "agenda_metadata"
100
+ t.string "foundational_file_id"
101
+ t.text "foundational_content"
102
+ t.string "fs_name"
103
+ t.jsonb "sections_metadata"
104
+ t.boolean "reimported", default: true, null: false
105
+ t.datetime "reimported_at"
106
+ t.index ["file_id"], name: "index_documents_on_file_id"
107
+ t.index ["metadata"], name: "index_documents_on_metadata", using: :gin
108
+ t.index ["resource_id"], name: "index_documents_on_resource_id"
109
109
  end
110
110
 
111
- add_index "documents", ["file_id"], name: "index_documents_on_file_id", using: :btree
112
- add_index "documents", ["metadata"], name: "index_documents_on_metadata", using: :gin
113
- add_index "documents", ["resource_id"], name: "index_documents_on_resource_id", using: :btree
114
-
115
111
  create_table "documents_materials", id: false, force: :cascade do |t|
116
112
  t.integer "document_id"
117
113
  t.integer "material_id"
114
+ t.index ["document_id", "material_id"], name: "index_documents_materials_on_document_id_and_material_id", unique: true
115
+ t.index ["material_id"], name: "index_documents_materials_on_material_id"
118
116
  end
119
117
 
120
- add_index "documents_materials", ["document_id", "material_id"], name: "index_documents_materials_on_document_id_and_material_id", unique: true, using: :btree
121
- add_index "documents_materials", ["material_id"], name: "index_documents_materials_on_material_id", using: :btree
122
-
123
- create_table "download_categories", force: :cascade do |t|
124
- t.string "title", null: false
125
- t.text "description"
118
+ create_table "download_categories", id: :serial, force: :cascade do |t|
119
+ t.string "title", null: false
120
+ t.text "description"
126
121
  t.integer "position"
127
- t.text "long_description"
128
- t.boolean "bundle", default: false, null: false
122
+ t.text "long_description"
123
+ t.boolean "bundle", default: false, null: false
129
124
  end
130
125
 
131
- create_table "downloads", force: :cascade do |t|
132
- t.string "filename"
133
- t.integer "filesize"
134
- t.string "url"
135
- t.string "content_type"
136
- t.string "title"
137
- t.string "description"
138
- t.datetime "created_at", null: false
139
- t.datetime "updated_at", null: false
140
- t.boolean "main", default: false, null: false
126
+ create_table "downloads", id: :serial, force: :cascade do |t|
127
+ t.string "filename"
128
+ t.integer "filesize"
129
+ t.string "url"
130
+ t.string "content_type"
131
+ t.string "title"
132
+ t.string "description"
133
+ t.datetime "created_at", null: false
134
+ t.datetime "updated_at", null: false
135
+ t.boolean "main", default: false, null: false
141
136
  end
142
137
 
143
- create_table "leadership_posts", force: :cascade do |t|
144
- t.string "first_name", null: false
145
- t.string "last_name", null: false
146
- t.string "school"
147
- t.string "image_file"
148
- t.string "description", limit: 4096
149
- t.integer "order"
150
- t.datetime "created_at", null: false
151
- t.datetime "updated_at", null: false
138
+ create_table "leadership_posts", id: :serial, force: :cascade do |t|
139
+ t.string "first_name", null: false
140
+ t.string "last_name", null: false
141
+ t.string "school"
142
+ t.string "image_file"
143
+ t.string "description", limit: 4096
144
+ t.integer "order"
145
+ t.datetime "created_at", null: false
146
+ t.datetime "updated_at", null: false
147
+ t.index ["order", "last_name"], name: "index_leadership_posts_on_order_and_last_name"
152
148
  end
153
149
 
154
- add_index "leadership_posts", ["order", "last_name"], name: "index_leadership_posts_on_order_and_last_name", using: :btree
155
-
156
- create_table "materials", force: :cascade do |t|
157
- t.string "file_id", null: false
158
- t.string "identifier"
159
- t.jsonb "metadata", default: {}, null: false
160
- t.string "name"
150
+ create_table "materials", id: :serial, force: :cascade do |t|
151
+ t.string "file_id", null: false
152
+ t.string "identifier"
153
+ t.jsonb "metadata", default: {}, null: false
154
+ t.string "name"
161
155
  t.datetime "last_modified_at"
162
- t.string "last_author_email"
163
- t.string "last_author_name"
164
- t.text "original_content"
165
- t.string "version"
166
- t.datetime "created_at", null: false
167
- t.datetime "updated_at", null: false
168
- t.jsonb "preview_links", default: {}
169
- t.datetime "reimported_at"
170
- t.jsonb "links", default: {}
171
- t.text "css_styles"
172
- end
173
-
174
- add_index "materials", ["file_id"], name: "index_materials_on_file_id", using: :btree
175
- add_index "materials", ["identifier"], name: "index_materials_on_identifier", using: :btree
176
- add_index "materials", ["metadata"], name: "index_materials_on_metadata", using: :gin
177
-
178
- create_table "pages", force: :cascade do |t|
179
- t.text "body", null: false
180
- t.string "title", null: false
156
+ t.string "last_author_email"
157
+ t.string "last_author_name"
158
+ t.text "original_content"
159
+ t.string "version"
181
160
  t.datetime "created_at", null: false
182
161
  t.datetime "updated_at", null: false
183
- t.string "slug", null: false
162
+ t.jsonb "preview_links", default: {}
163
+ t.datetime "reimported_at"
164
+ t.jsonb "links", default: {}
165
+ t.text "css_styles"
166
+ t.index ["file_id"], name: "index_materials_on_file_id"
167
+ t.index ["identifier"], name: "index_materials_on_identifier"
168
+ t.index ["metadata"], name: "index_materials_on_metadata", using: :gin
184
169
  end
185
170
 
186
- create_table "reading_assignment_authors", force: :cascade do |t|
187
- t.string "name", null: false
171
+ create_table "reading_assignment_authors", id: :serial, force: :cascade do |t|
172
+ t.string "name", null: false
188
173
  t.datetime "created_at"
189
174
  t.datetime "updated_at"
175
+ t.index ["name"], name: "index_reading_assignment_authors_on_name", unique: true
190
176
  end
191
177
 
192
- add_index "reading_assignment_authors", ["name"], name: "index_reading_assignment_authors_on_name", unique: true, using: :btree
193
-
194
- create_table "reading_assignment_texts", force: :cascade do |t|
195
- t.string "name", null: false
196
- t.integer "reading_assignment_author_id", null: false
178
+ create_table "reading_assignment_texts", id: :serial, force: :cascade do |t|
179
+ t.string "name", null: false
180
+ t.integer "reading_assignment_author_id", null: false
197
181
  t.datetime "created_at"
198
182
  t.datetime "updated_at"
183
+ t.index ["name"], name: "index_reading_assignment_texts_on_name"
184
+ t.index ["reading_assignment_author_id"], name: "index_reading_assignment_texts_on_reading_assignment_author_id"
199
185
  end
200
186
 
201
- add_index "reading_assignment_texts", ["name"], name: "index_reading_assignment_texts_on_name", using: :btree
202
- add_index "reading_assignment_texts", ["reading_assignment_author_id"], name: "index_reading_assignment_texts_on_reading_assignment_author_id", using: :btree
203
-
204
- create_table "resource_additional_resources", force: :cascade do |t|
205
- t.integer "resource_id", null: false
206
- t.integer "additional_resource_id", null: false
207
- t.integer "position"
208
- t.datetime "created_at", null: false
209
- t.datetime "updated_at", null: false
187
+ create_table "resource_additional_resources", id: :serial, force: :cascade do |t|
188
+ t.integer "resource_id", null: false
189
+ t.integer "additional_resource_id", null: false
190
+ t.integer "position"
191
+ t.datetime "created_at", null: false
192
+ t.datetime "updated_at", null: false
193
+ t.index ["additional_resource_id"], name: "index_resource_additional_resources_on_additional_resource_id"
194
+ t.index ["resource_id", "additional_resource_id"], name: "index_resource_additional_resources", unique: true
210
195
  end
211
196
 
212
- add_index "resource_additional_resources", ["additional_resource_id"], name: "index_resource_additional_resources_on_additional_resource_id", using: :btree
213
- add_index "resource_additional_resources", ["resource_id", "additional_resource_id"], name: "index_resource_additional_resources", unique: true, using: :btree
214
-
215
- create_table "resource_downloads", force: :cascade do |t|
216
- t.integer "resource_id"
217
- t.integer "download_id"
218
- t.datetime "created_at", null: false
219
- t.datetime "updated_at", null: false
220
- t.boolean "active"
221
- t.integer "download_category_id"
222
- t.text "description"
197
+ create_table "resource_downloads", id: :serial, force: :cascade do |t|
198
+ t.integer "resource_id"
199
+ t.integer "download_id"
200
+ t.datetime "created_at", null: false
201
+ t.datetime "updated_at", null: false
202
+ t.boolean "active"
203
+ t.integer "download_category_id"
204
+ t.text "description"
205
+ t.index ["download_category_id"], name: "index_resource_downloads_on_download_category_id"
206
+ t.index ["download_id"], name: "index_resource_downloads_on_download_id"
207
+ t.index ["resource_id"], name: "index_resource_downloads_on_resource_id"
223
208
  end
224
209
 
225
- add_index "resource_downloads", ["download_category_id"], name: "index_resource_downloads_on_download_category_id", using: :btree
226
- add_index "resource_downloads", ["download_id"], name: "index_resource_downloads_on_download_id", using: :btree
227
- add_index "resource_downloads", ["resource_id"], name: "index_resource_downloads_on_resource_id", using: :btree
228
-
229
210
  create_table "resource_hierarchies", id: false, force: :cascade do |t|
230
- t.integer "ancestor_id", null: false
211
+ t.integer "ancestor_id", null: false
231
212
  t.integer "descendant_id", null: false
232
- t.integer "generations", null: false
213
+ t.integer "generations", null: false
214
+ t.index ["ancestor_id", "descendant_id", "generations"], name: "resource_anc_desc_idx", unique: true
215
+ t.index ["descendant_id"], name: "resource_desc_idx"
233
216
  end
234
217
 
235
- add_index "resource_hierarchies", ["ancestor_id", "descendant_id", "generations"], name: "resource_anc_desc_idx", unique: true, using: :btree
236
- add_index "resource_hierarchies", ["descendant_id"], name: "resource_desc_idx", using: :btree
237
-
238
- create_table "resource_reading_assignments", force: :cascade do |t|
239
- t.integer "resource_id", null: false
218
+ create_table "resource_reading_assignments", id: :serial, force: :cascade do |t|
219
+ t.integer "resource_id", null: false
240
220
  t.integer "reading_assignment_text_id", null: false
221
+ t.index ["reading_assignment_text_id"], name: "idx_res_rea_asg_rea_asg_txt"
222
+ t.index ["resource_id"], name: "index_resource_reading_assignments_on_resource_id"
241
223
  end
242
224
 
243
- add_index "resource_reading_assignments", ["reading_assignment_text_id"], name: "idx_res_rea_asg_rea_asg_txt", using: :btree
244
- add_index "resource_reading_assignments", ["resource_id"], name: "index_resource_reading_assignments_on_resource_id", using: :btree
245
-
246
- create_table "resource_related_resources", force: :cascade do |t|
247
- t.integer "resource_id"
248
- t.integer "related_resource_id"
249
- t.integer "position"
250
- t.datetime "created_at", null: false
251
- t.datetime "updated_at", null: false
225
+ create_table "resource_related_resources", id: :serial, force: :cascade do |t|
226
+ t.integer "resource_id"
227
+ t.integer "related_resource_id"
228
+ t.integer "position"
229
+ t.datetime "created_at", null: false
230
+ t.datetime "updated_at", null: false
231
+ t.index ["related_resource_id"], name: "index_resource_related_resources_on_related_resource_id"
232
+ t.index ["resource_id"], name: "index_resource_related_resources_on_resource_id"
252
233
  end
253
234
 
254
- add_index "resource_related_resources", ["related_resource_id"], name: "index_resource_related_resources_on_related_resource_id", using: :btree
255
- add_index "resource_related_resources", ["resource_id"], name: "index_resource_related_resources_on_resource_id", using: :btree
256
-
257
- create_table "resource_standards", force: :cascade do |t|
258
- t.integer "resource_id"
259
- t.integer "standard_id"
235
+ create_table "resource_standards", id: :serial, force: :cascade do |t|
236
+ t.integer "resource_id"
237
+ t.integer "standard_id"
260
238
  t.datetime "created_at"
261
239
  t.datetime "updated_at"
240
+ t.index ["resource_id"], name: "index_resource_standards_on_resource_id"
241
+ t.index ["standard_id"], name: "index_resource_standards_on_standard_id"
262
242
  end
263
243
 
264
- add_index "resource_standards", ["resource_id"], name: "index_resource_standards_on_resource_id", using: :btree
265
- add_index "resource_standards", ["standard_id"], name: "index_resource_standards_on_standard_id", using: :btree
266
-
267
- create_table "resources", force: :cascade do |t|
244
+ create_table "resources", id: :serial, force: :cascade do |t|
268
245
  t.datetime "created_at"
269
246
  t.datetime "updated_at"
270
247
  t.datetime "indexed_at"
271
- t.boolean "hidden", default: false
272
- t.string "engageny_url"
273
- t.string "engageny_title"
274
- t.string "description"
275
- t.string "title"
276
- t.string "short_title"
277
- t.string "subtitle"
278
- t.string "teaser"
279
- t.integer "time_to_teach"
280
- t.boolean "ell_appropriate", default: false, null: false
248
+ t.boolean "hidden", default: false
249
+ t.string "engageny_url"
250
+ t.string "engageny_title"
251
+ t.string "description"
252
+ t.string "title"
253
+ t.string "short_title"
254
+ t.string "subtitle"
255
+ t.string "teaser"
256
+ t.integer "time_to_teach"
257
+ t.boolean "ell_appropriate", default: false, null: false
281
258
  t.datetime "deleted_at"
282
- t.integer "resource_type", default: 1, null: false
283
- t.string "url"
284
- t.string "image_file"
285
- t.string "curriculum_type"
286
- t.string "hierarchical_position"
287
- t.string "slug"
288
- t.integer "parent_id"
289
- t.integer "level_position"
290
- t.boolean "tree", default: false, null: false
291
- t.string "opr_description"
292
- t.jsonb "download_categories_settings", default: {}, null: false
293
- t.jsonb "metadata", default: {}, null: false
294
- t.integer "author_id"
295
- t.integer "curriculum_id"
296
- t.jsonb "links", default: {}
259
+ t.integer "resource_type", default: 1, null: false
260
+ t.string "url"
261
+ t.string "image_file"
262
+ t.string "curriculum_type"
263
+ t.string "hierarchical_position"
264
+ t.string "slug"
265
+ t.integer "parent_id"
266
+ t.integer "level_position"
267
+ t.boolean "tree", default: false, null: false
268
+ t.string "opr_description"
269
+ t.jsonb "download_categories_settings", default: {}, null: false
270
+ t.jsonb "metadata", default: {}, null: false
271
+ t.integer "author_id"
272
+ t.integer "curriculum_id"
273
+ t.jsonb "links", default: {}
274
+ t.index ["author_id"], name: "index_resources_on_author_id"
275
+ t.index ["curriculum_id"], name: "index_resources_on_curriculum_id"
276
+ t.index ["deleted_at"], name: "index_resources_on_deleted_at"
277
+ t.index ["indexed_at"], name: "index_resources_on_indexed_at"
278
+ t.index ["metadata"], name: "index_resources_on_metadata", using: :gin
279
+ t.index ["resource_type"], name: "index_resources_on_resource_type"
297
280
  end
298
281
 
299
- add_index "resources", ["author_id"], name: "index_resources_on_author_id", using: :btree
300
- add_index "resources", ["curriculum_id"], name: "index_resources_on_curriculum_id", using: :btree
301
- add_index "resources", ["deleted_at"], name: "index_resources_on_deleted_at", using: :btree
302
- add_index "resources", ["indexed_at"], name: "index_resources_on_indexed_at", using: :btree
303
- add_index "resources", ["metadata"], name: "index_resources_on_metadata", using: :gin
304
- add_index "resources", ["resource_type"], name: "index_resources_on_resource_type", using: :btree
305
-
306
- create_table "sessions", force: :cascade do |t|
307
- t.string "session_id", null: false
308
- t.text "data"
282
+ create_table "sessions", id: :serial, force: :cascade do |t|
283
+ t.string "session_id", null: false
284
+ t.text "data"
309
285
  t.datetime "created_at"
310
286
  t.datetime "updated_at"
287
+ t.index ["session_id"], name: "index_sessions_on_session_id", unique: true
288
+ t.index ["updated_at"], name: "index_sessions_on_updated_at"
311
289
  end
312
290
 
313
- add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", unique: true, using: :btree
314
- add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree
315
-
316
- create_table "settings", force: :cascade do |t|
291
+ create_table "settings", id: :serial, force: :cascade do |t|
317
292
  t.jsonb "data", default: {}, null: false
318
293
  end
319
294
 
320
- create_table "social_thumbnails", force: :cascade do |t|
321
- t.integer "target_id", null: false
322
- t.string "target_type", null: false
323
- t.string "image", null: false
324
- t.string "media", null: false
295
+ create_table "social_thumbnails", id: :serial, force: :cascade do |t|
296
+ t.integer "target_id", null: false
297
+ t.string "target_type", null: false
298
+ t.string "image", null: false
299
+ t.string "media", null: false
300
+ t.index ["target_type", "target_id"], name: "index_social_thumbnails_on_target_type_and_target_id"
325
301
  end
326
302
 
327
- add_index "social_thumbnails", ["target_type", "target_id"], name: "index_social_thumbnails_on_target_type_and_target_id", using: :btree
328
-
329
- create_table "staff_members", force: :cascade do |t|
330
- t.string "bio", limit: 4096
331
- t.string "position"
332
- t.datetime "created_at", null: false
333
- t.datetime "updated_at", null: false
334
- t.integer "staff_type", default: 1, null: false
335
- t.string "image_file"
336
- t.string "department"
337
- t.string "first_name"
338
- t.string "last_name"
339
- t.integer "order"
303
+ create_table "staff_members", id: :serial, force: :cascade do |t|
304
+ t.string "bio", limit: 4096
305
+ t.string "position"
306
+ t.datetime "created_at", null: false
307
+ t.datetime "updated_at", null: false
308
+ t.integer "staff_type", default: 1, null: false
309
+ t.string "image_file"
310
+ t.string "department"
311
+ t.string "first_name"
312
+ t.string "last_name"
313
+ t.integer "order"
314
+ t.index ["first_name", "last_name"], name: "index_staff_members_on_first_name_and_last_name"
340
315
  end
341
316
 
342
- add_index "staff_members", ["first_name", "last_name"], name: "index_staff_members_on_first_name_and_last_name", using: :btree
343
-
344
- create_table "standard_links", force: :cascade do |t|
317
+ create_table "standard_links", id: :serial, force: :cascade do |t|
345
318
  t.integer "standard_begin_id", null: false
346
- t.integer "standard_end_id", null: false
347
- t.string "link_type", null: false
348
- t.string "description"
319
+ t.integer "standard_end_id", null: false
320
+ t.string "link_type", null: false
321
+ t.string "description"
322
+ t.index ["link_type"], name: "index_standard_links_on_link_type"
323
+ t.index ["standard_begin_id"], name: "index_standard_links_on_standard_begin_id"
324
+ t.index ["standard_end_id"], name: "index_standard_links_on_standard_end_id"
349
325
  end
350
326
 
351
- add_index "standard_links", ["link_type"], name: "index_standard_links_on_link_type", using: :btree
352
- add_index "standard_links", ["standard_begin_id"], name: "index_standard_links_on_standard_begin_id", using: :btree
353
- add_index "standard_links", ["standard_end_id"], name: "index_standard_links_on_standard_end_id", using: :btree
354
-
355
- create_table "standards", force: :cascade do |t|
356
- t.string "name", null: false
327
+ create_table "standards", id: :serial, force: :cascade do |t|
328
+ t.string "name", null: false
357
329
  t.datetime "created_at"
358
330
  t.datetime "updated_at"
359
- t.string "subject"
360
- t.string "description"
361
- t.text "grades", default: [], null: false, array: true
362
- t.string "label"
363
- t.text "alt_names", default: [], null: false, array: true
364
- t.string "course"
365
- t.string "domain"
366
- t.string "emphasis"
367
- t.string "strand"
368
- t.text "synonyms", default: [], array: true
331
+ t.string "subject"
332
+ t.string "description"
333
+ t.text "grades", default: [], null: false, array: true
334
+ t.string "label"
335
+ t.text "alt_names", default: [], null: false, array: true
336
+ t.string "course"
337
+ t.string "domain"
338
+ t.string "emphasis"
339
+ t.string "strand"
340
+ t.text "synonyms", default: [], array: true
341
+ t.index ["name"], name: "index_standards_on_name"
342
+ t.index ["subject"], name: "index_standards_on_subject"
369
343
  end
370
344
 
371
- add_index "standards", ["name"], name: "index_standards_on_name", using: :btree
372
- add_index "standards", ["subject"], name: "index_standards_on_subject", using: :btree
373
-
374
- create_table "taggings", force: :cascade do |t|
375
- t.integer "tag_id"
376
- t.integer "taggable_id"
377
- t.string "taggable_type"
378
- t.integer "tagger_id"
379
- t.string "tagger_type"
380
- t.string "context", limit: 128
345
+ create_table "taggings", id: :serial, force: :cascade do |t|
346
+ t.integer "tag_id"
347
+ t.integer "taggable_id"
348
+ t.string "taggable_type"
349
+ t.integer "tagger_id"
350
+ t.string "tagger_type"
351
+ t.string "context", limit: 128
381
352
  t.datetime "created_at"
353
+ t.index ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true
354
+ t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
382
355
  end
383
356
 
384
- add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true, using: :btree
385
- add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
386
-
387
- create_table "tags", force: :cascade do |t|
388
- t.string "name"
357
+ create_table "tags", id: :serial, force: :cascade do |t|
358
+ t.string "name"
389
359
  t.integer "taggings_count", default: 0
360
+ t.index ["name"], name: "index_tags_on_name", unique: true
390
361
  end
391
362
 
392
- add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree
393
-
394
- create_table "users", force: :cascade do |t|
395
- t.string "name"
396
- t.datetime "created_at", null: false
397
- t.datetime "updated_at", null: false
398
- t.string "email", default: "", null: false
399
- t.string "encrypted_password", default: "", null: false
400
- t.string "reset_password_token"
363
+ create_table "users", id: :serial, force: :cascade do |t|
364
+ t.string "name"
365
+ t.datetime "created_at", null: false
366
+ t.datetime "updated_at", null: false
367
+ t.string "email", default: "", null: false
368
+ t.string "encrypted_password", default: "", null: false
369
+ t.string "reset_password_token"
401
370
  t.datetime "reset_password_sent_at"
402
371
  t.datetime "remember_created_at"
403
- t.integer "sign_in_count", default: 0, null: false
372
+ t.integer "sign_in_count", default: 0, null: false
404
373
  t.datetime "current_sign_in_at"
405
374
  t.datetime "last_sign_in_at"
406
- t.inet "current_sign_in_ip"
407
- t.inet "last_sign_in_ip"
408
- t.integer "role", default: 0, null: false
409
- t.string "access_code"
410
- t.string "confirmation_token"
375
+ t.inet "current_sign_in_ip"
376
+ t.inet "last_sign_in_ip"
377
+ t.integer "role", default: 0, null: false
378
+ t.string "access_code"
379
+ t.string "confirmation_token"
411
380
  t.datetime "confirmed_at"
412
381
  t.datetime "confirmation_sent_at"
413
- t.string "unconfirmed_email"
414
- t.hstore "survey"
382
+ t.string "unconfirmed_email"
383
+ t.hstore "survey"
384
+ t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
385
+ t.index ["email"], name: "index_users_on_email", unique: true
386
+ t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
415
387
  end
416
388
 
417
- add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
418
- add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
419
- add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
420
-
421
389
  add_foreign_key "copyright_attributions", "resources"
422
390
  add_foreign_key "document_bundles", "resources"
423
391
  add_foreign_key "documents_materials", "documents"