lcms-engine 0.1.2 → 0.3.1

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 (564) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -1
  3. data/.env.docker +5 -0
  4. data/.env.template +34 -0
  5. data/.gitignore +0 -1
  6. data/.rubocop.yml +8 -7
  7. data/.ruby-version +1 -1
  8. data/CHANGELOG.md +56 -1
  9. data/Dockerfile +2 -1
  10. data/Gemfile +0 -1
  11. data/Gemfile.lock +721 -0
  12. data/README.md +10 -6
  13. data/app/assets/javascripts/lcms/engine/admin/application.js +2 -15
  14. data/app/assets/javascripts/lcms/engine/application.js +1 -44
  15. data/app/assets/javascripts/lcms/engine/application_lti.js +1 -29
  16. data/app/assets/javascripts/lcms/engine/initializers/foundation.js +5 -0
  17. data/app/assets/stylesheets/lcms/engine/admin.scss +1 -2
  18. data/app/assets/stylesheets/lcms/engine/application.scss +6 -60
  19. data/app/assets/stylesheets/lcms/engine/base/_colors.scss +2 -2
  20. data/app/assets/stylesheets/lcms/engine/components/lesson/_icons.scss +0 -25
  21. data/app/assets/stylesheets/lcms/engine/layout/_footer.scss +2 -0
  22. data/app/assets/stylesheets/lcms/engine/layout/_header.scss +1 -210
  23. data/app/assets/stylesheets/lcms/engine/pdf.scss +4 -28
  24. data/app/assets/stylesheets/lcms/engine/pdf_plain.scss +3 -11
  25. data/app/assets/stylesheets/lcms/engine/print/_typography.scss +0 -5
  26. data/app/assets/stylesheets/lcms/engine/themes/_settings.scss +419 -116
  27. data/app/assets/stylesheets/lcms/engine/utils/_mixins.scss +2 -2
  28. data/app/assets/stylesheets/lcms/engine/utils/_variables.scss +4 -4
  29. data/app/assets/stylesheets/lcms/engine/vendors/foundation_and_overrides-pdf.scss +0 -1
  30. data/app/assets/stylesheets/lcms/engine/vendors/foundation_and_overrides.scss +13 -2
  31. data/app/controllers/concerns/lcms/engine/reimportable.rb +20 -1
  32. data/app/controllers/lcms/engine/admin/admin_controller.rb +2 -0
  33. data/app/controllers/lcms/engine/admin/association_picker_controller.rb +10 -9
  34. data/app/controllers/lcms/engine/admin/documents_controller.rb +27 -22
  35. data/app/controllers/lcms/engine/admin/materials_controller.rb +28 -22
  36. data/app/controllers/lcms/engine/admin/resource_picker_controller.rb +2 -2
  37. data/app/controllers/lcms/engine/admin/resources_controller.rb +81 -43
  38. data/app/controllers/lcms/engine/admin/sketch_compilers_controller.rb +2 -2
  39. data/app/controllers/lcms/engine/admin/standards_controller.rb +6 -1
  40. data/app/controllers/lcms/engine/admin/users_controller.rb +6 -1
  41. data/app/controllers/lcms/engine/application_controller.rb +0 -15
  42. data/app/controllers/lcms/engine/surveys_controller.rb +3 -14
  43. data/app/entities/lcms/engine/grades.rb +17 -6
  44. data/app/entities/lcms/engine/media_embed.rb +1 -1
  45. data/app/entities/lcms/engine/pagination.rb +14 -5
  46. data/app/entities/lcms/engine/roman_numerals.rb +1 -1
  47. data/app/forms/lcms/engine/document_form.rb +19 -14
  48. data/app/forms/lcms/engine/material_form.rb +4 -2
  49. data/app/helpers/admin/components_helper.rb +2 -2
  50. data/app/helpers/lcms/engine/application_helper.rb +6 -2
  51. data/app/helpers/lcms/engine/resource_helper.rb +0 -17
  52. data/app/helpers/lcms/engine/view_helper.rb +2 -4
  53. data/app/interactors/lcms/engine/explore_curriculum_interactor.rb +2 -2
  54. data/app/javascript/components/admin/ImportStatus.jsx +8 -4
  55. data/app/javascript/components/admin/MultiSelectedOperation.jsx +1 -0
  56. data/app/javascript/components/admin/association-picker/AssociationPicker.jsx +1 -0
  57. data/app/javascript/components/admin/association-picker/AssociationPickerResults.jsx +2 -1
  58. data/app/javascript/components/admin/association-picker/AssociationPickerWindow.jsx +1 -0
  59. data/app/javascript/components/admin/curriculum/CurriculumEditor.jsx +1 -0
  60. data/app/javascript/components/admin/picker/pickerWindowWrapper.jsx +0 -1
  61. data/app/javascript/components/admin/resource-picker/ResourcePicker.jsx +1 -0
  62. data/app/jobs/concerns/lcms/engine/nested_resque_job.rb +1 -4
  63. data/app/jobs/lcms/engine/document_generate_gdoc_job.rb +2 -2
  64. data/app/jobs/lcms/engine/document_generate_job.rb +1 -1
  65. data/app/jobs/lcms/engine/document_parse_job.rb +1 -1
  66. data/app/models/lcms/engine/access_code.rb +1 -1
  67. data/app/models/lcms/engine/application_record.rb +9 -0
  68. data/app/models/lcms/engine/author.rb +1 -1
  69. data/app/models/lcms/engine/component.rb +3 -3
  70. data/app/models/lcms/engine/copyright_attribution.rb +1 -1
  71. data/app/models/lcms/engine/curriculum.rb +1 -1
  72. data/app/models/lcms/engine/document.rb +3 -3
  73. data/app/models/lcms/engine/document_bundle.rb +2 -2
  74. data/app/models/lcms/engine/document_part.rb +1 -1
  75. data/app/models/lcms/engine/download.rb +4 -4
  76. data/app/models/lcms/engine/download_category.rb +1 -1
  77. data/app/models/lcms/engine/leadership_post.rb +1 -1
  78. data/app/models/lcms/engine/material.rb +2 -2
  79. data/app/models/lcms/engine/material_part.rb +1 -1
  80. data/app/models/lcms/engine/reading_assignment_author.rb +1 -1
  81. data/app/models/lcms/engine/reading_assignment_text.rb +1 -1
  82. data/app/models/lcms/engine/resource.rb +4 -12
  83. data/app/models/lcms/engine/resource_additional_resource.rb +1 -1
  84. data/app/models/lcms/engine/resource_download.rb +1 -1
  85. data/app/models/lcms/engine/resource_reading_assignment.rb +1 -1
  86. data/app/models/lcms/engine/resource_related_resource.rb +1 -1
  87. data/app/models/lcms/engine/resource_standard.rb +1 -1
  88. data/app/models/lcms/engine/search/document.rb +4 -3
  89. data/app/models/lcms/engine/search/elastic_search_document.rb +1 -1
  90. data/app/models/lcms/engine/settings.rb +1 -1
  91. data/app/models/lcms/engine/social_thumbnail.rb +1 -1
  92. data/app/models/lcms/engine/staff_member.rb +1 -1
  93. data/app/models/lcms/engine/standard.rb +1 -1
  94. data/app/models/lcms/engine/standard_link.rb +1 -1
  95. data/app/models/lcms/engine/user.rb +3 -3
  96. data/app/presenters/lcms/engine/content_presenter.rb +1 -1
  97. data/app/presenters/lcms/engine/document_presenter.rb +5 -7
  98. data/app/queries/lcms/engine/admin_documents_query.rb +2 -2
  99. data/app/queries/lcms/engine/admin_materials_query.rb +1 -1
  100. data/app/serializers/lcms/engine/association_item_serializer.rb +0 -1
  101. data/app/serializers/lcms/engine/curriculum_resource_serializer.rb +0 -2
  102. data/app/serializers/lcms/engine/document_material_serializer.rb +0 -1
  103. data/app/serializers/lcms/engine/material_serializer.rb +0 -1
  104. data/app/serializers/lcms/engine/previews_material_serializer.rb +1 -1
  105. data/app/serializers/lcms/engine/resource_details_serializer.rb +0 -2
  106. data/app/serializers/lcms/engine/resource_instruction_serializer.rb +0 -2
  107. data/app/serializers/lcms/engine/resource_picker_serializer.rb +0 -2
  108. data/app/serializers/lcms/engine/resource_serializer.rb +0 -2
  109. data/app/serializers/lcms/engine/search_document_serializer.rb +0 -2
  110. data/app/services/lcms/engine/document_build_service.rb +5 -0
  111. data/app/services/lcms/engine/html_sanitizer.rb +5 -5
  112. data/app/services/lcms/engine/lessons_gdoc_bundler.rb +1 -1
  113. data/app/services/lcms/engine/material_build_service.rb +6 -2
  114. data/app/services/lcms/engine/material_preview_generator.rb +2 -2
  115. data/app/services/lcms/engine/react_materials_resolver.rb +3 -2
  116. data/app/services/lcms/engine/s3_service.rb +1 -1
  117. data/app/uploaders/social_thumbnail_uploader.rb +0 -4
  118. data/app/views/devise/confirmations/new.html.erb +1 -1
  119. data/app/views/devise/passwords/edit.html.erb +1 -1
  120. data/app/views/devise/passwords/new.html.erb +1 -1
  121. data/app/views/devise/registrations/new.html.erb +1 -1
  122. data/app/views/devise/sessions/new.html.erb +2 -2
  123. data/app/views/layouts/lcms/engine/admin.html.erb +1 -3
  124. data/app/views/layouts/lcms/engine/application.html.erb +0 -6
  125. data/app/views/layouts/lcms/engine/cg_pdf.erb +0 -38
  126. data/app/views/layouts/lcms/engine/lti.html.erb +0 -1
  127. data/app/views/lcms/engine/admin/access_codes/index.html.erb +10 -8
  128. data/app/views/lcms/engine/admin/batch_reimports/_search_form.html.erb +1 -1
  129. data/app/views/lcms/engine/admin/curriculums/edit.html.erb +3 -2
  130. data/app/views/lcms/engine/admin/documents/_materials_links.html.erb +2 -2
  131. data/app/views/lcms/engine/admin/documents/_search_form.html.erb +1 -1
  132. data/app/views/lcms/engine/admin/documents/index.html.erb +4 -4
  133. data/app/views/lcms/engine/admin/documents/new.html.erb +1 -1
  134. data/app/views/lcms/engine/admin/materials/_search_form.html.erb +1 -1
  135. data/app/views/lcms/engine/admin/materials/index.html.erb +6 -6
  136. data/app/views/lcms/engine/admin/resource_bulk_edits/new.html.erb +3 -3
  137. data/app/views/lcms/engine/admin/resources/_fields.html.erb +3 -0
  138. data/app/views/lcms/engine/admin/resources/_search_form.html.erb +1 -1
  139. data/app/views/lcms/engine/admin/shared/_header.html.erb +1 -8
  140. data/app/views/lcms/engine/admin/standards/index.html.erb +9 -7
  141. data/app/views/lcms/engine/admin/users/index.html.erb +16 -14
  142. data/app/views/lcms/engine/documents/_content.html.erb +0 -1
  143. data/app/views/lcms/engine/documents/_sticky_header.html.erb +1 -1
  144. data/app/views/lcms/engine/documents/_sticky_site_menu.html.erb +0 -1
  145. data/app/views/lcms/engine/documents/gdoc/_agenda.html.erb +1 -1
  146. data/app/views/lcms/engine/documents/show.html.erb +1 -1
  147. data/app/views/lcms/engine/materials/show.html.erb +1 -1
  148. data/app/views/lcms/engine/resources/_children_list.html.erb +1 -1
  149. data/app/views/lcms/engine/resources/_download.html.erb +4 -4
  150. data/app/views/lcms/engine/resources/_unit_bundles.html.erb +4 -4
  151. data/app/views/lcms/engine/resources/show.html.erb +2 -2
  152. data/app/views/lcms/engine/shared/_footer.html.erb +1 -3
  153. data/app/views/lcms/engine/shared/_header.html.erb +2 -36
  154. data/app/views/lcms/engine/surveys/show.html.erb +1 -1
  155. data/app/views/lcms/engine/welcome/index.html.erb +1 -80
  156. data/config/initializers/carrier_wave.rb +0 -1
  157. data/config/locales/admin/en.yml +2 -1
  158. data/config/routes.rb +2 -36
  159. data/db/migrate/20200422130652_add_reimported_at_to_documents.rb +7 -0
  160. data/db/migrate/20200429130353_drop_pages.rb +13 -0
  161. data/db/schema.rb +1 -1
  162. data/docs/env-variables.md +87 -0
  163. data/docs/google-cloud-platform-setup.md +106 -0
  164. data/lcms-engine.gemspec +69 -89
  165. data/lib/doc_template.rb +1 -1
  166. data/lib/doc_template/document.rb +2 -2
  167. data/lib/doc_template/objects/agenda_metadata.rb +1 -1
  168. data/lib/doc_template/objects/metadata_helpers.rb +1 -1
  169. data/lib/doc_template/objects/toc_metadata.rb +2 -2
  170. data/lib/doc_template/tables/activity.rb +1 -2
  171. data/lib/doc_template/tables/base.rb +7 -2
  172. data/lib/doc_template/tables/section.rb +1 -2
  173. data/lib/doc_template/tags/activity_metadata_type_tag.rb +1 -1
  174. data/lib/doc_template/tags/answer_space_tag.rb +1 -1
  175. data/lib/doc_template/tags/base_tag.rb +3 -3
  176. data/lib/doc_template/tags/columns_tag.rb +1 -1
  177. data/lib/doc_template/tags/def_tag.rb +1 -1
  178. data/lib/doc_template/tags/expand_tag.rb +1 -0
  179. data/lib/doc_template/tags/heading_tag.rb +1 -1
  180. data/lib/doc_template/tags/inset_tag.rb +2 -2
  181. data/lib/doc_template/tags/latex_tag.rb +1 -1
  182. data/lib/doc_template/tags/link_tag.rb +1 -1
  183. data/lib/doc_template/tags/page_break_tag.rb +1 -1
  184. data/lib/doc_template/tags/pd_tag.rb +4 -4
  185. data/lib/doc_template/tags/section_tag.rb +2 -2
  186. data/lib/doc_template/tags/standard_tag.rb +3 -3
  187. data/lib/doc_template/tags/table_preserve_alignment_tag.rb +1 -1
  188. data/lib/doc_template/xpath_functions.rb +3 -1
  189. data/lib/document_exporter/base.rb +1 -2
  190. data/lib/document_exporter/docx.rb +0 -1
  191. data/lib/document_exporter/gdoc/base.rb +1 -1
  192. data/lib/document_renderer/part.rb +3 -3
  193. data/lib/elasticsearch/persistence/repository/response/results.rb +1 -1
  194. data/lib/generators/lcms/engine/install/install_generator.rb +1 -4
  195. data/lib/generators/lcms/engine/install/templates/config/lcms.yml +1 -1
  196. data/lib/lcms/engine/engine.rb +1 -25
  197. data/lib/lcms/engine/migration.rb +2 -0
  198. data/lib/lcms/engine/version.rb +1 -1
  199. data/lib/lt/lcms/metadata/base_service.rb +2 -1
  200. data/lib/lt/lcms/metadata/context.rb +6 -8
  201. data/lib/lt/lcms/metadata/service.rb +3 -1
  202. data/lib/resque_job.rb +3 -6
  203. data/lib/standard_importer.rb +4 -4
  204. data/lib/tasks/cloud66.rake +6 -4
  205. data/lib/tasks/document.rake +3 -3
  206. data/lib/tasks/google.rake +1 -1
  207. data/package.json +1 -0
  208. data/spec/controllers/admin/admin_controller_spec.rb +1 -1
  209. data/spec/controllers/admin/association_picker_controller_spec.rb +6 -8
  210. data/spec/controllers/admin/curriculums_controller_spec.rb +1 -2
  211. data/spec/controllers/admin/documents_controller_spec.rb +47 -11
  212. data/spec/controllers/admin/materials_controller_spec.rb +72 -6
  213. data/spec/controllers/admin/resource_bulk_edit_controller_spec.rb +3 -3
  214. data/spec/controllers/admin/resources_controller_spec.rb +72 -0
  215. data/spec/controllers/admin/sketch_compilers_controller_spec.rb +5 -4
  216. data/spec/controllers/admin/standards_controller_spec.rb +12 -9
  217. data/spec/controllers/admin/users_controller_spec.rb +2 -2
  218. data/spec/controllers/admin/welcome_controller_spec.rb +1 -1
  219. data/spec/controllers/documents_controller_spec.rb +3 -3
  220. data/spec/controllers/resources_controller_spec.rb +2 -2
  221. data/spec/dummy/.env.docker +1 -1
  222. data/spec/dummy/bin/spring +2 -2
  223. data/spec/dummy/config/application.rb +3 -3
  224. data/spec/dummy/config/environments/production.rb +1 -1
  225. data/spec/dummy/config/environments/test.rb +2 -5
  226. data/spec/dummy/config/lcms-admin.yml +3 -3
  227. data/spec/dummy/config/puma.rb +3 -3
  228. data/spec/dummy/config/webpack/development.js +5 -0
  229. data/spec/dummy/config/webpack/environment.js +3 -0
  230. data/spec/dummy/config/webpack/production.js +5 -0
  231. data/spec/dummy/config/webpack/test.js +5 -0
  232. data/spec/dummy/config/webpacker.yml +96 -0
  233. data/spec/dummy/db/schema.rb +275 -307
  234. data/spec/entities/grades_spec.rb +12 -0
  235. data/spec/factories/document_bundles.rb +1 -1
  236. data/spec/factories/standard_links.rb +2 -0
  237. data/spec/factories/taggings.rb +1 -0
  238. data/spec/features/admin/lessons/add_lesson_spec.rb +3 -3
  239. data/spec/features/admin/materials/add_material_spec.rb +3 -3
  240. data/spec/features/welcome_spec.rb +1 -1
  241. data/spec/fixtures/tables/activity-metadata-3activities.html +1 -0
  242. data/spec/fixtures/tables/document-metadata-2paragpraphs.html +97 -0
  243. data/spec/fixtures/tables/document-metadata-2spans.html +96 -0
  244. data/spec/fixtures/tables/document-metadata.html +96 -0
  245. data/spec/forms/document_form_spec.rb +11 -1
  246. data/spec/lib/doc_template/tables/activity_spec.rb +28 -0
  247. data/spec/lib/doc_template/tables/metadata_spec.rb +40 -0
  248. data/spec/lib/doc_template/tables/shared_examples/remove_table.rb +11 -0
  249. data/spec/models/document_bundle_spec.rb +0 -6
  250. data/spec/models/resource_spec.rb +0 -33
  251. data/spec/rails_helper.rb +19 -1
  252. data/spec/requests/admin/curriculum_spec.rb +17 -0
  253. data/spec/services/document_build_service_spec.rb +76 -62
  254. data/spec/support/capybara.rb +1 -3
  255. data/spec/support/concerns/searchable.rb +2 -0
  256. data/spec/support/database_cleaner.rb +5 -16
  257. data/spec/support/devise.rb +2 -0
  258. data/spec/support/fixture_helper.rb +16 -0
  259. data/vendor/assets/javascripts/selectize.min.js +4 -0
  260. data/vendor/assets/stylesheets/selectize.scss +333 -0
  261. data/yarn.lock +765 -608
  262. metadata +376 -760
  263. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.eot +0 -0
  264. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.svg +0 -689
  265. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.ttf +0 -0
  266. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Medium-Web.woff +0 -0
  267. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.eot +0 -0
  268. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.svg +0 -697
  269. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.ttf +0 -0
  270. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Regular-Web.woff +0 -0
  271. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.eot +0 -0
  272. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.svg +0 -768
  273. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.ttf +0 -0
  274. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-RegularItalic-Web.woff +0 -0
  275. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.eot +0 -0
  276. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.svg +0 -685
  277. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.ttf +0 -0
  278. data/app/assets/fonts/lcms/engine/caponi/CaponiSlab-Semibold-Web.woff +0 -0
  279. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.eot +0 -0
  280. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.svg +0 -5603
  281. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Bold.woff +0 -0
  282. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.eot +0 -0
  283. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.svg +0 -5763
  284. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Light.woff +0 -0
  285. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.eot +0 -0
  286. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.otf +0 -0
  287. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.svg +0 -5400
  288. data/app/assets/fonts/lcms/engine/centro/PFCentroSansCond-Medium.woff +0 -0
  289. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.eot +0 -0
  290. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.html +0 -15
  291. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.otf +0 -0
  292. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.svg +0 -13061
  293. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Bold.woff +0 -0
  294. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.eot +0 -0
  295. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.html +0 -15
  296. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.otf +0 -0
  297. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.svg +0 -13075
  298. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Light.woff +0 -0
  299. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.eot +0 -0
  300. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.otf +0 -0
  301. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.svg +0 -13142
  302. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-LightItalic.woff +0 -0
  303. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.eot +0 -0
  304. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.ttf +0 -0
  305. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.woff +0 -0
  306. data/app/assets/fonts/lcms/engine/centro/PFCentroSansPro-Medium.woff2 +0 -0
  307. data/app/assets/fonts/lcms/engine/cursive/Sriracha-Regular.ttf +0 -0
  308. data/app/assets/fonts/lcms/engine/icons/ubicons.eot +0 -0
  309. data/app/assets/fonts/lcms/engine/icons/ubicons.svg +0 -50
  310. data/app/assets/fonts/lcms/engine/icons/ubicons.ttf +0 -0
  311. data/app/assets/fonts/lcms/engine/icons/ubicons.woff +0 -0
  312. data/app/assets/fonts/lcms/engine/ub/UBIcons.eot +0 -0
  313. data/app/assets/fonts/lcms/engine/ub/UBIcons.svg +0 -18
  314. data/app/assets/fonts/lcms/engine/ub/UBIcons.ttf +0 -0
  315. data/app/assets/fonts/lcms/engine/ub/UBIcons.woff +0 -0
  316. data/app/assets/images/lcms/engine/lessons/ld_p1.png +0 -0
  317. data/app/assets/images/lcms/engine/lessons/ld_p2.png +0 -0
  318. data/app/assets/images/lcms/engine/lessons/ld_p3.png +0 -0
  319. data/app/assets/images/lcms/engine/lessons/tens.png +0 -0
  320. data/app/assets/images/lcms/engine/lessons/wp.svg +0 -30
  321. data/app/assets/images/lcms/engine/tile-wide.png +0 -0
  322. data/app/assets/images/lcms/engine/tile.png +0 -0
  323. data/app/assets/javascripts/lcms/engine/components.js +0 -7
  324. data/app/assets/javascripts/lcms/engine/components/.gitkeep +0 -0
  325. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMap.js.jsx +0 -31
  326. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapLesson.js.jsx +0 -18
  327. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapModule.js.jsx +0 -59
  328. data/app/assets/javascripts/lcms/engine/components/curriculum-map/CurriculumMapUnit.js.jsx +0 -56
  329. data/app/assets/javascripts/lcms/engine/components/curriculum-map/ResourceHover.js.jsx +0 -27
  330. data/app/assets/javascripts/lcms/engine/components/curriculum-map/ResourcePreview.js.jsx +0 -29
  331. data/app/assets/javascripts/lcms/engine/components/enhance-instruction/EnhanceInstructionCards.js.jsx +0 -13
  332. data/app/assets/javascripts/lcms/engine/components/enhance-instruction/EnhanceInstructionPage.js.jsx +0 -139
  333. data/app/assets/javascripts/lcms/engine/components/enhance-instruction/GenericResourceCard.js.jsx +0 -20
  334. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumCardItem.js.jsx +0 -152
  335. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumGradeMap.js.jsx +0 -44
  336. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumHeader.js.jsx +0 -10
  337. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumItem.js.jsx +0 -77
  338. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumModuleMap.js.jsx +0 -59
  339. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumOpr.js.jsx +0 -62
  340. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumPage.js.jsx +0 -258
  341. data/app/assets/javascripts/lcms/engine/components/explore-curriculum/ExploreCurriculumUnitMap.js.jsx +0 -50
  342. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterBarResponsive.js.jsx +0 -62
  343. data/app/assets/javascripts/lcms/engine/components/filterbar/Filterbar.js.jsx +0 -258
  344. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarFacet.js.jsx +0 -12
  345. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarGrade.js.jsx +0 -14
  346. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarSearch.js.jsx +0 -48
  347. data/app/assets/javascripts/lcms/engine/components/filterbar/FilterbarSubject.js.jsx +0 -12
  348. data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsCards.js.jsx +0 -11
  349. data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsCardsEmpty.js.jsx +0 -17
  350. data/app/assets/javascripts/lcms/engine/components/find-lessons/FindLessonsPage.js.jsx +0 -58
  351. data/app/assets/javascripts/lcms/engine/components/helpers/FreshdeskBtn.js.jsx +0 -9
  352. data/app/assets/javascripts/lcms/engine/components/helpers/MediaTime.js.jsx +0 -6
  353. data/app/assets/javascripts/lcms/engine/components/helpers/SearchResultsHeader.js.jsx +0 -41
  354. data/app/assets/javascripts/lcms/engine/components/helpers/TimeToTeach.js.jsx +0 -29
  355. data/app/assets/javascripts/lcms/engine/components/instruction-card/InstructionCard.js.jsx +0 -57
  356. data/app/assets/javascripts/lcms/engine/components/lesson-card/LessonCard.js.jsx +0 -45
  357. data/app/assets/javascripts/lcms/engine/components/materials/CollapsedMaterial.js.jsx +0 -40
  358. data/app/assets/javascripts/lcms/engine/components/materials/DocumentMaterialsList.js.jsx +0 -33
  359. data/app/assets/javascripts/lcms/engine/components/materials/ExpandedMaterial.js.jsx +0 -37
  360. data/app/assets/javascripts/lcms/engine/components/materials/MaterialsContainer.js.jsx +0 -92
  361. data/app/assets/javascripts/lcms/engine/components/materials/MaterialsList.js.jsx +0 -19
  362. data/app/assets/javascripts/lcms/engine/components/modals/DownloadModal.js.jsx +0 -68
  363. data/app/assets/javascripts/lcms/engine/components/related-instruction/RelatedInstruction.js.jsx +0 -72
  364. data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdown.js.jsx +0 -159
  365. data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdownResult.js.jsx +0 -12
  366. data/app/assets/javascripts/lcms/engine/components/search-dropdown/SearchDropdownResults.js.jsx +0 -36
  367. data/app/assets/javascripts/lcms/engine/components/search/SearchPage.js.jsx +0 -44
  368. data/app/assets/javascripts/lcms/engine/components/search/SearchResult.js.jsx +0 -22
  369. data/app/assets/javascripts/lcms/engine/components/search/SearchResults.js.jsx +0 -17
  370. data/app/assets/javascripts/lcms/engine/components/search/SearchResultsEmpty.js.jsx +0 -25
  371. data/app/assets/javascripts/lcms/engine/components/search/searchPageWrapper.js.jsx +0 -77
  372. data/app/assets/javascripts/lcms/engine/components/select-activity/SelectActivityConfirmationModal.js.jsx +0 -107
  373. data/app/assets/javascripts/lcms/engine/components/select-activity/SelectActivityToggle.js.jsx +0 -39
  374. data/app/assets/javascripts/lcms/engine/components/stores/ExcludesStore.js.jsx +0 -11
  375. data/app/assets/javascripts/lcms/engine/components/tabs/SimpleTab.js.jsx +0 -130
  376. data/app/assets/javascripts/lcms/engine/components/utils/UrlHistory.js.jsx +0 -113
  377. data/app/assets/javascripts/lcms/engine/components/utils/colorcodecss.js.jsx +0 -4
  378. data/app/assets/javascripts/lcms/engine/components/utils/converttobem.js.jsx +0 -3
  379. data/app/assets/javascripts/lcms/engine/components/utils/filterbarupdate.js.jsx +0 -5
  380. data/app/assets/javascripts/lcms/engine/components/utils/heaptrackpd.js.jsx +0 -5
  381. data/app/assets/javascripts/lcms/engine/components/utils/regexpescape.js.jsx +0 -5
  382. data/app/assets/javascripts/lcms/engine/components/utils/scalenumber.js.jsx +0 -8
  383. data/app/assets/javascripts/lcms/engine/initializers/about_people.js +0 -8
  384. data/app/assets/javascripts/lcms/engine/initializers/bundles.js +0 -12
  385. data/app/assets/javascripts/lcms/engine/initializers/events.js +0 -3
  386. data/app/assets/javascripts/lcms/engine/initializers/freshdesk.js +0 -18
  387. data/app/assets/javascripts/lcms/engine/initializers/google_analytics.js +0 -10
  388. data/app/assets/javascripts/lcms/engine/initializers/header_dropdown.js +0 -44
  389. data/app/assets/javascripts/lcms/engine/initializers/heap_analytics.js +0 -78
  390. data/app/assets/javascripts/lcms/engine/initializers/leadership.js +0 -22
  391. data/app/assets/javascripts/lcms/engine/initializers/lessons.js +0 -299
  392. data/app/assets/javascripts/lcms/engine/initializers/loadasync.js +0 -30
  393. data/app/assets/javascripts/lcms/engine/initializers/pdf_preview.js +0 -15
  394. data/app/assets/javascripts/lcms/engine/initializers/resource_details.js +0 -21
  395. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SideBar.js.jsx +0 -86
  396. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarCGMenu.js.jsx +0 -37
  397. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarDocMenu.js.jsx +0 -75
  398. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarMobile.js.jsx +0 -43
  399. data/app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx +0 -43
  400. data/app/assets/javascripts/lcms/engine/initializers/sidebar/TopScroll.js.jsx +0 -21
  401. data/app/assets/javascripts/lcms/engine/initializers/social_sharing.js +0 -29
  402. data/app/assets/javascripts/lcms/engine/initializers/soundcloud.js +0 -52
  403. data/app/assets/javascripts/lcms/engine/initializers/subscribe_placeholder.js +0 -12
  404. data/app/assets/javascripts/lcms/engine/initializers/survey.js +0 -31
  405. data/app/assets/stylesheets/lcms/engine/base/_cg-colors.scss +0 -48
  406. data/app/assets/stylesheets/lcms/engine/base/_fonts.scss +0 -103
  407. data/app/assets/stylesheets/lcms/engine/base/_icons.scss +0 -342
  408. data/app/assets/stylesheets/lcms/engine/components/_buttons.scss +0 -200
  409. data/app/assets/stylesheets/lcms/engine/components/_cards.scss +0 -36
  410. data/app/assets/stylesheets/lcms/engine/components/_cg-base.scss +0 -22
  411. data/app/assets/stylesheets/lcms/engine/components/_curriculum-cards.scss +0 -237
  412. data/app/assets/stylesheets/lcms/engine/components/_curriculum-map.scss +0 -214
  413. data/app/assets/stylesheets/lcms/engine/components/_download-modal.scss +0 -56
  414. data/app/assets/stylesheets/lcms/engine/components/_filterbar-modal.scss +0 -20
  415. data/app/assets/stylesheets/lcms/engine/components/_filterbar.scss +0 -184
  416. data/app/assets/stylesheets/lcms/engine/components/_generic-resource.scss +0 -58
  417. data/app/assets/stylesheets/lcms/engine/components/_inputs.scss +0 -12
  418. data/app/assets/stylesheets/lcms/engine/components/_instruction-cards.scss +0 -160
  419. data/app/assets/stylesheets/lcms/engine/components/_lesson-base.scss +0 -31
  420. data/app/assets/stylesheets/lcms/engine/components/_lesson-cards.scss +0 -119
  421. data/app/assets/stylesheets/lcms/engine/components/_ls-post.scss +0 -38
  422. data/app/assets/stylesheets/lcms/engine/components/_material-base.scss +0 -6
  423. data/app/assets/stylesheets/lcms/engine/components/_media-resources.scss +0 -6
  424. data/app/assets/stylesheets/lcms/engine/components/_media.scss +0 -95
  425. data/app/assets/stylesheets/lcms/engine/components/_pagination.scss +0 -84
  426. data/app/assets/stylesheets/lcms/engine/components/_panel-dsc.scss +0 -37
  427. data/app/assets/stylesheets/lcms/engine/components/_panel.scss +0 -7
  428. data/app/assets/stylesheets/lcms/engine/components/_related-instruction.scss +0 -31
  429. data/app/assets/stylesheets/lcms/engine/components/_resource.scss +0 -217
  430. data/app/assets/stylesheets/lcms/engine/components/_search-dropdown.scss +0 -23
  431. data/app/assets/stylesheets/lcms/engine/components/_search-header.scss +0 -45
  432. data/app/assets/stylesheets/lcms/engine/components/_search.scss +0 -57
  433. data/app/assets/stylesheets/lcms/engine/components/_sidebar.scss +0 -159
  434. data/app/assets/stylesheets/lcms/engine/components/_simple-tab.scss +0 -57
  435. data/app/assets/stylesheets/lcms/engine/components/_social-sharing.scss +0 -20
  436. data/app/assets/stylesheets/lcms/engine/components/_titles.scss +0 -33
  437. data/app/assets/stylesheets/lcms/engine/components/_top-scroll-button.scss +0 -28
  438. data/app/assets/stylesheets/lcms/engine/components/_unit-bundles.scss +0 -14
  439. data/app/assets/stylesheets/lcms/engine/components/cg/_annotations.scss +0 -48
  440. data/app/assets/stylesheets/lcms/engine/components/cg/_colorscheme.scss +0 -60
  441. data/app/assets/stylesheets/lcms/engine/components/cg/_contents-modal.scss +0 -20
  442. data/app/assets/stylesheets/lcms/engine/components/cg/_elements.scss +0 -11
  443. data/app/assets/stylesheets/lcms/engine/components/cg/_faq.scss +0 -35
  444. data/app/assets/stylesheets/lcms/engine/components/cg/_footnote.scss +0 -20
  445. data/app/assets/stylesheets/lcms/engine/components/cg/_hacks.scss +0 -11
  446. data/app/assets/stylesheets/lcms/engine/components/cg/_icons.scss +0 -30
  447. data/app/assets/stylesheets/lcms/engine/components/cg/_keywords.scss +0 -5
  448. data/app/assets/stylesheets/lcms/engine/components/cg/_links.scss +0 -3
  449. data/app/assets/stylesheets/lcms/engine/components/cg/_quotes.scss +0 -18
  450. data/app/assets/stylesheets/lcms/engine/components/cg/_standards.scss +0 -23
  451. data/app/assets/stylesheets/lcms/engine/components/cg/_table.scss +0 -50
  452. data/app/assets/stylesheets/lcms/engine/components/cg/_task.scss +0 -43
  453. data/app/assets/stylesheets/lcms/engine/components/cg/_video.scss +0 -10
  454. data/app/assets/stylesheets/lcms/engine/components/support/_helpdesk.scss +0 -25
  455. data/app/assets/stylesheets/lcms/engine/freshdesk/base/_colors.scss +0 -25
  456. data/app/assets/stylesheets/lcms/engine/freshdesk/base/_typography.scss +0 -19
  457. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_block.scss +0 -5
  458. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_buttons.scss +0 -5
  459. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_help-center.scss +0 -59
  460. data/app/assets/stylesheets/lcms/engine/freshdesk/components/_tabs.scss +0 -33
  461. data/app/assets/stylesheets/lcms/engine/freshdesk/freshdesk.scss +0 -42
  462. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_footer.scss +0 -44
  463. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_header.scss +0 -49
  464. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/_page.scss +0 -40
  465. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/footer.liquid +0 -14
  466. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/header.liquid +0 -41
  467. data/app/assets/stylesheets/lcms/engine/freshdesk/layout/page.liquid +0 -22
  468. data/app/assets/stylesheets/lcms/engine/freshdesk/pages/_portal-home.scss +0 -18
  469. data/app/assets/stylesheets/lcms/engine/freshdesk/pages/portal.home.liquid +0 -74
  470. data/app/assets/stylesheets/lcms/engine/freshdesk/themes/_settings.scss +0 -19
  471. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_breakpoint.scss +0 -288
  472. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_helpers.scss +0 -22
  473. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_unit.scss +0 -95
  474. data/app/assets/stylesheets/lcms/engine/freshdesk/utils/_value.scss +0 -138
  475. data/app/assets/stylesheets/lcms/engine/layout/_connect.scss +0 -63
  476. data/app/assets/stylesheets/lcms/engine/layout/_header-search-form.scss +0 -30
  477. data/app/assets/stylesheets/lcms/engine/layout/_sticky-header.scss +0 -179
  478. data/app/assets/stylesheets/lcms/engine/layout/_sticky-navigation.scss +0 -124
  479. data/app/assets/stylesheets/lcms/engine/layout/_subscribe.scss +0 -68
  480. data/app/assets/stylesheets/lcms/engine/pages/_about-people.scss +0 -115
  481. data/app/assets/stylesheets/lcms/engine/pages/_about.scss +0 -61
  482. data/app/assets/stylesheets/lcms/engine/pages/_content-guide.scss +0 -205
  483. data/app/assets/stylesheets/lcms/engine/pages/_enhance-instruction.scss +0 -19
  484. data/app/assets/stylesheets/lcms/engine/pages/_explore-curriculum.scss +0 -46
  485. data/app/assets/stylesheets/lcms/engine/pages/_find-lessons.scss +0 -1
  486. data/app/assets/stylesheets/lcms/engine/pages/_home.scss +0 -237
  487. data/app/assets/stylesheets/lcms/engine/pages/_leadership.scss +0 -263
  488. data/app/assets/stylesheets/lcms/engine/pages/_lesson-document.scss +0 -138
  489. data/app/assets/stylesheets/lcms/engine/pages/_unsupported.scss +0 -18
  490. data/app/assets/stylesheets/lcms/engine/print/_b64-fonts.scss.erb +0 -65
  491. data/app/assets/stylesheets/lcms/engine/print/_cg-base.scss +0 -4
  492. data/app/assets/stylesheets/lcms/engine/print/_hacks.scss +0 -6
  493. data/app/assets/stylesheets/lcms/engine/print/cg/_base-typography.scss +0 -21
  494. data/app/assets/stylesheets/lcms/engine/print/cg/_breaks.scss +0 -7
  495. data/app/assets/stylesheets/lcms/engine/print/cg/_elements-typography.scss +0 -14
  496. data/app/assets/stylesheets/lcms/engine/vendors/swiper.css +0 -547
  497. data/app/controllers/concerns/lcms/engine/analytics_tracking.rb +0 -51
  498. data/app/controllers/concerns/lcms/engine/heap_notifyable.rb +0 -20
  499. data/app/controllers/lcms/engine/admin/configurable_admin.rb +0 -56
  500. data/app/controllers/lcms/engine/admin/google_oauth2_controller.rb +0 -15
  501. data/app/controllers/lcms/engine/admin/pages_controller.rb +0 -54
  502. data/app/controllers/lcms/engine/analytics_exclusion_controller.rb +0 -14
  503. data/app/controllers/lcms/engine/downloads_controller.rb +0 -50
  504. data/app/controllers/lcms/engine/enhance_instruction_controller.rb +0 -18
  505. data/app/controllers/lcms/engine/explore_curriculum_controller.rb +0 -28
  506. data/app/controllers/lcms/engine/find_lessons_controller.rb +0 -15
  507. data/app/controllers/lcms/engine/pages_controller.rb +0 -26
  508. data/app/controllers/lcms/engine/search_controller.rb +0 -15
  509. data/app/controllers/lcms/engine/sessions_controller.rb +0 -19
  510. data/app/models/lcms/engine/page.rb +0 -13
  511. data/app/services/lcms/engine/generate_thumbnails.rb +0 -54
  512. data/app/services/lcms/engine/svg_social_thumbnail.rb +0 -223
  513. data/app/views/layouts/lcms/engine/ld_docx.html.erb +0 -16
  514. data/app/views/lcms/engine/admin/pages/_form.html.erb +0 -8
  515. data/app/views/lcms/engine/admin/pages/edit.html.erb +0 -9
  516. data/app/views/lcms/engine/admin/pages/index.html.erb +0 -25
  517. data/app/views/lcms/engine/admin/pages/new.html.erb +0 -5
  518. data/app/views/lcms/engine/documents/_helpdesk.html.erb +0 -9
  519. data/app/views/lcms/engine/pages/_about_people_staff.html.erb +0 -27
  520. data/app/views/lcms/engine/pages/_leadership_in_action.html.erb +0 -25
  521. data/app/views/lcms/engine/pages/_leadership_why_i_lead.html.erb +0 -34
  522. data/app/views/lcms/engine/pages/about.html.erb +0 -87
  523. data/app/views/lcms/engine/pages/about_people.html.erb +0 -27
  524. data/app/views/lcms/engine/pages/forthcoming.html.erb +0 -9
  525. data/app/views/lcms/engine/pages/leadership.html.erb +0 -82
  526. data/app/views/lcms/engine/pages/not_found.html.erb +0 -9
  527. data/app/views/lcms/engine/pages/privacy.html.erb +0 -9
  528. data/app/views/lcms/engine/pages/show.html.erb +0 -8
  529. data/app/views/lcms/engine/pages/show_slug.html.erb +0 -0
  530. data/app/views/lcms/engine/pages/tos.html.erb +0 -9
  531. data/app/views/lcms/engine/shared/_connect.html.erb +0 -60
  532. data/app/views/lcms/engine/shared/_freshdesk.html.erb +0 -22
  533. data/app/views/lcms/engine/shared/_google_analytics.html.erb +0 -9
  534. data/app/views/lcms/engine/shared/_heap_analytics.html.erb +0 -7
  535. data/app/views/lcms/engine/shared/_open_graph_meta.html.erb +0 -15
  536. data/app/views/lcms/engine/shared/_open_graph_meta_js.html.erb +0 -39
  537. data/app/views/lcms/engine/shared/_search_form.html.erb +0 -10
  538. data/app/views/lcms/engine/shared/_social_sharing_menu.html.erb +0 -34
  539. data/app/views/lcms/engine/shared/_subscribe.html.erb +0 -30
  540. data/app/views/lcms/engine/shared/_unsupported.html.erb +0 -3
  541. data/app/views/lcms/engine/shared/social_thumbnail.svg.erb +0 -54
  542. data/config/initializers/active_record.rb +0 -3
  543. data/config/initializers/heap.rb +0 -3
  544. data/lib/tasks/thumbnails.rake +0 -59
  545. data/spec/controllers/admin/pages_controller_spec.rb +0 -19
  546. data/spec/controllers/enhance_instruction_controller_spec.rb +0 -15
  547. data/spec/controllers/explore_curriculum_controller_spec.rb +0 -29
  548. data/spec/controllers/find_lessons_controller_spec.rb +0 -50
  549. data/spec/controllers/pages_controller_spec.rb +0 -35
  550. data/spec/controllers/search_controller_spec.rb +0 -16
  551. data/spec/factories/pages.rb +0 -21
  552. data/spec/features/admin/pages_spec.rb +0 -79
  553. data/spec/features/pages/page_not_found_spec.rb +0 -26
  554. data/spec/features/pages/page_titles_spec.rb +0 -86
  555. data/spec/support/heap.rb +0 -3
  556. data/vendor/assets/javascripts/foundation.initialize.js +0 -115
  557. data/vendor/assets/javascripts/foundation.magellanex.js +0 -335
  558. data/vendor/assets/javascripts/freshwidget.js +0 -1
  559. data/vendor/assets/javascripts/jquery.easytabs.js +0 -704
  560. data/vendor/assets/javascripts/jquery.hashchange.js +0 -9
  561. data/vendor/assets/javascripts/modernizr-custom.js +0 -3
  562. data/vendor/assets/javascripts/smoothscrolling.js +0 -22
  563. data/vendor/assets/javascripts/swiper.jquery.js +0 -3777
  564. data/vendor/assets/javascripts/tabs.js +0 -6
