Skip to content

Commit 6d9ea9c

Browse files
authored
Merge pull request #64 from learningtapestry/43-fix-lesson-metadata-specs
(#43) Complete new-spec lesson-metadata migration in resource pipeline
2 parents 71138b5 + bc58fda commit 6d9ea9c

17 files changed

Lines changed: 210 additions & 57 deletions

File tree

app/controllers/documents_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ class DocumentsController < Admin::AdminController
1414
def preview_pdf
1515
link_keys = %w(preview pdf)
1616

17-
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @document.preview_links.dig(*link_keys)).present?
18-
return redirect_to url
17+
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @document.preview_links.dig(*link_keys, "url")).present?
18+
return redirect_to url, allow_other_host: true
1919
end
2020

2121
job_options = {
@@ -34,8 +34,8 @@ def preview_pdf
3434
def preview_gdoc
3535
link_keys = %w(preview gdoc)
3636

37-
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @document.preview_links.dig(*link_keys)).present?
38-
return redirect_to url
37+
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @document.preview_links.dig(*link_keys, "url")).present?
38+
return redirect_to url, allow_other_host: true
3939
end
4040

4141
job_options = {

app/controllers/materials_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class MaterialsController < Admin::AdminController
88
def preview_pdf
99
link_keys = %w(preview pdf)
1010

11-
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @material.preview_links.dig(*link_keys)).present?
12-
return redirect_to url
11+
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @material.preview_links.dig(*link_keys, "url")).present?
12+
return redirect_to url, allow_other_host: true
1313
end
1414

1515
job_options = {
@@ -28,8 +28,8 @@ def preview_pdf
2828
def preview_gdoc
2929
link_keys = %w(preview gdoc)
3030

31-
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @material.preview_links.dig(*link_keys)).present?
32-
return redirect_to url
31+
if !ENV.fetch("FORCE_PREVIEW_GENERATION", false) && (url = @material.preview_links.dig(*link_keys, "url")).present?
32+
return redirect_to url, allow_other_host: true
3333
end
3434

3535
job_options = {

app/models/document.rb

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,7 @@ def tmp_link(key)
115115
def clean_curriculum_metadata
116116
return unless metadata.present?
117117

118-
# downcase subjects
119118
metadata["subject"] = metadata["subject"]&.downcase
120-
121-
# to store only the lesson number
122-
# or alphanumeric - needed by OPR type, see https://github.com/learningtapestry/unbounded/issues/557
123-
lesson = metadata["lesson"]
124-
metadata["lesson"] = lesson.match(/lesson (\w+)/i).try(:[], 1) || lesson if lesson.present?
125119
end
126120

127121
def destroy_connected_resource

app/services/html_sanitizer.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ def default_config
121121
"tr" => %w(style)
122122
},
123123
protocols: {
124-
"a" => { "href" => ["http", "https", :relative] }
124+
"a" => { "href" => ["http", "https", :relative] },
125+
"img" => { "src" => ["data", "http", "https", :relative] }
125126
},
126127
css: {
127128
properties: %w(background-color border-bottom-width border-left-width border-right-width border-top-width
@@ -233,8 +234,10 @@ def fix_external_target(node)
233234
end
234235

235236
def fix_inline_img(node)
236-
# TODO: test if it's working fine with all inline images
237-
node["src"] = node["src"].gsub!(/%(20|0A)/, "") if node["src"].to_s.start_with?("data:")
237+
return unless node["src"].to_s.start_with?("data:")
238+
239+
# `gsub!` returns nil when nothing matches — guard against wiping a clean src.
240+
node["src"] = node["src"].gsub(/%(20|0A)/, "")
238241
end
239242

240243
def fix_googlechart_img(node)

app/services/section_resource_upsert_service.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ def context
3535

3636
def context_metadata
3737
{
38-
description: description_summary,
39-
grade: metadata[:grade].to_s,
40-
section: metadata[:section_number].to_s,
41-
subject: metadata[:subject],
42-
title:,
43-
unit: metadata[:unit_id].to_s
38+
"description" => description_summary,
39+
"grade" => metadata[:grade].to_s,
40+
"section-number" => metadata[:section_number].to_s,
41+
"subject" => metadata[:subject],
42+
"title" => title,
43+
"unit-id" => metadata[:unit_id].to_s
4444
}
4545
end
4646

app/services/unit_resource_upsert_service.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ def context
3434

3535
def context_metadata
3636
{
37-
description: description_summary,
38-
grade: metadata[:grade],
39-
subject: metadata[:subject],
40-
title:,
41-
unit: short_title
37+
"description" => description_summary,
38+
"grade" => metadata[:grade],
39+
"subject" => metadata[:subject],
40+
"title" => title,
41+
"unit-id" => short_title
4242
}
4343
end
4444

app/views/admin/documents/_header.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<div class="o-title u-text--uppercase">
66
<span class="o-title__type"><%= document.short_title %></span>
77
</div>
8-
<h1><%= document.title %></h1>
8+
<h1><%= document.lesson_title %></h1>
99
<div class="u-txt--teaser o-social-sharing__teaser">
1010
<%= raw(document.teaser) %>
1111
</div>

app/views/documents/export_gdoc.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<% set_page_title @document.title.html_safe %>
1+
<% set_page_title @document.lesson_title.html_safe %>
22

33
<style >
44
<%= raw(@document.css_styles) %>

app/views/documents/gdoc/_header.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<p class="title u-txt--title"><span><%= document.title %></span></p>
1+
<p class="title u-txt--title"><span><%= document.lesson_title %></span></p>
22
<% if document.teaser.present? %>
33
<p class="subtitle u-txt--header-teaser">
44
<%= raw document.teaser %>

lib/doc_template/tables/lms_materials.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ class LmsMaterials < Base
88

99
# Parses the first lms-materials table found in the fragment.
1010
# Returns an Array of { "material-id" => ..., "access-type" => ... } hashes.
11+
# Accepts both bare ("lms-materials") and bracketed ("[lms-materials]") header forms.
1112
def parse(fragment, *_args)
12-
el = fragment.at_xpath(xpath_meta_headers, XpathFunctions.new)
13+
el = fragment.at_xpath(".//table/*/tr[1]/td[1][contains(., '#{self.class::HEADER_LABEL}')]")
1314
return [] unless el
1415

1516
table = self.class.flatten_table(el.ancestors("table").first)

0 commit comments

Comments
 (0)