canvas_link_migrator 1.0.7 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e74a62a030858ee5785138c032c6a03e38f75d05acac287dbded691fa642c593
4
- data.tar.gz: d380a8f3b556d0da9d18e198483e48590e767b481415dd417d808da70d12f5fe
3
+ metadata.gz: db94154546720e46dbc316e28fd6b42ee03c51ee13df32d1601924fd78d158d6
4
+ data.tar.gz: f4a71b858889356c765fcce8360d6266b1b4cd43648cd99eed291287a5229dcb
5
5
  SHA512:
6
- metadata.gz: a8b6f64385cfa820b655f009a327bb207320ffb673ea4228b69f13584550b9da18cb5d79abdf0f3c7c861249ad2a49c20c5fcec0d9372d6299dd832dfe2e18f9
7
- data.tar.gz: 442098e04f4bd979f6c64eb6a83060cd8635f8c1cc7dc28e4688b0516cd9dc4215877352e9c3dde7c55798aa88059987ca1578bfb612e844222099940608ecde
6
+ metadata.gz: f2499b2e3764c0bf76ae4f840345104cae6187e970c4bd8f8965254836387221ae84c96041527824fd27edeff602587afb21f629b062c6e83b74e80defd14997
7
+ data.tar.gz: 49c3e7eb354ea51183ad44706002bb3c92dbc2c98db12371fc420f00eb2616e19fd4b6a8c3e01345d69c7d8b2b81ba71b79341f7ea2802ee8b738b3c56c3a349
@@ -96,12 +96,15 @@ module CanvasLinkMigrator
96
96
 
97
97
  # Replace old style media anchor tags with iframes
98
98
  doc.search("a[id*='media_comment_']").each do |media_node|
99
+ next unless media_node["class"].match('instructure_inline_media_comment')
100
+
99
101
  media_node.name = "iframe"
100
102
  # smallest accepted size for iframe since we don't have the size available for these
101
103
  media_node["style"] = "width: 320px; height: 240px; display: inline-block;"
102
104
  media_node["title"] = media_node.text
103
105
  media_node.child&.remove
104
- media_node["data-media-type"] = media_node["class"].match(/(audio|video)_comment/)[1]
106
+ media_type = media_node["class"].match(/(audio|video)/)&.[](1)
107
+ media_node["data-media-type"] = media_type if media_type
105
108
  media_node["src"] = media_node["href"]
106
109
  media_node.delete("href")
107
110
  media_node["allowfullscreen"] = "allowfullscreen"
@@ -228,6 +228,9 @@ module CanvasLinkMigrator
228
228
  media_id = file.try(:media_object)&.media_id || file["media_entry_id"]
229
229
  node["data-media-id"] = media_id # safe to delete?
230
230
  media_attachment_iframe_url(file["id"], node["data-media-type"])
231
+ elsif rel_path&.match(/\/media_attachments_iframe\/\d+/)
232
+ # media attachment from another course or something
233
+ rel_path
231
234
  elsif node["data-media-id"].present?
232
235
  file = @migration_id_converter.lookup_attachment_by_media_id(node["data-media-id"])
233
236
  file ? media_attachment_iframe_url(file["id"], node["data-media-type"]) : nil
@@ -1,3 +1,3 @@
1
1
  module CanvasLinkMigrator
2
- VERSION = "1.0.7"
2
+ VERSION = "1.0.9"
3
3
  end
@@ -311,6 +311,16 @@ describe CanvasLinkMigrator::ImportedHtmlConverter do
311
311
  expect(@converter.convert_exported_html(test_string)).to eq([converted_string, nil])
312
312
  end
313
313
 
