summaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2017-04-21 13:33:48 -0500
committerDouwe Maan <douwe@selenight.nl>2017-04-27 12:23:26 -0500
commita7fd95cd22062f18474ee038d72fa9e1139a1a84 (patch)
tree030507d4479a93eaf0fa737d31b778d9872dadc9 /app/views
parentc69a0779fb499fb3c8352eede0b5c6d7bb1117d1 (diff)
downloadgitlab-ce-a7fd95cd22062f18474ee038d72fa9e1139a1a84.tar.gz
Render viewer error synchronously so that 'view the source' link will work
Diffstat (limited to 'app/views')
-rw-r--r--app/views/projects/blob/_content.html.haml4
-rw-r--r--app/views/projects/blob/_viewer.html.haml19
-rw-r--r--app/views/projects/blob/_viewer_switcher.html.haml6
-rw-r--r--app/views/projects/blob/_viewer_wrapper.html.haml8
4 files changed, 19 insertions, 18 deletions
diff --git a/app/views/projects/blob/_content.html.haml b/app/views/projects/blob/_content.html.haml
index cd4d85591ae..7afbd85cd6d 100644
--- a/app/views/projects/blob/_content.html.haml
+++ b/app/views/projects/blob/_content.html.haml
@@ -2,7 +2,7 @@
- rich_viewer = blob.rich_viewer
- rich_viewer_active = rich_viewer && params[:viewer] != 'simple'
-= render 'projects/blob/viewer_wrapper', viewer: simple_viewer, hidden: rich_viewer_active
+= render 'projects/blob/viewer', viewer: simple_viewer, hidden: rich_viewer_active
- if rich_viewer
- = render 'projects/blob/viewer_wrapper', viewer: rich_viewer, hidden: !rich_viewer_active
+ = render 'projects/blob/viewer', viewer: rich_viewer, hidden: !rich_viewer_active
diff --git a/app/views/projects/blob/_viewer.html.haml b/app/views/projects/blob/_viewer.html.haml
index 19f1d1251ae..e0cfe39d1ec 100644
--- a/app/views/projects/blob/_viewer.html.haml
+++ b/app/views/projects/blob/_viewer.html.haml
@@ -1,5 +1,14 @@
-- if error = viewer.render_error(override_max_size: params[:override_max_size])
- = render 'projects/blob/render_error', viewer: viewer, error: error
-- else
- - viewer.prepare!
- = render viewer.partial_path, viewer: viewer
+- hidden = local_assigns.fetch(:hidden, false)
+- render_error = viewer.render_error(override_max_size: params[:override_max_size])
+- load_asynchronously = local_assigns.fetch(:load_asynchronously, viewer.server_side?) && render_error.nil?
+
+- url = url_for(params.merge(viewer: viewer.type, format: :json)) if load_asynchronously
+.blob-viewer{ data: { type: viewer.type, url: url }, class: ('hidden' if hidden) }
+ - if load_asynchronously
+ .text-center.prepend-top-default.append-bottom-default
+ = icon('spinner spin 2x', 'aria-hidden' => 'true', 'aria-label' => 'Loading content')
+ - elsif render_error
+ = render 'projects/blob/render_error', viewer: viewer, error: render_error
+ - else
+ - viewer.prepare!
+ = render viewer.partial_path, viewer: viewer
diff --git a/app/views/projects/blob/_viewer_switcher.html.haml b/app/views/projects/blob/_viewer_switcher.html.haml
index 6d69660e656..6a521069418 100644
--- a/app/views/projects/blob/_viewer_switcher.html.haml
+++ b/app/views/projects/blob/_viewer_switcher.html.haml
@@ -2,11 +2,11 @@
- simple_viewer = blob.simple_viewer
- rich_viewer = blob.rich_viewer
- .btn-group{ role: "group" }
+ .btn-group.js-blob-viewer-switcher{ role: "group" }
- simple_label = "Display #{simple_viewer.switcher_title}"
- %button.btn.btn-default.btn-sm.js-blob-viewer-switcher.has-tooltip{ 'aria-label' => simple_label, title: simple_label, data: { viewer: 'simple', container: 'body' } }>
+ %button.btn.btn-default.btn-sm.js-blob-viewer-switch-btn.has-tooltip{ 'aria-label' => simple_label, title: simple_label, data: { viewer: 'simple', container: 'body' } }>
= icon(simple_viewer.switcher_icon)
- rich_label = "Display #{rich_viewer.switcher_title}"
- %button.btn.btn-default.btn-sm.js-blob-viewer-switcher.has-tooltip{ 'aria-label' => rich_label, title: rich_label, data: { viewer: 'rich', container: 'body' } }>
+ %button.btn.btn-default.btn-sm.js-blob-viewer-switch-btn.has-tooltip{ 'aria-label' => rich_label, title: rich_label, data: { viewer: 'rich', container: 'body' } }>
= icon(rich_viewer.switcher_icon)
diff --git a/app/views/projects/blob/_viewer_wrapper.html.haml b/app/views/projects/blob/_viewer_wrapper.html.haml
deleted file mode 100644
index 8da5022fbea..00000000000
--- a/app/views/projects/blob/_viewer_wrapper.html.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-- hidden = local_assigns.fetch(:hidden, false)
-- url = url_for(params.merge(format: :json, viewer: viewer.type)) if viewer.server_side?
-.blob-viewer{ data: { type: viewer.type, url: url }, class: ('hidden' if hidden) }
- - if viewer.server_side?
- .text-center.prepend-top-default.append-bottom-default
- = icon('spinner spin 2x', 'aria-hidden' => 'true', 'aria-label' => 'Loading content')
- - else
- = render 'projects/blob/viewer', viewer: viewer