lcms-engine 0.1.4 → 0.2.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +11 -15
- data/Dockerfile +0 -1
- data/README.md +13 -4
- data/app/assets/javascripts/lcms/engine/admin/application.js +2 -6
- data/app/assets/javascripts/lcms/engine/application.js +2 -2
- data/app/assets/javascripts/lcms/engine/initializers/{google_analytics.js → analytics.js} +0 -0
- data/app/assets/javascripts/lcms/engine/initializers/lessons.js +1 -1
- data/app/assets/stylesheets/lcms/engine/admin.scss +1 -1
- data/app/assets/stylesheets/lcms/engine/application.scss +4 -3
- data/app/assets/stylesheets/lcms/engine/components/_curriculum-cards.scss +1 -1
- data/app/assets/stylesheets/lcms/engine/components/_curriculum-map.scss +4 -4
- data/app/assets/stylesheets/lcms/engine/components/_media-resources.scss +1 -1
- data/app/assets/stylesheets/lcms/engine/components/_panel-dsc.scss +1 -1
- data/app/assets/stylesheets/lcms/engine/components/_resource.scss +6 -6
- data/app/assets/stylesheets/lcms/engine/pages/_home.scss +4 -4
- data/app/assets/stylesheets/lcms/engine/pdf.scss +1 -1
- data/app/assets/stylesheets/lcms/engine/themes/_settings.scss +419 -116
- data/app/assets/stylesheets/lcms/engine/utils/_mixins.scss +2 -2
- data/app/assets/stylesheets/lcms/engine/vendors/foundation_and_overrides-pdf.scss +0 -1
- data/app/assets/stylesheets/lcms/engine/vendors/foundation_and_overrides.scss +13 -2
- data/app/controllers/lcms/engine/admin/admin_controller.rb +0 -2
- data/app/controllers/lcms/engine/admin/association_picker_controller.rb +10 -9
- data/app/controllers/lcms/engine/admin/documents_controller.rb +17 -14
- data/app/controllers/lcms/engine/admin/materials_controller.rb +19 -23
- data/app/controllers/lcms/engine/admin/resource_picker_controller.rb +2 -2
- data/app/controllers/lcms/engine/admin/resources_controller.rb +45 -79
- data/app/controllers/lcms/engine/admin/sketch_compilers_controller.rb +2 -2
- data/app/controllers/lcms/engine/application_controller.rb +0 -15
- data/app/entities/lcms/engine/pagination.rb +14 -5
- data/app/forms/lcms/engine/material_form.rb +0 -1
- data/app/helpers/lcms/engine/application_helper.rb +2 -6
- data/app/helpers/lcms/engine/view_helper.rb +1 -3
- data/app/interactors/lcms/engine/explore_curriculum_interactor.rb +1 -1
- data/app/javascript/components/admin/ImportStatus.jsx +1 -1
- data/app/javascript/components/admin/association-picker/AssociationPickerResults.jsx +1 -1
- data/app/javascript/components/admin/picker/pickerWindowWrapper.jsx +0 -1
- data/app/models/lcms/engine/access_code.rb +1 -1
- data/app/models/lcms/engine/application_record.rb +9 -0
- data/app/models/lcms/engine/author.rb +1 -1
- data/app/models/lcms/engine/copyright_attribution.rb +1 -1
- data/app/models/lcms/engine/curriculum.rb +1 -1
- data/app/models/lcms/engine/document.rb +3 -3
- data/app/models/lcms/engine/document_bundle.rb +2 -2
- data/app/models/lcms/engine/document_part.rb +1 -1
- data/app/models/lcms/engine/download.rb +3 -3
- data/app/models/lcms/engine/download_category.rb +1 -1
- data/app/models/lcms/engine/leadership_post.rb +1 -1
- data/app/models/lcms/engine/material.rb +2 -2
- data/app/models/lcms/engine/material_part.rb +1 -1
- data/app/models/lcms/engine/page.rb +1 -1
- data/app/models/lcms/engine/reading_assignment_author.rb +1 -1
- data/app/models/lcms/engine/reading_assignment_text.rb +1 -1
- data/app/models/lcms/engine/resource.rb +4 -12
- data/app/models/lcms/engine/resource_additional_resource.rb +1 -1
- data/app/models/lcms/engine/resource_download.rb +1 -1
- data/app/models/lcms/engine/resource_reading_assignment.rb +1 -1
- data/app/models/lcms/engine/resource_related_resource.rb +1 -1
- data/app/models/lcms/engine/resource_standard.rb +1 -1
- data/app/models/lcms/engine/search/elastic_search_document.rb +1 -1
- data/app/models/lcms/engine/settings.rb +1 -1
- data/app/models/lcms/engine/social_thumbnail.rb +1 -1
- data/app/models/lcms/engine/staff_member.rb +1 -1
- data/app/models/lcms/engine/standard.rb +1 -1
- data/app/models/lcms/engine/standard_link.rb +1 -1
- data/app/models/lcms/engine/user.rb +3 -3
- data/app/presenters/lcms/engine/content_presenter.rb +1 -1
- data/app/queries/lcms/engine/admin_documents_query.rb +1 -1
- data/app/queries/lcms/engine/admin_materials_query.rb +1 -1
- data/app/serializers/lcms/engine/association_item_serializer.rb +0 -1
- data/app/serializers/lcms/engine/curriculum_resource_serializer.rb +0 -2
- data/app/serializers/lcms/engine/document_material_serializer.rb +0 -1
- data/app/serializers/lcms/engine/material_serializer.rb +0 -1
- data/app/serializers/lcms/engine/previews_material_serializer.rb +0 -1
- data/app/serializers/lcms/engine/resource_details_serializer.rb +0 -2
- data/app/serializers/lcms/engine/resource_instruction_serializer.rb +0 -2
- data/app/serializers/lcms/engine/resource_picker_serializer.rb +0 -2
- data/app/serializers/lcms/engine/resource_serializer.rb +0 -2
- data/app/serializers/lcms/engine/search_document_serializer.rb +0 -2
- data/app/services/lcms/engine/document_build_service.rb +1 -0
- data/app/services/lcms/engine/html_sanitizer.rb +2 -2
- data/app/services/lcms/engine/s3_service.rb +1 -1
- data/app/uploaders/social_thumbnail_uploader.rb +0 -4
- data/app/views/layouts/lcms/engine/admin.html.erb +1 -1
- data/app/views/lcms/engine/admin/access_codes/index.html.erb +10 -8
- data/app/views/lcms/engine/admin/documents/index.html.erb +2 -2
- data/app/views/lcms/engine/admin/materials/index.html.erb +2 -2
- data/app/views/lcms/engine/admin/pages/index.html.erb +3 -3
- data/app/views/lcms/engine/admin/standards/index.html.erb +9 -7
- data/app/views/lcms/engine/admin/users/index.html.erb +16 -14
- data/app/views/lcms/engine/resources/_children_list.html.erb +1 -1
- data/app/views/lcms/engine/shared/_social_sharing_menu.html.erb +4 -4
- data/config/initializers/carrier_wave.rb +0 -1
- data/config/locales/admin/en.yml +0 -2
- data/db/migrate/20200422130652_add_reimported_at_to_documents.rb +7 -0
- data/lcms-engine.gemspec +73 -87
- data/lib/doc_template/document.rb +2 -2
- data/lib/doc_template/tables/activity.rb +2 -1
- data/lib/doc_template/tables/base.rb +0 -4
- data/lib/doc_template/tables/section.rb +2 -1
- data/lib/doc_template/tags/link_tag.rb +1 -1
- data/lib/doc_template/xpath_functions.rb +1 -3
- data/lib/document_exporter/base.rb +1 -2
- data/lib/document_exporter/docx.rb +0 -1
- data/lib/generators/lcms/engine/install/install_generator.rb +1 -4
- data/lib/generators/lcms/engine/install/templates/config/lcms.yml +1 -1
- data/lib/lcms/engine/engine.rb +0 -16
- data/lib/lcms/engine/migration.rb +2 -0
- data/lib/lcms/engine/version.rb +1 -1
- data/lib/lt/lcms/metadata/context.rb +7 -5
- data/spec/controllers/admin/admin_controller_spec.rb +1 -1
- data/spec/controllers/admin/association_picker_controller_spec.rb +2 -2
- data/spec/controllers/admin/curriculums_controller_spec.rb +1 -2
- data/spec/controllers/admin/documents_controller_spec.rb +12 -41
- data/spec/controllers/admin/materials_controller_spec.rb +7 -67
- data/spec/controllers/admin/pages_controller_spec.rb +2 -2
- data/spec/controllers/admin/resource_bulk_edit_controller_spec.rb +3 -3
- data/spec/controllers/admin/sketch_compilers_controller_spec.rb +5 -4
- data/spec/controllers/admin/standards_controller_spec.rb +12 -9
- data/spec/controllers/admin/users_controller_spec.rb +2 -2
- data/spec/controllers/admin/welcome_controller_spec.rb +1 -1
- data/spec/controllers/documents_controller_spec.rb +3 -3
- data/spec/controllers/enhance_instruction_controller_spec.rb +1 -1
- data/spec/controllers/explore_curriculum_controller_spec.rb +2 -2
- data/spec/controllers/find_lessons_controller_spec.rb +1 -1
- data/spec/controllers/pages_controller_spec.rb +9 -12
- data/spec/controllers/resources_controller_spec.rb +2 -2
- data/spec/controllers/search_controller_spec.rb +1 -1
- data/spec/dummy/bin/spring +2 -2
- data/spec/dummy/config/application.rb +3 -3
- data/spec/dummy/config/environments/test.rb +2 -5
- data/spec/dummy/config/lcms-admin.yml +3 -3
- data/spec/dummy/config/webpack/development.js +5 -0
- data/spec/dummy/config/webpack/environment.js +3 -0
- data/spec/dummy/config/webpack/production.js +5 -0
- data/spec/dummy/config/webpack/test.js +5 -0
- data/spec/dummy/config/webpacker.yml +96 -0
- data/spec/dummy/db/schema.rb +251 -275
- data/spec/factories/document_bundles.rb +1 -1
- data/spec/factories/standard_links.rb +2 -0
- data/spec/factories/taggings.rb +1 -0
- data/spec/models/document_bundle_spec.rb +0 -6
- data/spec/models/resource_spec.rb +0 -33
- data/spec/rails_helper.rb +0 -1
- data/spec/requests/admin/curriculum_spec.rb +17 -0
- data/spec/services/document_build_service_spec.rb +76 -62
- data/spec/services/html_sanitizer_spec.rb +0 -34
- data/spec/support/capybara.rb +1 -3
- data/spec/support/concerns/searchable.rb +2 -0
- data/spec/support/database_cleaner.rb +5 -16
- data/spec/support/devise.rb +2 -0
- data/yarn.lock +442 -530
- metadata +183 -439
- data/Gemfile.lock +0 -752
- data/config/initializers/active_record.rb +0 -3
- data/spec/controllers/admin/resources_controller_spec.rb +0 -84
- data/spec/fixtures/tables/activity-metadata-3activities.html +0 -1
- data/spec/fixtures/tables/document-metadata-2paragpraphs.html +0 -97
- data/spec/fixtures/tables/document-metadata-2spans.html +0 -96
- data/spec/fixtures/tables/document-metadata.html +0 -96
- data/spec/lib/doc_template/tables/activity_spec.rb +0 -28
- data/spec/lib/doc_template/tables/metadata_spec.rb +0 -40
- data/spec/lib/doc_template/tables/shared_examples/remove_table.rb +0 -11
- data/spec/support/fixture_helper.rb +0 -16
@@ -3,15 +3,16 @@
|
|
3
3
|
module Lcms
|
4
4
|
module Engine
|
5
5
|
class Pagination
|
6
|
+
PARAMS_DEFAULT = { page: 1, per_page: 20, order: :asc }.freeze
|
7
|
+
|
6
8
|
def initialize(params)
|
7
|
-
@params = params
|
9
|
+
@params = handle_params params
|
8
10
|
end
|
9
11
|
|
10
12
|
def params(strict: false)
|
11
13
|
@pagination_params ||= begin
|
12
|
-
|
13
|
-
|
14
|
-
pagination = default_params.merge(expected_params)
|
14
|
+
expected_params = @params.slice(*PARAMS_DEFAULT.keys).symbolize_keys
|
15
|
+
pagination = PARAMS_DEFAULT.merge(expected_params)
|
15
16
|
|
16
17
|
pagination[:page] = pagination[:page].to_i
|
17
18
|
pagination[:per_page] = pagination[:per_page].to_i
|
@@ -37,7 +38,15 @@ module Lcms
|
|
37
38
|
total_hits: resources.total_entries
|
38
39
|
}
|
39
40
|
options[:each_serializer] = serializer
|
40
|
-
ActiveModel::
|
41
|
+
ActiveModel::Serializer::CollectionSerializer.new(resources, options).as_json
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def handle_params(params)
|
47
|
+
return params unless params.is_a?(ActionController::Parameters)
|
48
|
+
|
49
|
+
params.permit(*PARAMS_DEFAULT.keys).to_h
|
41
50
|
end
|
42
51
|
end
|
43
52
|
end
|
@@ -8,12 +8,8 @@ module Lcms
|
|
8
8
|
include ViewHelper
|
9
9
|
include ::Webpacker::Helper
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
entries = names
|
14
|
-
.map { |name| Lcms::Engine.webpacker.manifest.lookup!(name, type: :javascript) }
|
15
|
-
.flatten
|
16
|
-
javascript_include_tag(*entries, **options)
|
11
|
+
def current_webpacker_instance
|
12
|
+
Lcms::Engine.webpacker
|
17
13
|
end
|
18
14
|
end
|
19
15
|
end
|
@@ -3,9 +3,7 @@
|
|
3
3
|
module Lcms
|
4
4
|
module Engine
|
5
5
|
module ViewHelper # rubocop:disable Metrics/ModuleLength
|
6
|
-
ENABLE_BASE64_CACHING = ActiveRecord::
|
7
|
-
ENV.fetch('ENABLE_BASE64_CACHING', true)
|
8
|
-
)
|
6
|
+
ENABLE_BASE64_CACHING = ActiveRecord::Type::Boolean.new.cast ENV.fetch('ENABLE_BASE64_CACHING', true)
|
9
7
|
|
10
8
|
def add_class_for_path(link_path, klass, klass_prefix = nil)
|
11
9
|
[
|
@@ -75,7 +75,7 @@ class ImportStatus extends React.Component {
|
|
75
75
|
}
|
76
76
|
|
77
77
|
spinner() {
|
78
|
-
return <span className="o-adm-materials__spinner button primary u-margin-bottom--zero"><i className="
|
78
|
+
return <span className="o-adm-materials__spinner button primary u-margin-bottom--zero"><i className="fas fa-spin fa-spinner" /></span>
|
79
79
|
}
|
80
80
|
|
81
81
|
render() {
|
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
module Lcms
|
4
4
|
module Engine
|
5
|
-
class Document <
|
5
|
+
class Document < ApplicationRecord
|
6
6
|
include Partable
|
7
7
|
GOOGLE_URL_PREFIX = 'https://docs.google.com/document/d'
|
8
8
|
|
9
|
-
belongs_to :resource
|
9
|
+
belongs_to :resource, optional: true
|
10
10
|
has_many :document_parts, as: :renderer, dependent: :delete_all
|
11
11
|
has_and_belongs_to_many :materials
|
12
12
|
|
@@ -55,7 +55,7 @@ module Lcms
|
|
55
55
|
.joins('LEFT JOIN materials as m on m.id = links.key::integer')
|
56
56
|
.where('((links.value -> ?)::text IS NULL) OR ((links.value -> ?)::text IS NULL)', 'gdoc', 'url')
|
57
57
|
.where.not("m.metadata ->> 'type' = ?", 'pdf')
|
58
|
-
.
|
58
|
+
.distinct
|
59
59
|
}
|
60
60
|
|
61
61
|
scope :with_updated_materials, lambda {
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Lcms
|
4
4
|
module Engine
|
5
|
-
class DocumentBundle <
|
5
|
+
class DocumentBundle < ApplicationRecord
|
6
6
|
CATEGORIES = %w(full tm sm).freeze
|
7
7
|
CONTENT_TYPES = %w(pdf gdoc).freeze
|
8
8
|
|
@@ -10,7 +10,7 @@ module Lcms
|
|
10
10
|
|
11
11
|
mount_uploader :file, DocumentBundleUploader
|
12
12
|
|
13
|
-
validates :
|
13
|
+
validates :category, presence: true
|
14
14
|
validates :category, inclusion: { in: CATEGORIES }
|
15
15
|
validates :content_type, inclusion: { in: CONTENT_TYPES }
|
16
16
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Lcms
|
4
4
|
module Engine
|
5
|
-
class Download <
|
5
|
+
class Download < ApplicationRecord
|
6
6
|
CONTENT_TYPES = {
|
7
7
|
zip: 'application/zip',
|
8
8
|
pdf: 'application/pdf',
|
@@ -17,8 +17,8 @@ module Lcms
|
|
17
17
|
alias_attribute :file, :filename
|
18
18
|
|
19
19
|
validates :title, presence: true
|
20
|
-
validates :file, presence: true, if:
|
21
|
-
validates :url, presence: true, if:
|
20
|
+
validates :file, presence: true, if: -> { url.nil? }
|
21
|
+
validates :url, presence: true, if: -> { file.nil? }
|
22
22
|
|
23
23
|
before_save :update_metadata
|
24
24
|
|
@@ -4,7 +4,7 @@ require 'pg_search'
|
|
4
4
|
|
5
5
|
module Lcms
|
6
6
|
module Engine
|
7
|
-
class Material <
|
7
|
+
class Material < ApplicationRecord
|
8
8
|
include PgSearch::Model
|
9
9
|
include Partable
|
10
10
|
|
@@ -12,7 +12,7 @@ module Lcms
|
|
12
12
|
validates :identifier, uniqueness: true
|
13
13
|
|
14
14
|
has_many :document_parts, as: :renderer, dependent: :delete_all
|
15
|
-
has_and_belongs_to_many :documents
|
15
|
+
has_and_belongs_to_many :documents, optional: true
|
16
16
|
|
17
17
|
store_accessor :metadata
|
18
18
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Lcms
|
4
4
|
module Engine
|
5
|
-
class Resource <
|
5
|
+
class Resource < ApplicationRecord
|
6
6
|
enum resource_type: {
|
7
7
|
resource: 1,
|
8
8
|
podcast: 2,
|
@@ -26,10 +26,10 @@ module Lcms
|
|
26
26
|
acts_as_taggable_on :content_sources, :download_types, :resource_types, :tags, :topics
|
27
27
|
has_closure_tree order: :level_position, dependent: :destroy, numeric_order: true
|
28
28
|
|
29
|
-
belongs_to :parent, class_name: 'Lcms::Engine::Resource', foreign_key: 'parent_id'
|
29
|
+
belongs_to :parent, class_name: 'Lcms::Engine::Resource', foreign_key: 'parent_id', optional: true
|
30
30
|
|
31
|
-
belongs_to :author
|
32
|
-
belongs_to :curriculum
|
31
|
+
belongs_to :author, optional: true
|
32
|
+
belongs_to :curriculum, optional: true
|
33
33
|
|
34
34
|
# Additional resources
|
35
35
|
has_many :resource_additional_resources, dependent: :destroy
|
@@ -271,14 +271,6 @@ module Lcms
|
|
271
271
|
unit? && document_bundles.any?
|
272
272
|
end
|
273
273
|
|
274
|
-
def add_grade_author(author)
|
275
|
-
grade = grade? ? self : ancestors.detect(&:grade?)
|
276
|
-
raise 'Grade not found for this resource' unless grade
|
277
|
-
|
278
|
-
grade.author_id = author.is_a?(Integer) ? author : author.id
|
279
|
-
grade.save
|
280
|
-
end
|
281
|
-
|
282
274
|
def self_and_ancestors_not_persisted
|
283
275
|
# during create we can't call self_and_ancestors directly on the resource
|
284
276
|
# because this query uses the associations on resources_hierarchies
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Lcms
|
4
4
|
module Engine
|
5
|
-
class ResourceAdditionalResource <
|
5
|
+
class ResourceAdditionalResource < ApplicationRecord
|
6
6
|
belongs_to :resource
|
7
7
|
belongs_to :additional_resource, class_name: 'Resource', foreign_key: 'additional_resource_id'
|
8
8
|
end
|
@@ -43,7 +43,7 @@ module Lcms
|
|
43
43
|
repository.search query
|
44
44
|
end
|
45
45
|
|
46
|
-
# this is necessary for the ActiveModel::
|
46
|
+
# this is necessary for the ActiveModel::Serializer::CollectionSerializer#as_json method to work
|
47
47
|
# (used on the Pagination#serialize_with_pagination)
|
48
48
|
# NOTE: https://github.com/rails-api/active_model_serializers/issues/891
|
49
49
|
def read_attribute_for_serialization(key)
|