314
+ it "converts source tags to RCE media attachment iframes when link is an unknown media attachment reference (link from a public file in another course)" do
315
+ test_string = %(<video style="width: 400px; height: 225px; display: inline-block;" title="this is a media comment" data-media-type="video" allowfullscreen="allowfullscreen" allow="fullscreen" data-media-id="0_l4l5n0wt"><source src="/media_attachments_iframe/18?type=video" data-media-id="0_l4l5n0wt" data-media-type="video"></video>)
316
+ converted_string = %(<iframe style="width: 400px; height: 225px; display: inline-block;" title="this is a media comment" data-media-type="video" allowfullscreen="allowfullscreen" allow="fullscreen" data-media-id="0_l4l5n0wt" src="/media_attachments_iframe/18?type=video"></iframe>)
317
+ expect(@converter.convert_exported_html(test_string)).to eq([converted_string, nil])
318
+
319
+ test_string = %(<audio style="width: 400px; height: 225px; display: inline-block;" title="this is a media comment" data-media-type="audio" data-media-id="0_l4l5n0wu"><source src="/media_attachments_iframe/19?type=audio" data-media-id="0_l4l5n0wu" data-media-type="audio"></video>)
320
+ converted_string = %(<iframe style="width: 400px; height: 225px; display: inline-block;" title="this is a media comment" data-media-type="audio" data-media-id="0_l4l5n0wu" src="/media_attachments_iframe/19?type=audio"></iframe>)
321
+ expect(@converter.convert_exported_html(test_string)).to eq([converted_string, nil])
322
+ end
323
+
314
324
  it "converts course copy style media attachmet iframe links" do
315
325
  test_string = %(<video style="width: 400px; height: 225px; display: inline-block;" title="this is a media comment" data-media-type="video" allowfullscreen="allowfullscreen" allow="fullscreen" data-media-id="m-yodawg"><source src="$CANVAS_COURSE_REFERENCE$/file_ref/I?media_attachment=true&type=video" data-media-id="m-yodawg" data-media-type="video"></video>)
316
326
  converted_string = %(<iframe style="width: 400px; height: 225px; display: inline-block;" title="this is a media comment" data-media-type="video" allowfullscreen="allowfullscreen" allow="fullscreen" data-media-id="m-yodawg" src="/media_attachments_iframe/9?type=video&embedded=true"></iframe>)
@@ -51,4 +51,17 @@ describe CanvasLinkMigrator::LinkParser do
51
51
  expect{ parser.convert_link(doc.at_css('a'), "href", "wiki_page", "migrationid", "") }.not_to raise_error
52
52
  end
53
53
  end
54
+
55
+ describe "convert" do
56
+ it "does not change media anchor tags into iframes if they don't have inline_media_comment in the class" do
57
+ doc = Nokogiri::HTML5.fragment(%Q(<p><a id="media_comment_m-5HHT5LqZqPf7qhEJ7PbKtehCiunxM4BB" class=" instructure_video_link instructure_file_link" title="00-Personal Intro.m4v" href="https://xu.instructure.com/courses/83206/files/12176377/download?wrap=1" target="" data-api-endpoint="https://xu.instructure.com/api/v1/courses/83206/files/12176377" data-api-returntype="File">Click here to watch personal introduction</a></p>))
58
+ parser.convert(doc.to_html, "type", "lookup_id", "field")
59
+ expect(doc.to_html).to match(%Q(<p><a id="media_comment_m-5HHT5LqZqPf7qhEJ7PbKtehCiunxM4BB" class=" instructure_video_link instructure_file_link" title="00-Personal Intro.m4v" href="https://xu.instructure.com/courses/83206/files/12176377/download?wrap=1" target="" data-api-endpoint="https://xu.instructure.com/api/v1/courses/83206/files/12176377" data-api-returntype="File">Click here to watch personal introduction</a></p>))
60
+ end
61
+
62
+ it "does not crash if it can't find a video/audio_comment class name" do
63
+ doc = Nokogiri::HTML5.fragment(%Q(<a id="media_comment_m-4uoGqVdEqXhpqu2ZMytHSy9XMV73aQ7E" class="instructure_inline_media_comment" data-media_comment_type="video" data-alt=""></a>))
64
+ expect{ parser.convert(doc.to_html, "type", "lookup_id", "field") }.not_to raise_error
65
+ end
66
+ end
54
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_link_migrator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mysti Lilla
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2024-03-29 00:00:00.000000000 Z
14
+ date: 2024-05-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport