From 080449f8af56e1aa0d80c921d0bc6ea4a61f1c38 Mon Sep 17 00:00:00 2001
From: Douwe Maan <douwe@gitlab.com>
Date: Fri, 13 Feb 2015 14:14:27 +0100
Subject: [PATCH] Make sure Markdown previews always use the same styling as
 the eventual destination.

---
 CHANGELOG                                               | 1 +
 app/assets/javascripts/notes.js.coffee                  | 8 ++++----
 app/views/projects/_issuable_form.html.haml             | 2 +-
 app/views/projects/_md_preview.html.haml                | 2 +-
 app/views/projects/merge_requests/_new_submit.html.haml | 2 +-
 app/views/projects/milestones/_form.html.haml           | 2 +-
 app/views/projects/notes/_edit_form.html.haml           | 2 +-
 app/views/projects/notes/_form.html.haml                | 2 +-
 app/views/projects/wikis/_form.html.haml                | 2 +-
 features/steps/project/merge_requests.rb                | 4 ++--
 features/steps/shared/note.rb                           | 2 +-
 spec/features/notes_on_merge_requests_spec.rb           | 2 +-
 12 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 2e0d86862bf..85aabd3198b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -50,6 +50,7 @@ v 7.8.0 (unreleased)
   - Prevent losing unsaved comments by automatically restoring them when comment page is loaded again.
   - Don't allow page to be scaled on mobile.
   - Clean the username acquired from OAuth/LDAP so it doesn't fail username validation and block signing up.
+  - Make sure Markdown previews always use the same styling as the eventual destination.
 
 v 7.7.2
   - Update GitLab Shell to version 2.4.2 that fixes a bug when developers can push to protected branch
diff --git a/app/assets/javascripts/notes.js.coffee b/app/assets/javascripts/notes.js.coffee
index 47c5ecdedf1..6d4eade1287 100644
--- a/app/assets/javascripts/notes.js.coffee
+++ b/app/assets/javascripts/notes.js.coffee
@@ -272,7 +272,7 @@ class @Notes
     note_li = $(".note-row-" + note.id)
     note_li.replaceWith(note.html)
     note_li.find('.note-edit-form').hide()
-    note_li.find('.note-text').show()
+    note_li.find('.note-body > .note-text').show()
 
   ###
   Called in response to clicking the edit note link
@@ -284,7 +284,7 @@ class @Notes
   showEditForm: (e) ->
     e.preventDefault()
     note = $(this).closest(".note")
-    note.find(".note-text").hide()
+    note.find(".note-body > .note-text").hide()
     note.find(".note-header").hide()
     base_form = note.find(".note-edit-form")
     form = base_form.clone().insertAfter(base_form)
@@ -311,7 +311,7 @@ class @Notes
   cancelEdit: (e) ->
     e.preventDefault()
     note = $(this).closest(".note")
-    note.find(".note-text").show()
+    note.find(".note-body > .note-text").show()
     note.find(".note-header").show()
     note.find(".current-note-edit-form").remove()
 
@@ -345,7 +345,7 @@ class @Notes
   removeAttachment: ->
     note = $(this).closest(".note")
     note.find(".note-attachment").remove()
-    note.find(".note-text").show()
+    note.find(".note-body > .note-text").show()
     note.find(".js-note-attachment-delete").hide()
     note.find(".note-edit-form").hide()
 
diff --git a/app/views/projects/_issuable_form.html.haml b/app/views/projects/_issuable_form.html.haml
index 9e2e214b3e8..5a57673b584 100644
--- a/app/views/projects/_issuable_form.html.haml
+++ b/app/views/projects/_issuable_form.html.haml
@@ -15,7 +15,7 @@
   = f.label :description, 'Description', class: 'control-label'
   .col-sm-10
 
-    = render layout: 'projects/md_preview' do
+    = render layout: 'projects/md_preview', locals: { preview_class: "wiki" } do
       = render 'projects/zen', f: f, attr: :description,
                                classes: 'description form-control'
       .col-sm-12.hint
diff --git a/app/views/projects/_md_preview.html.haml b/app/views/projects/_md_preview.html.haml
index cb75149434f..d7d5c8a3401 100644
--- a/app/views/projects/_md_preview.html.haml
+++ b/app/views/projects/_md_preview.html.haml
@@ -10,4 +10,4 @@
   .md-write-holder
     = yield
   .md-preview-holder.hide
-    .js-md-preview
+    .js-md-preview{class: (preview_class if defined?(preview_class))}
diff --git a/app/views/projects/merge_requests/_new_submit.html.haml b/app/views/projects/merge_requests/_new_submit.html.haml
index ac374532ffd..bca3e45bf19 100644
--- a/app/views/projects/merge_requests/_new_submit.html.haml
+++ b/app/views/projects/merge_requests/_new_submit.html.haml
@@ -19,7 +19,7 @@
     .form-group.issuable-description
       = f.label :description, 'Description', class: 'control-label'
       .col-sm-10
