Commit 8dc2163c authored by Alfredo Sumaran's avatar Alfredo Sumaran

Merge branch '22072-enable-haml-lints' into 'master'

Enable HAML-LINT linters

Closes #22072

See merge request !8247
parents 44fddd29 f79680c5
...@@ -7,10 +7,10 @@ exclude: ...@@ -7,10 +7,10 @@ exclude:
linters: linters:
AltText: AltText:
enabled: false enabled: true
ClassAttributeWithStaticValue: ClassAttributeWithStaticValue:
enabled: false enabled: true
ClassesBeforeIds: ClassesBeforeIds:
enabled: false enabled: false
...@@ -29,14 +29,14 @@ linters: ...@@ -29,14 +29,14 @@ linters:
enabled: true enabled: true
FinalNewline: FinalNewline:
enabled: false enabled: true
present: true present: true
HtmlAttributes: HtmlAttributes:
enabled: false enabled: true
ImplicitDiv: ImplicitDiv:
enabled: false enabled: true
LeadingCommentSpace: LeadingCommentSpace:
enabled: false enabled: false
...@@ -80,10 +80,10 @@ linters: ...@@ -80,10 +80,10 @@ linters:
enabled: false enabled: false
SpaceBeforeScript: SpaceBeforeScript:
enabled: false enabled: true
SpaceInsideHashAttributes: SpaceInsideHashAttributes:
enabled: false enabled: true
style: space style: space
Indentation: Indentation:
...@@ -94,7 +94,7 @@ linters: ...@@ -94,7 +94,7 @@ linters:
enabled: true enabled: true
TrailingWhitespace: TrailingWhitespace:
enabled: false enabled: true
UnnecessaryInterpolation: UnnecessaryInterpolation:
enabled: false enabled: false
......
...@@ -321,7 +321,7 @@ ...@@ -321,7 +321,7 @@
= f.text_field :recaptcha_site_key, class: 'form-control' = f.text_field :recaptcha_site_key, class: 'form-control'
.help-block .help-block
Generate site and private keys at Generate site and private keys at
%a{ href: 'http://www.google.com/recaptcha', target: 'blank'} http://www.google.com/recaptcha %a{ href: 'http://www.google.com/recaptcha', target: 'blank' } http://www.google.com/recaptcha
.form-group .form-group
= f.label :recaptcha_private_key, 'reCAPTCHA Private Key', class: 'control-label col-sm-2' = f.label :recaptcha_private_key, 'reCAPTCHA Private Key', class: 'control-label col-sm-2'
...@@ -342,7 +342,7 @@ ...@@ -342,7 +342,7 @@
= f.text_field :akismet_api_key, class: 'form-control' = f.text_field :akismet_api_key, class: 'form-control'
.help-block .help-block
Generate API key at Generate API key at
%a{ href: 'http://www.akismet.com', target: 'blank'} http://www.akismet.com %a{ href: 'http://www.akismet.com', target: 'blank' } http://www.akismet.com
%fieldset %fieldset
%legend Abuse reports %legend Abuse reports
......
- submit_btn_css ||= 'btn btn-link btn-remove btn-sm' - submit_btn_css ||= 'btn btn-link btn-remove btn-sm'
= form_tag admin_application_path(application) do = form_tag admin_application_path(application) do
%input{:name => "_method", :type => "hidden", :value => "delete"}/ %input{ :name => "_method", :type => "hidden", :value => "delete" }/
= submit_tag 'Destroy', onclick: "return confirm('Are you sure?')", class: submit_btn_css = submit_tag 'Destroy', onclick: "return confirm('Are you sure?')", class: submit_btn_css
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
%th %th
%tbody.oauth-applications %tbody.oauth-applications
- @applications.each do |application| - @applications.each do |application|
%tr{:id => "application_#{application.id}"} %tr{ :id => "application_#{application.id}" }
%td= link_to application.name, admin_application_path(application) %td= link_to application.name, admin_application_path(application)
%td= application.redirect_uri %td= application.redirect_uri
%td= application.access_tokens.map(&:resource_owner_id).uniq.count %td= application.access_tokens.map(&:resource_owner_id).uniq.count
......
...@@ -43,4 +43,4 @@ ...@@ -43,4 +43,4 @@
.panel.panel-default .panel.panel-default
%iframe{src: sidekiq_path, width: '100%', height: 970, style: "border: none"} %iframe{ src: sidekiq_path, width: '100%', height: 970, style: "border: none" }
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
%br.clearfix %br.clearfix
-if @broadcast_messages.any? - if @broadcast_messages.any?
%table.table %table.table
%thead %thead
%tr %tr
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
= icon('users') = icon('users')
= number_with_delimiter(group.users.count) = number_with_delimiter(group.users.count)
%span.visibility-icon.has-tooltip{data: { container: 'body', placement: 'left' }, title: visibility_icon_description(group)} %span.visibility-icon.has-tooltip{ data: { container: 'body', placement: 'left' }, title: visibility_icon_description(group) }
= visibility_level_icon(group.visibility_level, fw: false) = visibility_level_icon(group.visibility_level, fw: false)
.avatar-container.s40 .avatar-container.s40
......
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
= form_tag admin_group_members_update_path(@group), id: "new_project_member", class: "bulk_import", method: :put do = form_tag admin_group_members_update_path(@group), id: "new_project_member", class: "bulk_import", method: :put do
%div %div
= users_select_tag(:user_ids, multiple: true, email_user: true, scope: :all) = users_select_tag(:user_ids, multiple: true, email_user: true, scope: :all)
%div.prepend-top-10 .prepend-top-10
= select_tag :access_level, options_for_select(GroupMember.access_level_roles), class: "project-access-select select2" = select_tag :access_level, options_for_select(GroupMember.access_level_roles), class: "project-access-select select2"
%hr %hr
= button_tag 'Add users to group', class: "btn btn-create" = button_tag 'Add users to group', class: "btn btn-create"
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
System hook will be triggered on set of events like creating project System hook will be triggered on set of events like creating project
or adding ssh key. But you can also enable extra triggers like Push events. or adding ssh key. But you can also enable extra triggers like Push events.
%div.prepend-top-default .prepend-top-default
= f.check_box :push_events, class: 'pull-left' = f.check_box :push_events, class: 'pull-left'
.prepend-left-20 .prepend-left-20
= f.label :push_events, class: 'list-label' do = f.label :push_events, class: 'list-label' do
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
= f.submit "Add System Hook", class: "btn btn-create" = f.submit "Add System Hook", class: "btn btn-create"
%hr %hr
-if @hooks.any? - if @hooks.any?
.panel.panel-default .panel.panel-default
.panel-heading .panel-heading
System hooks (#{@hooks.count}) System hooks (#{@hooks.count})
...@@ -70,4 +70,3 @@ ...@@ -70,4 +70,3 @@
- if hook.send(trigger) - if hook.send(trigger)
%span.label.label-gray= trigger.titleize %span.label.label-gray= trigger.titleize
%span.label.label-gray SSL Verification: #{hook.enable_ssl_verification ? "enabled" : "disabled"} %span.label.label-gray SSL Verification: #{hook.enable_ssl_verification ? "enabled" : "disabled"}
%li{id: dom_id(label)} %li{ id: dom_id(label) }
.label-row .label-row
= render_colored_label(label, tooltip: false) = render_colored_label(label, tooltip: false)
= markdown_field(label, :description) = markdown_field(label, :description)
......
%tr{id: dom_id(runner)} %tr{ id: dom_id(runner) }
%td %td
- if runner.shared? - if runner.shared?
%span.label.label-success shared %span.label.label-success shared
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: 'btn' = link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: 'btn'
- unless user == current_user - unless user == current_user
.dropdown.inline .dropdown.inline
%a.dropdown-new.btn.btn-default#project-settings-button{href: '#', data: { toggle: 'dropdown' } } %a.dropdown-new.btn.btn-default#project-settings-button{ href: '#', data: { toggle: 'dropdown' } }
= icon('cog') = icon('cog')
= icon('caret-down') = icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
%li.two-factor-status %li.two-factor-status
%span.light Two-factor Authentication: %span.light Two-factor Authentication:
%strong{class: @user.two_factor_enabled? ? 'cgreen' : 'cred'} %strong{ class: @user.two_factor_enabled? ? 'cgreen' : 'cred' }
- if @user.two_factor_enabled? - if @user.two_factor_enabled?
Enabled Enabled
= link_to 'Disable', disable_two_factor_admin_user_path(@user), data: {confirm: 'Are you sure?'}, method: :patch, class: 'btn btn-xs btn-remove pull-right', title: 'Disable Two-factor Authentication' = link_to 'Disable', disable_two_factor_admin_user_path(@user), data: {confirm: 'Are you sure?'}, method: :patch, class: 'btn btn-xs btn-remove pull-right', title: 'Disable Two-factor Authentication'
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
- if build[:allow_failure] - if build[:allow_failure]
%b Allowed to fail %b Allowed to fail
-else - else
%p %p
%b Status: %b Status:
syntax is incorrect syntax is incorrect
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
= link_to new_project_path, class: "btn btn-new" do = link_to new_project_path, class: "btn btn-new" do
New project New project
-if publicish_project_count > 0 - if publicish_project_count > 0
.blank-state .blank-state
.blank-state-icon .blank-state-icon
= icon("globe") = icon("globe")
......
%li{class: "todo todo-#{todo.done? ? 'done' : 'pending'}", id: dom_id(todo), data:{url: todo_target_path(todo)} } %li{ class: "todo todo-#{todo.done? ? 'done' : 'pending'}", id: dom_id(todo), data: { url: todo_target_path(todo) } }
= author_avatar(todo, size: 40) = author_avatar(todo, size: 40)
.todo-item.todo-block .todo-item.todo-block
......
...@@ -5,14 +5,14 @@ ...@@ -5,14 +5,14 @@
.top-area .top-area
%ul.nav-links %ul.nav-links
- todo_pending_active = ('active' if params[:state].blank? || params[:state] == 'pending') - todo_pending_active = ('active' if params[:state].blank? || params[:state] == 'pending')
%li{class: "todos-pending #{todo_pending_active}"}> %li{ class: "todos-pending #{todo_pending_active}" }>
= link_to todos_filter_path(state: 'pending') do = link_to todos_filter_path(state: 'pending') do
%span %span
To do To do
%span.badge %span.badge
= number_with_delimiter(todos_pending_count) = number_with_delimiter(todos_pending_count)
- todo_done_active = ('active' if params[:state] == 'done') - todo_done_active = ('active' if params[:state] == 'done')
%li{class: "todos-done #{todo_done_active}"}> %li{ class: "todos-done #{todo_done_active}" }>
= link_to todos_filter_path(state: 'done') do = link_to todos_filter_path(state: 'done') do
%span %span
Done Done
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
data: { data: todo_actions_options, default_label: 'Action' } }) data: { data: todo_actions_options, default_label: 'Action' } })
.pull-right .pull-right
.dropdown.inline.prepend-left-10 .dropdown.inline.prepend-left-10
%button.dropdown-toggle{type: 'button', 'data-toggle' => 'dropdown'} %button.dropdown-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span.light %span.light
- if @sort.present? - if @sort.present?
= sort_options_hash[@sort] = sort_options_hash[@sort]
......
= form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: 'new_user gl-show-field-errors', 'aria-live' => 'assertive'}) do |f| = form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: 'new_user gl-show-field-errors', 'aria-live' => 'assertive'}) do |f|
%div.form-group .form-group
= f.label "Username or email", for: :login = f.label "Username or email", for: :login
= f.text_field :login, class: "form-control top", autofocus: "autofocus", autocapitalize: "off", autocorrect: "off", required: true, title: "This field is required." = f.text_field :login, class: "form-control top", autofocus: "autofocus", autocapitalize: "off", autocorrect: "off", required: true, title: "This field is required."
%div.form-group .form-group
= f.label :password = f.label :password
= f.password_field :password, class: "form-control bottom", required: true, title: "This field is required." = f.password_field :password, class: "form-control bottom", required: true, title: "This field is required."
- if devise_mapping.rememberable? - if devise_mapping.rememberable?
.remember-me.checkbox .remember-me.checkbox
%label{for: "user_remember_me"} %label{ for: "user_remember_me" }
= f.check_box :remember_me = f.check_box :remember_me
%span Remember me %span Remember me
.pull-right.forgot-password .pull-right.forgot-password
= link_to "Forgot your password?", new_password_path(resource_name) = link_to "Forgot your password?", new_password_path(resource_name)
%div.submit-container.move-submit-down .submit-container.move-submit-down
= f.submit "Sign in", class: "btn btn-save" = f.submit "Sign in", class: "btn btn-save"
= form_tag(omniauth_authorize_path(:user, :crowd), id: 'new_crowd_user', class: 'gl-show-field-errors') do = form_tag(omniauth_authorize_path(:user, :crowd), id: 'new_crowd_user', class: 'gl-show-field-errors') do
.form-group .form-group
= label_tag :username, 'Username or email' = label_tag :username, 'Username or email'
= text_field_tag :username, nil, {class: "form-control top", title: "This field is required", autofocus: "autofocus", required: true } = text_field_tag :username, nil, { class: "form-control top", title: "This field is required", autofocus: "autofocus", required: true }
.form-group .form-group
= label_tag :password = label_tag :password
= password_field_tag :password, nil, { class: "form-control bottom", title: "This field is required.", required: true } = password_field_tag :password, nil, { class: "form-control bottom", title: "This field is required.", required: true }
- if devise_mapping.rememberable? - if devise_mapping.rememberable?
.remember-me.checkbox .remember-me.checkbox
%label{for: "remember_me"} %label{ for: "remember_me" }
= check_box_tag :remember_me, '1', false, id: 'remember_me' = check_box_tag :remember_me, '1', false, id: 'remember_me'
%span Remember me %span Remember me
= submit_tag "Sign in", class: "btn-save btn" = submit_tag "Sign in", class: "btn-save btn"
= form_tag(omniauth_callback_path(:user, server['provider_name']), id: 'new_ldap_user', class: "gl-show-field-errors") do = form_tag(omniauth_callback_path(:user, server['provider_name']), id: 'new_ldap_user', class: "gl-show-field-errors") do
.form-group .form-group
= label_tag :username, "#{server['label']} Username" = label_tag :username, "#{server['label']} Username"
= text_field_tag :username, nil, {class: "form-control top", title: "This field is required.", autofocus: "autofocus", required: true } = text_field_tag :username, nil, { class: "form-control top", title: "This field is required.", autofocus: "autofocus", required: true }
.form-group .form-group
= label_tag :password = label_tag :password
= password_field_tag :password, nil, { class: "form-control bottom", title: "This field is required.", required: true } = password_field_tag :password, nil, { class: "form-control bottom", title: "This field is required.", required: true }
- if devise_mapping.rememberable? - if devise_mapping.rememberable?
.remember-me.checkbox .remember-me.checkbox
%label{for: "remember_me"} %label{ for: "remember_me" }
= check_box_tag :remember_me, '1', false, id: 'remember_me' = check_box_tag :remember_me, '1', false, id: 'remember_me'
%span Remember me %span Remember me
= submit_tag "Sign in", class: "btn-save btn" = submit_tag "Sign in", class: "btn-save btn"
%div.omniauth-container .omniauth-container
%p %p
%span.light %span.light
Sign in with   Sign in with  
......
- if form_based_providers.any? - if form_based_providers.any?
- if crowd_enabled? - if crowd_enabled?
.login-box.tab-pane.active{id: "crowd", role: 'tabpanel', class: 'tab-pane'} .login-box.tab-pane.active{ id: "crowd", role: 'tabpanel' }
.login-body .login-body
= render 'devise/sessions/new_crowd' = render 'devise/sessions/new_crowd'
- @ldap_servers.each_with_index do |server, i| - @ldap_servers.each_with_index do |server, i|
.login-box.tab-pane{id: "#{server['provider_name']}", role: 'tabpanel', class: (:active if i.zero? && !crowd_enabled?)} .login-box.tab-pane{ id: "#{server['provider_name']}", role: 'tabpanel', class: (:active if i.zero? && !crowd_enabled?) }
.login-body .login-body
= render 'devise/sessions/new_ldap', server: server = render 'devise/sessions/new_ldap', server: server
- if signin_enabled? - if signin_enabled?
.login-box.tab-pane{id: 'ldap-standard', role: 'tabpanel'} .login-box.tab-pane{ id: 'ldap-standard', role: 'tabpanel' }
.login-body .login-body
= render 'devise/sessions/new_base' = render 'devise/sessions/new_base'
- elsif signin_enabled? - elsif signin_enabled?
.login-box.tab-pane.active{id: 'login-pane', role: 'tabpanel'} .login-box.tab-pane.active{ id: 'login-pane', role: 'tabpanel' }
.login-body .login-body
= render 'devise/sessions/new_base' = render 'devise/sessions/new_base'
#register-pane.login-box{ role: 'tabpanel', class: 'tab-pane' } #register-pane.tab-pane.login-box{ role: 'tabpanel' }
.login-body .login-body
= form_for(resource, as: "new_#{resource_name}", url: registration_path(resource_name), html: { class: "new_new_user gl-show-field-errors", "aria-live" => "assertive" }) do |f| = form_for(resource, as: "new_#{resource_name}", url: registration_path(resource_name), html: { class: "new_new_user gl-show-field-errors", "aria-live" => "assertive" }) do |f|
.devise-errors .devise-errors
= devise_error_messages! = devise_error_messages!
%div.form-group .form-group
= f.label :name = f.label :name
= f.text_field :name, class: "form-control top", required: true, title: "This field is required." = f.text_field :name, class: "form-control top", required: true, title: "This field is required."
%div.username.form-group .username.form-group
= f.label :username = f.label :username
= f.text_field :username, class: "form-control middle", pattern: Gitlab::Regex::NAMESPACE_REGEX_STR_SIMPLE, required: true, title: 'Please create a username with only alphanumeric characters.' = f.text_field :username, class: "form-control middle", pattern: Gitlab::Regex::NAMESPACE_REGEX_STR_SIMPLE, required: true, title: 'Please create a username with only alphanumeric characters.'
%p.validation-error.hide Username is already taken. %p.validation-error.hide Username is already taken.
%p.validation-success.hide Username is available. %p.validation-success.hide Username is available.
%p.validation-pending.hide Checking username availability... %p.validation-pending.hide Checking username availability...
%div.form-group .form-group
= f.label :email = f.label :email
= f.email_field :email, class: "form-control middle", required: true, title: "Please provide a valid email address." = f.email_field :email, class: "form-control middle", required: true, title: "Please provide a valid email address."
.form-group.append-bottom-20#password-strength .form-group.append-bottom-20#password-strength
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
%li.active %li.active
= link_to "Crowd", "#crowd", 'data-toggle' => 'tab' = link_to "Crowd", "#crowd", 'data-toggle' => 'tab'
- @ldap_servers.each_with_index do |server, i| - @ldap_servers.each_with_index do |server, i|
%li{class: (:active if i.zero? && !crowd_enabled?)} %li{ class: (:active if i.zero? && !crowd_enabled?) }
= link_to server['label'], "##{server['provider_name']}", 'data-toggle' => 'tab' = link_to server['label'], "##{server['provider_name']}", 'data-toggle' => 'tab'
- if signin_enabled? - if signin_enabled?
%li %li
......
%ul.nav-links.new-session-tabs.nav-tabs{ role: 'tablist'} %ul.nav-links.new-session-tabs.nav-tabs{ role: 'tablist' }
%li.active{ role: 'presentation' } %li.active{ role: 'presentation' }
%a{ href: '#login-pane', data: { toggle: 'tab' }, role: 'tab'} Sign in %a{ href: '#login-pane', data: { toggle: 'tab' }, role: 'tab' } Sign in
- if signin_enabled? && signup_enabled? - if signin_enabled? && signup_enabled?
%li{ role: 'presentation'} %li{ role: 'presentation' }
%a{ href: '#register-pane', data: { toggle: 'tab' }, role: 'tab'} Register %a{ href: '#register-pane', data: { toggle: 'tab' }, role: 'tab' } Register
- expanded = local_assigns.fetch(:expanded, true) - expanded = local_assigns.fetch(:expanded, true)
%tr.notes_holder{class: ('hide' unless expanded)} %tr.notes_holder{ class: ('hide' unless expanded) }
%td.notes_line{ colspan: 2 } %td.notes_line{ colspan: 2 }
%td.notes_content %td.notes_content
.content .content
......
...@@ -5,5 +5,5 @@ ...@@ -5,5 +5,5 @@
%button.btn.btn-default.discussion-next-btn.has-tooltip{ "@click" => "jumpToNextUnresolvedDiscussion", %button.btn.btn-default.discussion-next-btn.has-tooltip{ "@click" => "jumpToNextUnresolvedDiscussion",
title: "Jump to next unresolved discussion", title: "Jump to next unresolved discussion",
"aria-label" => "Jump to next unresolved discussion", "aria-label" => "Jump to next unresolved discussion",
data: { container: "body" }} data: { container: "body" } }
= custom_icon("next_discussion") = custom_icon("next_discussion")
- expanded = discussion_left.try(:expanded?) || discussion_right.try(:expanded?) - expanded = discussion_left.try(:expanded?) || discussion_right.try(:expanded?)
%tr.notes_holder{class: ('hide' unless expanded)} %tr.notes_holder{ class: ('hide' unless expanded) }
- if discussion_left - if discussion_left
%td.notes_line.old %td.notes_line.old
%td.notes_content.parallel.old %td.notes_content.parallel.old
.content{class: ('hide' unless discussion_left.expanded?)} .content{ class: ('hide' unless discussion_left.expanded?) }
= render "discussions/notes", discussion: discussion_left, line_type: 'old' = render "discussions/notes", discussion: discussion_left, line_type: 'old'
- else - else
%td.notes_line.old= "" %td.notes_line.old= ""
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
- if discussion_right - if discussion_right
%td.notes_line.new %td.notes_line.new
%td.notes_content.parallel.new %td.notes_content.parallel.new
.content{class: ('hide' unless discussion_right.expanded?)} .content{ class: ('hide' unless discussion_right.expanded?) }
= render "discussions/notes", discussion: discussion_right, line_type: 'new' = render "discussions/notes", discussion: discussion_right, line_type: 'new'
- else - else
%td.notes_line.new= "" %td.notes_line.new= ""
......
- submit_btn_css ||= 'btn btn-link btn-remove btn-sm' - submit_btn_css ||= 'btn btn-link btn-remove btn-sm'
= form_tag oauth_application_path(application) do = form_tag oauth_application_path(application) do
%input{:name => "_method", :type => "hidden", :value => "delete"}/ %input{ :name => "_method", :type => "hidden", :value => "delete" }/
- if defined? small - if defined? small
= button_tag type: "submit", class: "btn btn-transparent", data: { confirm: "Are you sure?" } do = button_tag type: "submit", class: "btn btn-transparent", data: { confirm: "Are you sure?" } do
%span.sr-only %span.sr-only
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
%th.last-heading %th.last-heading
%tbody %tbody
- @applications.each do |application| - @applications.each do |application|
%tr{id: "application_#{application.id}"} %tr{ id: "application_#{application.id}" }
%td= link_to application.name, oauth_application_path(application) %td= link_to application.name, oauth_application_path(application)
%td %td
- application.redirect_uri.split.each do |uri| - application.redirect_uri.split.each do |uri|
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
%tbody %tbody
- @authorized_apps.each do |app| - @authorized_apps.each do |app|
- token = app.authorized_tokens.order('created_at desc').first - token = app.authorized_tokens.order('created_at desc').first
%tr{id: "application_#{app.id}"} %tr{ id: "application_#{app.id}" }
%td= app.name %td= app.name
%td= token.created_at %td= token.created_at
%td= token.scopes %td= token.scopes
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
%tr %tr
%td %td
Anonymous Anonymous
%div.help-block .help-block
%em Authorization was granted by entering your username and password in the application. %em Authorization was granted by entering your username and password in the application.
%td= token.created_at %td= token.created_at
%td= token.scopes %td= token.scopes
......
%h3.page-title An error has occurred %h3.page-title An error has occurred
%main{:role => "main"} %main{ :role => "main" }
%pre= @pre_auth.error_response.body[:error_description] %pre= @pre_auth.error_response.body[:error_description]
%h3.page-title Authorization required %h3.page-title Authorization required
%main{:role => "main"} %main{ :role => "main" }
%p.h4 %p.h4
Authorize Authorize
%strong.text-info= @pre_auth.client.name %strong.text-info= @pre_auth.client.name
......
%h3.page-title Authorization code: %h3.page-title Authorization code:
%main{:role => "main"} %main{ :role => "main" }
%code#authorization_code= params[:code] %code#authorization_code= params[:code]
...@@ -5,5 +5,5 @@ ...@@ -5,5 +5,5 @@
- path = oauth_authorized_application_path(application) - path = oauth_authorized_application_path(application)
= form_tag path do = form_tag path do
%input{:name => "_method", :type => "hidden", :value => "delete"}/ %input{ :name => "_method", :type => "hidden", :value => "delete" }/
= submit_tag 'Revoke', onclick: "return confirm('Are you sure?')", class: 'btn btn-remove btn-sm' = submit_tag 'Revoke', onclick: "return confirm('Are you sure?')", class: 'btn btn-remove btn-sm'
%header.page-header %header.page-header
%h1 Your authorized applications %h1 Your authorized applications
%main{:role => "main"} %main{ :role => "main" }
.table-holder .table-holder
%table.table.table-striped %table.table.table-striped
%thead %thead
......
...@@ -7,5 +7,5 @@ ...@@ -7,5 +7,5 @@
%ul.clearfix.emoji-menu-list %ul.clearfix.emoji-menu-list
- emojis.each do |emoji| - emojis.each do |emoji|
%li.pull-left.text-center.emoji-menu-list-item %li.pull-left.text-center.emoji-menu-list-item
%button.emoji-menu-btn.text-center.js-emoji-btn{type: "button"} %button.emoji-menu-btn.text-center.js-emoji-btn{ type: "button" }
= emoji_icon(emoji["name"], emoji["unicode"], emoji["aliases"]) = emoji_icon(emoji["name"], emoji["unicode"], emoji["aliases"])
- content_for(:title, 'Access Denied') - content_for(:title, 'Access Denied')
%img{:alt => "GitLab Logo", %img{ :alt => "GitLab Logo", :src => image_path('logo.svg') }
:src => image_path('logo.svg')}
%h1 %h1
403 403
.container .container
......
- content_for(:title, 'Encoding Error') - content_for(:title, 'Encoding Error')
%img{:alt => "GitLab Logo", %img{ :alt => "GitLab Logo", :src => image_path('logo.svg') }
:src => image_path('logo.svg')}
%h1 %h1
500 500
.container .container
......
- content_for(:title, 'Git Resource Not Found') - content_for(:title, 'Git Resource Not Found')
%img{:alt => "GitLab Logo", %img{ :alt => "GitLab Logo", :src => image_path('logo.svg') }
:src => image_path('logo.svg')}
%h1 %h1
404 404
.container .container
......
- content_for(:title, 'Not Found') - content_for(:title, 'Not Found')
%img{:alt => "GitLab Logo", %img{ :alt => "GitLab Logo", :src => image_path('logo.svg') }
:src => image_path('logo.svg')}
%h1 %h1
404 404
.container .container
......
- content_for(:title, 'Auth Error') - content_for(:title, 'Auth Error')
%img{:alt => "GitLab Logo", %img{ :alt => "GitLab Logo", :src => image_path('logo.svg') }
:src => image_path('logo.svg')}
%h1 %h1
422 422
.container .container
......
%div{xmlns: "http://www.w3.org/1999/xhtml"} %div{ xmlns: "http://www.w3.org/1999/xhtml" }
= markdown(issue.description, pipeline: :atom, project: issue.project, author: issue.author) = markdown(issue.description, pipeline: :atom, project: issue.project, author: issue.author)
%div{xmlns: "http://www.w3.org/1999/xhtml"} %div{ xmlns: "http://www.w3.org/1999/xhtml" }
= markdown(merge_request.description, pipeline: :atom, project: merge_request.project, author: merge_request.author) = markdown(merge_request.description, pipeline: :atom, project: merge_request.project, author: merge_request.author)
%div{xmlns: "http://www.w3.org/1999/xhtml"} %div{ xmlns: "http://www.w3.org/1999/xhtml" }
= markdown(note.note, pipeline: :atom, project: note.project, author: note.author) = markdown(note.note, pipeline: :atom, project: note.project, author: note.author)
%div{xmlns: "http://www.w3.org/1999/xhtml"} %div{ xmlns: "http://www.w3.org/1999/xhtml" }
- event.commits.first(15).each do |commit| - event.commits.first(15).each do |commit|
%p %p
%strong= commit[:author][:name] %strong= commit[:author][:name]
......
.event-title .event-title
%span.author_name= link_to_author event %span.author_name= link_to_author event
%span{class: event.action_name} %span{ class: event.action_name }
- if event.target - if event.target
= event.action_name = event.action_name
%strong %strong
......
.event-title .event-title
%span.author_name= link_to_author event %span.author_name= link_to_author event
%span{class: event.action_name} %span{ class: event.action_name }
= event_action_name(event) = event_action_name(event)
- if event.project - if event.project
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
.pull-right .pull-right
.dropdown.inline .dropdown.inline
%button.dropdown-toggle{type: 'button', 'data-toggle' => 'dropdown'} %button.dropdown-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span.light %span.light
- if @sort.present? - if @sort.present?
= sort_options_hash[@sort] = sort_options_hash[@sort]
......
- if current_user - if current_user
.dropdown .dropdown
%button.dropdown-toggle{href: '#', "data-toggle" => "dropdown"} %button.dropdown-toggle{ href: '#', "data-toggle" => "dropdown" }
= icon('globe') = icon('globe')
%span.light Visibility: %span.light Visibility:
- if params[:visibility_level].present? - if params[:visibility_level].present?
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
- if @tags.present? - if @tags.present?
.dropdown .dropdown
%button.dropdown-toggle{href: '#', "data-toggle" => "dropdown"} %button.dropdown-toggle{ href: '#', "data-toggle" => "dropdown" }
= icon('tags') = icon('tags')
%span.light Tags: %span.light Tags:
- if params[:tag].present? - if params[:tag].present?
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
= render 'shared/members/access_request_buttons', source: @group = render 'shared/members/access_request_buttons', source: @group
= render 'shared/notifications/button', notification_setting: @notification_setting = render 'shared/notifications/button', notification_setting: @notification_setting
%div.groups-header{ class: container_class } .groups-header{ class: container_class }
.top-area .top-area
%ul.nav-links %ul.nav-links
%li.active %li.active
......
#modal-shortcuts.modal{tabindex: -1} #modal-shortcuts.modal{ tabindex: -1 }
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h4 %h4
Keyboard Shortcuts Keyboard Shortcuts
%small %small
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
.col-lg-4 .col-lg-4
%table.shortcut-mappings %table.shortcut-mappings
%tbody{ class: 'hidden-shortcut project', style: 'display:none' } %tbody.hidden-shortcut.project{ style: 'display:none' }
%tr %tr
%th %th
%th Global Dashboard %th Global Dashboard
...@@ -190,7 +190,7 @@ ...@@ -190,7 +190,7 @@
%td New issue %td New issue
.col-lg-4 .col-lg-4
%table.shortcut-mappings %table.shortcut-mappings
%tbody{ class: 'hidden-shortcut network', style: 'display:none' } %tbody.hidden-shortcut.network{ style: 'display:none' }
%tr %tr
%th %th
%th Network Graph %th Network Graph
...@@ -240,7 +240,7 @@ ...@@ -240,7 +240,7 @@
.key .key
shift j shift j
%td Scroll to bottom %td Scroll to bottom
%tbody{ class: 'hidden-shortcut issues', style: 'display:none' } %tbody.hidden-shortcut.issues{ style: 'display:none' }
%tr %tr
%th %th
%th Issues %th Issues
...@@ -264,7 +264,7 @@ ...@@ -264,7 +264,7 @@
%td.shortcut %td.shortcut
.key l .key l
%td Change Label %td Change Label
%tbody{ class: 'hidden-shortcut merge_requests', style: 'display:none' } %tbody.hidden-shortcut.merge_requests{ style: 'display:none' }
%tr %tr
%th %th
%th Merge Requests %th Merge Requests
......
...@@ -182,7 +182,7 @@ ...@@ -182,7 +182,7 @@
.nav-controls .nav-controls
= text_field_tag 'sample', nil, class: 'form-control' = text_field_tag 'sample', nil, class: 'form-control'
.dropdown .dropdown
%button.dropdown-menu-toggle{type: 'button', 'data-toggle' => 'dropdown'} %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span Sort by name %span Sort by name
= icon('chevron-down') = icon('chevron-down')
%ul.dropdown-menu %ul.dropdown-menu
...@@ -205,121 +205,121 @@ ...@@ -205,121 +205,121 @@
%h2#buttons Buttons %h2#buttons Buttons
.example .example
%button.btn.btn-default{:type => "button"} Default %button.btn.btn-default{ :type => "button" } Default
%button.btn.btn-gray{:type => "button"} Gray %button.btn.btn-gray{ :type => "button" } Gray
%button.btn.btn-primary{:type => "button"} Primary %button.btn.btn-primary{ :type => "button" } Primary
%button.btn.btn-success{:type => "button"} Success %button.btn.btn-success{ :type => "button" } Success
%button.btn.btn-info{:type => "button"} Info %button.btn.btn-info{ :type => "button" } Info
%button.btn.btn-warning{:type => "button"} Warning %button.btn.btn-warning{ :type => "button" } Warning
%button.btn.btn-danger{:type => "button"} Danger %button.btn.btn-danger{ :type => "button" } Danger
%button.btn.btn-link{:type => "button"} Link %button.btn.btn-link{ :type => "button" } Link
%h2#dropdowns Dropdowns %h2#dropdowns Dropdowns
.example .example
.clearfix .clearfix
.dropdown.inline.pull-left .dropdown.inline.pull-left
%button.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Dropdown Dropdown
= icon('chevron-down') = icon('chevron-down')
%ul.dropdown-menu %ul.dropdown-menu
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
.dropdown.inline.pull-right .dropdown.inline.pull-right
%button.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Dropdown Dropdown
= icon('chevron-down') = icon('chevron-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
.example .example
%div %div
.dropdown.inline .dropdown.inline
%button.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Dropdown Dropdown
= icon('chevron-down') = icon('chevron-down')
%ul.dropdown-menu.dropdown-menu-selectable %ul.dropdown-menu.dropdown-menu-selectable
%li %li
%a.is-active{href: "#"} %a.is-active{ href: "#" }
Dropdown Option Dropdown Option
.example .example
%div %div
.dropdown.inline .dropdown.inline
%button.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Dropdown Dropdown
= icon('chevron-down') = icon('chevron-down')
.dropdown-menu.dropdown-select.dropdown-menu-selectable .dropdown-menu.dropdown-select.dropdown-menu-selectable
.dropdown-title .dropdown-title
%span Dropdown Title %span Dropdown Title
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times') = icon('times')
.dropdown-input .dropdown-input
%input.dropdown-input-field{type: "search", placeholder: "Filter results"} %input.dropdown-input-field{ type: "search", placeholder: "Filter results" }
= icon('search') = icon('search')
.dropdown-content .dropdown-content
%ul %ul
%li %li
%a.is-active{href: "#"} %a.is-active{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li.divider %li.divider
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
.dropdown-footer .dropdown-footer
%strong Tip: %strong Tip:
If an author is not a member of this project, you can still filter by his name while using the search field. If an author is not a member of this project, you can still filter by his name while using the search field.
.dropdown.inline .dropdown.inline
%button.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Dropdown loading Dropdown loading
= icon('chevron-down') = icon('chevron-down')
.dropdown-menu.dropdown-select.dropdown-menu-selectable.is-loading .dropdown-menu.dropdown-select.dropdown-menu-selectable.is-loading
.dropdown-title .dropdown-title
%span Dropdown Title %span Dropdown Title
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times') = icon('times')
.dropdown-input .dropdown-input
%input.dropdown-input-field{type: "search", placeholder: "Filter results"} %input.dropdown-input-field{ type: "search", placeholder: "Filter results" }
= icon('search') = icon('search')
.dropdown-content .dropdown-content
%ul %ul
%li %li
%a.is-active{href: "#"} %a.is-active{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li.divider %li.divider
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
%li %li
%a{href: "#"} %a{ href: "#" }
Dropdown Option Dropdown Option
.dropdown-footer .dropdown-footer
%strong Tip: %strong Tip:
...@@ -330,21 +330,21 @@ ...@@ -330,21 +330,21 @@
.example .example
%div %div
.dropdown.inline .dropdown.inline
%button.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-menu-toggle{ type: 'button', data: {toggle: 'dropdown' } }
Dropdown user Dropdown user
= icon('chevron-down') = icon('chevron-down')
.dropdown-menu.dropdown-select.dropdown-menu-selectable.dropdown-menu-user .dropdown-menu.dropdown-select.dropdown-menu-selectable.dropdown-menu-user
.dropdown-title .dropdown-title
%span Dropdown Title %span Dropdown Title
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times') = icon('times')
.dropdown-input .dropdown-input
%input.dropdown-input-field{type: "search", placeholder: "Filter results"} %input.dropdown-input-field{ type: "search", placeholder: "Filter results" }
= icon('search') = icon('search')
.dropdown-content .dropdown-content
%ul %ul
%li %li
%a.dropdown-menu-user-link.is-active{href: "#"} %a.dropdown-menu-user-link.is-active{ href: "#" }
= link_to_member_avatar(@user, size: 30) = link_to_member_avatar(@user, size: 30)
%strong.dropdown-menu-user-full-name %strong.dropdown-menu-user-full-name
= @user.name = @user.name
...@@ -354,24 +354,24 @@ ...@@ -354,24 +354,24 @@
.example .example
%div %div
.dropdown.inline .dropdown.inline
%button.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Dropdown page 2 Dropdown page 2
= icon('chevron-down') = icon('chevron-down')
.dropdown-menu.dropdown-select.dropdown-menu-selectable.dropdown-menu-user.dropdown-menu-paging.is-page-two .dropdown-menu.dropdown-select.dropdown-menu-selectable.dropdown-menu-user.dropdown-menu-paging.is-page-two
.dropdown-page-one .dropdown-page-one
.dropdown-title .dropdown-title
%button.dropdown-title-button.dropdown-menu-back{aria: {label: "Go back"}} %button.dropdown-title-button.dropdown-menu-back{ aria: { label: "Go back" } }
= icon('arrow-left') = icon('arrow-left')
%span Dropdown Title %span Dropdown Title
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times') = icon('times')
.dropdown-input .dropdown-input
%input.dropdown-input-field{type: "search", placeholder: "Filter results"} %input.dropdown-input-field{ type: "search", placeholder: "Filter results" }
= icon('search') = icon('search')
.dropdown-content .dropdown-content
%ul %ul
%li %li
%a.dropdown-menu-user-link.is-active{href: "#"} %a.dropdown-menu-user-link.is-active{ href: "#" }
= link_to_member_avatar(@user, size: 30) = link_to_member_avatar(@user, size: 30)
%strong.dropdown-menu-user-full-name %strong.dropdown-menu-user-full-name
= @user.name = @user.name
...@@ -379,13 +379,13 @@ ...@@ -379,13 +379,13 @@
= @user.to_reference = @user.to_reference
.dropdown-page-two .dropdown-page-two
.dropdown-title .dropdown-title
%button.dropdown-title-button.dropdown-menu-back{aria: {label: "Go back"}} %button.dropdown-title-button.dropdown-menu-back{ aria: { label: "Go back" } }
= icon('arrow-left') = icon('arrow-left')
%span Create label %span Create label
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times') = icon('times')
.dropdown-input .dropdown-input
%input.dropdown-input-field{type: "search", placeholder: "Name new label"} %input.dropdown-input-field{ type: "search", placeholder: "Name new label" }
.dropdown-content .dropdown-content
%button.btn.btn-primary %button.btn.btn-primary
Create Create
...@@ -393,16 +393,16 @@ ...@@ -393,16 +393,16 @@
.example .example
%div %div
.dropdown.inline .dropdown.inline
%button#js-project-dropdown.dropdown-menu-toggle{type: 'button', data: {toggle: 'dropdown'}} %button#js-project-dropdown.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Projects Projects
= icon('chevron-down') = icon('chevron-down')
.dropdown-menu.dropdown-select.dropdown-menu-selectable .dropdown-menu.dropdown-select.dropdown-menu-selectable
.dropdown-title .dropdown-title
%span Go to project %span Go to project
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times') = icon('times')
.dropdown-input .dropdown-input
%input.dropdown-input-field{type: "search", placeholder: "Filter results"} %input.dropdown-input-field{ type: "search", placeholder: "Filter results" }
= icon('search') = icon('search')
.dropdown-content .dropdown-content
.dropdown-loading .dropdown-loading
...@@ -486,22 +486,22 @@ ...@@ -486,22 +486,22 @@
.example .example
%form.form-horizontal %form.form-horizontal
.form-group .form-group
%label.col-sm-2.control-label{:for => "inputEmail3"} Email %label.col-sm-2.control-label{ :for => "inputEmail3" } Email
.col-sm-10 .col-sm-10
%input#inputEmail3.form-control{:placeholder => "Email", :type => "email"}/ %input#inputEmail3.form-control{ :placeholder => "Email", :type => "email" }/
.form-group .form-group
%label.col-sm-2.control-label{:for => "inputPassword3"} Password %label.col-sm-2.control-label{ :for => "inputPassword3" } Password
.col-sm-10 .col-sm-10
%input#inputPassword3.form-control{:placeholder => "Password", :type => "password"}/ %input#inputPassword3.form-control{ :placeholder => "Password", :type => "password" }/
.form-group .form-group
.col-sm-offset-2.col-sm-10 .col-sm-offset-2.col-sm-10
.checkbox .checkbox
%label %label
%input{:type => "checkbox"}/ %input{ :type => "checkbox" }/
Remember me Remember me
.form-group .form-group
.col-sm-offset-2.col-sm-10 .col-sm-offset-2.col-sm-10
%button.btn.btn-default{:type => "submit"} Sign in %button.btn.btn-default{ :type => "submit" } Sign in
.lead .lead
Form when label rendered above input Form when label rendered above input
...@@ -510,16 +510,16 @@ ...@@ -510,16 +510,16 @@
.example .example
%form %form
.form-group .form-group
%label{:for => "exampleInputEmail1"} Email address %label{ :for => "exampleInputEmail1" } Email address
%input#exampleInputEmail1.form-control{:placeholder => "Enter email", :type => "email"}/ %input#exampleInputEmail1.form-control{ :placeholder => "Enter email", :type => "email" }/
.form-group .form-group
%label{:for => "exampleInputPassword1"} Password %label{ :for => "exampleInputPassword1" } Password
%input#exampleInputPassword1.form-control{:placeholder => "Password", :type => "password"}/ %input#exampleInputPassword1.form-control{ :placeholder => "Password", :type => "password" }/
.checkbox .checkbox
%label %label
%input{:type => "checkbox"}/ %input{ :type => "checkbox" }/
Remember me Remember me
%button.btn.btn-default{:type => "submit"} Sign in %button.btn.btn-default{ :type => "submit" } Sign in
%h2#file File %h2#file File
%h4 %h4
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
%th Status %th Status
%tbody %tbody
- @already_added_projects.each do |project| - @already_added_projects.each do |project|
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"} %tr{ id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}" }
%td %td
= provider_project_link(provider, project.import_source) = provider_project_link(provider, project.import_source)
%td %td
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
= project.human_import_status_name = project.human_import_status_name
- @repos.each do |repo| - @repos.each do |repo|
%tr{id: "repo_#{repo.id}"} %tr{ id: "repo_#{repo.id}" }
%td %td
= provider_project_link(provider, repo.full_name) = provider_project_link(provider, repo.full_name)
%td.import-target %td.import-target
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
%th Status %th Status
%tbody %tbody
- @already_added_projects.each do |project| - @already_added_projects.each do |project|
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"} %tr{ id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}" }
%td %td
= link_to project.import_source, "https://bitbucket.org/#{project.import_source}", target: '_blank' = link_to project.import_source, "https://bitbucket.org/#{project.import_source}", target: '_blank'
%td %td
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
= project.human_import_status_name = project.human_import_status_name
- @repos.each do |repo| - @repos.each do |repo|
%tr{id: "repo_#{repo.owner}___#{repo.slug}"} %tr{ id: "repo_#{repo.owner}___#{repo.slug}" }
%td %td
= link_to repo.full_name, "https://bitbucket.org/#{repo.full_name}", target: "_blank" = link_to repo.full_name, "https://bitbucket.org/#{repo.full_name}", target: "_blank"
%td.import-target %td.import-target
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
Import Import
= icon('spinner spin', class: 'loading-icon') = icon('spinner spin', class: 'loading-icon')
- @incompatible_repos.each do |repo| - @incompatible_repos.each do |repo|
%tr{id: "repo_#{repo.owner}___#{repo.slug}"} %tr{ id: "repo_#{repo.owner}___#{repo.slug}" }
%td %td
= link_to repo.full_name, "https://bitbucket.org/#{repo.full_name}", target: '_blank' = link_to repo.full_name, "https://bitbucket.org/#{repo.full_name}", target: '_blank'
%td.import-target %td.import-target
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
%th Status %th Status
%tbody %tbody
- @already_added_projects.each do |project| - @already_added_projects.each do |project|
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"} %tr{ id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}" }
%td %td
= project.import_source = project.import_source
%td %td
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
= project.human_import_status_name = project.human_import_status_name
- @repos.each do |repo| - @repos.each do |repo|
%tr{id: "repo_#{repo.id}"} %tr{ id: "repo_#{repo.id}" }
%td %td
= repo.name = repo.name
%td.import-target %td.import-target
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
%th Status %th Status
%tbody %tbody
- @already_added_projects.each do |project| - @already_added_projects.each do |project|
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"} %tr{ id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}" }
%td %td
= link_to project.import_source, "https://gitlab.com/#{project.import_source}", target: "_blank" = link_to project.import_source, "https://gitlab.com/#{project.import_source}", target: "_blank"
%td %td
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
= project.human_import_status_name = project.human_import_status_name
- @repos.each do |repo| - @repos.each do |repo|
%tr{id: "repo_#{repo["id"]}"} %tr{ id: "repo_#{repo["id"]}" }
%td %td
= link_to repo["path_with_namespace"], "https://gitlab.com/#{repo["path_with_namespace"]}", target: "_blank" = link_to repo["path_with_namespace"], "https://gitlab.com/#{repo["path_with_namespace"]}", target: "_blank"
%td.import-target %td.import-target
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
%p %p
Upload <code>GoogleCodeProjectHosting.json</code> here: Upload <code>GoogleCodeProjectHosting.json</code> here:
%p %p
%input{type: "file", name: "dump_file", id: "dump_file"} %input{ type: "file", name: "dump_file", id: "dump_file" }
%li %li
%p %p
Do you want to customize how Google Code email addresses and usernames are imported into GitLab? Do you want to customize how Google Code email addresses and usernames are imported into GitLab?
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
%th Status %th Status
%tbody %tbody
- @already_added_projects.each do |project| - @already_added_projects.each do |project|
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"} %tr{ id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}" }
%td %td
= link_to project.import_source, "https://code.google.com/p/#{project.import_source}", target: "_blank" = link_to project.import_source, "https://code.google.com/p/#{project.import_source}", target: "_blank"
%td %td
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
= project.human_import_status_name = project.human_import_status_name
- @repos.each do |repo| - @repos.each do |repo|
%tr{id: "repo_#{repo.id}"} %tr{ id: "repo_#{repo.id}" }
%td %td
= link_to repo.name, "https://code.google.com/p/#{repo.name}", target: "_blank" = link_to repo.name, "https://code.google.com/p/#{repo.name}", target: "_blank"
%td.import-target %td.import-target
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
Import Import
= icon("spinner spin", class: "loading-icon") = icon("spinner spin", class: "loading-icon")
- @incompatible_repos.each do |repo| - @incompatible_repos.each do |repo|
%tr{id: "repo_#{repo.id}"} %tr{ id: "repo_#{repo.id}" }
%td %td
= link_to repo.name, "https://code.google.com/p/#{repo.name}", target: "_blank" = link_to repo.name, "https://code.google.com/p/#{repo.name}", target: "_blank"
%td.import-target %td.import-target
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
-# per_page: number of items to fetch per page -# per_page: number of items to fetch per page
-# remote: data-remote -# remote: data-remote
- if current_page.last? - if current_page.last?
%li{ class: "next disabled" } %li.next.disabled
%span= raw(t 'views.pagination.next') %span= raw(t 'views.pagination.next')
- else - else
%li{ class: "next" } %li.next
= link_to raw(t 'views.pagination.next'), url, rel: 'next', remote: remote = link_to raw(t 'views.pagination.next'), url, rel: 'next', remote: remote
...@@ -6,5 +6,5 @@ ...@@ -6,5 +6,5 @@
-# total_pages: total number of pages -# total_pages: total number of pages
-# per_page: number of items to fetch per page -# per_page: number of items to fetch per page
-# remote: data-remote -# remote: data-remote
%li{class: "page#{' active' if page.current?}#{' sibling' if page.next? || page.prev?}"} %li{ class: "page#{' active' if page.current?}#{' sibling' if page.next? || page.prev?}" }
= link_to page, url, {remote: remote, rel: page.next? ? 'next' : page.prev? ? 'prev' : nil} = link_to page, url, { remote: remote, rel: page.next? ? 'next' : page.prev? ? 'prev' : nil }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-# remote: data-remote -# remote: data-remote
-# paginator: the paginator that renders the pagination tags inside -# paginator: the paginator that renders the pagination tags inside
= paginator.render do = paginator.render do
%div.gl-pagination .gl-pagination
%ul.pagination.clearfix %ul.pagination.clearfix
- unless current_page.first? - unless current_page.first?
= first_page_tag unless total_pages < 5 # As kaminari will always show the first 5 pages = first_page_tag unless total_pages < 5 # As kaminari will always show the first 5 pages
...@@ -19,4 +19,3 @@ ...@@ -19,4 +19,3 @@
= next_page_tag = next_page_tag
- unless current_page.last? - unless current_page.last?
= last_page_tag unless total_pages < 5 = last_page_tag unless total_pages < 5
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
-# per_page: number of items to fetch per page -# per_page: number of items to fetch per page
-# remote: data-remote -# remote: data-remote
- if current_page.first? - if current_page.first?
%li{ class: "prev disabled" } %li.prev.disabled
%span= raw(t 'views.pagination.previous') %span= raw(t 'views.pagination.previous')
- else - else
%li{ class: "prev" } %li.prev
= link_to raw(t 'views.pagination.previous'), url, rel: 'prev', remote: remote = link_to raw(t 'views.pagination.previous'), url, rel: 'prev', remote: remote
- page_description brand_title unless page_description - page_description brand_title unless page_description
- site_name = "GitLab" - site_name = "GitLab"
%head{prefix: "og: http://ogp.me/ns#"} %head{ prefix: "og: http://ogp.me/ns#" }
%meta{charset: "utf-8"} %meta{ charset: "utf-8" }
%meta{'http-equiv' => 'X-UA-Compatible', content: 'IE=edge'} %meta{ 'http-equiv' => 'X-UA-Compatible', content: 'IE=edge' }
-# Open Graph - http://ogp.me/ -# Open Graph - http://ogp.me/
%meta{property: 'og:type', content: "object"} %meta{ property: 'og:type', content: "object" }
%meta{property: 'og:site_name', content: site_name} %meta{ property: 'og:site_name', content: site_name }
%meta{property: 'og:title', content: page_title} %meta{ property: 'og:title', content: page_title }
%meta{property: 'og:description', content: page_description} %meta{ property: 'og:description', content: page_description }
%meta{property: 'og:image', content: page_image} %meta{ property: 'og:image', content: page_image }
%meta{property: 'og:url', content: request.base_url + request.fullpath} %meta{ property: 'og:url', content: request.base_url + request.fullpath }
-# Twitter Card - https://dev.twitter.com/cards/types/summary -# Twitter Card - https://dev.twitter.com/cards/types/summary
%meta{property: 'twitter:card', content: "summary"} %meta{ property: 'twitter:card', content: "summary" }
%meta{property: 'twitter:title', content: page_title} %meta{ property: 'twitter:title', content: page_title }
%meta{property: 'twitter:description', content: page_description} %meta{ property: 'twitter:description', content: page_description }
%meta{property: 'twitter:image', content: page_image} %meta{ property: 'twitter:image', content: page_image }
= page_card_meta_tags = page_card_meta_tags
%title= page_title(site_name) %title= page_title(site_name)
%meta{name: "description", content: page_description} %meta{ name: "description", content: page_description }
= favicon_link_tag 'favicon.ico' = favicon_link_tag 'favicon.ico'
...@@ -36,20 +36,20 @@ ...@@ -36,20 +36,20 @@
= csrf_meta_tags = csrf_meta_tags
- unless browser.safari? - unless browser.safari?
%meta{name: 'referrer', content: 'origin-when-cross-origin'} %meta{ name: 'referrer', content: 'origin-when-cross-origin' }
%meta{name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1'} %meta{ name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1' }
%meta{name: 'theme-color', content: '#474D57'} %meta{ name: 'theme-color', content: '#474D57' }
-# Apple Safari/iOS home screen icons -# Apple Safari/iOS home screen icons
= favicon_link_tag 'touch-icon-iphone.png', rel: 'apple-touch-icon' = favicon_link_tag 'touch-icon-iphone.png', rel: 'apple-touch-icon'
= favicon_link_tag 'touch-icon-ipad.png', rel: 'apple-touch-icon', sizes: '76x76' = favicon_link_tag 'touch-icon-ipad.png', rel: 'apple-touch-icon', sizes: '76x76'
= favicon_link_tag 'touch-icon-iphone-retina.png', rel: 'apple-touch-icon', sizes: '120x120' = favicon_link_tag 'touch-icon-iphone-retina.png', rel: 'apple-touch-icon', sizes: '120x120'
= favicon_link_tag 'touch-icon-ipad-retina.png', rel: 'apple-touch-icon', sizes: '152x152' = favicon_link_tag 'touch-icon-ipad-retina.png', rel: 'apple-touch-icon', sizes: '152x152'
%link{rel: 'mask-icon', href: image_path('logo.svg'), color: 'rgb(226, 67, 41)'} %link{ rel: 'mask-icon', href: image_path('logo.svg'), color: 'rgb(226, 67, 41)' }
-# Windows 8 pinned site tile -# Windows 8 pinned site tile
%meta{name: 'msapplication-TileImage', content: image_path('msapplication-tile.png')} %meta{ name: 'msapplication-TileImage', content: image_path('msapplication-tile.png') }
%meta{name: 'msapplication-TileColor', content: '#30353E'} %meta{ name: 'msapplication-TileColor', content: '#30353E' }
= yield :meta_tags = yield :meta_tags
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
- group_data_attrs = { group_path: j(@group.path), name: @group.name, issues_path: issues_group_path(j(@group.path)), mr_path: merge_requests_group_path(j(@group.path)) } - group_data_attrs = { group_path: j(@group.path), name: @group.name, issues_path: issues_group_path(j(@group.path)), mr_path: merge_requests_group_path(j(@group.path)) }
- if @project && @project.persisted? - if @project && @project.persisted?
- project_data_attrs = { project_path: j(@project.path), name: j(@project.name), issues_path: namespace_project_issues_path(@project.namespace, @project), mr_path: namespace_project_merge_requests_path(@project.namespace, @project) } - project_data_attrs = { project_path: j(@project.path), name: j(@project.name), issues_path: namespace_project_issues_path(@project.namespace, @project), mr_path: namespace_project_merge_requests_path(@project.namespace, @project) }
.search.search-form{class: "#{'has-location-badge' if label.present?}"} .search.search-form{ class: "#{'has-location-badge' if label.present?}" }
= form_tag search_path, method: :get, class: 'navbar-form' do |f| = form_tag search_path, method: :get, class: 'navbar-form' do |f|
.search-input-container .search-input-container
- if label.present? - if label.present?
...@@ -44,4 +44,4 @@ ...@@ -44,4 +44,4 @@
= hidden_field_tag :snippets, true = hidden_field_tag :snippets, true
= hidden_field_tag :repository_ref, @ref = hidden_field_tag :repository_ref, @ref
= button_tag 'Go' if ENV['RAILS_ENV'] == 'test' = button_tag 'Go' if ENV['RAILS_ENV'] == 'test'
.search-autocomplete-opts.hide{:'data-autocomplete-path' => search_autocomplete_path, :'data-autocomplete-project-id' => @project.try(:id), :'data-autocomplete-project-ref' => @ref } .search-autocomplete-opts.hide{ :'data-autocomplete-path' => search_autocomplete_path, :'data-autocomplete-project-id' => @project.try(:id), :'data-autocomplete-project-ref' => @ref }
!!! 5 !!! 5
%html{ lang: "en", class: "#{page_class}" } %html{ lang: "en", class: "#{page_class}" }
= render "layouts/head" = render "layouts/head"
%body{class: "#{user_application_theme}", data: {page: body_data_page, project: "#{@project.path if @project}", group: "#{@group.path if @group}"}} %body{ class: "#{user_application_theme}", data: { page: body_data_page, project: "#{@project.path if @project}", group: "#{@group.path if @group}" } }
= Gon::Base.render_data = Gon::Base.render_data
-# Ideally this would be inside the head, but turbolinks only evaluates page-specific JS in the body. -# Ideally this would be inside the head, but turbolinks only evaluates page-specific JS in the body.
......
!!! 5 !!! 5
%html{ lang: "en", class: "devise-layout-html"} %html.devise-layout-html
= render "layouts/head" = render "layouts/head"
%body.ui_charcoal.login-page.application.navless{ data: { page: body_data_page }} %body.ui_charcoal.login-page.application.navless{ data: { page: body_data_page } }
.page-wrap .page-wrap
= Gon::Base.render_data = Gon::Base.render_data
= render "layouts/header/empty" = render "layouts/header/empty"
......
!!! 5 !!! 5
%html{ lang: "en"} %html{ lang: "en" }
= render "layouts/head" = render "layouts/head"
%body.ui_charcoal.login-page.application.navless %body.ui_charcoal.login-page.application.navless
= Gon::Base.render_data = Gon::Base.render_data
......
!!! 5 !!! 5
%html %html
%head %head
%meta(content='text/html; charset=UTF-8' http-equiv='Content-Type') %meta{ content: 'text/html; charset=UTF-8', 'http-equiv'=> 'Content-Type' }
= stylesheet_link_tag 'mailers/devise' = stylesheet_link_tag 'mailers/devise'
%body %body
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
%tr %tr
%td %td
%table#header %table#header
%td{valign: "top"} %td{ valign: "top" }
= image_tag('mailers/gitlab_header_logo.png', id: 'logo', alt: 'GitLab Wordmark') = image_tag('mailers/gitlab_header_logo.png', id: 'logo', alt: 'GitLab Wordmark')
%table#body %table#body
......
!!! 5 !!! 5
%html{ lang: "en"} %html{ lang: "en" }
%head %head
%meta{:content => "width=device-width, initial-scale=1, maximum-scale=1", :name => "viewport"} %meta{ :content => "width=device-width, initial-scale=1, maximum-scale=1", :name => "viewport" }
%title= yield(:title) %title= yield(:title)
:css :css
body { body {
......
%header.navbar.navbar-fixed-top.navbar-gitlab{ class: nav_header_class } %header.navbar.navbar-fixed-top.navbar-gitlab{ class: nav_header_class }
%a{ href: "#content-body", tabindex: "1", class: "sr-only gl-accessibility" } Skip to content %a.sr-only.gl-accessibility{ href: "#content-body", tabindex: "1" } Skip to content
%div{ class: "container-fluid" } .container-fluid
.header-content .header-content
%button.side-nav-toggle{ type: 'button', "aria-label" => "Toggle global navigation" } %button.side-nav-toggle{ type: 'button', "aria-label" => "Toggle global navigation" }
%span.sr-only Toggle navigation %span.sr-only Toggle navigation
= icon('bars') = icon('bars')
%button.navbar-toggle{type: 'button'} %button.navbar-toggle{ type: 'button' }
%span.sr-only Toggle navigation %span.sr-only Toggle navigation
= icon('ellipsis-v') = icon('ellipsis-v')
......
.controls .controls
.dropdown.admin-settings-dropdown .dropdown.admin-settings-dropdown
%a.dropdown-new.btn.btn-default{href: '#', 'data-toggle' => 'dropdown'} %a.dropdown-new.btn.btn-default{ href: '#', 'data-toggle' => 'dropdown' }
= icon('cog') = icon('cog')
= icon('caret-down') = icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
- if can_admin_group || can_edit - if can_admin_group || can_edit
.controls .controls
.dropdown.group-settings-dropdown .dropdown.group-settings-dropdown
%a.dropdown-new.btn.btn-default#group-settings-button{href: '#', 'data-toggle' => 'dropdown'} %a.dropdown-new.btn.btn-default#group-settings-button{ href: '#', 'data-toggle' => 'dropdown' }
= icon('cog') = icon('cog')
= icon('caret-down') = icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
......
- if current_user - if current_user
.controls .controls
.dropdown.project-settings-dropdown .dropdown.project-settings-dropdown
%a.dropdown-new.btn.btn-default#project-settings-button{href: '#', 'data-toggle' => 'dropdown'} %a.dropdown-new.btn.btn-default#project-settings-button{ href: '#', 'data-toggle' => 'dropdown' }
= icon('cog') = icon('cog')
= icon('caret-down') = icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
......
%html{lang: "en"} %html{ lang: "en" }
%head %head
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"} %meta{ content: "text/html; charset=utf-8", "http-equiv" => "Content-Type" }
%title %title
GitLab GitLab
= stylesheet_link_tag 'notify' = stylesheet_link_tag 'notify'
= yield :head = yield :head
%body %body
%div.content .content
= yield = yield
%div.footer{style: "margin-top: 10px;"} .footer{ style: "margin-top: 10px;" }
%p %p
&mdash; &mdash;
%br %br
......
- content_for :header do - content_for :header do
%h1{style: "background: #c40834; color: #FFF; font: normal 20px Helvetica, Arial, sans-serif; margin: 0; padding: 5px 10px; line-height: 32px; font-size: 16px;"} %h1{ style: "background: #c40834; color: #FFF; font: normal 20px Helvetica, Arial, sans-serif; margin: 0; padding: 5px 10px; line-height: 32px; font-size: 16px;" }
GitLab (build failed) GitLab (build failed)
%h3 %h3
......
- content_for :header do - content_for :header do
%h1{style: "background: #38CF5B; color: #FFF; font: normal 20px Helvetica, Arial, sans-serif; margin: 0; padding: 5px 10px; line-height: 32px; font-size: 16px;"} %h1{ style: "background: #38CF5B; color: #FFF; font: normal 20px Helvetica, Arial, sans-serif; margin: 0; padding: 5px 10px; line-height: 32px; font-size: 16px;" }
GitLab (build successful) GitLab (build successful)
%h3 %h3
......
%a{href: pipeline_build_url(pipeline, build), style: "color:#3777b0;text-decoration:none;"} %a{ href: pipeline_build_url(pipeline, build), style: "color:#3777b0;text-decoration:none;" }
= build.name = build.name
- if current_application_settings.email_author_in_body - if current_application_settings.email_author_in_body
%div %div
#{link_to @issue.author_name, user_url(@issue.author)} wrote: #{link_to @issue.author_name, user_url(@issue.author)} wrote:
-if @issue.description - if @issue.description
= markdown(@issue.description, pipeline: :email, author: @issue.author) = markdown(@issue.description, pipeline: :email, author: @issue.author)
- if @issue.assignee_id.present? - if @issue.assignee_id.present?
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
- if current_application_settings.email_author_in_body - if current_application_settings.email_author_in_body
%div %div
#{link_to @issue.author_name, user_url(@issue.author)} wrote: #{link_to @issue.author_name, user_url(@issue.author)} wrote:
-if @issue.description - if @issue.description
= markdown(@issue.description, pipeline: :email, author: @issue.author) = markdown(@issue.description, pipeline: :email, author: @issue.author)
- if @issue.assignee_id.present? - if @issue.assignee_id.present?
......
...@@ -11,5 +11,5 @@ ...@@ -11,5 +11,5 @@
%p %p
Assignee: #{@merge_request.author_name} &rarr; #{@merge_request.assignee_name} Assignee: #{@merge_request.author_name} &rarr; #{@merge_request.assignee_name}
-if @merge_request.description - if @merge_request.description
= markdown(@merge_request.description, pipeline: :email, author: @merge_request.author) = markdown(@merge_request.description, pipeline: :email, author: @merge_request.author)
...@@ -8,5 +8,5 @@ ...@@ -8,5 +8,5 @@
%p %p
Assignee: #{@merge_request.author_name} &rarr; #{@merge_request.assignee_name} Assignee: #{@merge_request.author_name} &rarr; #{@merge_request.assignee_name}
-if @merge_request.description - if @merge_request.description
= markdown(@merge_request.description, pipeline: :email, author: @merge_request.author) = markdown(@merge_request.description, pipeline: :email, author: @merge_request.author)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
%html{lang: "en"} %html{ lang: "en" }
%head %head
%meta{content: "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ %meta{ content: "text/html; charset=UTF-8", "http-equiv" => "Content-Type" }/
%meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ %meta{ content: "width=device-width, initial-scale=1", name: "viewport" }/
%meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}/ %meta{ content: "IE=edge", "http-equiv" => "X-UA-Compatible" }/
%title= message.subject %title= message.subject
:css :css
/* CLIENT-SPECIFIC STYLES */ /* CLIENT-SPECIFIC STYLES */
...@@ -41,139 +41,139 @@ ...@@ -41,139 +41,139 @@
padding-right: 10px !important; padding-right: 10px !important;
} }
} }
%body{style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;height:100%;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;"} %body{ style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;height:100%;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;" }
%table#body{border: "0", cellpadding: "0", cellspacing: "0", style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;"} %table#body{ border: "0", cellpadding: "0", cellspacing: "0", style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;" }
%tbody %tbody
%tr.line %tr.line
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#6b4fbb;height:4px;font-size:4px;line-height:4px;"}   %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#6b4fbb;height:4px;font-size:4px;line-height:4px;" }  
%tr.header %tr.header
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;" }
%img{alt: "GitLab", height: "50", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo.gif'), width: "55"}/ %img{ alt: "GitLab", height: "50", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo.gif'), width: "55" }/
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;" }
%table.wrapper{border: "0", cellpadding: "0", cellspacing: "0", style: "width:640px;margin:0 auto;border-collapse:separate;border-spacing:0;"} %table.wrapper{ border: "0", cellpadding: "0", cellspacing: "0", style: "width:640px;margin:0 auto;border-collapse:separate;border-spacing:0;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#ffffff;text-align:left;padding:18px 25px;border:1px solid #ededed;border-radius:3px;overflow:hidden;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#ffffff;text-align:left;padding:18px 25px;border:1px solid #ededed;border-radius:3px;overflow:hidden;" }
%table.content{border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;border-collapse:separate;border-spacing:0;"} %table.content{ border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;border-collapse:separate;border-spacing:0;" }
%tbody %tbody
%tr.alert %tr.alert
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:10px;border-radius:3px;font-size:14px;line-height:1.3;text-align:center;overflow:hidden;background-color:#d22f57;color:#ffffff;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:10px;border-radius:3px;font-size:14px;line-height:1.3;text-align:center;overflow:hidden;background-color:#d22f57;color:#ffffff;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;margin:0 auto;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;margin:0 auto;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;padding-right:5px;" }
%img{alt: "x", height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-x-red-inverted.gif'), style: "display:block;", width: "13"}/ %img{ alt: "x", height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-x-red-inverted.gif'), style: "display:block;", width: "13" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;" }
Your pipeline has failed. Your pipeline has failed.
%tr.spacer %tr.spacer
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;" }
&nbsp; &nbsp;
%tr.section %tr.section
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 15px;border:1px solid #ededed;border-radius:3px;overflow:hidden;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 15px;border:1px solid #ededed;border-radius:3px;overflow:hidden;" }
%table.info{border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;"} %table.info{ border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;"} Project %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;" } Project
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;" }
- namespace_name = @project.group ? @project.group.name : @project.namespace.owner.name - namespace_name = @project.group ? @project.group.name : @project.namespace.owner.name
- namespace_url = @project.group ? group_url(@project.group) : user_url(@project.namespace.owner) - namespace_url = @project.group ? group_url(@project.group) : user_url(@project.namespace.owner)
%a.muted{href: namespace_url, style: "color:#333333;text-decoration:none;"} %a.muted{ href: namespace_url, style: "color:#333333;text-decoration:none;" }
= namespace_name = namespace_name
\/ \/
%a.muted{href: project_url(@project), style: "color:#333333;text-decoration:none;"} %a.muted{ href: project_url(@project), style: "color:#333333;text-decoration:none;" }
= @project.name = @project.name
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;"} Branch %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;" } Branch
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;" }
%img{height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-branch-gray.gif'), style: "display:block;", width: "13"}/ %img{ height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-branch-gray.gif'), style: "display:block;", width: "13", alt: "Branch icon" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;" }
%a.muted{href: commits_url(@pipeline), style: "color:#333333;text-decoration:none;"} %a.muted{ href: commits_url(@pipeline), style: "color:#333333;text-decoration:none;" }
= @pipeline.ref = @pipeline.ref
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;"} Commit %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;" } Commit
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;" }
%img{height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-commit-gray.gif'), style: "display:block;", width: "13"}/ %img{ height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-commit-gray.gif'), style: "display:block;", width: "13", alt: "Commit icon" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;" }
%a{href: commit_url(@pipeline), style: "color:#3777b0;text-decoration:none;"} %a{ href: commit_url(@pipeline), style: "color:#3777b0;text-decoration:none;" }
= @pipeline.short_sha = @pipeline.short_sha
- if @merge_request - if @merge_request
in in
%a{href: merge_request_url(@merge_request), style: "color:#3777b0;text-decoration:none;"} %a{ href: merge_request_url(@merge_request), style: "color:#3777b0;text-decoration:none;" }
= @merge_request.to_reference = @merge_request.to_reference
.commit{style: "color:#5c5c5c;font-weight:300;"} .commit{ style: "color:#5c5c5c;font-weight:300;" }
= @pipeline.git_commit_message.truncate(50) = @pipeline.git_commit_message.truncate(50)
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;"} Author %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;" } Author
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;" }
%tbody %tbody
%tr %tr
- commit = @pipeline.commit - commit = @pipeline.commit
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;" }
%img.avatar{height: "24", src: avatar_icon(commit.author || commit.author_email, 24), style: "display:block;border-radius:12px;margin:-2px 0;", width: "24"}/ %img.avatar{ height: "24", src: avatar_icon(commit.author || commit.author_email, 24), style: "display:block;border-radius:12px;margin:-2px 0;", width: "24", alt: "Avatar" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;" }
- if commit.author - if commit.author
%a.muted{href: user_url(commit.author), style: "color:#333333;text-decoration:none;"} %a.muted{ href: user_url(commit.author), style: "color:#333333;text-decoration:none;" }
= commit.author.name = commit.author.name
- else - else
%span %span
= commit.author_name = commit.author_name
%tr.spacer %tr.spacer
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;" }
&nbsp; &nbsp;
- failed = @pipeline.statuses.latest.failed - failed = @pipeline.statuses.latest.failed
%tr.pre-section %tr.pre-section
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#333333;font-size:15px;font-weight:400;line-height:1.4;padding:15px 0;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#333333;font-size:15px;font-weight:400;line-height:1.4;padding:15px 0;" }
Pipeline Pipeline
%a{href: pipeline_url(@pipeline), style: "color:#3777b0;text-decoration:none;"} %a{ href: pipeline_url(@pipeline), style: "color:#3777b0;text-decoration:none;" }
= "\##{@pipeline.id}" = "\##{@pipeline.id}"
had had
= failed.size = failed.size
failed failed
= "#{'build'.pluralize(failed.size)}." = "#{'build'.pluralize(failed.size)}."
%tr.warning %tr.warning
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border:1px solid #ededed;border-bottom:0;border-radius:3px 3px 0 0;overflow:hidden;background-color:#fdf4f6;color:#d22852;font-size:14px;line-height:1.4;text-align:center;padding:8px 15px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border:1px solid #ededed;border-bottom:0;border-radius:3px 3px 0 0;overflow:hidden;background-color:#fdf4f6;color:#d22852;font-size:14px;line-height:1.4;text-align:center;padding:8px 15px;" }
Logs may contain sensitive data. Please consider before forwarding this email. Logs may contain sensitive data. Please consider before forwarding this email.
%tr.section %tr.section
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 15px;border:1px solid #ededed;border-radius:3px;overflow:hidden;border-top:0;border-radius:0 0 3px 3px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 15px;border:1px solid #ededed;border-radius:3px;overflow:hidden;border-top:0;border-radius:0 0 3px 3px;" }
%table.builds{border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;border-collapse:collapse;"} %table.builds{ border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;border-collapse:collapse;" }
%tbody %tbody
- failed.each do |build| - failed.each do |build|
%tr.build-state %tr.build-state
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:20px 0;color:#8c8c8c;font-weight:500;font-size:15px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:20px 0;color:#8c8c8c;font-weight:500;font-size:15px;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#8c8c8c;font-weight:500;font-size:15px;vertical-align:middle;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#8c8c8c;font-weight:500;font-size:15px;vertical-align:middle;padding-right:5px;" }
%img{alt: "x", height: "10", src: image_url('mailers/ci_pipeline_notif_v1/icon-x-red.gif'), style: "display:block;", width: "10"}/ %img{ alt: "x", height: "10", src: image_url('mailers/ci_pipeline_notif_v1/icon-x-red.gif'), style: "display:block;", width: "10" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#8c8c8c;font-weight:500;font-size:15px;vertical-align:middle;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#8c8c8c;font-weight:500;font-size:15px;vertical-align:middle;" }
= build.stage = build.stage
%td{align: "right", style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:20px 0;color:#8c8c8c;font-weight:500;font-size:15px;"} %td{ align: "right", style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:20px 0;color:#8c8c8c;font-weight:500;font-size:15px;" }
= render "notify/links/#{build.to_partial_path}", pipeline: @pipeline, build: build = render "notify/links/#{build.to_partial_path}", pipeline: @pipeline, build: build
%tr.build-log %tr.build-log
- if build.has_trace? - if build.has_trace?
%td{colspan: "2", style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 0 15px;"} %td{ colspan: "2", style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 0 15px;" }
%pre{style: "font-family:Monaco,'Lucida Console','Courier New',Courier,monospace;background-color:#fafafa;border-radius:3px;overflow:hidden;white-space:pre-wrap;word-break:break-all;font-size:13px;line-height:1.4;padding:12px;color:#333333;margin:0;"} %pre{ style: "font-family:Monaco,'Lucida Console','Courier New',Courier,monospace;background-color:#fafafa;border-radius:3px;overflow:hidden;white-space:pre-wrap;word-break:break-all;font-size:13px;line-height:1.4;padding:12px;color:#333333;margin:0;" }
= build.trace_html(last_lines: 10).html_safe = build.trace_html(last_lines: 10).html_safe
- else - else
%td{colspan: "2"} %td{ colspan: "2" }
%tr.footer %tr.footer
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;" }
%img{alt: "GitLab", height: "33", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo-full-horizontal.gif'), style: "display:block;margin:0 auto 1em;", width: "90"}/ %img{ alt: "GitLab", height: "33", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo-full-horizontal.gif'), style: "display:block;margin:0 auto 1em;", width: "90" }/
%div %div
%a{href: profile_notifications_url, style: "color:#3777b0;text-decoration:none;"} Manage all notifications %a{ href: profile_notifications_url, style: "color:#3777b0;text-decoration:none;" } Manage all notifications
&middot; &middot;
%a{href: help_url, style: "color:#3777b0;text-decoration:none;"} Help %a{ href: help_url, style: "color:#3777b0;text-decoration:none;" } Help
%div %div
You're receiving this email because of your account on You're receiving this email because of your account on
= succeed "." do = succeed "." do
%a{href: root_url, style: "color:#3777b0;text-decoration:none;"}= Gitlab.config.gitlab.host %a{ href: root_url, style: "color:#3777b0;text-decoration:none;" }= Gitlab.config.gitlab.host
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
%html{lang: "en"} %html{ lang: "en" }
%head %head
%meta{content: "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ %meta{ content: "text/html; charset=UTF-8", "http-equiv" => "Content-Type" }/
%meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ %meta{ content: "width=device-width, initial-scale=1", name: "viewport" }/
%meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}/ %meta{ content: "IE=edge", "http-equiv" => "X-UA-Compatible" }/
%title= message.subject %title= message.subject
:css :css
/* CLIENT-SPECIFIC STYLES */ /* CLIENT-SPECIFIC STYLES */
...@@ -41,114 +41,114 @@ ...@@ -41,114 +41,114 @@
padding-right: 10px !important; padding-right: 10px !important;
} }
} }
%body{style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;height:100%;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;"} %body{ style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;height:100%;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;" }
%table#body{border: "0", cellpadding: "0", cellspacing: "0", style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;"} %table#body{ border: "0", cellpadding: "0", cellspacing: "0", style: "background-color:#fafafa;margin:0;padding:0;text-align:center;min-width:640px;width:100%;" }
%tbody %tbody
%tr.line %tr.line
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#6b4fbb;height:4px;font-size:4px;line-height:4px;"}   %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#6b4fbb;height:4px;font-size:4px;line-height:4px;" }  
%tr.header %tr.header
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;" }
%img{alt: "GitLab", height: "50", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo.gif'), width: "55"}/ %img{ alt: "GitLab", height: "50", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo.gif'), width: "55" }/
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;" }
%table.wrapper{border: "0", cellpadding: "0", cellspacing: "0", style: "width:640px;margin:0 auto;border-collapse:separate;border-spacing:0;"} %table.wrapper{ border: "0", cellpadding: "0", cellspacing: "0", style: "width:640px;margin:0 auto;border-collapse:separate;border-spacing:0;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#ffffff;text-align:left;padding:18px 25px;border:1px solid #ededed;border-radius:3px;overflow:hidden;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;background-color:#ffffff;text-align:left;padding:18px 25px;border:1px solid #ededed;border-radius:3px;overflow:hidden;" }
%table.content{border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;border-collapse:separate;border-spacing:0;"} %table.content{ border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;border-collapse:separate;border-spacing:0;" }
%tbody %tbody
%tr.success %tr.success
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:10px;border-radius:3px;font-size:14px;line-height:1.3;text-align:center;overflow:hidden;color:#ffffff;background-color:#31af64;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:10px;border-radius:3px;font-size:14px;line-height:1.3;text-align:center;overflow:hidden;color:#ffffff;background-color:#31af64;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;margin:0 auto;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;margin:0 auto;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;padding-right:5px;" }
%img{alt: "✓", height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-check-green-inverted.gif'), style: "display:block;", width: "13"}/ %img{ alt: "✓", height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-check-green-inverted.gif'), style: "display:block;", width: "13" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;" }
Your pipeline has passed. Your pipeline has passed.
%tr.spacer %tr.spacer
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;" }
&nbsp; &nbsp;
%tr.section %tr.section
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 15px;border:1px solid #ededed;border-radius:3px;overflow:hidden;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0 15px;border:1px solid #ededed;border-radius:3px;overflow:hidden;" }
%table.info{border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;"} %table.info{ border: "0", cellpadding: "0", cellspacing: "0", style: "width:100%;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;"} Project %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;" } Project
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;" }
- namespace_name = @project.group ? @project.group.name : @project.namespace.owner.name - namespace_name = @project.group ? @project.group.name : @project.namespace.owner.name
- namespace_url = @project.group ? group_url(@project.group) : user_url(@project.namespace.owner) - namespace_url = @project.group ? group_url(@project.group) : user_url(@project.namespace.owner)
%a.muted{href: namespace_url, style: "color:#333333;text-decoration:none;"} %a.muted{ href: namespace_url, style: "color:#333333;text-decoration:none;" }
= namespace_name = namespace_name
\/ \/
%a.muted{href: project_url(@project), style: "color:#333333;text-decoration:none;"} %a.muted{ href: project_url(@project), style: "color:#333333;text-decoration:none;" }
= @project.name = @project.name
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;"} Branch %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;" } Branch
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;" }
%img{height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-branch-gray.gif'), style: "display:block;", width: "13"}/ %img{ height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-branch-gray.gif'), style: "display:block;", width: "13", alt: "Branch icon" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;" }
%a.muted{href: commits_url(@pipeline), style: "color:#333333;text-decoration:none;"} %a.muted{ href: commits_url(@pipeline), style: "color:#333333;text-decoration:none;" }
= @pipeline.ref = @pipeline.ref
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;"} Commit %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;" } Commit
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;" }
%tbody %tbody
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;" }
%img{height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-commit-gray.gif'), style: "display:block;", width: "13"}/ %img{ height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-commit-gray.gif'), style: "display:block;", width: "13", alt: "Commit icon" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;" }
%a{href: commit_url(@pipeline), style: "color:#3777b0;text-decoration:none;"} %a{ href: commit_url(@pipeline), style: "color:#3777b0;text-decoration:none;" }
= @pipeline.short_sha = @pipeline.short_sha
- if @merge_request - if @merge_request
in in
%a{href: merge_request_url(@merge_request), style: "color:#3777b0;text-decoration:none;"} %a{ href: merge_request_url(@merge_request), style: "color:#3777b0;text-decoration:none;" }
= @merge_request.to_reference = @merge_request.to_reference
.commit{style: "color:#5c5c5c;font-weight:300;"} .commit{ style: "color:#5c5c5c;font-weight:300;" }
= @pipeline.git_commit_message.truncate(50) = @pipeline.git_commit_message.truncate(50)
%tr %tr
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;"} Author %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;border-top:1px solid #ededed;" } Author
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#8c8c8c;font-weight:300;padding:14px 0;margin:0;color:#333333;font-weight:400;width:75%;padding-left:5px;border-top:1px solid #ededed;" }
%table.img{border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;"} %table.img{ border: "0", cellpadding: "0", cellspacing: "0", style: "border-collapse:collapse;" }
%tbody %tbody
%tr %tr
- commit = @pipeline.commit - commit = @pipeline.commit
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;padding-right:5px;" }
%img.avatar{height: "24", src: avatar_icon(commit.author || commit.author_email, 24), style: "display:block;border-radius:12px;margin:-2px 0;", width: "24"}/ %img.avatar{ height: "24", src: avatar_icon(commit.author || commit.author_email, 24), style: "display:block;border-radius:12px;margin:-2px 0;", width: "24", alt: "Avatar" }/
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;vertical-align:middle;" }
- if commit.author - if commit.author
%a.muted{href: user_url(commit.author), style: "color:#333333;text-decoration:none;"} %a.muted{ href: user_url(commit.author), style: "color:#333333;text-decoration:none;" }
= commit.author.name = commit.author.name
- else - else
%span %span
= commit.author_name = commit.author_name
%tr.spacer %tr.spacer
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;" }
&nbsp; &nbsp;
%tr.success-message %tr.success-message
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#333333;font-size:15px;font-weight:400;line-height:1.4;padding:15px 5px;text-align:center;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#333333;font-size:15px;font-weight:400;line-height:1.4;padding:15px 5px;text-align:center;" }
- build_count = @pipeline.statuses.latest.size - build_count = @pipeline.statuses.latest.size
- stage_count = @pipeline.stages_count - stage_count = @pipeline.stages_count
Pipeline Pipeline
%a{href: pipeline_url(@pipeline), style: "color:#3777b0;text-decoration:none;"} %a{ href: pipeline_url(@pipeline), style: "color:#3777b0;text-decoration:none;" }
= "\##{@pipeline.id}" = "\##{@pipeline.id}"
successfully completed successfully completed
= "#{build_count} #{'build'.pluralize(build_count)}" = "#{build_count} #{'build'.pluralize(build_count)}"
in in
= "#{stage_count} #{'stage'.pluralize(stage_count)}." = "#{stage_count} #{'stage'.pluralize(stage_count)}."
%tr.footer %tr.footer
%td{style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;"} %td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:25px 0;font-size:13px;line-height:1.6;color:#5c5c5c;" }
%img{alt: "GitLab", height: "33", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo-full-horizontal.gif'), style: "display:block;margin:0 auto 1em;", width: "90"}/ %img{ alt: "GitLab", height: "33", src: image_url('mailers/ci_pipeline_notif_v1/gitlab-logo-full-horizontal.gif'), style: "display:block;margin:0 auto 1em;", width: "90" }/
%div %div
%a{href: profile_notifications_url, style: "color:#3777b0;text-decoration:none;"} Manage all notifications %a{ href: profile_notifications_url, style: "color:#3777b0;text-decoration:none;" } Manage all notifications
&middot; &middot;
%a{href: help_url, style: "color:#3777b0;text-decoration:none;"} Help %a{ href: help_url, style: "color:#3777b0;text-decoration:none;" } Help
%div %div
You're receiving this email because of your account on You're receiving this email because of your account on
= succeed "." do = succeed "." do
%a{href: root_url, style: "color:#3777b0;text-decoration:none;"}= Gitlab.config.gitlab.host %a{ href: root_url, style: "color:#3777b0;text-decoration:none;" }= Gitlab.config.gitlab.host
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
%ul %ul
- @message.diffs.each do |diff| - @message.diffs.each do |diff|
%li.file-stats %li.file-stats
%a{href: "#{@message.target_url if @message.disable_diffs?}##{hexdigest(diff.file_path)}" } %a{ href: "#{@message.target_url if @message.disable_diffs?}##{hexdigest(diff.file_path)}" }
- if diff.deleted_file - if diff.deleted_file
%span.deleted-file %span.deleted-file
&minus; &minus;
...@@ -54,8 +54,8 @@ ...@@ -54,8 +54,8 @@
%h4 Changes: %h4 Changes:
- diff_files.each do |diff_file| - diff_files.each do |diff_file|
- file_hash = hexdigest(diff_file.file_path) - file_hash = hexdigest(diff_file.file_path)
%li{id: file_hash} %li{ id: file_hash }
%a{href: @message.target_url + "##{file_hash}"}< %a{ href: @message.target_url + "##{file_hash}" }<
- if diff_file.deleted_file - if diff_file.deleted_file
%strong< %strong<
= diff_file.old_path = diff_file.old_path
......
%h3.page-title Authorization required %h3.page-title Authorization required
%main{:role => "main"} %main{ :role => "main" }
%p.h4 %p.h4
Authorize Authorize
%strong.text-info= @chat_name_params[:chat_name] %strong.text-info= @chat_name_params[:chat_name]
......
...@@ -17,5 +17,5 @@ ...@@ -17,5 +17,5 @@
%hr %hr
%h5 %h5
Your SSH keys (#{@keys.count}) Your SSH keys (#{@keys.count})
%div.append-bottom-default .append-bottom-default
= render 'key_table' = render 'key_table'
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
%div %div
- if @user.errors.any? - if @user.errors.any?
%div.alert.alert-danger .alert.alert-danger
%ul %ul
- @user.errors.full_messages.each do |msg| - @user.errors.full_messages.each do |msg|
%li= msg %li= msg
......
- page_title 'Preferences' - page_title 'Preferences'
= render 'profiles/head' = render 'profiles/head'
= form_for @user, url: profile_preferences_path, remote: true, method: :put, html: {class: 'row prepend-top-default js-preferences-form'} do |f| = form_for @user, url: profile_preferences_path, remote: true, method: :put, html: { class: 'row prepend-top-default js-preferences-form' } do |f|
.col-lg-3.profile-settings-sidebar .col-lg-3.profile-settings-sidebar
%h4.prepend-top-0 %h4.prepend-top-0
Application theme Application theme
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
.col-lg-9.application-theme .col-lg-9.application-theme
- Gitlab::Themes.each do |theme| - Gitlab::Themes.each do |theme|
= label_tag do = label_tag do
.preview{class: theme.css_class} .preview{ class: theme.css_class }
= f.radio_button :theme_id, theme.id = f.radio_button :theme_id, theme.id
= theme.name = theme.name
.col-sm-12 .col-sm-12
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
The maximum file size allowed is 200KB. The maximum file size allowed is 200KB.
- if @user.avatar? - if @user.avatar?
%hr %hr
= link_to 'Remove avatar', profile_avatar_path, data: { confirm: "Avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-gray" = link_to 'Remove avatar', profile_avatar_path, data: { confirm: "Avatar will be removed. Are you sure?" }, method: :delete, class: "btn btn-gray"
%hr %hr
.row .row
.col-lg-3.profile-settings-sidebar .col-lg-3.profile-settings-sidebar
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
%span.help-block We also use email for avatar detection if no avatar is uploaded. %span.help-block We also use email for avatar detection if no avatar is uploaded.
.form-group .form-group
= f.label :public_email, class: "label-light" = f.label :public_email, class: "label-light"
= f.select :public_email, options_for_select(@user.all_emails, selected: @user.public_email), {include_blank: 'Do not show on profile'}, class: "select2" = f.select :public_email, options_for_select(@user.all_emails, selected: @user.public_email), { include_blank: 'Do not show on profile' }, class: "select2"
%span.help-block This email will be displayed on your public profile. %span.help-block This email will be displayed on your public profile.
.form-group .form-group
= f.label :skype, class: "label-light" = f.label :skype, class: "label-light"
...@@ -101,14 +101,14 @@ ...@@ -101,14 +101,14 @@
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%button.close{:type => "button", :'data-dismiss' => "modal"} %button.close{ :type => "button", :'data-dismiss' => "modal" }
%span %span
&times; &times;
%h4.modal-title %h4.modal-title
Position and size your new avatar Position and size your new avatar
.modal-body .modal-body
.profile-crop-image-container .profile-crop-image-container
%img.modal-profile-crop-image %img.modal-profile-crop-image{ alt: "Avatar cropper" }
.crop-controls .crop-controls
.btn-group .btn-group
%button.btn.btn-primary{ data: { method: "zoom", option: "0.1" } } %button.btn.btn-primary{ data: { method: "zoom", option: "0.1" } }
...@@ -116,5 +116,5 @@ ...@@ -116,5 +116,5 @@
%button.btn.btn-primary{ data: { method: "zoom", option: "-0.1" } } %button.btn.btn-primary{ data: { method: "zoom", option: "-0.1" } }
%span.fa.fa-search-minus %span.fa.fa-search-minus
.modal-footer .modal-footer
%button.btn.btn-primary.js-upload-user-avatar{:type => "button"} %button.btn.btn-primary.js-upload-user-avatar{ :type => "button" }
Set new profile picture Set new profile picture
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
= render 'shared/event_filter' = render 'shared/event_filter'
.content_list.project-activity{:"data-href" => activity_project_path(@project)} .content_list.project-activity{ :"data-href" => activity_project_path(@project) }
= spinner = spinner
:javascript :javascript
......
%div#bitbucket_import_modal.modal #bitbucket_import_modal.modal
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3 Import projects from Bitbucket %h3 Import projects from Bitbucket
.modal-body .modal-body
To enable importing projects from Bitbucket, To enable importing projects from Bitbucket,
...@@ -10,4 +10,4 @@ ...@@ -10,4 +10,4 @@
as administrator you need to configure as administrator you need to configure
- else - else
ask your GitLab administrator to configure ask your GitLab administrator to configure
== #{link_to 'OAuth integration', help_page_path("integration/bitbucket")}. = link_to 'OAuth integration', help_page_path("integration/bitbucket")
.row-content-block.project-home-empty .row-content-block.project-home-empty
%div.text-center{ class: container_class } .text-center{ class: container_class }
%h4 %h4
Customize your workflow! Customize your workflow!
%p %p
......
%div#gitlab_import_modal.modal #gitlab_import_modal.modal
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3 Import projects from GitLab.com %h3 Import projects from GitLab.com
.modal-body .modal-body
To enable importing projects from GitLab.com, To enable importing projects from GitLab.com,
...@@ -10,4 +10,4 @@ ...@@ -10,4 +10,4 @@
as administrator you need to configure as administrator you need to configure
- else - else
ask your GitLab administrator to configure ask your GitLab administrator to configure
== #{link_to 'OAuth integration', help_page_path("integration/gitlab")}. = link_to 'OAuth integration', help_page_path("integration/gitlab")
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
= project_icon(@project, alt: @project.name, class: 'avatar s70 avatar-tile') = project_icon(@project, alt: @project.name, class: 'avatar s70 avatar-tile')
%h1.project-title %h1.project-title
= @project.name = @project.name
%span.visibility-icon.has-tooltip{data: { container: 'body' }, title: visibility_icon_description(@project)} %span.visibility-icon.has-tooltip{ data: { container: 'body' }, title: visibility_icon_description(@project) }
= visibility_level_icon(@project.visibility_level, fw: false) = visibility_level_icon(@project.visibility_level, fw: false)
.project-home-desc .project-home-desc
......
...@@ -15,23 +15,23 @@ ...@@ -15,23 +15,23 @@
%li.pull-right %li.pull-right
.toolbar-group .toolbar-group
= markdown_toolbar_button({icon: "bold fw", data: { "md-tag" => "**" }, title: "Add bold text" }) = markdown_toolbar_button({ icon: "bold fw", data: { "md-tag" => "**" }, title: "Add bold text" })
= markdown_toolbar_button({icon: "italic fw", data: { "md-tag" => "*" }, title: "Add italic text" }) = markdown_toolbar_button({ icon: "italic fw", data: { "md-tag" => "*" }, title: "Add italic text" })
= markdown_toolbar_button({icon: "quote-right fw", data: { "md-tag" => "> ", "md-prepend" => true }, title: "Insert a quote" }) = markdown_toolbar_button({ icon: "quote-right fw", data: { "md-tag" => "> ", "md-prepend" => true }, title: "Insert a quote" })
= markdown_toolbar_button({icon: "code fw", data: { "md-tag" => "`", "md-block" => "```" }, title: "Insert code" }) = markdown_toolbar_button({ icon: "code fw", data: { "md-tag" => "`", "md-block" => "```" }, title: "Insert code" })
= markdown_toolbar_button({icon: "list-ul fw", data: { "md-tag" => "* ", "md-prepend" => true }, title: "Add a bullet list" }) = markdown_toolbar_button({ icon: "list-ul fw", data: { "md-tag" => "* ", "md-prepend" => true }, title: "Add a bullet list" })
= markdown_toolbar_button({icon: "list-ol fw", data: { "md-tag" => "1. ", "md-prepend" => true }, title: "Add a numbered list" }) = markdown_toolbar_button({ icon: "list-ol fw", data: { "md-tag" => "1. ", "md-prepend" => true }, title: "Add a numbered list" })
= markdown_toolbar_button({icon: "check-square-o fw", data: { "md-tag" => "* [ ] ", "md-prepend" => true }, title: "Add a task list" }) = markdown_toolbar_button({ icon: "check-square-o fw", data: { "md-tag" => "* [ ] ", "md-prepend" => true }, title: "Add a task list" })
.toolbar-group .toolbar-group
%button.toolbar-btn.js-zen-enter.has-tooltip.hidden-xs{ type: "button", tabindex: -1, aria: { label: "Go full screen" }, title: "Go full screen", data: { container: "body" } } %button.toolbar-btn.js-zen-enter.has-tooltip.hidden-xs{ type: "button", tabindex: -1, aria: { label: "Go full screen" }, title: "Go full screen", data: { container: "body" } }
=icon("arrows-alt fw") = icon("arrows-alt fw")
.md-write-holder .md-write-holder
= yield = yield
.md.md-preview-holder.js-md-preview.hide{class: (preview_class if defined?(preview_class))} .md.md-preview-holder.js-md-preview.hide{ class: (preview_class if defined?(preview_class)) }
- if defined?(referenced_users) && referenced_users - if defined?(referenced_users) && referenced_users
%div.referenced-users.hide .referenced-users.hide
%span %span
= icon("exclamation-triangle") = icon("exclamation-triangle")
You are about to add You are about to add
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
- else - else
- can_create_wiki = can?(current_user, :create_wiki, @project) - can_create_wiki = can?(current_user, :create_wiki, @project)
.project-home-empty{ class: [('row-content-block' if can_create_wiki), ('content-block' unless can_create_wiki)] } .project-home-empty{ class: [('row-content-block' if can_create_wiki), ('content-block' unless can_create_wiki)] }
%div.text-center{ class: container_class } .text-center{ class: container_class }
%h4 %h4
This project does not have a wiki homepage yet This project does not have a wiki homepage yet
- if can_create_wiki - if can_create_wiki
......
- path_to_directory = browse_namespace_project_build_artifacts_path(@project.namespace, @project, @build, path: directory.path) - path_to_directory = browse_namespace_project_build_artifacts_path(@project.namespace, @project, @build, path: directory.path)
%tr.tree-item{ 'data-link' => path_to_directory} %tr.tree-item{ 'data-link' => path_to_directory }
%td.tree-item-file-name %td.tree-item-file-name
= tree_icon('folder', '755', directory.name) = tree_icon('folder', '755', directory.name)
%span.str-truncated %span.str-truncated
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
Download artifacts archive Download artifacts archive
.tree-holder .tree-holder
%div.tree-content-holder .tree-content-holder
%table.table.tree-table %table.table.tree-table
%thead %thead
%tr %tr
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
%td.line-numbers %td.line-numbers
- line_count = blame_group[:lines].count - line_count = blame_group[:lines].count
- (current_line...(current_line + line_count)).each do |i| - (current_line...(current_line + line_count)).each do |i|
%a.diff-line-num{href: "#L#{i}", id: "L#{i}", 'data-line-number' => i} %a.diff-line-num{ href: "#L#{i}", id: "L#{i}", 'data-line-number' => i }
= icon("link") = icon("link")
= i = i
\ \
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
- blob_commit = @repository.last_commit_for_path(@commit.id, blob.path) - blob_commit = @repository.last_commit_for_path(@commit.id, blob.path)
= render blob_commit, project: @project, ref: @ref = render blob_commit, project: @project, ref: @ref
%div#blob-content-holder.blob-content-holder #blob-content-holder.blob-content-holder
%article.file-holder %article.file-holder
.file-title .file-title
= blob_icon blob.mode, blob.name = blob_icon blob.mode, blob.name
......
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
- # be wrong/strange if RawController modified the data. - # be wrong/strange if RawController modified the data.
- blob.load_all_data!(@repository) - blob.load_all_data!(@repository)
- blob = sanitize_svg(blob) - blob = sanitize_svg(blob)
%img{src: "data:#{blob.mime_type};base64,#{Base64.encode64(blob.data)}"} %img{ src: "data:#{blob.mime_type};base64,#{Base64.encode64(blob.data)}", alt: "#{blob.name}" }
- else - else
.nothing-here-block .nothing-here-block
The SVG could not be displayed as it is too large, you can The SVG could not be displayed as it is too large, you can
#{link_to('view the raw file', namespace_project_raw_path(@project.namespace, @project, @id), target: '_blank')} #{link_to('view the raw file', namespace_project_raw_path(@project.namespace, @project, @id), target: '_blank')}
instead. instead.
- else - else
%img{src: namespace_project_raw_path(@project.namespace, @project, tree_join(@commit.id, blob.path))} %img{ src: namespace_project_raw_path(@project.namespace, @project, tree_join(@commit.id, blob.path)), alt: "#{blob.name}" }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3.page-title Create New Directory %h3.page-title Create New Directory
.modal-body .modal-body
= form_tag namespace_project_create_dir_path(@project.namespace, @project, @id), method: :post, remote: false, class: 'form-horizontal js-create-dir-form js-quick-submit js-requires-input' do = form_tag namespace_project_create_dir_path(@project.namespace, @project, @id), method: :post, remote: false, class: 'form-horizontal js-create-dir-form js-quick-submit js-requires-input' do
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3.page-title Delete #{@blob.name} %h3.page-title Delete #{@blob.name}
.modal-body .modal-body
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3.page-title #{title} %h3.page-title #{title}
.modal-body .modal-body
= form_tag form_path, method: method, class: 'js-quick-submit js-upload-blob-form form-horizontal' do = form_tag form_path, method: method, class: 'js-quick-submit js-upload-blob-form form-horizontal' do
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
Attach a file by drag &amp; drop or Attach a file by drag &amp; drop or
= link_to 'click to upload', '#', class: "markdown-selector" = link_to 'click to upload', '#', class: "markdown-selector"
%br %br
.dropzone-alerts{class: "alert alert-danger data", style: "display:none"} .dropzone-alerts.alert.alert-danger.data{ style: "display:none" }
= render 'shared/new_commit_form', placeholder: placeholder = render 'shared/new_commit_form', placeholder: placeholder
......
...@@ -13,15 +13,15 @@ ...@@ -13,15 +13,15 @@
- case diff_view - case diff_view
- when :inline - when :inline
%td.old_line.diff-line-num{ data: { linenumber: line_old } } %td.old_line.diff-line-num{ data: { linenumber: line_old } }
%a{href: "##{line_old}", data: { linenumber: line_old }} %a{ href: "##{line_old}", data: { linenumber: line_old } }
%td.new_line.diff-line-num{ data: { linenumber: line_new } } %td.new_line.diff-line-num{ data: { linenumber: line_new } }
%a{href: "##{line_new}", data: { linenumber: line_new }} %a{ href: "##{line_new}", data: { linenumber: line_new } }
= line_content = line_content
- when :parallel - when :parallel
%td.old_line.diff-line-num{data: { linenumber: line_old }} %td.old_line.diff-line-num{ data: { linenumber: line_old } }
= link_to raw(line_old), "##{line_old}" = link_to raw(line_old), "##{line_old}"
= line_content = line_content
%td.new_line.diff-line-num{data: { linenumber: line_new }} %td.new_line.diff-line-num{ data: { linenumber: line_new } }
= link_to raw(line_new), "##{line_new}" = link_to raw(line_new), "##{line_new}"
= line_content = line_content
......
...@@ -20,6 +20,6 @@ ...@@ -20,6 +20,6 @@
- else - else
%td.old_line.diff-line-num %td.old_line.diff-line-num
%td.new_line.diff-line-num %td.new_line.diff-line-num
%td.line_content{class: "#{line.type}"}= diff_line_content(line.text) %td.line_content{ class: "#{line.type}" }= diff_line_content(line.text)
- else - else
.nothing-here-block No changes. .nothing-here-block No changes.
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
%div{ class: container_class } %div{ class: container_class }
= render 'projects/last_push' = render 'projects/last_push'
%div#tree-holder.tree-holder #tree-holder.tree-holder
= render 'blob', blob: @blob = render 'blob', blob: @blob
- if can_edit_blob?(@blob) - if can_edit_blob?(@blob)
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
":title" => '"Assigned to " + issue.assignee.name', ":title" => '"Assigned to " + issue.assignee.name',
"v-if" => "issue.assignee", "v-if" => "issue.assignee",
data: { container: 'body' } } data: { container: 'body' } }
%img.avatar.avatar-inline.s20{ ":src" => "issue.assignee.avatar", width: 20, height: 20 } %img.avatar.avatar-inline.s20{ ":src" => "issue.assignee.avatar", width: 20, height: 20, alt: "Avatar" }
%button.label.color-label.has-tooltip{ "v-for" => "label in issue.labels", %button.label.color-label.has-tooltip{ "v-for" => "label in issue.labels",
type: "button", type: "button",
"v-if" => "(!list.label || label.id !== list.label.id)", "v-if" => "(!list.label || label.id !== list.label.id)",
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
%a.author_link.bold{ ":href" => "'#{root_url}' + issue.assignee.username", %a.author_link.bold{ ":href" => "'#{root_url}' + issue.assignee.username",
"v-if" => "issue.assignee" } "v-if" => "issue.assignee" }
%img.avatar.avatar-inline.s32{ ":src" => "issue.assignee.avatar", %img.avatar.avatar-inline.s32{ ":src" => "issue.assignee.avatar",
width: "32" } width: "32", alt: "Avatar" }
%span.author %span.author
{{ issue.assignee.name }} {{ issue.assignee.name }}
%span.username %span.username
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
- number_commits_behind = diverging_commit_counts[:behind] - number_commits_behind = diverging_commit_counts[:behind]
- number_commits_ahead = diverging_commit_counts[:ahead] - number_commits_ahead = diverging_commit_counts[:ahead]
- merge_project = can?(current_user, :create_merge_request, @project) ? @project : (current_user && current_user.fork_of(@project)) - merge_project = can?(current_user, :create_merge_request, @project) ? @project : (current_user && current_user.fork_of(@project))
%li(class="js-branch-#{branch.name}") %li{ class: "js-branch-#{branch.name}" }
%div %div
= link_to namespace_project_tree_path(@project.namespace, @project, branch.name), class: 'item-title str-truncated' do = link_to namespace_project_tree_path(@project.namespace, @project, branch.name), class: 'item-title str-truncated' do
= branch.name = branch.name
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
- if branch.name == @repository.root_ref - if branch.name == @repository.root_ref
%span.label.label-primary default %span.label.label-primary default
- elsif @repository.merged_to_root_ref? branch.name - elsif @repository.merged_to_root_ref? branch.name
%span.label.label-info.has-tooltip(title="Merged into #{@repository.root_ref}") %span.label.label-info.has-tooltip{ title: "Merged into #{@repository.root_ref}" }
merged merged
- if @project.protected_branch? branch.name - if @project.protected_branch? branch.name
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
= search_field_tag :search, params[:search], { placeholder: 'Filter by branch name', id: 'branch-search', class: 'form-control search-text-input input-short', spellcheck: false } = search_field_tag :search, params[:search], { placeholder: 'Filter by branch name', id: 'branch-search', class: 'form-control search-text-input input-short', spellcheck: false }
.dropdown.inline .dropdown.inline
%button.dropdown-menu-toggle{type: 'button', 'data-toggle' => 'dropdown'} %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span.light %span.light
= projects_sort_options_hash[@sort] = projects_sort_options_hash[@sort]
= icon('chevron-down') = icon('chevron-down')
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- if @error - if @error
.alert.alert-danger .alert.alert-danger
%button{ type: "button", class: "close", "data-dismiss" => "alert"} &times; %button.close{ type: "button", "data-dismiss" => "alert" } &times;
= @error = @error
%h3.page-title %h3.page-title
New Branch New Branch
......
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
- if @build.pipeline.stages_count > 1 - if @build.pipeline.stages_count > 1
.dropdown.build-dropdown .dropdown.build-dropdown
.title Stage .title Stage
%button.dropdown-menu-toggle{type: 'button', 'data-toggle' => 'dropdown'} %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span.stage-selection More %span.stage-selection More
= icon('chevron-down') = icon('chevron-down')
%ul.dropdown-menu %ul.dropdown-menu
...@@ -125,10 +125,10 @@ ...@@ -125,10 +125,10 @@
.builds-container .builds-container
- HasStatus::ORDERED_STATUSES.each do |build_status| - HasStatus::ORDERED_STATUSES.each do |build_status|
- builds.select{|build| build.status == build_status}.each do |build| - builds.select{|build| build.status == build_status}.each do |build|
.build-job{class: sidebar_build_class(build, @build), data: {stage: build.stage}} .build-job{ class: sidebar_build_class(build, @build), data: { stage: build.stage } }
= link_to namespace_project_build_path(@project.namespace, @project, build) do = link_to namespace_project_build_path(@project.namespace, @project, build) do
= icon('arrow-right') = icon('arrow-right')
%span{class: "ci-status-icon-#{build.status}"} %span{ class: "ci-status-icon-#{build.status}" }
= ci_icon_for_status(build.status) = ci_icon_for_status(build.status)
%span %span
- if build.name - if build.name
...@@ -136,4 +136,4 @@ ...@@ -136,4 +136,4 @@
- else - else
= build.id = build.id
- if build.retried? - if build.retried?
%i.fa.fa-refresh.has-tooltip{data: { container: 'body', placement: 'bottom' }, title: 'Build was retried'} %i.fa.fa-refresh.has-tooltip{ data: { container: 'body', placement: 'bottom' }, title: 'Build was retried' }
...@@ -19,5 +19,5 @@ ...@@ -19,5 +19,5 @@
= link_to ci_lint_path, class: 'btn btn-default' do = link_to ci_lint_path, class: 'btn btn-default' do
%span CI Lint %span CI Lint
%div.content-list.builds-content-list .content-list.builds-content-list
= render "table", builds: @builds, project: @project = render "table", builds: @builds, project: @project
...@@ -56,10 +56,10 @@ ...@@ -56,10 +56,10 @@
- else - else
#js-build-scroll.scroll-controls #js-build-scroll.scroll-controls
.scroll-step .scroll-step
%a{ href: '#up-build-trace', id: 'scroll-top', class: 'scroll-link scroll-top', title: 'Scroll to top' } %a.scroll-link.scroll-top{ href: '#up-build-trace', id: 'scroll-top', title: 'Scroll to top' }
= custom_icon('scroll_up') = custom_icon('scroll_up')
= custom_icon('scroll_up_hover_active') = custom_icon('scroll_up_hover_active')
%a{ href: '#down-build-trace', id: 'scroll-bottom', class: 'scroll-link scroll-bottom', title: 'Scroll to bottom' } %a.scroll-link.scroll-bottom{ href: '#down-build-trace', id: 'scroll-bottom', title: 'Scroll to bottom' }
= custom_icon('scroll_down') = custom_icon('scroll_down')
= custom_icon('scroll_down_hover_active') = custom_icon('scroll_down_hover_active')
- if @build.active? - if @build.active?
......
- if current_user - if current_user
.project-action-button.dropdown.inline .project-action-button.dropdown.inline
%a.btn.dropdown-toggle{href: '#', "data-toggle" => "dropdown"} %a.btn.dropdown-toggle{ href: '#', "data-toggle" => "dropdown" }
= icon('plus') = icon('plus')
= icon("caret-down") = icon("caret-down")
%ul.dropdown-menu.dropdown-menu-align-right.project-home-dropdown %ul.dropdown-menu.dropdown-menu-align-right.project-home-dropdown
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
= link_to new_namespace_project_fork_path(@project.namespace, @project), title: 'Fork project', class: 'btn' do = link_to new_namespace_project_fork_path(@project.namespace, @project), title: 'Fork project', class: 'btn' do
= custom_icon('icon_fork') = custom_icon('icon_fork')
%span Fork %span Fork
%div.count-with-arrow .count-with-arrow
%span.arrow %span.arrow
= link_to namespace_project_forks_path(@project.namespace, @project), title: 'Forks', class: 'count' do = link_to namespace_project_forks_path(@project.namespace, @project), title: 'Forks', class: 'count' do
= @project.forks_count = @project.forks_count
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
- else - else
= icon('star-o') = icon('star-o')
%span Star %span Star
%div.count-with-arrow .count-with-arrow
%span.arrow %span.arrow
%span.count.star-count %span.count.star-count
= @project.star_count = @project.star_count
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
= link_to new_user_session_path, class: 'btn has-tooltip star-btn', title: 'You must sign in to star a project' do = link_to new_user_session_path, class: 'btn has-tooltip star-btn', title: 'You must sign in to star a project' do
= icon('star') = icon('star')
Star Star
%div.count-with-arrow .count-with-arrow
%span.arrow %span.arrow
%span.count %span.count
= @project.star_count = @project.star_count
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
- coverage = local_assigns.fetch(:coverage, false) - coverage = local_assigns.fetch(:coverage, false)
- allow_retry = local_assigns.fetch(:allow_retry, false) - allow_retry = local_assigns.fetch(:allow_retry, false)
%tr.build.commit{class: ('retried' if retried)} %tr.build.commit{ class: ('retried' if retried) }
%td.status %td.status
= render "ci/status/badge", status: build.detailed_status(current_user) = render "ci/status/badge", status: build.detailed_status(current_user)
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
.stage-container.mini-pipeline-graph .stage-container.mini-pipeline-graph
.dropdown.inline.build-content .dropdown.inline.build-content
%button.has-tooltip.builds-dropdown.js-builds-dropdown-button{ type: 'button', data: { toggle: 'dropdown', title: "#{stage.name}: #{detailed_status.label}", placement: 'top', "stage-endpoint" => stage_namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline, stage: stage.name)}} %button.has-tooltip.builds-dropdown.js-builds-dropdown-button{ type: 'button', data: { toggle: 'dropdown', title: "#{stage.name}: #{detailed_status.label}", placement: 'top', "stage-endpoint" => stage_namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline, stage: stage.name) } }
%span.has-tooltip{ class: status_klass } %span.has-tooltip{ class: status_klass }
%span.mini-pipeline-graph-icon-container %span.mini-pipeline-graph-icon-container
%span{ class: status_klass }= custom_icon(icon_status) %span{ class: status_klass }= custom_icon(icon_status)
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
.btn-group.inline .btn-group.inline
- if actions.any? - if actions.any?
.btn-group .btn-group
%a.dropdown-toggle.btn.btn-default.js-pipeline-dropdown-manual-actions{type: 'button', 'data-toggle' => 'dropdown'} %a.dropdown-toggle.btn.btn-default.js-pipeline-dropdown-manual-actions{ type: 'button', 'data-toggle' => 'dropdown' }
= custom_icon('icon_play') = custom_icon('icon_play')
= icon('caret-down') = icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
%span= build.name.humanize %span= build.name.humanize
- if artifacts.present? - if artifacts.present?
.btn-group .btn-group
%a.dropdown-toggle.btn.btn-default.build-artifacts.js-pipeline-dropdown-download{type: 'button', 'data-toggle' => 'dropdown'} %a.dropdown-toggle.btn.btn-default.build-artifacts.js-pipeline-dropdown-download{ type: 'button', 'data-toggle' => 'dropdown' }
= icon("download") = icon("download")
= icon('caret-down') = icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
......
...@@ -6,11 +6,11 @@ ...@@ -6,11 +6,11 @@
- label = 'Cherry-pick' - label = 'Cherry-pick'
- target_label = 'Pick into branch' - target_label = 'Pick into branch'
.modal{id: "modal-#{type}-commit"} .modal{ id: "modal-#{type}-commit" }
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3.page-title== #{label} this #{commit.change_type_title(current_user)} %h3.page-title== #{label} this #{commit.change_type_title(current_user)}
.modal-body .modal-body
= form_tag send("#{type.underscore}_namespace_project_commit_path", @project.namespace, @project, commit.id), method: :post, remote: false, class: "form-horizontal js-#{type}-form js-requires-input" do = form_tag send("#{type.underscore}_namespace_project_commit_path", @project.namespace, @project, commit.id), method: :post, remote: false, class: "form-horizontal js-#{type}-form js-requires-input" do
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
= label_tag 'target_branch', target_label, class: 'control-label' = label_tag 'target_branch', target_label, class: 'control-label'
.col-sm-10 .col-sm-10
= hidden_field_tag :target_branch, @project.default_branch, id: 'target_branch' = hidden_field_tag :target_branch, @project.default_branch, id: 'target_branch'
= dropdown_tag(@project.default_branch, options: { title: "Switch branch", filter: true, placeholder: "Search branches", toggle_class: 'js-project-refs-dropdown js-target-branch dynamic', dropdown_class: 'dropdown-menu-selectable', data: { field_name: "target_branch", selected: @project.default_branch, target_branch: @project.default_branch, refs_url: namespace_project_branches_path(@project.namespace, @project), submit_form_on_click: false }}) = dropdown_tag(@project.default_branch, options: { title: "Switch branch", filter: true, placeholder: "Search branches", toggle_class: 'js-project-refs-dropdown js-target-branch dynamic', dropdown_class: 'dropdown-menu-selectable', data: { field_name: "target_branch", selected: @project.default_branch, target_branch: @project.default_branch, refs_url: namespace_project_branches_path(@project.namespace, @project), submit_form_on_click: false } })
- if can?(current_user, :push_code, @project) - if can?(current_user, :push_code, @project)
.js-create-merge-request-container .js-create-merge-request-container
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
- if @commit.status - if @commit.status
.well-segment.pipeline-info .well-segment.pipeline-info
%div{class: "icon-container ci-status-icon-#{@commit.status}"} %div{ class: "icon-container ci-status-icon-#{@commit.status}" }
= ci_icon_for_status(@commit.status) = ci_icon_for_status(@commit.status)
Pipeline Pipeline
= link_to "##{@commit.pipelines.last.id}", pipelines_namespace_project_commit_path(@project.namespace, @project, @commit.id), class: "monospace" = link_to "##{@commit.pipelines.last.id}", pipelines_namespace_project_commit_path(@project.namespace, @project, @commit.id), class: "monospace"
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
- if @commit.status - if @commit.status
= render "ci_menu" = render "ci_menu"
- else - else
%div.block-connector .block-connector
= render "projects/diffs/diffs", diffs: @diffs = render "projects/diffs/diffs", diffs: @diffs
= render "projects/notes/notes_with_form" = render "projects/notes/notes_with_form"
- if can_collaborate_with_project? - if can_collaborate_with_project?
......
- commits, hidden = limited_commits(@commits) - commits, hidden = limited_commits(@commits)
- commits = Commit.decorate(commits, @project) - commits = Commit.decorate(commits, @project)
%div.panel.panel-default .panel.panel-default
.panel-heading .panel-heading
Commits (#{@commits.count}) Commits (#{@commits.count})
- if hidden > 0 - if hidden > 0
......
...@@ -28,12 +28,12 @@ ...@@ -28,12 +28,12 @@
= search_field_tag :search, params[:search], { placeholder: 'Filter by commit message', id: 'commits-search', class: 'form-control search-text-input input-short', spellcheck: false } = search_field_tag :search, params[:search], { placeholder: 'Filter by commit message', id: 'commits-search', class: 'form-control search-text-input input-short', spellcheck: false }
- if current_user && current_user.private_token - if current_user && current_user.private_token
.control .control
= link_to namespace_project_commits_path(@project.namespace, @project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Commits Feed", class: 'btn' do = link_to namespace_project_commits_path(@project.namespace, @project, @ref, { format: :atom, private_token: current_user.private_token }), title: "Commits Feed", class: 'btn' do
= icon("rss") = icon("rss")
%ul.breadcrumb.repo-breadcrumb %ul.breadcrumb.repo-breadcrumb
= commits_breadcrumbs = commits_breadcrumbs
%div{id: dom_id(@project)} %div{ id: dom_id(@project) }
%ol#commits-list.list-unstyled.content_list %ol#commits-list.list-unstyled.content_list
= render 'commits', project: @project, ref: @ref = render 'commits', project: @project, ref: @ref
= spinner = spinner
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#cycle-analytics{ class: container_class, "v-cloak" => "true", data: { request_path: project_cycle_analytics_path(@project) } } #cycle-analytics{ class: container_class, "v-cloak" => "true", data: { request_path: project_cycle_analytics_path(@project) } }
- if @cycle_analytics_no_data - if @cycle_analytics_no_data
.bordered-box.landing.content-block{"v-if" => "!isOverviewDialogDismissed"} .bordered-box.landing.content-block{ "v-if" => "!isOverviewDialogDismissed" }
= icon("times", class: "dismiss-icon", "@click" => "dismissOverviewDialog()") = icon("times", class: "dismiss-icon", "@click" => "dismissOverviewDialog()")
.row .row
.col-sm-3.col-xs-12.svg-container .col-sm-3.col-xs-12.svg-container
...@@ -20,19 +20,19 @@ ...@@ -20,19 +20,19 @@
= link_to "Read more", help_page_path('user/project/cycle_analytics'), target: '_blank', class: 'btn' = link_to "Read more", help_page_path('user/project/cycle_analytics'), target: '_blank', class: 'btn'
= icon("spinner spin", "v-show" => "isLoading") = icon("spinner spin", "v-show" => "isLoading")
.wrapper{"v-show" => "!isLoading && !hasError"} .wrapper{ "v-show" => "!isLoading && !hasError" }
.panel.panel-default .panel.panel-default
.panel-heading .panel-heading
Pipeline Health Pipeline Health
.content-block .content-block
.container-fluid .container-fluid
.row .row
.col-sm-3.col-xs-12.column{"v-for" => "item in state.summary"} .col-sm-3.col-xs-12.column{ "v-for" => "item in state.summary" }
%h3.header {{item.value}} %h3.header {{item.value}}
%p.text {{item.title}} %p.text {{item.title}}
.col-sm-3.col-xs-12.column .col-sm-3.col-xs-12.column
.dropdown.inline.js-ca-dropdown .dropdown.inline.js-ca-dropdown
%button.dropdown-menu-toggle{"data-toggle" => "dropdown", :type => "button"} %button.dropdown-menu-toggle{ "data-toggle" => "dropdown", :type => "button" }
%span.dropdown-label Last 30 days %span.dropdown-label Last 30 days
%i.fa.fa-chevron-down %i.fa.fa-chevron-down
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
- if actions.present? - if actions.present?
.inline .inline
.dropdown .dropdown
%a.dropdown-new.btn.btn-default{type: 'button', 'data-toggle' => 'dropdown'} %a.dropdown-new.btn.btn-default{ type: 'button', 'data-toggle' => 'dropdown' }
= custom_icon('icon_play') = custom_icon('icon_play')
= icon('caret-down') = icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
......
%div.branch-commit .branch-commit
- if deployment.ref - if deployment.ref
.icon-container .icon-container
= deployment.tag? ? icon('tag') : icon('code-fork') = deployment.tag? ? icon('tag') : icon('code-fork')
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
.nothing-here-block This diff was suppressed by a .gitattributes entry. .nothing-here-block This diff was suppressed by a .gitattributes entry.
- elsif diff_file.collapsed? - elsif diff_file.collapsed?
- url = url_for(params.merge(action: :diff_for_path, old_path: diff_file.old_path, new_path: diff_file.new_path, file_identifier: diff_file.file_identifier)) - url = url_for(params.merge(action: :diff_for_path, old_path: diff_file.old_path, new_path: diff_file.new_path, file_identifier: diff_file.file_identifier))
.nothing-here-block.diff-collapsed{data: { diff_for_path: url } } .nothing-here-block.diff-collapsed{ data: { diff_for_path: url } }
This diff is collapsed. This diff is collapsed.
%a.click-to-expand %a.click-to-expand
Click to expand it. Click to expand it.
......
.diff-file.file-holder{id: file_hash, data: diff_file_html_data(project, diff_file.file_path, diff_commit.id)} .diff-file.file-holder{ id: file_hash, data: diff_file_html_data(project, diff_file.file_path, diff_commit.id) }
.file-title{id: "file-path-#{hexdigest(diff_file.file_path)}"} .file-title{ id: "file-path-#{hexdigest(diff_file.file_path)}" }
= render "projects/diffs/file_header", diff_file: diff_file, blob: blob, diff_commit: diff_commit, project: project, url: "##{file_hash}" = render "projects/diffs/file_header", diff_file: diff_file, blob: blob, diff_commit: diff_commit, project: project, url: "##{file_hash}"
- unless diff_file.submodule? - unless diff_file.submodule?
......
...@@ -7,16 +7,16 @@ ...@@ -7,16 +7,16 @@
- if diff.renamed_file || diff.new_file || diff.deleted_file - if diff.renamed_file || diff.new_file || diff.deleted_file
.image .image
%span.wrap %span.wrap
.frame{class: image_diff_class(diff)} .frame{ class: image_diff_class(diff) }
%img{src: diff.deleted_file ? old_file_raw_path : file_raw_path} %img{ src: diff.deleted_file ? old_file_raw_path : file_raw_path, alt: diff.new_path }
%p.image-info= "#{number_to_human_size file.size}" %p.image-info= "#{number_to_human_size file.size}"
- else - else
.image .image
%div.two-up.view .two-up.view
%span.wrap %span.wrap
.frame.deleted .frame.deleted
%a{href: namespace_project_blob_path(@project.namespace, @project, tree_join(diff_file.old_ref, diff.old_path))} %a{ href: namespace_project_blob_path(@project.namespace, @project, tree_join(diff_file.old_ref, diff.old_path)) }
%img{src: old_file_raw_path} %img{ src: old_file_raw_path, alt: diff.old_path }
%p.image-info.hide %p.image-info.hide
%span.meta-filesize= "#{number_to_human_size old_file.size}" %span.meta-filesize= "#{number_to_human_size old_file.size}"
| |
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
%span.meta-height %span.meta-height
%span.wrap %span.wrap
.frame.added .frame.added
%a{href: namespace_project_blob_path(@project.namespace, @project, tree_join(diff_file.new_ref, diff.new_path))} %a{ href: namespace_project_blob_path(@project.namespace, @project, tree_join(diff_file.new_ref, diff.new_path)) }
%img{src: file_raw_path} %img{ src: file_raw_path, alt: diff.new_path }
%p.image-info.hide %p.image-info.hide
%span.meta-filesize= "#{number_to_human_size file.size}" %span.meta-filesize= "#{number_to_human_size file.size}"
| |
...@@ -38,32 +38,32 @@ ...@@ -38,32 +38,32 @@
%b H: %b H:
%span.meta-height %span.meta-height
%div.swipe.view.hide .swipe.view.hide
.swipe-frame .swipe-frame
.frame.deleted .frame.deleted
%img{src: old_file_raw_path} %img{ src: old_file_raw_path, alt: diff.old_path }
.swipe-wrap .swipe-wrap
.frame.added .frame.added
%img{src: file_raw_path} %img{ src: file_raw_path, alt: diff.new_path }
%span.swipe-bar %span.swipe-bar
%span.top-handle %span.top-handle
%span.bottom-handle %span.bottom-handle
%div.onion-skin.view.hide .onion-skin.view.hide
.onion-skin-frame .onion-skin-frame
.frame.deleted .frame.deleted
%img{src: old_file_raw_path} %img{ src: old_file_raw_path, alt: diff.old_path }
.frame.added .frame.added
%img{src: file_raw_path} %img{ src: file_raw_path, alt: diff.new_path }
.controls .controls
.transparent .transparent
.drag-track .drag-track
.dragger{:style => "left: 0px;"} .dragger{ :style => "left: 0px;" }
.opaque .opaque
.view-modes.hide .view-modes.hide
%ul.view-modes-menu %ul.view-modes-menu
%li.two-up{data: {mode: 'two-up'}} 2-up %li.two-up{ data: { mode: 'two-up' } } 2-up
%li.swipe{data: {mode: 'swipe'}} Swipe %li.swipe{ data: { mode: 'swipe' } } Swipe
%li.onion-skin{data: {mode: 'onion-skin'}} Onion skin %li.onion-skin{ data: { mode: 'onion-skin' } } Onion skin
...@@ -16,13 +16,13 @@ ...@@ -16,13 +16,13 @@
- if plain - if plain
= link_text = link_text
- else - else
%a{href: "##{line_code}", data: { linenumber: link_text }} %a{ href: "##{line_code}", data: { linenumber: link_text } }
%td.new_line.diff-line-num{ class: type, data: { linenumber: line.new_pos } } %td.new_line.diff-line-num{ class: type, data: { linenumber: line.new_pos } }
- link_text = type == "old" ? " " : line.new_pos - link_text = type == "old" ? " " : line.new_pos
- if plain - if plain
= link_text = link_text
- else - else
%a{href: "##{line_code}", data: { linenumber: link_text }} %a{ href: "##{line_code}", data: { linenumber: link_text } }
%td.line_content.noteable_line{ class: type, data: (diff_view_line_data(line_code, diff_file.position(line), type) unless plain) }< %td.line_content.noteable_line{ class: type, data: (diff_view_line_data(line_code, diff_file.position(line), type) unless plain) }<
- if email - if email
%pre= line.text %pre= line.text
......
/ Side-by-side diff view / Side-by-side diff view
%div.text-file.diff-wrap-lines.code.js-syntax-highlight{ data: diff_view_data } .text-file.diff-wrap-lines.code.js-syntax-highlight{ data: diff_view_data }
%table %table
- last_line = 0 - last_line = 0
- diff_file.parallel_diff_lines.each do |line| - diff_file.parallel_diff_lines.each do |line|
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
- else - else
- left_line_code = diff_file.line_code(left) - left_line_code = diff_file.line_code(left)
- left_position = diff_file.position(left) - left_position = diff_file.position(left)
%td.old_line.diff-line-num{id: left_line_code, class: left.type, data: { linenumber: left.old_pos }} %td.old_line.diff-line-num{ id: left_line_code, class: left.type, data: { linenumber: left.old_pos } }
%a{href: "##{left_line_code}" }= raw(left.old_pos) %a{ href: "##{left_line_code}" }= raw(left.old_pos)
%td.line_content.parallel.noteable_line{class: left.type, data: diff_view_line_data(left_line_code, left_position, 'old')}= diff_line_content(left.text) %td.line_content.parallel.noteable_line{ class: left.type, data: diff_view_line_data(left_line_code, left_position, 'old') }= diff_line_content(left.text)
- else - else
%td.old_line.diff-line-num.empty-cell %td.old_line.diff-line-num.empty-cell
%td.line_content.parallel %td.line_content.parallel
...@@ -26,9 +26,9 @@ ...@@ -26,9 +26,9 @@
- else - else
- right_line_code = diff_file.line_code(right) - right_line_code = diff_file.line_code(right)
- right_position = diff_file.position(right) - right_position = diff_file.position(right)
%td.new_line.diff-line-num{id: right_line_code, class: right.type, data: { linenumber: right.new_pos }} %td.new_line.diff-line-num{ id: right_line_code, class: right.type, data: { linenumber: right.new_pos } }
%a{href: "##{right_line_code}" }= raw(right.new_pos) %a{ href: "##{right_line_code}" }= raw(right.new_pos)
%td.line_content.parallel.noteable_line{class: right.type, data: diff_view_line_data(right_line_code, right_position, 'new')}= diff_line_content(right.text) %td.line_content.parallel.noteable_line{ class: right.type, data: diff_view_line_data(right_line_code, right_position, 'new') }= diff_line_content(right.text)
- else - else
%td.old_line.diff-line-num.empty-cell %td.old_line.diff-line-num.empty-cell
%td.line_content.parallel %td.line_content.parallel
......
...@@ -14,24 +14,23 @@ ...@@ -14,24 +14,23 @@
%li %li
- if diff_file.deleted_file - if diff_file.deleted_file
%span.deleted-file %span.deleted-file
%a{href: "##{file_hash}"} %a{ href: "##{file_hash}" }
%i.fa.fa-minus %i.fa.fa-minus
= diff_file.old_path = diff_file.old_path
- elsif diff_file.renamed_file - elsif diff_file.renamed_file
%span.renamed-file %span.renamed-file
%a{href: "##{file_hash}"} %a{ href: "##{file_hash}" }
%i.fa.fa-minus %i.fa.fa-minus
= diff_file.old_path = diff_file.old_path
&rarr; &rarr;
= diff_file.new_path = diff_file.new_path
- elsif diff_file.new_file - elsif diff_file.new_file
%span.new-file %span.new-file
%a{href: "##{file_hash}"} %a{ href: "##{file_hash}" }
%i.fa.fa-plus %i.fa.fa-plus
= diff_file.new_path = diff_file.new_path
- else - else
%span.edit-file %span.edit-file
%a{href: "##{file_hash}"} %a{ href: "##{file_hash}" }
%i.fa.fa-adjust %i.fa.fa-adjust
= diff_file.new_path = diff_file.new_path
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
.empty_wrapper .empty_wrapper
%h3.page-title-empty %h3.page-title-empty
Command line instructions Command line instructions
%div.git-empty .git-empty
%fieldset %fieldset
%h5 Git global setup %h5 Git global setup
%pre.light-well %pre.light-well
......
...@@ -16,4 +16,4 @@ ...@@ -16,4 +16,4 @@
"css-class" => container_class, "css-class" => container_class,
"commit-icon-svg" => custom_icon("icon_commit"), "commit-icon-svg" => custom_icon("icon_commit"),
"terminal-icon-svg" => custom_icon("icon_terminal"), "terminal-icon-svg" => custom_icon("icon_terminal"),
"play-icon-svg" => custom_icon("icon_play")}} "play-icon-svg" => custom_icon("icon_play") } }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
= stylesheet_link_tag "xterm/xterm" = stylesheet_link_tag "xterm/xterm"
= page_specific_javascript_tag("terminal/terminal_bundle.js") = page_specific_javascript_tag("terminal/terminal_bundle.js")
%div{class: container_class} %div{ class: container_class }
.top-area .top-area
.row .row
.col-sm-6 .col-sm-6
...@@ -18,5 +18,5 @@ ...@@ -18,5 +18,5 @@
.nav-controls .nav-controls
= render 'projects/deployments/actions', deployment: @environment.last_deployment = render 'projects/deployments/actions', deployment: @environment.last_deployment
.terminal-container{class: container_class} .terminal-container{ class: container_class }
#terminal{data:{project_path: "#{terminal_namespace_project_environment_path(@project.namespace, @project, @environment)}.ws"}} #terminal{ data: { project_path: "#{terminal_namespace_project_environment_path(@project.namespace, @project, @environment)}.ws" } }
...@@ -9,11 +9,11 @@ ...@@ -9,11 +9,11 @@
= link_to namespace_project_tree_path(@project.namespace, @project, @ref) do = link_to namespace_project_tree_path(@project.namespace, @project, @ref) do
= @project.path = @project.path
%li.file-finder %li.file-finder
%input#file_find.form-control.file-finder-input{type: "text", placeholder: 'Find by path', autocomplete: 'off'} %input#file_find.form-control.file-finder-input{ type: "text", placeholder: 'Find by path', autocomplete: 'off' }
%div.tree-content-holder .tree-content-holder
.table-holder .table-holder
%table.table.files-slider{class: "table_#{@hex_path} tree-table table-striped" } %table.table.files-slider{ class: "table_#{@hex_path} tree-table table-striped" }
%tbody %tbody
= spinner nil, true = spinner nil, true
......
.top-area .top-area
.nav-text .nav-text
- full_count_title = "#{@public_forks_count} public and #{@private_forks_count} private" - full_count_title = "#{@public_forks_count} public and #{@private_forks_count} private"
== #{pluralize(@total_forks_count, 'fork')}: #{full_count_title} = "#{pluralize(@total_forks_count, 'fork')}: #{full_count_title}"
.nav-controls .nav-controls
= form_tag request.original_url, method: :get, class: 'project-filter-form', id: 'project-filter-form' do |f| = form_tag request.original_url, method: :get, class: 'project-filter-form', id: 'project-filter-form' do |f|
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
spellcheck: false, data: { 'filter-selector' => 'span.namespace-name' } spellcheck: false, data: { 'filter-selector' => 'span.namespace-name' }
.dropdown .dropdown
%button.dropdown-toggle{type: 'button', 'data-toggle' => 'dropdown'} %button.dropdown-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span.light sort: %span.light sort:
- if @sort.present? - if @sort.present?
= sort_options_hash[@sort] = sort_options_hash[@sort]
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
- stage = local_assigns.fetch(:stage, false) - stage = local_assigns.fetch(:stage, false)
- coverage = local_assigns.fetch(:coverage, false) - coverage = local_assigns.fetch(:coverage, false)
%tr.generic_commit_status{class: ('retried' if retried)} %tr.generic_commit_status{ class: ('retried' if retried) }
%td.status %td.status
= render 'ci/status/badge', status: generic_commit_status.detailed_status(current_user) = render 'ci/status/badge', status: generic_commit_status.detailed_status(current_user)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
%p.light %p.light
Commit duration in minutes for last 30 commits Commit duration in minutes for last 30 commits
%canvas#build_timesChart{height: 200} %canvas#build_timesChart{ height: 200 }
:javascript :javascript
var data = { var data = {
......
...@@ -13,18 +13,18 @@ ...@@ -13,18 +13,18 @@
%p.light %p.light
Builds for last week Builds for last week
(#{date_from_to(Date.today - 7.days, Date.today)}) (#{date_from_to(Date.today - 7.days, Date.today)})
%canvas#weekChart{height: 200} %canvas#weekChart{ height: 200 }
.prepend-top-default .prepend-top-default
%p.light %p.light
Builds for last month Builds for last month
(#{date_from_to(Date.today - 30.days, Date.today)}) (#{date_from_to(Date.today - 30.days, Date.today)})
%canvas#monthChart{height: 200} %canvas#monthChart{ height: 200 }
.prepend-top-default .prepend-top-default
%p.light %p.light
Builds for last year Builds for last year
%canvas#yearChart.padded{height: 250} %canvas#yearChart.padded{ height: 250 }
- [:week, :month, :year].each do |scope| - [:week, :month, :year].each do |scope|
:javascript :javascript
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
%h3#date_header.page-title %h3#date_header.page-title
%p.light %p.light
Commits to #{@ref}, excluding merge commits. Limited to 6,000 commits. Commits to #{@ref}, excluding merge commits. Limited to 6,000 commits.
%input#brush_change{:type => "hidden"} %input#brush_change{ :type => "hidden" }
.graphs.row .graphs.row
#contributors-master #contributors-master
#contributors.clearfix #contributors.clearfix
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
= icon('clock-o') = icon('clock-o')
= issue.milestone.title = issue.milestone.title
- if issue.due_date - if issue.due_date
%span{class: "#{'cred' if issue.overdue?}"} %span{ class: "#{'cred' if issue.overdue?}" }
&nbsp; &nbsp;
= icon('calendar') = icon('calendar')
= issue.due_date.to_s(:medium) = issue.due_date.to_s(:medium)
......
- if can?(current_user, :push_code, @project) - if can?(current_user, :push_code, @project)
.pull-right .pull-right
#new-branch.new-branch{'data-path' => can_create_branch_namespace_project_issue_path(@project.namespace, @project, @issue)} #new-branch.new-branch{ 'data-path' => can_create_branch_namespace_project_issue_path(@project.namespace, @project, @issue) }
= link_to namespace_project_branches_path(@project.namespace, @project, branch_name: @issue.to_branch_name, issue_iid: @issue.iid), = link_to namespace_project_branches_path(@project.namespace, @project, branch_name: @issue.to_branch_name, issue_iid: @issue.iid),
method: :post, class: 'btn btn-new btn-inverted btn-grouped has-tooltip available hide', title: @issue.to_branch_name do method: :post, class: 'btn btn-new btn-inverted btn-grouped has-tooltip available hide', title: @issue.to_branch_name do
New branch New branch
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
- content_for :page_specific_javascripts do - content_for :page_specific_javascripts do
= page_specific_javascript_tag('diff_notes/diff_notes_bundle.js') = page_specific_javascript_tag('diff_notes/diff_notes_bundle.js')
.merge-request{'data-url' => merge_request_path(@merge_request)} .merge-request{ 'data-url' => merge_request_path(@merge_request) }
= render "projects/merge_requests/show/mr_title" = render "projects/merge_requests/show/mr_title"
.merge-request-details.issuable-details{data: {id: @merge_request.project.id}} .merge-request-details.issuable-details{ data: { id: @merge_request.project.id } }
= render "projects/merge_requests/show/mr_box" = render "projects/merge_requests/show/mr_box"
.append-bottom-default.mr-source-target.prepend-top-default .append-bottom-default.mr-source-target.prepend-top-default
- if @merge_request.open? - if @merge_request.open?
......
...@@ -9,29 +9,29 @@ ...@@ -9,29 +9,29 @@
= render 'shared/issuable/sidebar', issuable: @merge_request = render 'shared/issuable/sidebar', issuable: @merge_request
#conflicts{"v-cloak" => "true", data: { conflicts_path: conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request, format: :json), #conflicts{ "v-cloak" => "true", data: { conflicts_path: conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request, format: :json),
resolve_conflicts_path: resolve_conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request) } } resolve_conflicts_path: resolve_conflicts_namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request) } }
.loading{"v-if" => "isLoading"} .loading{ "v-if" => "isLoading" }
%i.fa.fa-spinner.fa-spin %i.fa.fa-spinner.fa-spin
.nothing-here-block{"v-if" => "hasError"} .nothing-here-block{ "v-if" => "hasError" }
{{conflictsData.errorMessage}} {{conflictsData.errorMessage}}
= render partial: "projects/merge_requests/conflicts/commit_stats" = render partial: "projects/merge_requests/conflicts/commit_stats"
.files-wrapper{"v-if" => "!isLoading && !hasError"} .files-wrapper{ "v-if" => "!isLoading && !hasError" }
.files .files
.diff-file.file-holder.conflict{"v-for" => "file in conflictsData.files"} .diff-file.file-holder.conflict{ "v-for" => "file in conflictsData.files" }
.file-title .file-title
%i.fa.fa-fw{":class" => "file.iconClass"} %i.fa.fa-fw{ ":class" => "file.iconClass" }
%strong {{file.filePath}} %strong {{file.filePath}}
= render partial: 'projects/merge_requests/conflicts/file_actions' = render partial: 'projects/merge_requests/conflicts/file_actions'
.diff-content.diff-wrap-lines .diff-content.diff-wrap-lines
.diff-wrap-lines.code.file-content.js-syntax-highlight{"v-show" => "!isParallel && file.resolveMode === 'interactive' && file.type === 'text'" } .diff-wrap-lines.code.file-content.js-syntax-highlight{ "v-show" => "!isParallel && file.resolveMode === 'interactive' && file.type === 'text'" }
= render partial: "projects/merge_requests/conflicts/components/inline_conflict_lines" = render partial: "projects/merge_requests/conflicts/components/inline_conflict_lines"
.diff-wrap-lines.code.file-content.js-syntax-highlight{"v-show" => "isParallel && file.resolveMode === 'interactive' && file.type === 'text'" } .diff-wrap-lines.code.file-content.js-syntax-highlight{ "v-show" => "isParallel && file.resolveMode === 'interactive' && file.type === 'text'" }
%parallel-conflict-lines{ ":file" => "file" } %parallel-conflict-lines{ ":file" => "file" }
%div{"v-show" => "file.resolveMode === 'edit' || file.type === 'text-editor'"} %div{ "v-show" => "file.resolveMode === 'edit' || file.type === 'text-editor'" }
= render partial: "projects/merge_requests/conflicts/components/diff_file_editor" = render partial: "projects/merge_requests/conflicts/components/diff_file_editor"
= render partial: "projects/merge_requests/conflicts/submit_form" = render partial: "projects/merge_requests/conflicts/submit_form"
.content-block.oneline-block.files-changed{"v-if" => "!isLoading && !hasError"} .content-block.oneline-block.files-changed{ "v-if" => "!isLoading && !hasError" }
.inline-parallel-buttons{"v-if" => "showDiffViewTypeSwitcher"} .inline-parallel-buttons{ "v-if" => "showDiffViewTypeSwitcher" }
.btn-group .btn-group
%button.btn{":class" => "{'active': !isParallel}", "@click" => "handleViewTypeChange('inline')"} %button.btn{ ":class" => "{'active': !isParallel}", "@click" => "handleViewTypeChange('inline')" }
Inline Inline
%button.btn{":class" => "{'active': isParallel}", "@click" => "handleViewTypeChange('parallel')"} %button.btn{ ":class" => "{'active': isParallel}", "@click" => "handleViewTypeChange('parallel')" }
Side-by-side Side-by-side
.js-toggle-container .js-toggle-container
......
.file-actions .file-actions
.btn-group{"v-if" => "file.type === 'text'"} .btn-group{ "v-if" => "file.type === 'text'" }
%button.btn{ ":class" => "{ 'active': file.resolveMode == 'interactive' }", %button.btn{ ":class" => "{ 'active': file.resolveMode == 'interactive' }",
'@click' => "onClickResolveModeButton(file, 'interactive')", '@click' => "onClickResolveModeButton(file, 'interactive')",
type: 'button' } type: 'button' }
...@@ -8,5 +8,5 @@ ...@@ -8,5 +8,5 @@
'@click' => "onClickResolveModeButton(file, 'edit')", '@click' => "onClickResolveModeButton(file, 'edit')",
type: 'button' } type: 'button' }
Edit inline Edit inline
%a.btn.view-file.btn-file-option{":href" => "file.blobPath"} %a.btn.view-file.btn-file-option{ ":href" => "file.blobPath" }
View file @{{conflictsData.shortCommitSha}} View file @{{conflictsData.shortCommitSha}}
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
.col-sm-offset-2.col-sm-10 .col-sm-offset-2.col-sm-10
.row .row
.col-xs-6 .col-xs-6
%button{ type: "button", class: "btn btn-success js-submit-button", "@click" => "commit()", ":disabled" => "!readyToCommit" } %button.btn.btn-success.js-submit-button{ type: "button", "@click" => "commit()", ":disabled" => "!readyToCommit" }
%span {{commitButtonText}} %span {{commitButtonText}}
.col-xs-6.text-right .col-xs-6.text-right
= link_to "Cancel", namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request), class: "btn btn-cancel" = link_to "Cancel", namespace_project_merge_request_path(@merge_request.project.namespace, @merge_request.project, @merge_request), class: "btn btn-cancel"
%diff-file-editor{"inline-template" => "true", ":file" => "file", ":on-cancel-discard-confirmation" => "cancelDiscardConfirmation", ":on-accept-discard-confirmation" => "acceptDiscardConfirmation"} %diff-file-editor{ "inline-template" => "true", ":file" => "file", ":on-cancel-discard-confirmation" => "cancelDiscardConfirmation", ":on-accept-discard-confirmation" => "acceptDiscardConfirmation" }
.diff-editor-wrap{ "v-show" => "file.showEditor" } .diff-editor-wrap{ "v-show" => "file.showEditor" }
.discard-changes-alert-wrap{ "v-if" => "file.promptDiscardConfirmation" } .discard-changes-alert-wrap{ "v-if" => "file.promptDiscardConfirmation" }
.discard-changes-alert .discard-changes-alert
......
%inline-conflict-lines{ "inline-template" => "true", ":file" => "file"} %inline-conflict-lines{ "inline-template" => "true", ":file" => "file" }
%table %table
%tr.line_holder.diff-inline{"v-for" => "line in file.inlineLines"} %tr.line_holder.diff-inline{ "v-for" => "line in file.inlineLines" }
%td.diff-line-num.new_line{":class" => "lineCssClass(line)", "v-if" => "!line.isHeader"} %td.diff-line-num.new_line{ ":class" => "lineCssClass(line)", "v-if" => "!line.isHeader" }
%a {{line.new_line}} %a {{line.new_line}}
%td.diff-line-num.old_line{":class" => "lineCssClass(line)", "v-if" => "!line.isHeader"} %td.diff-line-num.old_line{ ":class" => "lineCssClass(line)", "v-if" => "!line.isHeader" }
%a {{line.old_line}} %a {{line.old_line}}
%td.line_content{":class" => "lineCssClass(line)", "v-if" => "!line.isHeader", "v-html" => "line.richText"} %td.line_content{ ":class" => "lineCssClass(line)", "v-if" => "!line.isHeader", "v-html" => "line.richText" }
%td.diff-line-num.header{":class" => "lineCssClass(line)", "v-if" => "line.isHeader"} %td.diff-line-num.header{ ":class" => "lineCssClass(line)", "v-if" => "line.isHeader" }
%td.diff-line-num.header{":class" => "lineCssClass(line)", "v-if" => "line.isHeader"} %td.diff-line-num.header{ ":class" => "lineCssClass(line)", "v-if" => "line.isHeader" }
%td.line_content.header{":class" => "lineCssClass(line)", "v-if" => "line.isHeader"} %td.line_content.header{ ":class" => "lineCssClass(line)", "v-if" => "line.isHeader" }
%strong{"v-html" => "line.richText"} %strong{ "v-html" => "line.richText" }
%button.btn{ "@click" => "handleSelected(file, line.id, line.section)" } %button.btn{ "@click" => "handleSelected(file, line.id, line.section)" }
{{line.buttonTitle}} {{line.buttonTitle}}
%div#modal_merge_info.modal #modal_merge_info.modal
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3 Check out, review, and merge locally %h3 Check out, review, and merge locally
.modal-body .modal-body
%p %p
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
%div %div
- if @merge_request.description.present? - if @merge_request.description.present?
.description{class: can?(current_user, :update_merge_request, @merge_request) ? 'js-task-list-container' : ''} .description{ class: can?(current_user, :update_merge_request, @merge_request) ? 'js-task-list-container' : '' }
.wiki .wiki
= preserve do = preserve do
= markdown_field(@merge_request, :description) = markdown_field(@merge_request, :description)
......
- if @merge_request_diffs.size > 1 - if @merge_request_diffs.size > 1
.mr-version-controls .mr-version-controls
%div.mr-version-menus-container.content-block .mr-version-menus-container.content-block
Changes between Changes between
%span.dropdown.inline.mr-version-dropdown %span.dropdown.inline.mr-version-dropdown
%a.dropdown-toggle.btn.btn-default{ data: {toggle: :dropdown} } %a.dropdown-toggle.btn.btn-default{ data: {toggle: :dropdown} }
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
.dropdown-menu.dropdown-select.dropdown-menu-selectable .dropdown-menu.dropdown-select.dropdown-menu-selectable
.dropdown-title .dropdown-title
%span Version: %span Version:
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times', class: 'dropdown-menu-close-icon') = icon('times', class: 'dropdown-menu-close-icon')
.dropdown-content .dropdown-content
%ul %ul
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
.dropdown-menu.dropdown-select.dropdown-menu-selectable .dropdown-menu.dropdown-select.dropdown-menu-selectable
.dropdown-title .dropdown-title
%span Compared with: %span Compared with:
%button.dropdown-title-button.dropdown-menu-close{aria: {label: "Close"}} %button.dropdown-title-button.dropdown-menu-close{ aria: { label: "Close" } }
= icon('times', class: 'dropdown-menu-close-icon') = icon('times', class: 'dropdown-menu-close-icon')
.dropdown-content .dropdown-content
%ul %ul
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
- # TODO, remove in later versions when services like Jenkins will set CI status via Commit status API - # TODO, remove in later versions when services like Jenkins will set CI status via Commit status API
.mr-widget-heading .mr-widget-heading
- %w[success skipped canceled failed running pending].each do |status| - %w[success skipped canceled failed running pending].each do |status|
.ci_widget{class: "ci-#{status} ci-status-icon-#{status}", style: "display:none"} .ci_widget{ class: "ci-#{status} ci-status-icon-#{status}", style: "display:none" }
= ci_icon_for_status(status) = ci_icon_for_status(status)
%span %span
CI build CI build
...@@ -32,11 +32,11 @@ ...@@ -32,11 +32,11 @@
= icon("spinner spin") = icon("spinner spin")
Checking CI status for #{@merge_request.diff_head_commit.short_id}&hellip; Checking CI status for #{@merge_request.diff_head_commit.short_id}&hellip;
.ci_widget.ci-not_found{style: "display:none"} .ci_widget.ci-not_found{ style: "display:none" }
= icon("times-circle") = icon("times-circle")
Could not find CI status for #{@merge_request.diff_head_commit.short_id}. Could not find CI status for #{@merge_request.diff_head_commit.short_id}.
.ci_widget.ci-error{style: "display:none"} .ci_widget.ci-error{ style: "display:none" }
= icon("times-circle") = icon("times-circle")
Could not connect to the CI server. Please check your settings and try again. Could not connect to the CI server. Please check your settings and try again.
......
...@@ -43,5 +43,3 @@ ...@@ -43,5 +43,3 @@
#{"Issue".pluralize(mr_issues_mentioned_but_not_closing.size)} #{"Issue".pluralize(mr_issues_mentioned_but_not_closing.size)}
!= markdown issues_sentence(mr_issues_mentioned_but_not_closing), pipeline: :gfm, author: @merge_request.author != markdown issues_sentence(mr_issues_mentioned_but_not_closing), pipeline: :gfm, author: @merge_request.author
#{mr_issues_mentioned_but_not_closing.size > 1 ? 'are' : 'is'} mentioned but will not be closed. #{mr_issues_mentioned_but_not_closing.size > 1 ? 'are' : 'is'} mentioned but will not be closed.
...@@ -20,6 +20,6 @@ ...@@ -20,6 +20,6 @@
- if @milestone.new_record? - if @milestone.new_record?
= f.submit 'Create milestone', class: "btn-create btn" = f.submit 'Create milestone', class: "btn-create btn"
= link_to "Cancel", namespace_project_milestones_path(@project.namespace, @project), class: "btn btn-cancel" = link_to "Cancel", namespace_project_milestones_path(@project.namespace, @project), class: "btn btn-cancel"
-else - else
= f.submit 'Save changes', class: "btn-save btn" = f.submit 'Save changes', class: "btn-save btn"
= link_to "Cancel", namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-cancel" = link_to "Cancel", namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-cancel"
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
- if git_import_enabled? - if git_import_enabled?
= link_to "#", class: 'btn js-toggle-button import_git' do = link_to "#", class: 'btn js-toggle-button import_git' do
= icon('git', text: 'Repo by URL') = icon('git', text: 'Repo by URL')
%div{ class: 'import_gitlab_project' } .import_gitlab_project
- if gitlab_project_import_enabled? - if gitlab_project_import_enabled?
= link_to new_import_gitlab_project_path, class: 'btn btn_import_gitlab_project project-submit' do = link_to new_import_gitlab_project_path, class: 'btn btn_import_gitlab_project project-submit' do
= icon('gitlab', text: 'GitLab export') = icon('gitlab', text: 'GitLab export')
......
...@@ -23,5 +23,5 @@ ...@@ -23,5 +23,5 @@
.note-form-actions.clearfix .note-form-actions.clearfix
= f.submit 'Comment', class: "btn btn-nr btn-create append-right-10 comment-btn js-comment-button" = f.submit 'Comment', class: "btn btn-nr btn-create append-right-10 comment-btn js-comment-button"
= yield(:note_actions) = yield(:note_actions)
%a.btn.btn-cancel.js-note-discard{role: "button", data: {cancel_text: "Cancel"}} %a.btn.btn-cancel.js-note-discard{ role: "button", data: {cancel_text: "Cancel" } }
Discard draft Discard draft
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
%li.timeline-entry{ id: dom_id(note), class: ["note", "note-row-#{note.id}", ('system-note' if note.system)], data: {author_id: note.author.id, editable: note_editable} } %li.timeline-entry{ id: dom_id(note), class: ["note", "note-row-#{note.id}", ('system-note' if note.system)], data: {author_id: note.author.id, editable: note_editable} }
.timeline-entry-inner .timeline-entry-inner
.timeline-icon .timeline-icon
%a{href: user_path(note.author)} %a{ href: user_path(note.author) }
= image_tag avatar_icon(note.author), alt: '', class: 'avatar s40' = image_tag avatar_icon(note.author), alt: '', class: 'avatar s40'
.timeline-content .timeline-content
.note-header .note-header
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
- unless note.system - unless note.system
commented commented
- if note.system - if note.system
%span{class: 'system-note-message'} %span.system-note-message
= note.redacted_note_html = note.redacted_note_html
%a{ href: "##{dom_id(note)}" } %a{ href: "##{dom_id(note)}" }
= time_ago_with_tooltip(note.created_at, placement: 'bottom', html_class: 'note-created-ago') = time_ago_with_tooltip(note.created_at, placement: 'bottom', html_class: 'note-created-ago')
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
= icon('pencil', class: 'link-highlight') = icon('pencil', class: 'link-highlight')
= link_to namespace_project_note_path(note.project.namespace, note.project, note), title: 'Remove comment', method: :delete, data: { confirm: 'Are you sure you want to remove this comment?' }, remote: true, class: 'note-action-button hidden-xs js-note-delete danger' do = link_to namespace_project_note_path(note.project.namespace, note.project, note), title: 'Remove comment', method: :delete, data: { confirm: 'Are you sure you want to remove this comment?' }, remote: true, class: 'note-action-button hidden-xs js-note-delete danger' do
= icon('trash-o', class: 'danger-highlight') = icon('trash-o', class: 'danger-highlight')
.note-body{class: note_editable ? 'js-task-list-container' : ''} .note-body{ class: note_editable ? 'js-task-list-container' : '' }
.note-text.md .note-text.md
= preserve do = preserve do
= note.redacted_note_html = note.redacted_note_html
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
.info-well .info-well
- if @commit.status - if @commit.status
.well-segment.pipeline-info .well-segment.pipeline-info
%div{class: "icon-container ci-status-icon-#{@commit.status}"} %div{ class: "icon-container ci-status-icon-#{@commit.status}" }
= ci_icon_for_status(@commit.status) = ci_icon_for_status(@commit.status)
= pluralize @pipeline.statuses.count(:id), "build" = pluralize @pipeline.statuses.count(:id), "build"
- if @pipeline.ref - if @pipeline.ref
......
...@@ -5,23 +5,23 @@ ...@@ -5,23 +5,23 @@
%div{ class: container_class } %div{ class: container_class }
.top-area .top-area
%ul.nav-links %ul.nav-links
%li{class: ('active' if @scope.nil?)}> %li{ class: ('active' if @scope.nil?) }>
= link_to project_pipelines_path(@project) do = link_to project_pipelines_path(@project) do
All All
%span.badge.js-totalbuilds-count %span.badge.js-totalbuilds-count
= number_with_delimiter(@pipelines_count) = number_with_delimiter(@pipelines_count)
%li{class: ('active' if @scope == 'running')}> %li{ class: ('active' if @scope == 'running') }>
= link_to project_pipelines_path(@project, scope: :running) do = link_to project_pipelines_path(@project, scope: :running) do
Running Running
%span.badge.js-running-count %span.badge.js-running-count
= number_with_delimiter(@running_or_pending_count) = number_with_delimiter(@running_or_pending_count)
%li{class: ('active' if @scope == 'branches')}> %li{ class: ('active' if @scope == 'branches') }>
= link_to project_pipelines_path(@project, scope: :branches) do = link_to project_pipelines_path(@project, scope: :branches) do
Branches Branches
%li{class: ('active' if @scope == 'tags')}> %li{ class: ('active' if @scope == 'tags') }>
= link_to project_pipelines_path(@project, scope: :tags) do = link_to project_pipelines_path(@project, scope: :tags) do
Tags Tags
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
= link_to ci_lint_path, class: 'btn btn-default' do = link_to ci_lint_path, class: 'btn btn-default' do
%span CI Lint %span CI Lint
%div.content-list.pipelines .content-list.pipelines
- if @pipelines.blank? - if @pipelines.blank?
%div %div
.nothing-here-block No pipelines to show .nothing-here-block No pipelines to show
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- page_title "Pipeline" - page_title "Pipeline"
= render "projects/pipelines/head" = render "projects/pipelines/head"
%div.js-pipeline-container{ class: container_class, data: { controller_action: "#{controller.action_name}" } } .js-pipeline-container{ class: container_class, data: { controller_action: "#{controller.action_name}" } }
- if @commit - if @commit
= render "projects/pipelines/info" = render "projects/pipelines/info"
......
%li.runner{id: dom_id(runner)} %li.runner{ id: dom_id(runner) }
%h4 %h4
= runner_status_icon(runner) = runner_status_icon(runner)
%span.monospace %span.monospace
......
...@@ -15,4 +15,4 @@ ...@@ -15,4 +15,4 @@
.row-content-block.top-block.content-component-block .row-content-block.top-block.content-component-block
= render 'award_emoji/awards_block', awardable: @snippet, inline: true = render 'award_emoji/awards_block', awardable: @snippet, inline: true
%div#notes= render "projects/notes/notes_with_form" #notes= render "projects/notes/notes_with_form"
...@@ -17,4 +17,3 @@ ...@@ -17,4 +17,3 @@
%li.build{ 'id' => "ci-badge-#{group_name}" } %li.build{ 'id' => "ci-badge-#{group_name}" }
.curve .curve
= render 'projects/stage/in_stage_group', name: group_name, subject: grouped_statuses = render 'projects/stage/in_stage_group', name: group_name, subject: grouped_statuses
- group_status = CommitStatus.where(id: subject).status - group_status = CommitStatus.where(id: subject).status
%button.dropdown-menu-toggle.build-content.has-tooltip{ type: 'button', data: { toggle: 'dropdown', title: "#{name} - #{group_status}" } } %button.dropdown-menu-toggle.build-content.has-tooltip{ type: 'button', data: { toggle: 'dropdown', title: "#{name} - #{group_status}" } }
%span{class: "ci-status-icon ci-status-icon-#{group_status}"} %span{ class: "ci-status-icon ci-status-icon-#{group_status}" }
= ci_icon_for_status(group_status) = ci_icon_for_status(group_status)
%span.ci-status-text %span.ci-status-text
= name = name
......
%tr %tr
%th{colspan: 10} %th{ colspan: 10 }
%strong %strong
%a{ name: stage.name } %a{ name: stage.name }
%span{class: "ci-status-link ci-status-icon-#{stage.status}"} %span{ class: "ci-status-link ci-status-icon-#{stage.status}" }
= ci_icon_for_status(stage.status) = ci_icon_for_status(stage.status)
&nbsp; &nbsp;
= stage.name.titleize = stage.name.titleize
= render stage.statuses.latest_ordered, coverage: @project.build_coverage_enabled?, stage: false, ref: false, pipeline_link: false, allow_retry: true = render stage.statuses.latest_ordered, coverage: @project.build_coverage_enabled?, stage: false, ref: false, pipeline_link: false, allow_retry: true
= render stage.statuses.retried_ordered, coverage: @project.build_coverage_enabled?, stage: false, ref: false, pipeline_link: false, retried: true = render stage.statuses.retried_ordered, coverage: @project.build_coverage_enabled?, stage: false, ref: false, pipeline_link: false, retried: true
%tr %tr
%td{colspan: 10} %td{ colspan: 10 }
&nbsp; &nbsp;
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- page_title "Tags" - page_title "Tags"
= render "projects/commits/head" = render "projects/commits/head"
%div.flex-list{ class: container_class } .flex-list{ class: container_class }
.top-area.flex-row .top-area.flex-row
.nav-text.row-main-content .nav-text.row-main-content
Tags give the ability to mark specific points in history as being important Tags give the ability to mark specific points in history as being important
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- if @error - if @error
.alert.alert-danger .alert.alert-danger
%button{ type: "button", class: "close", "data-dismiss" => "alert"} &times; %button.close{ type: "button", "data-dismiss" => "alert" } &times;
= @error = @error
%h3.page-title %h3.page-title
......
%tr{ class: "tree-item" } %tr.tree-item
%td.tree-item-file-name %td.tree-item-file-name
%i.fa.fa-archive.fa-fw %i.fa.fa-archive.fa-fw
= submodule_link(submodule_item, @ref) = submodule_link(submodule_item, @ref)
......
%div.tree-content-holder .tree-content-holder
.table-holder .table-holder
%table.table#tree-slider{class: "table_#{@hex_path} tree-table" } %table.table#tree-slider{ class: "table_#{@hex_path} tree-table" }
%thead %thead
%tr %tr
%th Name %th Name
......
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
- if current_user - if current_user
%li %li
- if !on_top_of_branch? - if !on_top_of_branch?
%span.btn.add-to-tree.disabled.has-tooltip{title: "You can only add files when you are on a branch", data: { container: 'body' }} %span.btn.add-to-tree.disabled.has-tooltip{ title: "You can only add files when you are on a branch", data: { container: 'body' } }
= icon('plus') = icon('plus')
- else - else
%span.dropdown %span.dropdown
%a.dropdown-toggle.btn.add-to-tree{href: '#', "data-toggle" => "dropdown"} %a.dropdown-toggle.btn.add-to-tree{ href: '#', "data-toggle" => "dropdown" }
= icon('plus') = icon('plus')
%ul.dropdown-menu %ul.dropdown-menu
- if can_edit_tree? - if can_edit_tree?
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
= icon('pencil fw') = icon('pencil fw')
New file New file
%li %li
= link_to '#modal-upload-blob', { 'data-target' => '#modal-upload-blob', 'data-toggle' => 'modal'} do = link_to '#modal-upload-blob', { 'data-target' => '#modal-upload-blob', 'data-toggle' => 'modal' } do
= icon('file fw') = icon('file fw')
Upload file Upload file
%li %li
= link_to '#modal-create-new-dir', { 'data-target' => '#modal-create-new-dir', 'data-toggle' => 'modal'} do = link_to '#modal-create-new-dir', { 'data-target' => '#modal-create-new-dir', 'data-toggle' => 'modal' } do
= icon('folder fw') = icon('folder fw')
New directory New directory
- elsif can?(current_user, :fork_project, @project) - elsif can?(current_user, :fork_project, @project)
......
...@@ -15,4 +15,4 @@ ...@@ -15,4 +15,4 @@
No variables found, add one with the form above. No variables found, add one with the form above.
- else - else
= render "table" = render "table"
%button.btn.btn-info.js-btn-toggle-reveal-values{"data-status" => 'hidden'} Reveal Values %button.btn.btn-info.js-btn-toggle-reveal-values{ "data-status" => 'hidden' } Reveal Values
- @no_container = true - @no_container = true
%div{ class: container_class } %div{ class: container_class }
%div#modal-new-wiki.modal #modal-new-wiki.modal
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3.page-title New Wiki Page %h3.page-title New Wiki Page
.modal-body .modal-body
%form.new-wiki-page %form.new-wiki-page
......
%ul.nav-links.search-filter %ul.nav-links.search-filter
- if @project - if @project
%li{class: ("active" if @scope == 'blobs')} %li{ class: ("active" if @scope == 'blobs') }
= link_to search_filter_path(scope: 'blobs') do = link_to search_filter_path(scope: 'blobs') do
Code Code
%span.badge %span.badge
= @search_results.blobs_count = @search_results.blobs_count
%li{class: ("active" if @scope == 'issues')} %li{ class: ("active" if @scope == 'issues') }
= link_to search_filter_path(scope: 'issues') do = link_to search_filter_path(scope: 'issues') do
Issues Issues
%span.badge %span.badge
= @search_results.issues_count = @search_results.issues_count
%li{class: ("active" if @scope == 'merge_requests')} %li{ class: ("active" if @scope == 'merge_requests') }
= link_to search_filter_path(scope: 'merge_requests') do = link_to search_filter_path(scope: 'merge_requests') do
Merge requests Merge requests
%span.badge %span.badge
= @search_results.merge_requests_count = @search_results.merge_requests_count
%li{class: ("active" if @scope == 'milestones')} %li{ class: ("active" if @scope == 'milestones') }
= link_to search_filter_path(scope: 'milestones') do = link_to search_filter_path(scope: 'milestones') do
Milestones Milestones
%span.badge %span.badge
= @search_results.milestones_count = @search_results.milestones_count
%li{class: ("active" if @scope == 'notes')} %li{ class: ("active" if @scope == 'notes') }
= link_to search_filter_path(scope: 'notes') do = link_to search_filter_path(scope: 'notes') do
Comments Comments
%span.badge %span.badge
= @search_results.notes_count = @search_results.notes_count
%li{class: ("active" if @scope == 'wiki_blobs')} %li{ class: ("active" if @scope == 'wiki_blobs') }
= link_to search_filter_path(scope: 'wiki_blobs') do = link_to search_filter_path(scope: 'wiki_blobs') do
Wiki Wiki
%span.badge %span.badge
= @search_results.wiki_blobs_count = @search_results.wiki_blobs_count
%li{class: ("active" if @scope == 'commits')} %li{ class: ("active" if @scope == 'commits') }
= link_to search_filter_path(scope: 'commits') do = link_to search_filter_path(scope: 'commits') do
Commits Commits
%span.badge %span.badge
= @search_results.commits_count = @search_results.commits_count
- elsif @show_snippets - elsif @show_snippets
%li{class: ("active" if @scope == 'snippet_blobs')} %li{ class: ("active" if @scope == 'snippet_blobs') }
= link_to search_filter_path(scope: 'snippet_blobs', snippets: true, group_id: nil, project_id: nil) do = link_to search_filter_path(scope: 'snippet_blobs', snippets: true, group_id: nil, project_id: nil) do
Snippet Contents Snippet Contents
%span.badge %span.badge
= @search_results.snippet_blobs_count = @search_results.snippet_blobs_count
%li{class: ("active" if @scope == 'snippet_titles')} %li{ class: ("active" if @scope == 'snippet_titles') }
= link_to search_filter_path(scope: 'snippet_titles', snippets: true, group_id: nil, project_id: nil) do = link_to search_filter_path(scope: 'snippet_titles', snippets: true, group_id: nil, project_id: nil) do
Titles and Filenames Titles and Filenames
%span.badge %span.badge
= @search_results.snippet_titles_count = @search_results.snippet_titles_count
- else - else
%li{class: ("active" if @scope == 'projects')} %li{ class: ("active" if @scope == 'projects') }
= link_to search_filter_path(scope: 'projects') do = link_to search_filter_path(scope: 'projects') do
Projects Projects
%span.badge %span.badge
= @search_results.projects_count = @search_results.projects_count
%li{class: ("active" if @scope == 'issues')} %li{ class: ("active" if @scope == 'issues') }
= link_to search_filter_path(scope: 'issues') do = link_to search_filter_path(scope: 'issues') do
Issues Issues
%span.badge %span.badge
= @search_results.issues_count = @search_results.issues_count
%li{class: ("active" if @scope == 'merge_requests')} %li{ class: ("active" if @scope == 'merge_requests') }
= link_to search_filter_path(scope: 'merge_requests') do = link_to search_filter_path(scope: 'merge_requests') do
Merge requests Merge requests
%span.badge %span.badge
= @search_results.merge_requests_count = @search_results.merge_requests_count
%li{class: ("active" if @scope == 'milestones')} %li{ class: ("active" if @scope == 'milestones') }
= link_to search_filter_path(scope: 'milestones') do = link_to search_filter_path(scope: 'milestones') do
Milestones Milestones
%span.badge %span.badge
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
.git-clone-holder.input-group .git-clone-holder.input-group
.input-group-btn .input-group-btn
-if allowed_protocols_present? - if allowed_protocols_present?
.clone-dropdown-btn.btn.btn-static .clone-dropdown-btn.btn.btn-static
%span %span
= enabled_project_button(project, enabled_protocol) = enabled_project_button(project, enabled_protocol)
- else - else
%a#clone-dropdown.clone-dropdown-btn.btn{href: '#', data: { toggle: 'dropdown' }} %a#clone-dropdown.clone-dropdown-btn.btn{ href: '#', data: { toggle: 'dropdown' } }
%span %span
= default_clone_protocol.upcase = default_clone_protocol.upcase
= icon('caret-down') = icon('caret-down')
......
#modal-confirm-danger.modal{tabindex: -1} #modal-confirm-danger.modal{ tabindex: -1 }
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%a.close{href: "#", "data-dismiss" => "modal"} × %a.close{ href: "#", "data-dismiss" => "modal" } ×
%h3.page-title %h3.page-title
Confirmation required Confirmation required
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
- offset = defined?(first_line_number) ? first_line_number : 1 - offset = defined?(first_line_number) ? first_line_number : 1
- i = index + offset - i = index + offset
-# We're not using `link_to` because it is too slow once we get to thousands of lines. -# We're not using `link_to` because it is too slow once we get to thousands of lines.
%a.diff-line-num{href: "#{link}#L#{i}", id: "L#{i}", 'data-line-number' => i} %a.diff-line-num{ href: "#{link}#L#{i}", id: "L#{i}", 'data-line-number' => i }
= link_icon = link_icon
= i = i
.blob-content{data: {blob_id: blob.id}} .blob-content{ data: { blob_id: blob.id } }
= highlight(blob.path, blob.data, repository: repository, plain: blob.no_highlighting?) = highlight(blob.path, blob.data, repository: repository, plain: blob.no_highlighting?)
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
- status = label_subscription_status(label, @project).inquiry if current_user - status = label_subscription_status(label, @project).inquiry if current_user
- subject = local_assigns[:subject] - subject = local_assigns[:subject]
%li{id: label_css_id, data: { id: label.id } } %li{ id: label_css_id, data: { id: label.id } }
= render "shared/label_row", label: label = render "shared/label_row", label: label
.visible-xs.visible-sm-inline-block.visible-md-inline-block.dropdown .visible-xs.visible-sm-inline-block.visible-md-inline-block.dropdown
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
= icon('spinner spin', class: 'label-subscribe-button-loading') = icon('spinner spin', class: 'label-subscribe-button-loading')
.dropdown.dropdown-group-label{ class: ('hidden' unless status.unsubscribed?) } .dropdown.dropdown-group-label{ class: ('hidden' unless status.unsubscribed?) }
%button.dropdown-menu-toggle{type: 'button', 'data-toggle' => 'dropdown'} %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
%span Subscribe %span Subscribe
= icon('chevron-down') = icon('chevron-down')
%ul.dropdown-menu %ul.dropdown-menu
......
...@@ -2,17 +2,17 @@ ...@@ -2,17 +2,17 @@
- counts = milestone_counts(@project.milestones) - counts = milestone_counts(@project.milestones)
%ul.nav-links %ul.nav-links
%li{class: milestone_class_for_state(params[:state], 'opened', true)}> %li{ class: milestone_class_for_state(params[:state], 'opened', true) }>
= link_to milestones_filter_path(state: 'opened') do = link_to milestones_filter_path(state: 'opened') do
Open Open
- if @project - if @project
%span.badge #{counts[:opened]} %span.badge #{counts[:opened]}
%li{class: milestone_class_for_state(params[:state], 'closed')}> %li{ class: milestone_class_for_state(params[:state], 'closed') }>
= link_to milestones_filter_path(state: 'closed') do = link_to milestones_filter_path(state: 'closed') do
Closed Closed
- if @project - if @project
%span.badge #{counts[:closed]} %span.badge #{counts[:closed]}
%li{class: milestone_class_for_state(params[:state], 'all')}> %li{ class: milestone_class_for_state(params[:state], 'all') }>
= link_to milestones_filter_path(state: 'all') do = link_to milestones_filter_path(state: 'all') do
All All
- if @project - if @project
......
.dropdown.inline.prepend-left-10 .dropdown.inline.prepend-left-10
%button.dropdown-toggle{type: 'button', data: {toggle: 'dropdown'}} %button.dropdown-toggle{ type: 'button', data: {toggle: 'dropdown' } }
%span.light %span.light
- if @sort.present? - if @sort.present?
= sort_options_hash[@sort] = sort_options_hash[@sort]
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
= icon('users') = icon('users')
= number_with_delimiter(group.users.count) = number_with_delimiter(group.users.count)
%span.visibility-icon.has-tooltip{data: { container: 'body', placement: 'left' }, title: visibility_icon_description(group)} %span.visibility-icon.has-tooltip{ data: { container: 'body', placement: 'left' }, title: visibility_icon_description(group) }
= visibility_level_icon(group.visibility_level, fw: false) = visibility_level_icon(group.visibility_level, fw: false)
.avatar-container.s40 .avatar-container.s40
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
- if issuable_filter_present? - if issuable_filter_present?
.filter-item.inline.reset-filters .filter-item.inline.reset-filters
%a{href: page_filter_path(without: issuable_filter_params)} Reset filters %a{ href: page_filter_path(without: issuable_filter_params) } Reset filters
.pull-right .pull-right
- if boards_page - if boards_page
...@@ -56,9 +56,9 @@ ...@@ -56,9 +56,9 @@
= dropdown_tag("Status", options: { toggle_class: "js-issue-status", title: "Change status", dropdown_class: "dropdown-menu-status dropdown-menu-selectable", data: { field_name: "update[state_event]" } } ) do = dropdown_tag("Status", options: { toggle_class: "js-issue-status", title: "Change status", dropdown_class: "dropdown-menu-status dropdown-menu-selectable", data: { field_name: "update[state_event]" } } ) do
%ul %ul
%li %li
%a{href: "#", data: {id: "reopen"}} Open %a{ href: "#", data: { id: "reopen" } } Open
%li %li
%a{href: "#", data: {id: "close"}} Closed %a{ href: "#", data: {id: "close" } } Closed
.filter-item.inline .filter-item.inline
= dropdown_tag("Assignee", options: { toggle_class: "js-user-search js-update-assignee js-filter-submit js-filter-bulk-update", title: "Assign to", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable", = dropdown_tag("Assignee", options: { toggle_class: "js-user-search js-update-assignee js-filter-submit js-filter-bulk-update", title: "Assign to", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable",
placeholder: "Search authors", data: { first_user: (current_user.username if current_user), null_user: true, current_user: true, project_id: @project.id, field_name: "update[assignee_id]" } }) placeholder: "Search authors", data: { first_user: (current_user.username if current_user), null_user: true, current_user: true, project_id: @project.id, field_name: "update[assignee_id]" } })
...@@ -70,9 +70,9 @@ ...@@ -70,9 +70,9 @@
= dropdown_tag("Subscription", options: { toggle_class: "js-subscription-event", title: "Change subscription", dropdown_class: "dropdown-menu-selectable", data: { field_name: "update[subscription_event]" } } ) do = dropdown_tag("Subscription", options: { toggle_class: "js-subscription-event", title: "Change subscription", dropdown_class: "dropdown-menu-selectable", data: { field_name: "update[subscription_event]" } } ) do
%ul %ul
%li %li
%a{href: "#", data: {id: "subscribe"}} Subscribe %a{ href: "#", data: { id: "subscribe" } } Subscribe
%li %li
%a{href: "#", data: {id: "unsubscribe"}} Unsubscribe %a{ href: "#", data: { id: "unsubscribe" } } Unsubscribe
= hidden_field_tag 'update[issuable_ids]', [] = hidden_field_tag 'update[issuable_ids]', []
= hidden_field_tag :state_event, params[:state_event] = hidden_field_tag :state_event, params[:state_event]
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
as resolved. Ask someone with sufficient rights to resolve the them. as resolved. Ask someone with sufficient rights to resolve the them.
- is_footer = !(issuable.is_a?(MergeRequest) && issuable.new_record?) - is_footer = !(issuable.is_a?(MergeRequest) && issuable.new_record?)
.row-content-block{class: (is_footer ? "footer-block" : "middle-block")} .row-content-block{ class: (is_footer ? "footer-block" : "middle-block") }
- if issuable.new_record? - if issuable.new_record?
= form.submit "Submit #{issuable.class.model_name.human.downcase}", class: 'btn btn-create' = form.submit "Submit #{issuable.class.model_name.human.downcase}", class: 'btn btn-create'
- else - else
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
= hidden_field_tag data_options[:field_name], use_id ? label.try(:id) : label.try(:title), id: nil = hidden_field_tag data_options[:field_name], use_id ? label.try(:id) : label.try(:title), id: nil
.dropdown .dropdown
%button.dropdown-menu-toggle.js-label-select.js-multiselect{class: classes.join(' '), type: "button", data: dropdown_data} %button.dropdown-menu-toggle.js-label-select.js-multiselect{ class: classes.join(' '), type: "button", data: dropdown_data }
%span.dropdown-toggle-text{ class: ("is-default" if selected.nil? || selected.empty?) } %span.dropdown-toggle-text{ class: ("is-default" if selected.nil? || selected.empty?) }
= multi_label_name(selected, "Labels") = multi_label_name(selected, "Labels")
= icon('chevron-down') = icon('chevron-down')
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
%ul.dropdown-footer-list %ul.dropdown-footer-list
- if can?(current_user, :admin_label, @project) - if can?(current_user, :admin_label, @project)
%li %li
%a.dropdown-toggle-page{href: "#"} %a.dropdown-toggle-page{ href: "#" }
Create new label Create new label
%li %li
= link_to namespace_project_labels_path(@project.namespace, @project), :"data-is-link" => true do = link_to namespace_project_labels_path(@project.namespace, @project), :"data-is-link" => true do
......
...@@ -3,23 +3,23 @@ ...@@ -3,23 +3,23 @@
- issuables = @issues || @merge_requests - issuables = @issues || @merge_requests
%ul.nav-links.issues-state-filters %ul.nav-links.issues-state-filters
%li{class: ("active" if params[:state] == 'opened')}> %li{ class: ("active" if params[:state] == 'opened') }>
= link_to page_filter_path(state: 'opened', label: true), id: 'state-opened', title: "Filter by #{page_context_word} that are currently opened." do = link_to page_filter_path(state: 'opened', label: true), id: 'state-opened', title: "Filter by #{page_context_word} that are currently opened." do
#{issuables_state_counter_text(type, :opened)} #{issuables_state_counter_text(type, :opened)}
- if type == :merge_requests - if type == :merge_requests
%li{class: ("active" if params[:state] == 'merged')}> %li{ class: ("active" if params[:state] == 'merged') }>
= link_to page_filter_path(state: 'merged', label: true), id: 'state-merged', title: 'Filter by merge requests that are currently merged.' do = link_to page_filter_path(state: 'merged', label: true), id: 'state-merged', title: 'Filter by merge requests that are currently merged.' do
#{issuables_state_counter_text(type, :merged)} #{issuables_state_counter_text(type, :merged)}
%li{class: ("active" if params[:state] == 'closed')}> %li{ class: ("active" if params[:state] == 'closed') }>
= link_to page_filter_path(state: 'closed', label: true), id: 'state-closed', title: 'Filter by merge requests that are currently closed and unmerged.' do = link_to page_filter_path(state: 'closed', label: true), id: 'state-closed', title: 'Filter by merge requests that are currently closed and unmerged.' do
#{issuables_state_counter_text(type, :closed)} #{issuables_state_counter_text(type, :closed)}
- else - else
%li{class: ("active" if params[:state] == 'closed')}> %li{ class: ("active" if params[:state] == 'closed') }>
= link_to page_filter_path(state: 'closed', label: true), id: 'state-all', title: 'Filter by issues that are currently closed.' do = link_to page_filter_path(state: 'closed', label: true), id: 'state-all', title: 'Filter by issues that are currently closed.' do
#{issuables_state_counter_text(type, :closed)} #{issuables_state_counter_text(type, :closed)}
%li{class: ("active" if params[:state] == 'all')}> %li{ class: ("active" if params[:state] == 'all') }>
= link_to page_filter_path(state: 'all', label: true), id: 'state-all', title: "Show all #{page_context_word}." do = link_to page_filter_path(state: 'all', label: true), id: 'state-all', title: "Show all #{page_context_word}." do
#{issuables_state_counter_text(type, :all)} #{issuables_state_counter_text(type, :all)}
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
.participants-author.js-participants-author .participants-author.js-participants-author
= link_to_member(@project, participant, name: false, size: 24) = link_to_member(@project, participant, name: false, size: 24)
- if participants_extra > 0 - if participants_extra > 0
%div.participants-more .participants-more
%a.js-participants-more{href: "#", data: {original_text: "+ #{participants_size - 7} more", less_text: "- show less"}} %a.js-participants-more{ href: "#", data: { original_text: "+ #{participants_size - 7} more", less_text: "- show less" } }
+ #{participants_extra} more + #{participants_extra} more
:javascript :javascript
IssuableContext.prototype.PARTICIPANTS_ROW_COUNT = #{participants_row}; IssuableContext.prototype.PARTICIPANTS_ROW_COUNT = #{participants_row};
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
Add todo Add todo
= icon('spin spinner', class: 'hidden js-issuable-todo-loading') = icon('spin spinner', class: 'hidden js-issuable-todo-loading')
= form_for [@project.namespace.becomes(Namespace), @project, issuable], remote: true, format: :json, html: {class: 'issuable-context-form inline-update js-issuable-update'} do |f| = form_for [@project.namespace.becomes(Namespace), @project, issuable], remote: true, format: :json, html: { class: 'issuable-context-form inline-update js-issuable-update' } do |f|
.block.assignee .block.assignee
.sidebar-collapsed-icon.sidebar-collapsed-user{data: {toggle: "tooltip", placement: "left", container: "body"}, title: (issuable.assignee.name if issuable.assignee)} .sidebar-collapsed-icon.sidebar-collapsed-user{ data: { toggle: "tooltip", placement: "left", container: "body" }, title: (issuable.assignee.name if issuable.assignee) }
- if issuable.assignee - if issuable.assignee
= link_to_member(@project, issuable.assignee, size: 24) = link_to_member(@project, issuable.assignee, size: 24)
- else - else
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
= icon('clock-o') = icon('clock-o')
%span %span
- if issuable.milestone - if issuable.milestone
%span.has-tooltip{title: milestone_remaining_days(issuable.milestone), data: {container: 'body', html: 1, placement: 'left'}} %span.has-tooltip{ title: milestone_remaining_days(issuable.milestone), data: { container: 'body', html: 1, placement: 'left' } }
= issuable.milestone.title = issuable.milestone.title
- else - else
None None
...@@ -129,8 +129,8 @@ ...@@ -129,8 +129,8 @@
- selected_labels.each do |label| - selected_labels.each do |label|
= hidden_field_tag "#{issuable.to_ability_name}[label_names][]", label.id, id: nil = hidden_field_tag "#{issuable.to_ability_name}[label_names][]", label.id, id: nil
.dropdown .dropdown
%button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{type: "button", data: {toggle: "dropdown", default_label: "Labels", field_name: "#{issuable.to_ability_name}[label_names][]", ability_name: issuable.to_ability_name, show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:path), project_path: @project.try(:path), issue_update: issuable_json_path(issuable), labels: (namespace_project_labels_path(@project.namespace, @project, :json) if @project)}} %button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{ type: "button", data: {toggle: "dropdown", default_label: "Labels", field_name: "#{issuable.to_ability_name}[label_names][]", ability_name: issuable.to_ability_name, show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:path), project_path: @project.try(:path), issue_update: issuable_json_path(issuable), labels: (namespace_project_labels_path(@project.namespace, @project, :json) if @project) } }
%span.dropdown-toggle-text{ class: ("is-default" if selected_labels.empty?)} %span.dropdown-toggle-text{ class: ("is-default" if selected_labels.empty?) }
= multi_label_name(selected_labels, "Labels") = multi_label_name(selected_labels, "Labels")
= icon('chevron-down') = icon('chevron-down')
.dropdown-menu.dropdown-select.dropdown-menu-paging.dropdown-menu-labels.dropdown-menu-selectable .dropdown-menu.dropdown-select.dropdown-menu-paging.dropdown-menu-labels.dropdown-menu-selectable
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
= render "shared/issuable/participants", participants: issuable.participants(current_user) = render "shared/issuable/participants", participants: issuable.participants(current_user)
- if current_user - if current_user
- subscribed = issuable.subscribed?(current_user, @project) - subscribed = issuable.subscribed?(current_user, @project)
.block.light.subscription{data: {url: toggle_subscription_path(issuable)}} .block.light.subscription{ data: { url: toggle_subscription_path(issuable) } }
.sidebar-collapsed-icon .sidebar-collapsed-icon
= icon('rss') = icon('rss')
%span.issuable-header-text.hide-collapsed.pull-left %span.issuable-header-text.hide-collapsed.pull-left
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
.cross-project-reference.hide-collapsed .cross-project-reference.hide-collapsed
%span %span
Reference: Reference:
%cite{title: project_ref} %cite{ title: project_ref }
= project_ref = project_ref
= clipboard_button(clipboard_text: project_ref) = clipboard_button(clipboard_text: project_ref)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
- can_admin_member = can?(current_user, :admin_project_member, @project) - can_admin_member = can?(current_user, :admin_project_member, @project)
- dom_id = "group_member_#{group_link.id}" - dom_id = "group_member_#{group_link.id}"
%li.member.group_member{ id: dom_id } %li.member.group_member{ id: dom_id }
%span{ class: "list-item-name" } %span.list-item-name
= image_tag group_icon(group), class: "avatar s40", alt: '' = image_tag group_icon(group), class: "avatar s40", alt: ''
%strong %strong
= link_to group.name, group_path(group) = link_to group.name, group_path(group)
......
...@@ -14,15 +14,15 @@ ...@@ -14,15 +14,15 @@
- if issuable.is_a?(Issue) - if issuable.is_a?(Issue)
= confidential_icon(issuable) = confidential_icon(issuable)
= link_to_gfm issuable.title, [project.namespace.becomes(Namespace), project, issuable], title: issuable.title = link_to_gfm issuable.title, [project.namespace.becomes(Namespace), project, issuable], title: issuable.title
%div{class: 'issuable-detail'} .issuable-detail
= link_to [project.namespace.becomes(Namespace), project, issuable] do = link_to [project.namespace.becomes(Namespace), project, issuable] do
%span{ class: 'issuable-number' }>= issuable.to_reference %span.issuable-number >= issuable.to_reference
- issuable.labels.each do |label| - issuable.labels.each do |label|
= link_to polymorphic_path(base_url_args, { milestone_title: @milestone.title, label_name: label.title, state: 'all' }) do = link_to polymorphic_path(base_url_args, { milestone_title: @milestone.title, label_name: label.title, state: 'all' }) do
- render_colored_label(label) - render_colored_label(label)
%span{ class: "assignee-icon" } %span.assignee-icon
- if assignee - if assignee
= link_to polymorphic_path(base_url_args, { milestone_title: @milestone.title, assignee_id: issuable.assignee_id, state: 'all' }), = link_to polymorphic_path(base_url_args, { milestone_title: @milestone.title, assignee_id: issuable.assignee_id, state: 'all' }),
class: 'has-tooltip', title: "Assigned to #{assignee.name}", data: { container: 'body' } do class: 'has-tooltip', title: "Assigned to #{assignee.name}", data: { container: 'body' } do
......
- dashboard = local_assigns[:dashboard] - dashboard = local_assigns[:dashboard]
- custom_dom_id = dom_id(@project ? milestone : milestone.milestones.first) - custom_dom_id = dom_id(@project ? milestone : milestone.milestones.first)
%li{class: "milestone milestone-#{milestone.closed? ? 'closed' : 'open'}", id: custom_dom_id } %li{ class: "milestone milestone-#{milestone.closed? ? 'closed' : 'open'}", id: custom_dom_id }
.row .row
.col-sm-6 .col-sm-6
%strong= link_to_gfm truncate(milestone.title, length: 100), milestone_path %strong= link_to_gfm truncate(milestone.title, length: 100), milestone_path
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
%p %p
Custom notification levels are the same as participating levels. With custom notification levels you will also receive notifications for select events. To find out more, check out Custom notification levels are the same as participating levels. With custom notification levels you will also receive notifications for select events. To find out more, check out
= succeed "." do = succeed "." do
%a{ href: "http://docs.gitlab.com/ce/workflow/notifications.html", target: "_blank"} notification emails %a{ href: "http://docs.gitlab.com/ce/workflow/notifications.html", target: "_blank" } notification emails
.col-lg-8 .col-lg-8
- NotificationSetting::EMAIL_EVENTS.each_with_index do |event, index| - NotificationSetting::EMAIL_EVENTS.each_with_index do |event, index|
- field_id = "#{notifications_menu_identifier("modal", notification_setting)}_notification_setting[#{event}]" - field_id = "#{notifications_menu_identifier("modal", notification_setting)}_notification_setting[#{event}]"
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
%span %span
= icon('star') = icon('star')
= number_with_delimiter(project.star_count) = number_with_delimiter(project.star_count)
%span.visibility-icon.has-tooltip{data: { container: 'body', placement: 'left' }, title: visibility_icon_description(project)} %span.visibility-icon.has-tooltip{ data: { container: 'body', placement: 'left' }, title: visibility_icon_description(project) }
= visibility_level_icon(project.visibility_level, fw: true) = visibility_level_icon(project.visibility_level, fw: true)
.title .title
......
- unless @snippet.content.empty? - unless @snippet.content.empty?
- if markup?(@snippet.file_name) - if markup?(@snippet.file_name)
%textarea.markdown-snippet-copy.blob-content{data: {blob_id: @snippet.id}} %textarea.markdown-snippet-copy.blob-content{ data: { blob_id: @snippet.id } }
= @snippet.content = @snippet.content
.file-content.wiki .file-content.wiki
- if gitlab_markdown?(@snippet.file_name) - if gitlab_markdown?(@snippet.file_name)
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
%th= t('sherlock.percent') %th= t('sherlock.percent')
%tbody %tbody
- @file_sample.line_samples.each_with_index do |sample, index| - @file_sample.line_samples.each_with_index do |sample, index|
%tr{class: sample.majority_of?(@file_sample.duration) ? 'slow' : ''} %tr{ class: sample.majority_of?(@file_sample.duration) ? 'slow' : '' }
%td= index + 1 %td= index + 1
%td= sample.events %td= sample.events
%td %td
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
.panel.panel-default .panel.panel-default
.panel-heading .panel-heading
.pull-right .pull-right
%button.js-clipboard-trigger.btn.btn-xs{title: t('sherlock.copy_to_clipboard'), type: :button} %button.js-clipboard-trigger.btn.btn-xs{ title: t('sherlock.copy_to_clipboard'), type: :button }
%i.fa.fa-clipboard %i.fa.fa-clipboard
%pre.hidden %pre.hidden
= @query.formatted_query = @query.formatted_query
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
.panel.panel-default .panel.panel-default
.panel-heading .panel-heading
.pull-right .pull-right
%button.js-clipboard-trigger.btn.btn-xs{title: t('sherlock.copy_to_clipboard'), type: :button} %button.js-clipboard-trigger.btn.btn-xs{ title: t('sherlock.copy_to_clipboard'), type: :button }
%i.fa.fa-clipboard %i.fa.fa-clipboard
%pre.hidden %pre.hidden
= @query.explain = @query.explain
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
%ul.nav-links %ul.nav-links
%li.active %li.active
%a(href="#tab-general" data-toggle="tab") %a{ href: "#tab-general", data: { toggle: "tab" } }
= t('sherlock.general') = t('sherlock.general')
%li %li
%a(href="#tab-backtrace" data-toggle="tab") %a{ href: "#tab-backtrace", data: { toggle: "tab" } }
= t('sherlock.backtrace') = t('sherlock.backtrace')
.row-content-block .row-content-block
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
%tr %tr
%td= trans.type %td= trans.type
%td %td
%span{title: trans.path} %span{ title: trans.path }
= truncate(trans.path, length: 70) = truncate(trans.path, length: 70)
%td %td
= trans.duration.round(2) = trans.duration.round(2)
......
...@@ -3,15 +3,15 @@ ...@@ -3,15 +3,15 @@
%ul.nav-links %ul.nav-links
%li.active %li.active
%a(href="#tab-general" data-toggle="tab") %a{ href: "#tab-general", data: { toggle: "tab" } }
= t('sherlock.general') = t('sherlock.general')
%li %li
%a(href="#tab-queries" data-toggle="tab") %a{ href: "#tab-queries", data: { toggle: "tab" } }
= t('sherlock.queries') = t('sherlock.queries')
%span.badge %span.badge
#{@transaction.queries.length} #{@transaction.queries.length}
%li %li
%a(href="#tab-file-samples" data-toggle="tab") %a{ href: "#tab-file-samples", data: { toggle: "tab" } }
= t('sherlock.file_samples') = t('sherlock.file_samples')
%span.badge %span.badge
#{@transaction.file_samples.length} #{@transaction.file_samples.length}
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
%a.btn.btn-warning#js-u2f-try-again Try again? %a.btn.btn-warning#js-u2f-try-again Try again?
%script#js-register-u2f-registered{ type: "text/template" } %script#js-register-u2f-registered{ type: "text/template" }
%div.row.append-bottom-10 .row.append-bottom-10
.col-md-12 .col-md-12
%p Your device was successfully set up! Give it a name and register it with the GitLab server. %p Your device was successfully set up! Give it a name and register it with the GitLab server.
= form_tag(create_u2f_profile_two_factor_auth_path, method: :post) do = form_tag(create_u2f_profile_two_factor_auth_path, method: :post) do
......
...@@ -18,11 +18,11 @@ ...@@ -18,11 +18,11 @@
- elsif current_user - elsif current_user
- if @user.abuse_report - if @user.abuse_report
%button.btn.btn-danger{ title: 'Already reported for abuse', %button.btn.btn-danger{ title: 'Already reported for abuse',
data: { toggle: 'tooltip', placement: 'bottom', container: 'body' }} data: { toggle: 'tooltip', placement: 'bottom', container: 'body' } }
= icon('exclamation-circle') = icon('exclamation-circle')
- else - else
= link_to new_abuse_report_path(user_id: @user.id, ref_url: request.referrer), class: 'btn btn-gray', = link_to new_abuse_report_path(user_id: @user.id, ref_url: request.referrer), class: 'btn btn-gray',
title: 'Report abuse', data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do title: 'Report abuse', data: { toggle: 'tooltip', placement: 'bottom', container: 'body' } do
= icon('exclamation-circle') = icon('exclamation-circle')
- if current_user - if current_user
= link_to user_path(@user, :atom, { private_token: current_user.private_token }), class: 'btn btn-gray' do = link_to user_path(@user, :atom, { private_token: current_user.private_token }), class: 'btn btn-gray' do
...@@ -101,12 +101,12 @@ ...@@ -101,12 +101,12 @@
.tab-content .tab-content
#activity.tab-pane #activity.tab-pane
.row-content-block.calender-block.white.second-block.hidden-xs .row-content-block.calender-block.white.second-block.hidden-xs
.user-calendar{data: {href: user_calendar_path}} .user-calendar{ data: { href: user_calendar_path } }
%h4.center.light %h4.center.light
%i.fa.fa-spinner.fa-spin %i.fa.fa-spinner.fa-spin
.user-calendar-activities .user-calendar-activities
.content_list{ data: {href: user_path} } .content_list{ data: { href: user_path } }
= spinner = spinner
#groups.tab-pane #groups.tab-pane
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment