Skip to content
Merged

V2.9.2 #7818

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## [v2.9.2]

### 🐛 Bug fixes
- Fixed display of inline images in notebook HTML rendering (#7816)

## [v2.9.1]

### 🛡️ Security
Expand Down
2 changes: 1 addition & 1 deletion app/MARKUS_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VERSION=v2.9.1,PATCH_LEVEL=DEV
VERSION=v2.9.2,PATCH_LEVEL=DEV
39 changes: 31 additions & 8 deletions app/controllers/submissions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,21 @@ class SubmissionsController < ApplicationController
p.frame_src(*PERMITTED_IFRAME_SRC)
end

# Support inline images in rendered notebooks
content_security_policy only: [:download_file] do |p|
file = select_file
if params[:show_in_browser] && render_as_html?(file: file)
p.img_src :self, :data
end
end

# Support inline images in rendered notebooks
content_security_policy only: [:download] do |p|
if params[:preview] == 'true' && render_as_html?(file_type: FileHelper.get_file_type(params[:file_name]))
p.img_src :self, :data
end
end

def index
respond_to do |format|
format.json do
Expand Down Expand Up @@ -482,10 +497,7 @@ def download_file
return head :not_found
end

nbconvert_enabled = Rails.application.config.nbconvert_enabled
rmd_convert_enabled = Rails.application.config.rmd_convert_enabled
if params[:show_in_browser] == 'true' &&
((file.is_pynb? && nbconvert_enabled) || (file.is_rmd? && rmd_convert_enabled))
if params[:show_in_browser] == 'true' && render_as_html?(file: file)
html_content file: file
return
end
Expand Down Expand Up @@ -559,8 +571,6 @@ def download_file_zip

def download
preview = params[:preview] == 'true'
nbconvert_enabled = Rails.application.config.nbconvert_enabled
rmd_convert_enabled = Rails.application.config.rmd_convert_enabled
file_type = FileHelper.get_file_type(params[:file_name])
@assignment = Assignment.find(params[:assignment_id])
# find_appropriate_grouping can be found in SubmissionsHelper
Expand All @@ -575,8 +585,7 @@ def download
revision_identifier = params[:revision_identifier]
path = params[:path] || '/'

if ((file_type == 'jupyter-notebook' && nbconvert_enabled) \
|| (file_type == 'rmarkdown' && rmd_convert_enabled)) && preview
if preview && render_as_html?(file_type: file_type)
html_content grouping: @grouping,
revision_identifier: revision_identifier,
file_dir: path,
Expand Down Expand Up @@ -1065,4 +1074,18 @@ def select_file
def from_codeviewer_param
params[:from_codeviewer] == 'true'
end

def render_as_html?(file: nil, file_type: nil)
nbconvert_enabled = Rails.application.config.nbconvert_enabled
rmd_convert_enabled = Rails.application.config.rmd_convert_enabled

if file.present?
(file.is_pynb? && nbconvert_enabled) || (file.is_rmd? && rmd_convert_enabled)
elsif file_type.present?
(file_type == 'jupyter-notebook' && nbconvert_enabled) \
|| (file_type == 'rmarkdown' && rmd_convert_enabled)
else
false
end
end
end