lcms-engine 0.3.1 → 0.4.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 (327) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +25 -0
  3. data/.eslintignore +2 -1
  4. data/.eslintrc +23 -73
  5. data/.nvmrc +1 -1
  6. data/.overcommit.yml +8 -2
  7. data/.prettierrc +7 -0
  8. data/.rubocop.yml +5 -2
  9. data/.ruby-version +1 -1
  10. data/.stylelintignore +9 -0
  11. data/.stylelintrc +8 -0
  12. data/CHANGELOG.md +36 -2
  13. data/Dockerfile +3 -3
  14. data/Gemfile.lock +344 -297
  15. data/README.md +20 -18
  16. data/app/assets/config/lcms_engine_manifest.js +4 -2
  17. data/app/assets/javascripts/lcms/engine/admin/{application.js → lcms_engine_application.js} +1 -3
  18. data/app/assets/javascripts/lcms/engine/initializers/foundation.js +1 -1
  19. data/app/assets/javascripts/lcms/engine/{application.js → lcms_engine_application.js} +0 -0
  20. data/app/assets/stylesheets/lcms/engine/admin/collections.scss +2 -1
  21. data/app/assets/stylesheets/lcms/engine/admin/components.scss +60 -19
  22. data/app/assets/stylesheets/lcms/engine/admin/curriculums.scss +12 -10
  23. data/app/assets/stylesheets/lcms/engine/admin/lessons.scss +21 -15
  24. data/app/assets/stylesheets/lcms/engine/admin/materials.scss +25 -17
  25. data/app/assets/stylesheets/lcms/engine/admin/resources.scss +8 -7
  26. data/app/assets/stylesheets/lcms/engine/admin/standards.scss +4 -1
  27. data/app/assets/stylesheets/lcms/engine/admin/users.scss +1 -1
  28. data/app/assets/stylesheets/lcms/engine/base/_colors.scss +8 -10
  29. data/app/assets/stylesheets/lcms/engine/base/_ld-colors.scss +10 -10
  30. data/app/assets/stylesheets/lcms/engine/components/_assoc-picker.scss +4 -5
  31. data/app/assets/stylesheets/lcms/engine/components/lesson/_activity.scss +6 -2
  32. data/app/assets/stylesheets/lcms/engine/components/lesson/_callout.scss +19 -5
  33. data/app/assets/stylesheets/lcms/engine/components/lesson/_columns.scss +4 -3
  34. data/app/assets/stylesheets/lcms/engine/components/lesson/_curriculum-map.scss +16 -7
  35. data/app/assets/stylesheets/lcms/engine/components/lesson/_def.scss +2 -2
  36. data/app/assets/stylesheets/lcms/engine/components/lesson/_expand.scss +9 -9
  37. data/app/assets/stylesheets/lcms/engine/components/lesson/_foundational-divider.scss +0 -1
  38. data/app/assets/stylesheets/lcms/engine/components/lesson/_group.scss +3 -1
  39. data/app/assets/stylesheets/lcms/engine/components/lesson/_icons.scss +1 -1
  40. data/app/assets/stylesheets/lcms/engine/components/lesson/_image-wrap.scss +2 -2
  41. data/app/assets/stylesheets/lcms/engine/components/lesson/_inset.scss +7 -2
  42. data/app/assets/stylesheets/lcms/engine/components/lesson/_materials.scss +1 -1
  43. data/app/assets/stylesheets/lcms/engine/components/lesson/_multiple-choice.scss +4 -1
  44. data/app/assets/stylesheets/lcms/engine/components/lesson/_override.scss +28 -9
  45. data/app/assets/stylesheets/lcms/engine/components/lesson/_pd.scss +7 -7
  46. data/app/assets/stylesheets/lcms/engine/components/lesson/_pv.scss +5 -4
  47. data/app/assets/stylesheets/lcms/engine/components/lesson/_section.scss +10 -3
  48. data/app/assets/stylesheets/lcms/engine/components/lesson/_selection-control.scss +14 -8
  49. data/app/assets/stylesheets/lcms/engine/components/lesson/_sidebar.scss +25 -10
  50. data/app/assets/stylesheets/lcms/engine/components/lesson/_title.scss +3 -1
  51. data/app/assets/stylesheets/lcms/engine/components/lesson/_unit-map.scss +1 -1
  52. data/app/assets/stylesheets/lcms/engine/components/material/_material.scss +3 -3
  53. data/app/assets/stylesheets/lcms/engine/components/material/_overlay.scss +12 -4
  54. data/app/assets/stylesheets/lcms/engine/components/material/_preview.scss +1 -1
  55. data/app/assets/stylesheets/lcms/engine/components/support/_survey.scss +3 -1
  56. data/app/assets/stylesheets/lcms/engine/layout/_footer.scss +29 -11
  57. data/app/assets/stylesheets/lcms/engine/layout/_header.scss +5 -5
  58. data/app/assets/stylesheets/lcms/engine/layout/_navigation.scss +4 -6
  59. data/app/assets/stylesheets/lcms/engine/layout/_page.scss +2 -2
  60. data/app/assets/stylesheets/lcms/engine/{admin.scss → lcms_engine_admin.scss} +26 -15
  61. data/app/assets/stylesheets/lcms/engine/lcms_engine_application.scss +9 -0
  62. data/app/assets/stylesheets/lcms/engine/pdf.scss +5 -26
  63. data/app/assets/stylesheets/lcms/engine/pdf_plain.scss +5 -23
  64. data/app/assets/stylesheets/lcms/engine/print/_base.scss +41 -12
  65. data/app/assets/stylesheets/lcms/engine/print/_cover.scss +12 -12
  66. data/app/assets/stylesheets/lcms/engine/print/_footer.scss +8 -3
  67. data/app/assets/stylesheets/lcms/engine/print/_gdoc-base.scss +10 -37
  68. data/app/assets/stylesheets/lcms/engine/print/_helpers.scss +5 -2
  69. data/app/assets/stylesheets/lcms/engine/print/_lesson-base.scss +2 -14
  70. data/app/assets/stylesheets/lcms/engine/print/_material-base.scss +1 -3
  71. data/app/assets/stylesheets/lcms/engine/print/_print.scss +15 -8
  72. data/app/assets/stylesheets/lcms/engine/print/_toc.scss +24 -9
  73. data/app/assets/stylesheets/lcms/engine/print/gdoc/_base-typography.scss +24 -6
  74. data/app/assets/stylesheets/lcms/engine/print/gdoc/_base.scss +10 -3
  75. data/app/assets/stylesheets/lcms/engine/print/gdoc/_colors.scss +3 -3
  76. data/app/assets/stylesheets/lcms/engine/print/gdoc/_header.scss +2 -2
  77. data/app/assets/stylesheets/lcms/engine/print/gdoc/_helpers.scss +1 -0
  78. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_activity.scss +1 -1
  79. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_agenda.scss +8 -2
  80. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_callout.scss +16 -6
  81. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_def.scss +1 -1
  82. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_dialogue.scss +3 -1
  83. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_expand.scss +5 -2
  84. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_image-wrap.scss +5 -3
  85. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_image.scss +1 -1
  86. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_optbreak.scss +1 -0
  87. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_section.scss +4 -1
  88. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_smp.scss +1 -0
  89. data/app/assets/stylesheets/lcms/engine/print/gdoc/lesson/_tables.scss +11 -3
  90. data/app/assets/stylesheets/lcms/engine/print/gdoc/material/_header.scss +5 -2
  91. data/app/assets/stylesheets/lcms/engine/print/lesson/_base-typography.scss +33 -9
  92. data/app/assets/stylesheets/lcms/engine/print/lesson/_group.scss +3 -1
  93. data/app/assets/stylesheets/lcms/engine/print/lesson/_image.scss +3 -1
  94. data/app/assets/stylesheets/lcms/engine/print/lesson/_materials.scss +1 -1
  95. data/app/assets/stylesheets/lcms/engine/print/lesson/_pd.scss +8 -4
  96. data/app/assets/stylesheets/lcms/engine/print/lesson/_section.scss +1 -1
  97. data/app/assets/stylesheets/lcms/engine/print/material/_header.scss +4 -1
  98. data/app/assets/stylesheets/lcms/engine/themes/_material.scss +11 -11
  99. data/app/assets/stylesheets/lcms/engine/utils/_colorcodes.scss +15 -5
  100. data/app/assets/stylesheets/lcms/engine/utils/_functions.scss +1 -1
  101. data/app/assets/stylesheets/lcms/engine/utils/_helpers.scss +23 -11
  102. data/app/assets/stylesheets/lcms/engine/utils/_placeholders.scss +1 -1
  103. data/app/assets/stylesheets/lcms/engine/utils/_variables.scss +11 -11
  104. data/app/assets/stylesheets/lcms/engine/vendors/{mathjax.css → mathjax.scss} +0 -0
  105. data/app/assets/stylesheets/lcms/engine/vendors/react-tagsinput.css +48 -0
  106. data/app/controllers/concerns/lcms/engine/reimportable.rb +1 -1
  107. data/app/controllers/lcms/engine/admin/access_codes_controller.rb +8 -3
  108. data/app/controllers/lcms/engine/admin/admin_controller.rb +5 -39
  109. data/app/controllers/lcms/engine/admin/association_picker_controller.rb +4 -1
  110. data/app/controllers/lcms/engine/admin/batch_reimports_controller.rb +2 -2
  111. data/app/controllers/lcms/engine/admin/curriculums_controller.rb +21 -2
  112. data/app/controllers/lcms/engine/admin/documents_controller.rb +26 -14
  113. data/app/controllers/lcms/engine/admin/materials_controller.rb +23 -13
  114. data/app/controllers/lcms/engine/admin/resource_bulk_edits_controller.rb +2 -2
  115. data/app/controllers/lcms/engine/admin/resources_controller.rb +9 -7
  116. data/app/controllers/lcms/engine/admin/settings_controller.rb +1 -1
  117. data/app/controllers/lcms/engine/admin/standards_controller.rb +2 -2
  118. data/app/controllers/lcms/engine/admin/users_controller.rb +10 -7
  119. data/app/controllers/lcms/engine/application_controller.rb +1 -1
  120. data/app/controllers/lcms/engine/resources_controller.rb +5 -5
  121. data/app/controllers/lcms/engine/welcome_controller.rb +11 -0
  122. data/app/entities/lcms/engine/hierarchical_position.rb +1 -2
  123. data/app/entities/lcms/engine/media_embed.rb +1 -1
  124. data/app/entities/lcms/engine/pagination.rb +14 -10
  125. data/app/entities/lcms/engine/roman_numerals.rb +1 -1
  126. data/app/exceptions/lcms/engine/document_error.rb +8 -0
  127. data/app/exceptions/lcms/engine/material_error.rb +8 -0
  128. data/app/helpers/admin/components_helper.rb +1 -1
  129. data/app/helpers/lcms/engine/path_helper.rb +32 -0
  130. data/app/helpers/lcms/engine/resource_helper.rb +1 -1
  131. data/app/helpers/lcms/engine/view_helper.rb +0 -8
  132. data/app/interactors/lcms/engine/explore_curriculum_interactor.rb +1 -1
  133. data/app/javascript/components/admin/ImportStatus.jsx +88 -58
  134. data/app/javascript/components/admin/Initializer.jsx +33 -35
  135. data/app/javascript/components/admin/MultiSelectedOperation.jsx +43 -19
  136. data/app/javascript/components/admin/association-picker/AssociationPicker.jsx +68 -48
  137. data/app/javascript/components/admin/association-picker/AssociationPickerItem.jsx +18 -7
  138. data/app/javascript/components/admin/association-picker/AssociationPickerResults.jsx +42 -18
  139. data/app/javascript/components/admin/association-picker/AssociationPickerWindow.jsx +47 -28
  140. data/app/javascript/components/admin/curriculum/CurriculumEditor.jsx +54 -33
  141. data/app/javascript/components/admin/curriculum/DirectoryPicker.jsx +80 -53
  142. data/app/javascript/components/admin/picker/PickerButton.jsx +16 -11
  143. data/app/javascript/components/admin/picker/pickerModal.jsx +6 -6
  144. data/app/javascript/components/admin/picker/pickerWindowWrapper.jsx +61 -40
  145. data/app/javascript/components/admin/resource-picker/ResourcePicker.jsx +54 -40
  146. data/app/javascript/components/admin/resource-picker/ResourcePickerResource.jsx +14 -3
  147. data/app/javascript/components/admin/resource-picker/ResourcePickerWindow.jsx +50 -21
  148. data/app/javascript/components/paginate/PageView.jsx +20 -8
  149. data/app/javascript/components/paginate/PaginationBoxView.jsx +78 -66
  150. data/app/javascript/components/paginate/PaginationListView.jsx +59 -45
  151. data/app/javascript/packs/lcms_engine_admin.js +15 -0
  152. data/app/javascript/packs/{application.js → lcms_engine_application.js} +5 -4
  153. data/app/javascript/packs/server_rendering.js +1 -0
  154. data/app/javascript/vendor/jstree/jstree.min.js +6 -0
  155. data/app/javascript/vendor/jstree/themes/default/32px.png +0 -0
  156. data/app/javascript/vendor/jstree/themes/default/40px.png +0 -0
  157. data/app/javascript/vendor/jstree/themes/default/style.css +1106 -0
  158. data/app/javascript/vendor/jstree/themes/default/style.min.css +1 -0
  159. data/app/javascript/vendor/jstree/themes/default/throbber.gif +0 -0
  160. data/app/javascript/vendor/jstree/themes/default-dark/32px.png +0 -0
  161. data/app/javascript/vendor/jstree/themes/default-dark/40px.png +0 -0
  162. data/app/javascript/vendor/jstree/themes/default-dark/style.css +1150 -0
  163. data/app/javascript/vendor/jstree/themes/default-dark/style.min.css +1 -0
  164. data/app/javascript/vendor/jstree/themes/default-dark/throbber.gif +0 -0
  165. data/app/jobs/lcms/engine/document_generate_job.rb +1 -1
  166. data/app/jobs/lcms/engine/document_generate_pdf_job.rb +5 -5
  167. data/app/jobs/lcms/engine/material_generate_pdf_job.rb +4 -4
  168. data/app/models/concerns/lcms/engine/navigable.rb +6 -10
  169. data/app/models/concerns/lcms/engine/searchable.rb +7 -0
  170. data/app/models/lcms/engine/document.rb +1 -1
  171. data/app/models/lcms/engine/resource.rb +1 -1
  172. data/app/models/lcms/engine/search/repository.rb +1 -1
  173. data/app/presenters/lcms/engine/content_presenter.rb +1 -1
  174. data/app/presenters/lcms/engine/curriculum_presenter.rb +21 -18
  175. data/app/presenters/lcms/engine/document_presenter.rb +3 -1
  176. data/app/presenters/lcms/engine/resource_presenter.rb +6 -3
  177. data/app/queries/lcms/engine/admin_documents_query.rb +1 -1
  178. data/app/queries/lcms/engine/admin_materials_query.rb +11 -2
  179. data/app/queries/lcms/engine/base_query.rb +1 -1
  180. data/app/services/lcms/engine/document_build_service.rb +2 -0
  181. data/app/services/lcms/engine/document_generator.rb +2 -2
  182. data/app/services/lcms/engine/google/drive_service.rb +7 -15
  183. data/app/services/lcms/engine/google/script_service.rb +7 -3
  184. data/app/services/lcms/engine/html_sanitizer.rb +1 -1
  185. data/app/services/lcms/engine/lti_exporter.rb +1 -1
  186. data/app/services/lcms/engine/material_preview_generator.rb +1 -1
  187. data/app/services/lcms/engine/s3_service.rb +14 -2
  188. data/app/tasks/resource_tasks.rb +2 -2
  189. data/app/views/layouts/lcms/engine/admin.html.erb +3 -3
  190. data/app/views/layouts/lcms/engine/application.html.erb +2 -2
  191. data/app/views/layouts/lcms/engine/lti.html.erb +1 -1
  192. data/app/views/lcms/engine/admin/access_codes/_form.html.erb +1 -1
  193. data/app/views/lcms/engine/admin/access_codes/index.html.erb +3 -3
  194. data/app/views/lcms/engine/admin/batch_reimports/_search_form.html.erb +1 -1
  195. data/app/views/lcms/engine/admin/curriculums/edit.html.erb +4 -2
  196. data/app/views/lcms/engine/admin/documents/_reimport.html.erb +1 -1
  197. data/app/views/lcms/engine/admin/documents/_search_form.html.erb +1 -1
  198. data/app/views/lcms/engine/admin/documents/import.html.erb +1 -1
  199. data/app/views/lcms/engine/admin/documents/index.html.erb +5 -3
  200. data/app/views/lcms/engine/admin/documents/new.html.erb +6 -2
  201. data/app/views/lcms/engine/admin/materials/_reimport.html.erb +1 -1
  202. data/app/views/lcms/engine/admin/materials/_search_form.html.erb +1 -1
  203. data/app/views/lcms/engine/admin/materials/import.html.erb +1 -1
  204. data/app/views/lcms/engine/admin/materials/index.html.erb +22 -18
  205. data/app/views/lcms/engine/admin/materials/new.html.erb +5 -1
  206. data/app/views/lcms/engine/admin/resource_bulk_edits/new.html.erb +1 -1
  207. data/app/views/lcms/engine/admin/resources/_fields.html.erb +4 -3
  208. data/app/views/lcms/engine/admin/resources/_form.html.erb +1 -1
  209. data/app/views/lcms/engine/admin/resources/_search_form.html.erb +1 -1
  210. data/app/views/lcms/engine/admin/resources/index.html.erb +7 -5
  211. data/app/views/lcms/engine/admin/shared/_header.html.erb +12 -12
  212. data/app/views/lcms/engine/admin/standards/_form.html.erb +3 -1
  213. data/app/views/lcms/engine/admin/standards/_search_form.html.erb +1 -1
  214. data/app/views/lcms/engine/admin/users/_form.html.erb +1 -1
  215. data/app/views/lcms/engine/admin/users/_search_form.html.erb +1 -1
  216. data/app/views/lcms/engine/admin/users/index.html.erb +6 -6
  217. data/app/views/lcms/engine/pages/not_found.html.erb +5 -0
  218. data/app/views/lcms/engine/resources/generic.html.erb +0 -4
  219. data/app/views/lcms/engine/resources/media.html.erb +0 -4
  220. data/app/views/lcms/engine/resources/show.html.erb +0 -2
  221. data/config/initializers/airbrake.rb +62 -10
  222. data/config/initializers/bitly.rb +1 -1
  223. data/config/initializers/carrier_wave.rb +6 -4
  224. data/config/initializers/ckeditor.rb +6 -0
  225. data/config/initializers/elasticsearch.rb +1 -1
  226. data/config/initializers/resque.rb +2 -2
  227. data/config/locales/admin/en.yml +0 -1
  228. data/config/locales/ui/en.yml +1 -0
  229. data/config/routes.rb +5 -2
  230. data/db/migrate/.keep +0 -0
  231. data/db/schema.rb +279 -311
  232. data/db/seeds.rb +0 -1
  233. data/docker-compose.ror4.yml +32 -0
  234. data/docker-compose.yml +6 -3
  235. data/docs/env-variables.md +40 -40
  236. data/docs/google-cloud-platform-setup.md +45 -17
  237. data/docs/how-to-build-and-publish.md +1 -0
  238. data/lcms-engine.gemspec +21 -15
  239. data/lib/doc_template/document.rb +3 -4
  240. data/lib/doc_template/document_toc.rb +2 -2
  241. data/lib/doc_template/objects/activity_metadata.rb +1 -1
  242. data/lib/doc_template/objects/toc_helpers.rb +4 -4
  243. data/lib/doc_template/objects/toc_metadata.rb +4 -6
  244. data/lib/doc_template/tags/answer_space_tag.rb +1 -1
  245. data/lib/doc_template/tags/base_tag.rb +2 -2
  246. data/lib/doc_template/tags/block_tag.rb +1 -1
  247. data/lib/doc_template/tags/table_tag.rb +1 -1
  248. data/lib/doc_template/template.rb +1 -1
  249. data/lib/doc_template.rb +9 -9
  250. data/lib/document_exporter/gdoc/base.rb +5 -2
  251. data/lib/document_exporter/pdf/base.rb +1 -1
  252. data/lib/document_exporter/pdf/document.rb +2 -2
  253. data/lib/document_exporter/pdf/material.rb +2 -2
  254. data/lib/document_exporter/pdf/student_material.rb +2 -2
  255. data/lib/document_exporter/pdf/teacher_material.rb +2 -2
  256. data/lib/document_renderer/part.rb +1 -3
  257. data/lib/lcms/engine/engine.rb +10 -9
  258. data/lib/lcms/engine/version.rb +1 -1
  259. data/lib/lcms/engine.rb +0 -1
  260. data/lib/lt/lcms/metadata/context.rb +56 -52
  261. data/lib/lt/lcms/metadata/service.rb +3 -2
  262. data/lib/tasks/cloud66.rake +2 -2
  263. data/lib/tasks/document.rake +4 -4
  264. data/lib/tasks/google.rake +29 -14
  265. data/lib/tasks/lcms/engine_tasks.rake +1 -1
  266. data/package.json +31 -10
  267. data/postcss.config.js +12 -0
  268. data/spec/controllers/admin/curriculums_controller_spec.rb +23 -0
  269. data/spec/controllers/admin/documents_controller_spec.rb +22 -2
  270. data/spec/controllers/admin/materials_controller_spec.rb +16 -3
  271. data/spec/controllers/admin/resource_bulk_edit_controller_spec.rb +1 -1
  272. data/spec/controllers/admin/resources_controller_spec.rb +1 -1
  273. data/spec/controllers/admin/settings_controller_spec.rb +1 -1
  274. data/spec/controllers/admin/standards_controller_spec.rb +1 -1
  275. data/spec/controllers/admin/welcome_controller_spec.rb +12 -10
  276. data/spec/controllers/resources_controller_spec.rb +3 -3
  277. data/spec/controllers/welcome_controller_spec.rb +38 -0
  278. data/spec/dummy/.traceroute.yaml +0 -2
  279. data/spec/dummy/bin/webpack +18 -0
  280. data/spec/dummy/bin/webpack-dev-server +18 -0
  281. data/spec/dummy/config/application.rb +1 -1
  282. data/spec/dummy/config/environments/test.rb +1 -1
  283. data/spec/dummy/config/initializers/assets.rb +6 -0
  284. data/spec/dummy/config/lcms-admin.yml +3 -7
  285. data/spec/dummy/config/routes.rb +6 -0
  286. data/spec/dummy/db/schema.rb +5 -5
  287. data/spec/factories/documents.rb +1 -0
  288. data/spec/factories/downloads.rb +1 -1
  289. data/spec/factories/resources.rb +2 -2
  290. data/spec/features/admin/materials/add_material_spec.rb +2 -0
  291. data/spec/features/admin/users_spec.rb +2 -2
  292. data/spec/{controllers/admin/admin_controller_spec.rb → helpers/path_helper_spec.rb} +6 -6
  293. data/spec/lib/doc_template/objects/activity_metadata_spec.rb +1 -1
  294. data/spec/lib/doc_template/objects/agenda_metadata_spec.rb +2 -0
  295. data/spec/lib/doc_template/objects/toc_metadata_spec.rb +1 -1
  296. data/spec/lib/doc_template/tags/page_break_tag_spec.rb +1 -1
  297. data/spec/lib/doc_template/tags/pd_tag_spec.rb +1 -1
  298. data/spec/models/document_spec.rb +1 -1
  299. data/spec/models/standard_spec.rb +2 -0
  300. data/spec/queries/lcms/engine/admin_materials_query_spec.rb +34 -0
  301. data/spec/rails_helper.rb +6 -17
  302. data/spec/services/document_build_service_spec.rb +4 -11
  303. data/spec/services/s3_service_spec.rb +31 -0
  304. data/spec/support/concerns/navigable.rb +2 -0
  305. data/spec/support/routes.rb +4 -0
  306. data/spec/support/shared_examples/content_tag.rb +4 -4
  307. data/templates/routes.rb +0 -1
  308. data/yarn.lock +3412 -2933
  309. metadata +146 -288
  310. data/app/assets/stylesheets/lcms/engine/application.scss +0 -36
  311. data/app/assets/stylesheets/lcms/engine/vendors/jquery.tagsinput.css +0 -1
  312. data/app/exceptions/components_api_error.rb +0 -4
  313. data/app/exceptions/document_error.rb +0 -4
  314. data/app/exceptions/material_error.rb +0 -4
  315. data/app/javascript/packs/admin.js +0 -14
  316. data/app/models/lcms/engine/component.rb +0 -88
  317. data/app/presenters/lcms/engine/social_media_presenter.rb +0 -83
  318. data/app/views/lcms/engine/shared/_social_sharing.html.erb +0 -22
  319. data/db/migrate/20200217160930_change_document_parts_to_polymorphic.rb +0 -36
  320. data/db/migrate/20200218144849_drop_material_parts_table.rb +0 -7
  321. data/db/migrate/20200422130652_add_reimported_at_to_documents.rb +0 -7
  322. data/db/migrate/20200429130353_drop_pages.rb +0 -13
  323. data/db/seeds/pages.seeds.rb +0 -26
  324. data/lib/document_exporter.rb +0 -6
  325. data/lib/lcms/engine/migration.rb +0 -16
  326. data/spec/models/component_spec.rb +0 -60
  327. 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
16
  enable_extension "hstore"
18
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"