@@ -1 +0,0 @@
1
- !function(){function t(t){try{return t()}catch(e){window.console&&window.console.log&&window.console.log.apply&&window.console.log("Freshdesk Error: ",e)}}function e(t){return t&&!x.test(t)?$.location.protocol+"//"+t:t}function n(t){var e=$.createElement("link");e.setAttribute("rel","stylesheet"),e.setAttribute("type","text/css"),e.setAttribute("href",t),"undefined"!=typeof e&&$.getElementsByTagName("head")[0].appendChild(e)}function i(t){var e=$.createElement("script");e.setAttribute("type","text/javascript"),e.setAttribute("src",t),"undefined"!=typeof e&&$.getElementsByTagName("head")[0].appendChild(e)}function o(t,e,n){t&&t.addEventListener?t.addEventListener(e,n,!1):t&&t.attachEvent&&t.attachEvent("on"+e,n)}function r(t){var n;for(n in t)B.hasOwnProperty(n)&&("url"===n||"assetUrl"===n?B[n]=e(t[n]):B[n]=t[n])}function a(t){var e=t.src,n=window.navigator&&window.navigator.appVersion.split("MSIE"),i=parseFloat(n[1]);return i>=5.5&&7>i&&$.body.filters&&(t.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+e+"', sizingMethod='crop')"),t}function d(){null==$widget_attr.button&&"popup"==B.widgetType&&(class_name=k[B.alignment]||"left",$widget_attr.button=$.createElement("div"),$widget_attr.button.setAttribute("id","freshwidget-button"),$widget_attr.button.setAttribute("data-html2canvas-ignore","true"),$widget_attr.button.style.display="none",$widget_attr.button.className="freshwidget-button fd-btn-"+class_name,I.Version()<=10&&($widget_attr.button.className+=" ie"+I.Version()),link=$.createElement("a"),link.setAttribute("href","javascript:void(0)"),text=null,proxyLink=$.createElement("a"),proxyLink.setAttribute("href","javascript:void(0)"),null==B.backgroundImage||""==B.backgroundImage||"text"==B.buttonType?(link.className="freshwidget-theme",link.style.color=B.buttonColor,link.style.backgroundColor=B.buttonBg,link.style.borderColor=B.buttonColor,proxyLink.className="proxy-link",text=$.createTextNode(B.buttonText)):(link.className="freshwidget-customimage",text=$.createElement("img"),text.src=B.backgroundImage,text.alt=B.buttonText,text=a(text)),"top"==class_name||"bottom"==class_name?$widget_attr.button.style.left=B.offset:$widget_attr.button.style.top=B.offset,$.body.insertBefore($widget_attr.button,$.body.childNodes[0]),$widget_attr.button.appendChild(link),link.appendChild(text),(null==B.backgroundImage||""==B.backgroundImage)&&I.Version()<=10&&($widget_attr.button.appendChild(proxyLink),o(proxyLink,"click",function(){window.FreshWidget.show()}),proxyLink.style.height=link.offsetHeight+"px",proxyLink.style.width=link.offsetWidth+"px"),o(link,"click",function(){window.FreshWidget.show()}))}function s(){null!=$widget_attr.button&&($.body.removeChild($widget_attr.button),$widget_attr.button=null)}function l(){null!=$widget_attr.container&&($.body.removeChild($widget_attr.container),$widget_attr.container=null)}function c(){null==$widget_attr.container&&($widget_attr.container=$.createElement("div"),$widget_attr.container.className="freshwidget-container",$widget_attr.container.id="FreshWidget",""==B.responsive&&($widget_attr.container.className+=" responsive"),$widget_attr.container.setAttribute("data-html2canvas-ignore","true"),$widget_attr.container.style.display="none",$.body.insertBefore($widget_attr.container,$.body.childNodes[0]),$widget_attr.container.innerHTML='<div class="widget-ovelay" id="freshwidget-overlay">&nbsp;</div><div class="freshwidget-dialog" id="freshwidget-dialog"> <img alt="Close Feedback Form" id="freshwidget-close" class="widget-close" src="'+B.assetUrl+"/widget_close.png?ver="+E+'" /><div class="mobile-widget-close" id="mobile-widget-close"></div> <div class="frame-container"> <iframe title="Feedback Form" id="freshwidget-frame" src="about:blank" frameborder="0" scrolling="auto" allowTransparency="true" style="height: '+B.formHeight+'"/> </div>',$widget_attr.container=$.getElementById("FreshWidget"),$widget_attr.closeButton=$.getElementById("freshwidget-close"),$widget_attr.closeButton=a($widget_attr.closeButton),$widget_attr.mobileCloseButton=$.getElementById("mobile-widget-close"),$widget_attr.dialog=$.getElementById("freshwidget-dialog"),$widget_attr.iframe=$.getElementById("freshwidget-frame"),$widget_attr.overlay=$.getElementById("freshwidget-overlay"),$widget_attr.dialog.appendChild($widget_attr.iframe),g(),o($widget_attr.closeButton,"click",function(){window.FreshWidget.close()}),o($widget_attr.mobileCloseButton,"click",function(){window.FreshWidget.close()}),o($widget_attr.overlay,"click",function(){window.FreshWidget.close()}),o($widget_attr.iframe,"load",function(){$widget_attr.iframeLoaded||-1==$widget_attr.iframe.src.indexOf("/widgets/feedback_widget/new?")||($widget_attr.iframeLoaded=!0)}),y())}function g(){$widget_attr.iframe.src=B.url+"/loading.html?ver="+E}function u(){$widget_attr.iframe.src=B.url+"/widgets/feedback_widget/new?"+B.queryString}function w(){scroll(0,0),$widget_attr.container.style.display="block",B.responsive||(v=$.body.style.overflow,$.body.style.overflow="hidden"),$widget_attr.iframeLoaded||u()}function f(){$widget_attr.container.style.display="none",B.responsive||($.body.style.overflow=v||"auto"),u()}function m(t){switch(r(t),I.Version()>8&&"undefined"==typeof html2canvas&&""==B.screenshot&&i(B.assetUrl+"/html2canvas.js?ver="+E),B.loadOnEvent){case"windowLoad":o(window,"load",p);break;case"documentReady":o($,"ready",p);break;case"immediate":p()}n(B.assetUrl+"/freshwidget.css?ver="+E)}function p(){d(),c()}function h(t){r(t),s(),l(),$widget_attr.iframeLoaded=!1,d(),c()}function b(){s(),l(),delete window.FreshWidget}function y(){o(window,"message",function(t){var e=t.data;"screenshot"==e&&_(t)})}function _(t){I.Version()>8&&""==B.screenshot&&(html2canvas([$.body],{proxy:!1,onrendered:function(t){var e=t.toDataURL(),n={type:"screenshot",img:e};$.getElementById("freshwidget-frame").contentWindow.postMessage(n,"*")}}),t.stopImmediatePropagation())}var v,$=window.document,k={1:"top",2:"right",3:"bottom",4:"left",top:"top",right:"right",bottom:"bottom",left:"left"},x=/^[a-zA-Z]+:\/\//,E=2,B={widgetId:0,buttonText:"Support",buttonBg:"#7eb600",buttonColor:"white",backgroundImage:null,alignment:"left",offset:"35%",url:"http://support.freshdesk.com",assetUrl:"https://s3.amazonaws.com/assets.freshdesk.com/widget",queryString:"",screenshot:"",formHeight:"500px",responsive:"",widgetType:"popup",buttonType:"text",captcha:"",loadOnEvent:"windowLoad"};$widget_attr={button:null,dialog:null,container:null,overlay:null,iframe:null,iframeLoaded:!1,closeButton:null,mobileCloseButton:null};var I={Version:function(){var t=999;return-1!=navigator.appVersion.indexOf("MSIE")&&(t=parseFloat(navigator.appVersion.split("MSIE")[1])),t}},L={init:function(e,n){t(function(){return m(n)})},create:function(){t(function(){return p()})},show:function(){t(function(){return w()})},close:function(){t(function(){return f()})},iframe:function(){return $widget_attr.iframe},update:function(e){t(function(){return h(e)})},destroy:function(){t(function(){return b()})}};window.FreshWidget||(window.FreshWidget=L)}();
@@ -1,704 +0,0 @@
1
- /*
2
- * jQuery EasyTabs plugin 3.2.0
3
- *
4
- * Copyright (c) 2010-2011 Steve Schwartz (JangoSteve)
5
- *
6
- * Dual licensed under the MIT and GPL licenses:
7
- * http://www.opensource.org/licenses/mit-license.php
8
- * http://www.gnu.org/licenses/gpl.html
9
- *
10
- * Date: Thu May 09 17:30:00 2013 -0500
11
- */
12
- ( function($) {
13
-
14
- $.easytabs = function(container, options) {
15
-
16
- // Attach to plugin anything that should be available via
17
- // the $container.data('easytabs') object
18
- var plugin = this,
19
- $container = $(container),
20
-
21
- defaults = {
22
- animate: true,
23
- panelActiveClass: "active",
24
- tabActiveClass: "active",
25
- defaultTab: "li:first-child",
26
- animationSpeed: "normal",
27
- tabs: "> ul > li",
28
- updateHash: true,
29
- cycle: false,
30
- collapsible: false,
31
- collapsedClass: "collapsed",
32
- collapsedByDefault: true,
33
- uiTabs: false,
34
- transitionIn: 'fadeIn',
35
- transitionOut: 'fadeOut',
36
- transitionInEasing: 'swing',
37
- transitionOutEasing: 'swing',
38
- transitionCollapse: 'slideUp',
39
- transitionUncollapse: 'slideDown',
40
- transitionCollapseEasing: 'swing',
41
- transitionUncollapseEasing: 'swing',
42
- containerClass: "",
43
- tabsClass: "",
44
- tabClass: "",
45
- panelClass: "",
46
- cache: true,
47
- event: 'click',
48
- panelContext: $container
49
- },
50
-
51
- // Internal instance variables
52
- // (not available via easytabs object)
53
- $defaultTab,
54
- $defaultTabLink,
55
- transitions,
56
- lastHash,
57
- skipUpdateToHash,
58
- animationSpeeds = {
59
- fast: 200,
60
- normal: 400,
61
- slow: 600
62
- },
63
-
64
- // Shorthand variable so that we don't need to call
65
- // plugin.settings throughout the plugin code
66
- settings;
67
-
68
- // =============================================================
69
- // Functions available via easytabs object
70
- // =============================================================
71
-
72
- plugin.init = function() {
73
-
74
- plugin.settings = settings = $.extend({}, defaults, options);
75
- settings.bind_str = settings.event+".easytabs";
76
-
77
- // Add jQuery UI's crazy class names to markup,
78
- // so that markup will match theme CSS
79
- if ( settings.uiTabs ) {
80
- settings.tabActiveClass = 'ui-tabs-selected';
81
- settings.containerClass = 'ui-tabs ui-widget ui-widget-content ui-corner-all';
82
- settings.tabsClass = 'ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all';
83
- settings.tabClass = 'ui-state-default ui-corner-top';
84
- settings.panelClass = 'ui-tabs-panel ui-widget-content ui-corner-bottom';
85
- }
86
-
87
- // If collapsible is true and defaultTab specified, assume user wants defaultTab showing (not collapsed)
88
- if ( settings.collapsible && options.defaultTab !== undefined && options.collpasedByDefault === undefined ) {
89
- settings.collapsedByDefault = false;
90
- }
91
-
92
- // Convert 'normal', 'fast', and 'slow' animation speed settings to their respective speed in milliseconds
93
- if ( typeof(settings.animationSpeed) === 'string' ) {
94
- settings.animationSpeed = animationSpeeds[settings.animationSpeed];
95
- }
96
-
97
- $('a.anchor').remove().prependTo('body');
98
-
99
- // Store easytabs object on container so we can easily set
100
- // properties throughout
101
- $container.data('easytabs', {});
102
-
103
- plugin.setTransitions();
104
-
105
- plugin.getTabs();
106
-
107
- addClasses();
108
-
109
- setDefaultTab();
110
-
111
- bindToTabClicks();
112
-
113
- initHashChange();
114
-
115
- initCycle();
116
-
117
- // Append data-easytabs HTML attribute to make easy to query for
118
- // easytabs instances via CSS pseudo-selector
119
- $container.attr('data-easytabs', true);
120
- };
121
-
122
- // Set transitions for switching between tabs based on options.
123
- // Could be used to update transitions if settings are changes.
124
- plugin.setTransitions = function() {
125
- transitions = ( settings.animate ) ? {
126
- show: settings.transitionIn,
127
- hide: settings.transitionOut,
128
- speed: settings.animationSpeed,
129
- collapse: settings.transitionCollapse,
130
- uncollapse: settings.transitionUncollapse,
131
- halfSpeed: settings.animationSpeed / 2
132
- } :
133
- {
134
- show: "show",
135
- hide: "hide",
136
- speed: 0,
137
- collapse: "hide",
138
- uncollapse: "show",
139
- halfSpeed: 0
140
- };
141
- };
142
-
143
- // Find and instantiate tabs and panels.
144
- // Could be used to reset tab and panel collection if markup is
145
- // modified.
146
- plugin.getTabs = function() {
147
- var $matchingPanel;
148
-
149
- // Find the initial set of elements matching the setting.tabs
150
- // CSS selector within the container
151
- plugin.tabs = $container.find(settings.tabs),
152
-
153
- // Instantiate panels as empty jquery object
154
- plugin.panels = $(),
155
-
156
- plugin.tabs.each(function(){
157
- var $tab = $(this),
158
- $a = $tab.children('a'),
159
-
160
- // targetId is the ID of the panel, which is either the
161
- // `href` attribute for non-ajax tabs, or in the
162
- // `data-target` attribute for ajax tabs since the `href` is
163
- // the ajax URL
164
- targetId = $tab.children('a').data('target');
165
-
166
- $tab.data('easytabs', {});
167
-
168
- // If the tab has a `data-target` attribute, and is thus an ajax tab
169
- if ( targetId !== undefined && targetId !== null ) {
170
- $tab.data('easytabs').ajax = $a.attr('href');
171
- } else {
172
- targetId = $a.attr('href');
173
- }
174
- targetId = targetId.match(/#([^\?]+)/)[1];
175
-
176
- $matchingPanel = settings.panelContext.find("#" + targetId);
177
-
178
- // If tab has a matching panel, add it to panels
179
- if ( $matchingPanel.length ) {
180
-
181
- // Store panel height before hiding
182
- $matchingPanel.data('easytabs', {
183
- position: $matchingPanel.css('position'),
184
- visibility: $matchingPanel.css('visibility')
185
- });
186
-
187
- // Don't hide panel if it's active (allows `getTabs` to be called manually to re-instantiate tab collection)
188
- $matchingPanel.not(settings.panelActiveClass).hide();
189
-
190
- plugin.panels = plugin.panels.add($matchingPanel);
191
-
192
- $tab.data('easytabs').panel = $matchingPanel;
193
-
194
- // Otherwise, remove tab from tabs collection
195
- } else {
196
- plugin.tabs = plugin.tabs.not($tab);
197
- if ('console' in window) {
198
- console.warn('Warning: tab without matching panel for selector \'#' + targetId +'\' removed from set');
199
- }
200
- }
201
- });
202
- };
203
-
204
- // Select tab and fire callback
205
- plugin.selectTab = function($clicked, callback) {
206
- var url = window.location,
207
- hash = url.hash.match(/^[^\?]*/)[0],
208
- $targetPanel = $clicked.parent().data('easytabs').panel,
209
- ajaxUrl = $clicked.parent().data('easytabs').ajax;
210
-
211
- // Tab is collapsible and active => toggle collapsed state
212
- if( settings.collapsible && ! skipUpdateToHash && ($clicked.hasClass(settings.tabActiveClass) || $clicked.hasClass(settings.collapsedClass)) ) {
213
- plugin.toggleTabCollapse($clicked, $targetPanel, ajaxUrl, callback);
214
-
215
- // Tab is not active and panel is not active => select tab
216
- } else if( ! $clicked.hasClass(settings.tabActiveClass) || ! $targetPanel.hasClass(settings.panelActiveClass) ){
217
- activateTab($clicked, $targetPanel, ajaxUrl, callback);
218
-
219
- // Cache is disabled => reload (e.g reload an ajax tab).
220
- } else if ( ! settings.cache ){
221
- activateTab($clicked, $targetPanel, ajaxUrl, callback);
222
- }
223
-
224
- };
225
-
226
- // Toggle tab collapsed state and fire callback
227
- plugin.toggleTabCollapse = function($clicked, $targetPanel, ajaxUrl, callback) {
228
- plugin.panels.stop(true,true);
229
-
230
- if( fire($container,"easytabs:before", [$clicked, $targetPanel, settings]) ){
231
- plugin.tabs.filter("." + settings.tabActiveClass).removeClass(settings.tabActiveClass).children().removeClass(settings.tabActiveClass);
232
-
233
- // If panel is collapsed, uncollapse it
234
- if( $clicked.hasClass(settings.collapsedClass) ){
235
-
236
- // If ajax panel and not already cached
237
- if( ajaxUrl && (!settings.cache || !$clicked.parent().data('easytabs').cached) ) {
238
- $container.trigger('easytabs:ajax:beforeSend', [$clicked, $targetPanel]);
239
-
240
- $targetPanel.load(ajaxUrl, function(response, status, xhr){
241
- $clicked.parent().data('easytabs').cached = true;
242
- $container.trigger('easytabs:ajax:complete', [$clicked, $targetPanel, response, status, xhr]);
243
- });
244
- }
245
-
246
- // Update CSS classes of tab and panel
247
- $clicked.parent()
248
- .removeClass(settings.collapsedClass)
249
- .addClass(settings.tabActiveClass)
250
- .children()
251
- .removeClass(settings.collapsedClass)
252
- .addClass(settings.tabActiveClass);
253
-
254
- $targetPanel
255
- .addClass(settings.panelActiveClass)
256
- [transitions.uncollapse](transitions.speed, settings.transitionUncollapseEasing, function(){
257
- $container.trigger('easytabs:midTransition', [$clicked, $targetPanel, settings]);
258
- if(typeof callback == 'function') callback();
259
- });
260
-
261
- // Otherwise, collapse it
262
- } else {
263
-
264
- // Update CSS classes of tab and panel
265
- $clicked.addClass(settings.collapsedClass)
266
- .parent()
267
- .addClass(settings.collapsedClass);
268
-
269
- $targetPanel
270
- .removeClass(settings.panelActiveClass)
271
- [transitions.collapse](transitions.speed, settings.transitionCollapseEasing, function(){
272
- $container.trigger("easytabs:midTransition", [$clicked, $targetPanel, settings]);
273
- if(typeof callback == 'function') callback();
274
- });
275
- }
276
- }
277
- };
278
-
279
-
280
- // Find tab with target panel matching value
281
- plugin.matchTab = function(hash) {
282
- return plugin.tabs.find("[href='" + hash + "'],[data-target='" + hash + "']").first();
283
- };
284
-
285
- // Find panel with `id` matching value
286
- plugin.matchInPanel = function(hash) {
287
- return ( hash && plugin.validId(hash) ? plugin.panels.filter(':has(' + hash + ')').first() : [] );
288
- };
289
-
290
- // Make sure hash is a valid id value (admittedly strict in that HTML5 allows almost anything without a space)
291
- // but jQuery has issues with such id values anyway, so we can afford to be strict here.
292
- plugin.validId = function(id) {
293
- return id.substr(1).match(/^[A-Za-z]+[A-Za-z0-9\-_:\.].$/);
294
- };
295
-
296
- // Select matching tab when URL hash changes
297
- plugin.selectTabFromHashChange = function() {
298
- var hash = window.location.hash.match(/^[^\?]*/)[0],
299
- $tab = plugin.matchTab(hash),
300
- $panel;
301
-
302
- if ( settings.updateHash ) {
303
-
304
- // If hash directly matches tab
305
- if( $tab.length ){
306
- skipUpdateToHash = true;
307
- plugin.selectTab( $tab );
308
-
309
- } else {
310
- $panel = plugin.matchInPanel(hash);
311
-
312
- // If panel contains element matching hash
313
- if ( $panel.length ) {
314
- hash = '#' + $panel.attr('id');
315
- $tab = plugin.matchTab(hash);
316
- skipUpdateToHash = true;
317
- plugin.selectTab( $tab );
318
-
319
- // If default tab is not active...
320
- } else if ( ! $defaultTab.hasClass(settings.tabActiveClass) && ! settings.cycle ) {
321
-
322
- // ...and hash is blank or matches a parent of the tab container or
323
- // if the last tab (before the hash updated) was one of the other tabs in this container.
324
- if ( hash === '' || plugin.matchTab(lastHash).length || $container.closest(hash).length ) {
325
- skipUpdateToHash = true;
326
- plugin.selectTab( $defaultTabLink );
327
- }
328
- }
329
- }
330
- }
331
- };
332
-
333
- // Cycle through tabs
334
- plugin.cycleTabs = function(tabNumber){
335
- if(settings.cycle){
336
- tabNumber = tabNumber % plugin.tabs.length;
337
- $tab = $( plugin.tabs[tabNumber] ).children("a").first();
338
- skipUpdateToHash = true;
339
- plugin.selectTab( $tab, function() {
340
- setTimeout(function(){ plugin.cycleTabs(tabNumber + 1); }, settings.cycle);
341
- });
342
- }
343
- };
344
-
345
- // Convenient public methods
346
- plugin.publicMethods = {
347
- select: function(tabSelector){
348
- var $tab;
349
-
350
- // Find tab container that matches selector (like 'li#tab-one' which contains tab link)
351
- if ( ($tab = plugin.tabs.filter(tabSelector)).length === 0 ) {
352
-
353
- // Find direct tab link that matches href (like 'a[href="#panel-1"]')
354
- if ( ($tab = plugin.tabs.find("a[href='" + tabSelector + "']")).length === 0 ) {
355
-
356
- // Find direct tab link that matches selector (like 'a#tab-1')
357
- if ( ($tab = plugin.tabs.find("a" + tabSelector)).length === 0 ) {
358
-
359
- // Find direct tab link that matches data-target (lik 'a[data-target="#panel-1"]')
360
- if ( ($tab = plugin.tabs.find("[data-target='" + tabSelector + "']")).length === 0 ) {
361
-
362
- // Find direct tab link that ends in the matching href (like 'a[href$="#panel-1"]', which would also match http://example.com/currentpage/#panel-1)
363
- if ( ($tab = plugin.tabs.find("a[href$='" + tabSelector + "']")).length === 0 ) {
364
-
365
- $.error('Tab \'' + tabSelector + '\' does not exist in tab set');
366
- }
367
- }
368
- }
369
- }
370
- } else {
371
- // Select the child tab link, since the first option finds the tab container (like <li>)
372
- $tab = $tab.children("a").first();
373
- }
374
- plugin.selectTab($tab);
375
- }
376
- };
377
-
378
- // =============================================================
379
- // Private functions
380
- // =============================================================
381
-
382
- // Triggers an event on an element and returns the event result
383
- var fire = function(obj, name, data) {
384
- var event = $.Event(name);
385
- obj.trigger(event, data);
386
- return event.result !== false;
387
- }
388
-
389
- // Add CSS classes to markup (if specified), called by init
390
- var addClasses = function() {
391
- $container.addClass(settings.containerClass);
392
- plugin.tabs.parent().addClass(settings.tabsClass);
393
- plugin.tabs.addClass(settings.tabClass);
394
- plugin.panels.addClass(settings.panelClass);
395
- };
396
-
397
- // Set the default tab, whether from hash (bookmarked) or option,
398
- // called by init
399
- var setDefaultTab = function(){
400
- var hash = window.location.hash.match(/^[^\?]*/)[0],
401
- $selectedTab = plugin.matchTab(hash).parent(),
402
- $panel;
403
-
404
- // If hash directly matches one of the tabs, active on page-load
405
- if( $selectedTab.length === 1 ){
406
- $defaultTab = $selectedTab;
407
- settings.cycle = false;
408
-
409
- } else {
410
- $panel = plugin.matchInPanel(hash);
411
-
412
- // If one of the panels contains the element matching the hash,
413
- // make it active on page-load
414
- if ( $panel.length ) {
415
- hash = '#' + $panel.attr('id');
416
- $defaultTab = plugin.matchTab(hash).parent();
417
-
418
- // Otherwise, make the default tab the one that's active on page-load
419
- } else {
420
- $defaultTab = plugin.tabs.parent().find(settings.defaultTab);
421
- if ( $defaultTab.length === 0 ) {
422
- $.error("The specified default tab ('" + settings.defaultTab + "') could not be found in the tab set ('" + settings.tabs + "') out of " + plugin.tabs.length + " tabs.");
423
- }
424
- }
425
- }
426
-
427
- $defaultTabLink = $defaultTab.children("a").first();
428
-
429
- activateDefaultTab($selectedTab);
430
- };
431
-
432
- // Activate defaultTab (or collapse by default), called by setDefaultTab
433
- var activateDefaultTab = function($selectedTab) {
434
- var defaultPanel,
435
- defaultAjaxUrl;
436
-
437
- if ( settings.collapsible && $selectedTab.length === 0 && settings.collapsedByDefault ) {
438
- $defaultTab
439
- .addClass(settings.collapsedClass)
440
- .children()
441
- .addClass(settings.collapsedClass);
442
-
443
- } else {
444
-
445
- defaultPanel = $( $defaultTab.data('easytabs').panel );
446
- defaultAjaxUrl = $defaultTab.data('easytabs').ajax;
447
-
448
- if ( defaultAjaxUrl && (!settings.cache || !$defaultTab.data('easytabs').cached) ) {
449
- $container.trigger('easytabs:ajax:beforeSend', [$defaultTabLink, defaultPanel]);
450
- defaultPanel.load(defaultAjaxUrl, function(response, status, xhr){
451
- $defaultTab.data('easytabs').cached = true;
452
- $container.trigger('easytabs:ajax:complete', [$defaultTabLink, defaultPanel, response, status, xhr]);
453
- });
454
- }
455
-
456
- $defaultTab.data('easytabs').panel
457
- .show()
458
- .addClass(settings.panelActiveClass);
459
-
460
- $defaultTab
461
- .addClass(settings.tabActiveClass)
462
- .children()
463
- .addClass(settings.tabActiveClass);
464
- }
465
-
466
- // Fire event when the plugin is initialised
467
- $container.trigger("easytabs:initialised", [$defaultTabLink, defaultPanel]);
468
- };
469
-
470
- // Bind tab-select funtionality to namespaced click event, called by
471
- // init
472
- var bindToTabClicks = function() {
473
- plugin.tabs.children("a").bind(settings.bind_str, function(e) {
474
-
475
- // Stop cycling when a tab is clicked
476
- settings.cycle = false;
477
-
478
- // Hash will be updated when tab is clicked,
479
- // don't cause tab to re-select when hash-change event is fired
480
- skipUpdateToHash = false;
481
-
482
- // Select the panel for the clicked tab
483
- plugin.selectTab( $(this) );
484
-
485
- // Don't follow the link to the anchor
486
- e.preventDefault ? e.preventDefault() : e.returnValue = false;
487
- });
488
- };
489
-
490
- // Activate a given tab/panel, called from plugin.selectTab:
491
- //
492
- // * fire `easytabs:before` hook
493
- // * get ajax if new tab is an uncached ajax tab
494
- // * animate out previously-active panel
495
- // * fire `easytabs:midTransition` hook
496
- // * update URL hash
497
- // * animate in newly-active panel
498
- // * update CSS classes for inactive and active tabs/panels
499
- //
500
- // TODO: This could probably be broken out into many more modular
501
- // functions
502
- var activateTab = function($clicked, $targetPanel, ajaxUrl, callback) {
503
- plugin.panels.stop(true,true);
504
-
505
- if( fire($container,"easytabs:before", [$clicked, $targetPanel, settings]) ){
506
- var $visiblePanel = plugin.panels.filter(":visible"),
507
- $panelContainer = $targetPanel.parent(),
508
- targetHeight,
509
- visibleHeight,
510
- heightDifference,
511
- showPanel,
512
- hash = window.location.hash.match(/^[^\?]*/)[0];
513
-
514
- if (settings.animate) {
515
- targetHeight = getHeightForHidden($targetPanel);
516
- visibleHeight = $visiblePanel.length ? setAndReturnHeight($visiblePanel) : 0;
517
- heightDifference = targetHeight - visibleHeight;
518
- }
519
-
520
- // Set lastHash to help indicate if defaultTab should be
521
- // activated across multiple tab instances.
522
- lastHash = hash;
523
-
524
- // TODO: Move this function elsewhere
525
- showPanel = function() {
526
- // At this point, the previous panel is hidden, and the new one will be selected
527
- $container.trigger("easytabs:midTransition", [$clicked, $targetPanel, settings]);
528
-
529
- // Gracefully animate between panels of differing heights, start height change animation *after* panel change if panel needs to contract,
530
- // so that there is no chance of making the visible panel overflowing the height of the target panel
531
- if (settings.animate && settings.transitionIn == 'fadeIn') {
532
- if (heightDifference < 0)
533
- $panelContainer.animate({
534
- height: $panelContainer.height() + heightDifference
535
- }, transitions.halfSpeed ).css({ 'min-height': '' });
536
- }
537
-
538
- if ( settings.updateHash && ! skipUpdateToHash ) {
539
- //window.location = url.toString().replace((url.pathname + hash), (url.pathname + $clicked.attr("href")));
540
- // Not sure why this behaves so differently, but it's more straight forward and seems to have less side-effects
541
- window.location.hash = '#' + $targetPanel.attr('id');
542
- } else {
543
- skipUpdateToHash = false;
544
- }
545
-
546
- $targetPanel
547
- [transitions.show](transitions.speed, settings.transitionInEasing, function(){
548
- $panelContainer.css({height: '', 'min-height': ''}); // After the transition, unset the height
549
- $container.trigger("easytabs:after", [$clicked, $targetPanel, settings]);
550
- // callback only gets called if selectTab actually does something, since it's inside the if block
551
- if(typeof callback == 'function'){
552
- callback();
553
- }
554
- });
555
- };
556
-
557
- if ( ajaxUrl && (!settings.cache || !$clicked.parent().data('easytabs').cached) ) {
558
- $container.trigger('easytabs:ajax:beforeSend', [$clicked, $targetPanel]);
559
- $targetPanel.load(ajaxUrl, function(response, status, xhr){
560
- $clicked.parent().data('easytabs').cached = true;
561
- $container.trigger('easytabs:ajax:complete', [$clicked, $targetPanel, response, status, xhr]);
562
- });
563
- }
564
-
565
- // Gracefully animate between panels of differing heights, start height change animation *before* panel change if panel needs to expand,
566
- // so that there is no chance of making the target panel overflowing the height of the visible panel
567
- if( settings.animate && settings.transitionOut == 'fadeOut' ) {
568
- if( heightDifference > 0 ) {
569
- $panelContainer.animate({
570
- height: ( $panelContainer.height() + heightDifference )
571
- }, transitions.halfSpeed );
572
- } else {
573
- // Prevent height jumping before height transition is triggered at midTransition
574
- $panelContainer.css({ 'min-height': $panelContainer.height() });
575
- }
576
- }
577
-
578
- // Change the active tab *first* to provide immediate feedback when the user clicks
579
- plugin.tabs.filter("." + settings.tabActiveClass).removeClass(settings.tabActiveClass).children().removeClass(settings.tabActiveClass);
580
- plugin.tabs.filter("." + settings.collapsedClass).removeClass(settings.collapsedClass).children().removeClass(settings.collapsedClass);
581
- $clicked.parent().addClass(settings.tabActiveClass).children().addClass(settings.tabActiveClass);
582
-
583
- plugin.panels.filter("." + settings.panelActiveClass).removeClass(settings.panelActiveClass);
584
- $targetPanel.addClass(settings.panelActiveClass);
585
-
586
- if( $visiblePanel.length ) {
587
- $visiblePanel
588
- [transitions.hide](transitions.speed, settings.transitionOutEasing, showPanel);
589
- } else {
590
- $targetPanel
591
- [transitions.uncollapse](transitions.speed, settings.transitionUncollapseEasing, showPanel);
592
- }
593
- }
594
- };
595
-
596
- // Get heights of panels to enable animation between panels of
597
- // differing heights, called by activateTab
598
- var getHeightForHidden = function($targetPanel){
599
-
600
- if ( $targetPanel.data('easytabs') && $targetPanel.data('easytabs').lastHeight ) {
601
- return $targetPanel.data('easytabs').lastHeight;
602
- }
603
-
604
- // this is the only property easytabs changes, so we need to grab its value on each tab change
605
- var display = $targetPanel.css('display'),
606
- outerCloak,
607
- height;
608
-
609
- // Workaround with wrapping height, because firefox returns wrong
610
- // height if element itself has absolute positioning.
611
- // but try/catch block needed for IE7 and IE8 because they throw
612
- // an "Unspecified error" when trying to create an element
613
- // with the css position set.
614
- try {
615
- outerCloak = $('<div></div>', {'position': 'absolute', 'visibility': 'hidden', 'overflow': 'hidden'});
616
- } catch (e) {
617
- outerCloak = $('<div></div>', {'visibility': 'hidden', 'overflow': 'hidden'});
618
- }
619
- height = $targetPanel
620
- .wrap(outerCloak)
621
- .css({'position':'relative','visibility':'hidden','display':'block'})
622
- .outerHeight();
623
-
624
- $targetPanel.unwrap();
625
-
626
- // Return element to previous state
627
- $targetPanel.css({
628
- position: $targetPanel.data('easytabs').position,
629
- visibility: $targetPanel.data('easytabs').visibility,
630
- display: display
631
- });
632
-
633
- // Cache height
634
- $targetPanel.data('easytabs').lastHeight = height;
635
-
636
- return height;
637
- };
638
-
639
- // Since the height of the visible panel may have been manipulated due to interaction,
640
- // we want to re-cache the visible height on each tab change, called
641
- // by activateTab
642
- var setAndReturnHeight = function($visiblePanel) {
643
- var height = $visiblePanel.outerHeight();
644
-
645
- if( $visiblePanel.data('easytabs') ) {
646
- $visiblePanel.data('easytabs').lastHeight = height;
647
- } else {
648
- $visiblePanel.data('easytabs', {lastHeight: height});
649
- }
650
- return height;
651
- };
652
-
653
- // Setup hash-change callback for forward- and back-button
654
- // functionality, called by init
655
- var initHashChange = function(){
656
-
657
- // enabling back-button with jquery.hashchange plugin
658
- // http://benalman.com/projects/jquery-hashchange-plugin/
659
- if(typeof $(window).hashchange === 'function'){
660
- $(window).hashchange( function(){
661
- plugin.selectTabFromHashChange();
662
- });
663
- } else if ($.address && typeof $.address.change === 'function') { // back-button with jquery.address plugin http://www.asual.com/jquery/address/docs/
664
- $.address.change( function(){
665
- plugin.selectTabFromHashChange();
666
- });
667
- }
668
- };
669
-
670
- // Begin cycling if set in options, called by init
671
- var initCycle = function(){
672
- var tabNumber;
673
- if (settings.cycle) {
674
- tabNumber = plugin.tabs.index($defaultTab);
675
- setTimeout( function(){ plugin.cycleTabs(tabNumber + 1); }, settings.cycle);
676
- }
677
- };
678
-
679
-
680
- plugin.init();
681
-
682
- };
683
-
684
- $.fn.easytabs = function(options) {
685
- var args = arguments;
686
-
687
- return this.each(function() {
688
- var $this = $(this),
689
- plugin = $this.data('easytabs');
690
-
691
- // Initialization was called with $(el).easytabs( { options } );
692
- if (undefined === plugin) {
693
- plugin = new $.easytabs(this, options);
694
- $this.data('easytabs', plugin);
695
- }
696
-
697
- // User called public method
698
- if ( options && plugin.publicMethods[options] ){
699
- return plugin.publicMethods[options](Array.prototype.slice.call( args, 1 ));
700
- }
701
- });
702
- };
703
-
704
- })(jQuery);