-        = render layout: 'projects/md_preview' do
+        = render layout: 'projects/md_preview', locals: { preview_class: "wiki" } do
           = render 'projects/zen', f: f, attr: :description, classes: 'description form-control'
 
           .col-sm-12-hint
diff --git a/app/views/projects/milestones/_form.html.haml b/app/views/projects/milestones/_form.html.haml
index 0f51a347f01..b3b170d7114 100644
--- a/app/views/projects/milestones/_form.html.haml
+++ b/app/views/projects/milestones/_form.html.haml
@@ -21,7 +21,7 @@
       .form-group.milestone-description
         = f.label :description, "Description", class: "control-label"
         .col-sm-10
-          = render layout: 'projects/md_preview' do
+          = render layout: 'projects/md_preview', locals: { preview_class: "wiki" } do
             = render 'projects/zen', f: f, attr: :description, classes: 'description form-control'
             .hint
               .pull-left Milestones are parsed with #{link_to "GitLab Flavored Markdown", help_page_path("markdown", "markdown"), target: '_blank'}.
diff --git a/app/views/projects/notes/_edit_form.html.haml b/app/views/projects/notes/_edit_form.html.haml
index 59e2b3f1b0b..cdc76f5d96f 100644
--- a/app/views/projects/notes/_edit_form.html.haml
+++ b/app/views/projects/notes/_edit_form.html.haml
@@ -1,6 +1,6 @@
 .note-edit-form
   = form_for note, url: project_note_path(@project, note), method: :put, remote: true, authenticity_token: true do |f|
-    = render layout: 'projects/md_preview' do
+    = render layout: 'projects/md_preview', locals: { preview_class: "note-text" } do
       = render 'projects/zen', f: f, attr: :note,
         classes: 'note_text js-note-text'
 
diff --git a/app/views/projects/notes/_form.html.haml b/app/views/projects/notes/_form.html.haml
index 3879a0f10da..1a4e06289f8 100644
--- a/app/views/projects/notes/_form.html.haml
+++ b/app/views/projects/notes/_form.html.haml
@@ -5,7 +5,7 @@
   = f.hidden_field :noteable_id
   = f.hidden_field :noteable_type
 
-  = render layout: 'projects/md_preview' do
+  = render layout: 'projects/md_preview', locals: { preview_class: "note-text" } do
     = render 'projects/zen', f: f, attr: :note,
       classes: 'note_text js-note-text'
 
diff --git a/app/views/projects/wikis/_form.html.haml b/app/views/projects/wikis/_form.html.haml
index 111484c8316..84731e43e95 100644
--- a/app/views/projects/wikis/_form.html.haml
+++ b/app/views/projects/wikis/_form.html.haml
@@ -22,7 +22,7 @@
   .form-group.wiki-content
     = f.label :content, class: 'control-label'
     .col-sm-10
-      = render layout: 'projects/md_preview' do
+      = render layout: 'projects/md_preview', locals: { preview_class: "wiki" } do
         = render 'projects/zen', f: f, attr: :content, classes: 'description form-control'
         .col-sm-12.hint
           .pull-left Wiki content is parsed with #{link_to "GitLab Flavored Markdown", help_page_path("markdown", "markdown"), target: '_blank'}
diff --git a/features/steps/project/merge_requests.rb b/features/steps/project/merge_requests.rb
index 6f421de1aba..c97c3075c53 100644
--- a/features/steps/project/merge_requests.rb
+++ b/features/steps/project/merge_requests.rb
@@ -253,7 +253,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
   end
 
   step 'I should still see a comment like "Line is correct" in the first file' do
-    within '.files [id^=diff]:nth-child(1) .note-text' do
+    within '.files [id^=diff]:nth-child(1) .note-body > .note-text' do
       page.should have_visible_content "Line is correct"
     end
   end
@@ -271,7 +271,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
   end
 
   step 'I should see comments on the side-by-side diff page' do
-    within '.files [id^=diff]:nth-child(1) .parallel .note-text' do
+    within '.files [id^=diff]:nth-child(1) .parallel .note-body > .note-text' do
       page.should have_visible_content "Line is correct"
     end
   end
diff --git a/features/steps/shared/note.rb b/features/steps/shared/note.rb
index 625bcc0b266..45773056953 100644
--- a/features/steps/shared/note.rb
+++ b/features/steps/shared/note.rb
@@ -116,7 +116,7 @@ module SharedNote
   end
 
   step 'The comment with the header should not have an ID' do
-    within(".note-text") do
+    within(".note-body > .note-text") do
       page.should     have_content("Comment with a header")
       page.should_not have_css("#comment-with-a-header")
     end
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index 7790d0ecd73..76d1a72bdb6 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -81,7 +81,7 @@ describe 'Comments' do
           within("#note_#{note.id}") do
             expect(find('.current-note-edit-form', visible: true)).to be_visible
             expect(find('.note-edit-form', visible: true)).to be_visible
-            expect(find(:css, '.note-text', visible: false)).not_to be_visible
+            expect(find(:css, '.note-body > .note-text', visible: false)).not_to be_visible
           end
         end
 
-- 
GitLab