Commit 6171a4d8ebd1602b987bc6d93fd19443696c155b
1 parent
34ba4e13
Exists in
master
and in
4 other branches
Fixed dashboard broken messages cause of glm
Showing
4 changed files
with
104 additions
and
99 deletions
Show diff stats
app/assets/stylesheets/sections/notes.scss
... | ... | @@ -175,10 +175,17 @@ td .line_note_link { |
175 | 175 | top:7px; |
176 | 176 | } |
177 | 177 | |
178 | + .note_advanced_opts { | |
179 | + h6 { | |
180 | + line-height: 32px; | |
181 | + margin-right: 12px; | |
182 | + } | |
183 | + } | |
184 | + | |
178 | 185 | div.attachments { |
179 | 186 | position:relative; |
180 | 187 | width: 350px; |
181 | - height: 36px; | |
188 | + height: 50px; | |
182 | 189 | overflow:hidden; |
183 | 190 | margin:0 0 5px !important; |
184 | 191 | } | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -42,86 +42,6 @@ module ApplicationHelper |
42 | 42 | grouped_options_for_select(options, @ref || @project.default_branch) |
43 | 43 | end |
44 | 44 | |
45 | - def gfm(text, html_options = {}) | |
46 | - return text if text.nil? | |
47 | - raise "@project is not set" if @project.nil? | |
48 | - | |
49 | - # Extract pre blocks | |
50 | - # from http://github.github.com/github-flavored-markdown/ | |
51 | - extractions = {} | |
52 | - text.gsub!(%r{<pre>.*?</pre>|<code>.*?</code>}m) do |match| | |
53 | - md5 = Digest::MD5.hexdigest(match) | |
54 | - extractions[md5] = match | |
55 | - "{gfm-extraction-#{md5}}" | |
56 | - end | |
57 | - | |
58 | - # match 1 2 3 4 5 6 | |
59 | - text.gsub!(/(\W)?(@([\w\._]+)|[#!$](\d+)|([\h]{6,40}))(\W)?/) do |match| | |
60 | - prefix = $1 | |
61 | - reference = $2 | |
62 | - user_name = $3 | |
63 | - issue_id = $4 | |
64 | - merge_request_id = $4 | |
65 | - snippet_id = $4 | |
66 | - commit_id = $5 | |
67 | - suffix = $6 | |
68 | - | |
69 | - # TODO: add popups with additional information | |
70 | - ref_link = case reference | |
71 | - | |
72 | - # team member: @foo | |
73 | - when /^@/ | |
74 | - user = @project.users.where(:name => user_name).first | |
75 | - member = @project.users_projects.where(:user_id => user).first if user | |
76 | - link_to("@#{user_name}", project_team_member_path(@project, member), html_options.merge(:class => "gfm gfm-team_member #{html_options[:class]}")) if member | |
77 | - | |
78 | - # issue: #123 | |
79 | - when /^#/ | |
80 | - # avoid HTML entities | |
81 | - unless prefix.try(:end_with?, "&") && suffix.try(:start_with?, ";") | |
82 | - issue = @project.issues.where(:id => issue_id).first | |
83 | - link_to("##{issue_id}", project_issue_path(@project, issue), html_options.merge(:title => "Issue: #{issue.title}", :class => "gfm gfm-issue #{html_options[:class]}")) if issue | |
84 | - end | |
85 | - | |
86 | - # merge request: !123 | |
87 | - when /^!/ | |
88 | - merge_request = @project.merge_requests.where(:id => merge_request_id).first | |
89 | - link_to("!#{merge_request_id}", project_merge_request_path(@project, merge_request), html_options.merge(:title => "Merge Request: #{merge_request.title}", :class => "gfm gfm-merge_request #{html_options[:class]}")) if merge_request | |
90 | - | |
91 | - # snippet: $123 | |
92 | - when /^\$/ | |
93 | - snippet = @project.snippets.where(:id => snippet_id).first | |
94 | - link_to("$#{snippet_id}", project_snippet_path(@project, snippet), html_options.merge(:title => "Snippet: #{snippet.title}", :class => "gfm gfm-snippet #{html_options[:class]}")) if snippet | |
95 | - | |
96 | - # commit: 123456... | |
97 | - when /^\h/ | |
98 | - commit = @project.commit(commit_id) | |
99 | - link_to(commit_id, project_commit_path(@project, :id => commit.id), html_options.merge(:title => "Commit: #{commit.author_name} - #{CommitDecorator.new(commit).title}", :class => "gfm gfm-commit #{html_options[:class]}")) if commit | |
100 | - | |
101 | - end # case | |
102 | - | |
103 | - ref_link.nil? ? match : "#{prefix}#{ref_link}#{suffix}" | |
104 | - end # gsub | |
105 | - | |
106 | - # Insert pre block extractions | |
107 | - text.gsub!(/\{gfm-extraction-(\h{32})\}/) do | |
108 | - extractions[$1] | |
109 | - end | |
110 | - | |
111 | - text.html_safe | |
112 | - end | |
113 | - | |
114 | - # circumvents nesting links, which will behave bad in browsers | |
115 | - def link_to_gfm(body, url, html_options = {}) | |
116 | - gfm_body = gfm(body, html_options) | |
117 | - | |
118 | - gfm_body.gsub!(%r{<a.*?>.*?</a>}m) do |match| | |
119 | - "</a>#{match}#{link_to("", url, html_options)[0..-5]}" # "</a>".length +1 | |
120 | - end | |
121 | - | |
122 | - link_to(gfm_body.html_safe, url, html_options) | |
123 | - end | |
124 | - | |
125 | 45 | def markdown(text) |
126 | 46 | @__renderer ||= Redcarpet::Markdown.new(Redcarpet::Render::GitlabHTML.new(self, filter_html: true, with_toc_data: true), { |
127 | 47 | no_intra_emphasis: true, | ... | ... |
... | ... | @@ -0,0 +1,81 @@ |
1 | +module GitlabMarkdownHelper | |
2 | + def gfm(text, html_options = {}) | |
3 | + return text if text.nil? | |
4 | + return text if @project.nil? | |
5 | + | |
6 | + # Extract pre blocks | |
7 | + # from http://github.github.com/github-flavored-markdown/ | |
8 | + extractions = {} | |
9 | + text.gsub!(%r{<pre>.*?</pre>|<code>.*?</code>}m) do |match| | |
10 | + md5 = Digest::MD5.hexdigest(match) | |
11 | + extractions[md5] = match | |
12 | + "{gfm-extraction-#{md5}}" | |
13 | + end | |
14 | + | |
15 | + # match 1 2 3 4 5 6 | |
16 | + text.gsub!(/(\W)?(@([\w\._]+)|[#!$](\d+)|([\h]{6,40}))(\W)?/) do |match| | |
17 | + prefix = $1 | |
18 | + reference = $2 | |
19 | + user_name = $3 | |
20 | + issue_id = $4 | |
21 | + merge_request_id = $4 | |
22 | + snippet_id = $4 | |
23 | + commit_id = $5 | |
24 | + suffix = $6 | |
25 | + | |
26 | + # TODO: add popups with additional information | |
27 | + ref_link = case reference | |
28 | + | |
29 | + # team member: @foo | |
30 | + when /^@/ | |
31 | + user = @project.users.where(:name => user_name).first | |
32 | + member = @project.users_projects.where(:user_id => user).first if user | |
33 | + link_to("@#{user_name}", project_team_member_path(@project, member), html_options.merge(:class => "gfm gfm-team_member #{html_options[:class]}")) if member | |
34 | + | |
35 | + # issue: #123 | |
36 | + when /^#/ | |
37 | + # avoid HTML entities | |
38 | + unless prefix.try(:end_with?, "&") && suffix.try(:start_with?, ";") | |
39 | + issue = @project.issues.where(:id => issue_id).first | |
40 | + link_to("##{issue_id}", project_issue_path(@project, issue), html_options.merge(:title => "Issue: #{issue.title}", :class => "gfm gfm-issue #{html_options[:class]}")) if issue | |
41 | + end | |
42 | + | |
43 | + # merge request: !123 | |
44 | + when /^!/ | |
45 | + merge_request = @project.merge_requests.where(:id => merge_request_id).first | |
46 | + link_to("!#{merge_request_id}", project_merge_request_path(@project, merge_request), html_options.merge(:title => "Merge Request: #{merge_request.title}", :class => "gfm gfm-merge_request #{html_options[:class]}")) if merge_request | |
47 | + | |
48 | + # snippet: $123 | |
49 | + when /^\$/ | |
50 | + snippet = @project.snippets.where(:id => snippet_id).first | |
51 | + link_to("$#{snippet_id}", project_snippet_path(@project, snippet), html_options.merge(:title => "Snippet: #{snippet.title}", :class => "gfm gfm-snippet #{html_options[:class]}")) if snippet | |
52 | + | |
53 | + # commit: 123456... | |
54 | + when /^\h/ | |
55 | + commit = @project.commit(commit_id) | |
56 | + link_to(commit_id, project_commit_path(@project, :id => commit.id), html_options.merge(:title => "Commit: #{commit.author_name} - #{CommitDecorator.new(commit).title}", :class => "gfm gfm-commit #{html_options[:class]}")) if commit | |
57 | + | |
58 | + end # case | |
59 | + | |
60 | + ref_link.nil? ? match : "#{prefix}#{ref_link}#{suffix}" | |
61 | + end # gsub | |
62 | + | |
63 | + # Insert pre block extractions | |
64 | + text.gsub!(/\{gfm-extraction-(\h{32})\}/) do | |
65 | + extractions[$1] | |
66 | + end | |
67 | + | |
68 | + text.html_safe | |
69 | + end | |
70 | + | |
71 | + # circumvents nesting links, which will behave bad in browsers | |
72 | + def link_to_gfm(body, url, html_options = {}) | |
73 | + gfm_body = gfm(body, html_options) | |
74 | + | |
75 | + gfm_body.gsub!(%r{<a.*?>.*?</a>}m) do |match| | |
76 | + "</a>#{match}#{link_to("", url, html_options)[0..-5]}" # "</a>".length +1 | |
77 | + end | |
78 | + | |
79 | + link_to(gfm_body.html_safe, url, html_options) | |
80 | + end | |
81 | +end | ... | ... |
app/views/notes/_form.html.haml
... | ... | @@ -13,24 +13,21 @@ |
13 | 13 | is enabled. |
14 | 14 | |
15 | 15 | .row.note_advanced_opts.hide |
16 | - .span4 | |
17 | - %h5 Notify via email: | |
18 | - .clearfix | |
19 | - = label_tag :notify do | |
20 | - = check_box_tag :notify, 1, @note.noteable_type != "Commit" | |
21 | - %span Project team | |
16 | + .span4.notify_opts | |
17 | + %h6.left Notify via email: | |
18 | + = label_tag :notify do | |
19 | + = check_box_tag :notify, 1, @note.noteable_type != "Commit" | |
20 | + %span Project team | |
22 | 21 | |
23 | - - if @note.notify_only_author?(current_user) | |
24 | - = label_tag :notify_author do | |
25 | - = check_box_tag :notify_author, 1 , @note.noteable_type == "Commit" | |
26 | - %span Commit author | |
27 | - .span8 | |
28 | - %h5 Attachment: | |
29 | - .clearfix | |
30 | - .attachments | |
31 | - %div.file_name File name... | |
32 | - %button.file_upload.btn.small Upload File | |
33 | - .input= f.file_field :attachment, :class => "input-file" | |
34 | - %span Any file less than 10 MB | |
22 | + - if @note.notify_only_author?(current_user) | |
23 | + = label_tag :notify_author do | |
24 | + = check_box_tag :notify_author, 1 , @note.noteable_type == "Commit" | |
25 | + %span Commit author | |
26 | + .span8.attachments | |
27 | + %h6.left Attachment: | |
28 | + %span.file_name File name... | |
29 | + %button.file_upload.btn.small Upload File | |
30 | + .input= f.file_field :attachment, :class => "input-file" | |
31 | + %span.hint Any file less than 10 MB | |
35 | 32 | |
36 | 33 | = f.submit 'Add Comment', :class => "btn primary submit_note", :id => "submit_note" | ... | ... |