From a8aa59e96ef64a11073d7c84a9af93077f98bf8a Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 28 Jan 2016 17:54:13 +0100 Subject: [PATCH 1/2] Inline mailer CSS using premailer. # Conflicts: # Gemfile.lock --- Gemfile | 2 ++ Gemfile.lock | 10 ++++++++++ app/assets/stylesheets/notify.scss | 24 ++++++++++++++++++++++++ app/views/layouts/notify.html.haml | 30 +++--------------------------- config/application.rb | 1 + config/initializers/premailer.rb | 7 +++++++ 6 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 app/assets/stylesheets/notify.scss create mode 100644 config/initializers/premailer.rb diff --git a/Gemfile b/Gemfile index e500bfb7885..99c1dfa7c0c 100644 --- a/Gemfile +++ b/Gemfile @@ -222,6 +222,8 @@ gem 'net-ssh', '~> 3.0.1' # Sentry integration gem 'sentry-raven', '~> 0.15' +gem 'premailer-rails', '~> 1.9.0' + # Metrics group :metrics do gem 'allocations', '~> 1.0', require: false, platform: :mri diff --git a/Gemfile.lock b/Gemfile.lock index 63ed9441c62..cc83215a2e9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -150,6 +150,8 @@ GEM crack (0.4.3) safe_yaml (~> 1.0.0) creole (0.5.0) + css_parser (1.3.7) + addressable d3_rails (3.5.11) railties (>= 3.1.0) daemons (1.2.3) @@ -423,6 +425,7 @@ GEM haml (~> 4.0.0) nokogiri (~> 1.6.0) ruby_parser (~> 3.5) + htmlentities (4.3.4) http-cookie (1.0.2) domain_name (~> 0.5) http_parser.rb (0.5.3) @@ -564,6 +567,12 @@ GEM websocket-driver (>= 0.2.0) posix-spawn (0.3.11) powerpack (0.1.1) + premailer (1.8.6) + css_parser (>= 1.3.6) + htmlentities (>= 4.0.0) + premailer-rails (1.9.0) + actionmailer (>= 3, < 5) + premailer (~> 1.7, >= 1.7.9) pry (0.10.3) coderay (~> 1.1.0) method_source (~> 0.8.1) @@ -992,6 +1001,7 @@ DEPENDENCIES paranoia (~> 2.0) pg (~> 0.18.2) poltergeist (~> 1.9.0) + premailer-rails (~> 1.9.0) pry-rails quiet_assets (~> 1.0.2) rack-attack (~> 4.3.1) diff --git a/app/assets/stylesheets/notify.scss b/app/assets/stylesheets/notify.scss new file mode 100644 index 00000000000..f1d42f80f56 --- /dev/null +++ b/app/assets/stylesheets/notify.scss @@ -0,0 +1,24 @@ +img { + max-width: 100%; + height: auto; +} +p.details { + font-style:italic; + color:#777 +} +.footer p { + font-size:small; + color:#777 +} +pre.commit-message { + white-space: pre-wrap; +} +.file-stats a { + text-decoration: none; +} +.file-stats .new-file { + color: #090; +} +.file-stats .deleted-file { + color: #B00; +} diff --git a/app/views/layouts/notify.html.haml b/app/views/layouts/notify.html.haml index 37b4d562966..2997f59d946 100644 --- a/app/views/layouts/notify.html.haml +++ b/app/views/layouts/notify.html.haml @@ -1,33 +1,9 @@ %html{lang: "en"} %head %meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"} - %title - GitLab - :css - img { - max-width: 100%; - height: auto; - } - p.details { - font-style:italic; - color:#777 - } - .footer p { - font-size:small; - color:#777 - } - pre.commit-message { - white-space: pre-wrap; - } - .file-stats a { - text-decoration: none; - } - .file-stats .new-file { - color: #090; - } - .file-stats .deleted-file { - color: #B00; - } + %title + GitLab + = stylesheet_link_tag 'notify' %body %div.content = yield diff --git a/config/application.rb b/config/application.rb index 2b103c4592d..5a0ac70aa2a 100644 --- a/config/application.rb +++ b/config/application.rb @@ -49,6 +49,7 @@ module Gitlab config.assets.paths << Gemojione.index.images_path config.assets.precompile << "*.png" config.assets.precompile << "print.css" + config.assets.precompile << "notify.css" # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' diff --git a/config/initializers/premailer.rb b/config/initializers/premailer.rb new file mode 100644 index 00000000000..a44316bc3a4 --- /dev/null +++ b/config/initializers/premailer.rb @@ -0,0 +1,7 @@ +# See https://github.com/fphilipe/premailer-rails#configuration +Premailer::Rails.config.merge!( + generate_text_part: false, + preserve_styles: true, + remove_comments: true, + remove_ids: true +) From afbcdd8e7fce5b9a530368ad3dd19292d05008f7 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 28 Jan 2016 18:10:36 +0100 Subject: [PATCH 2/2] Move diff line to separate partial --- app/views/projects/diffs/_line.html.haml | 26 +++++++++++++++++++ app/views/projects/diffs/_text_file.html.haml | 21 ++------------- 2 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 app/views/projects/diffs/_line.html.haml diff --git a/app/views/projects/diffs/_line.html.haml b/app/views/projects/diffs/_line.html.haml new file mode 100644 index 00000000000..9464c8dc996 --- /dev/null +++ b/app/views/projects/diffs/_line.html.haml @@ -0,0 +1,26 @@ +- type = line.type +%tr.line_holder{id: line_code, class: type} + - case type + - when 'match' + = render "projects/diffs/match_line", {line: line.text, + line_old: line.old_pos, line_new: line.new_pos, bottom: false, new_file: diff_file.new_file} + - when 'nonewline' + %td.old_line.diff-line-num + %td.new_line.diff-line-num + %td.line_content.match= line.text + - else + %td.old_line.diff-line-num{class: type} + - link_text = raw(type == "new" ? " " : line.old_pos) + - if defined?(plain) && plain + = link_text + - else + = link_to link_text, "##{line_code}", id: line_code + - if @comments_allowed && can?(current_user, :create_note, @project) + = link_to_new_diff_note(line_code) + %td.new_line.diff-line-num{class: type, data: {linenumber: line.new_pos}} + - link_text = raw(type == "old" ? " " : line.new_pos) + - if defined?(plain) && plain + = link_text + - else + = link_to link_text, "##{line_code}", id: line_code + %td.line_content{class: "noteable_line #{type} #{line_code}", data: { line_code: line_code }}= diff_line_content(line.text) diff --git a/app/views/projects/diffs/_text_file.html.haml b/app/views/projects/diffs/_text_file.html.haml index 9a8208202e4..e7169d7b599 100644 --- a/app/views/projects/diffs/_text_file.html.haml +++ b/app/views/projects/diffs/_text_file.html.haml @@ -8,26 +8,9 @@ - last_line = 0 - raw_diff_lines = diff_file.diff_lines.to_a - diff_file.highlighted_diff_lines.each_with_index do |line, index| - - type = line.type - - last_line = line.new_pos - line_code = generate_line_code(diff_file.file_path, line) - - line_old = line.old_pos - %tr.line_holder{ id: line_code, class: "#{type}" } - - if type == "match" - = render "projects/diffs/match_line", {line: line.text, - line_old: line_old, line_new: line.new_pos, bottom: false, new_file: diff_file.new_file} - - elsif type == 'nonewline' - %td.old_line.diff-line-num - %td.new_line.diff-line-num - %td.line_content.match= line.text - - else - %td.old_line.diff-line-num{class: type} - = link_to raw(type == "new" ? " " : line_old), "##{line_code}", id: line_code - - if @comments_allowed && can?(current_user, :create_note, @project) - = link_to_new_diff_note(line_code) - %td.new_line.diff-line-num{class: type, data: {linenumber: line.new_pos}} - = link_to raw(type == "old" ? " " : line.new_pos), "##{line_code}", id: line_code - %td.line_content{class: "noteable_line #{type} #{line_code}", data: { line_code: line_code }}= diff_line_content(line.text) + - last_line = line.new_pos + = render "projects/diffs/line", {line: line, diff_file: diff_file, line_code: line_code} - if @reply_allowed - comments = @line_notes.select { |n| n.line_code == line_code && n.active? }.sort_by(&:created_at)