From 8ed7391cb03ebf47efeb5ce5379eb667a3f22676 Mon Sep 17 00:00:00 2001 From: Vinnie Okada Date: Fri, 22 Aug 2014 10:40:25 -0500 Subject: Handle undefined text area values Check to see if a text area's `val` is defined before trying to call `replace()` on it. --- app/assets/javascripts/application.js.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee index 1960479321c..8ce3988383e 100644 --- a/app/assets/javascripts/application.js.coffee +++ b/app/assets/javascripts/application.js.coffee @@ -54,7 +54,7 @@ window.extractLast = (term) -> return split( term ).pop() window.rstrip = (val) -> - return val.replace(/\s+$/, '') + return if val then val.replace(/\s+$/, '') else val # Disable button if text field is empty window.disableButtonIfEmptyField = (field_selector, button_selector) -> -- cgit v1.2.1 From 6294033024d311efa14a9400eb0b8815c702fc44 Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Fri, 26 Sep 2014 16:57:36 +0200 Subject: Use button type=submit instead of input. --- app/views/admin/groups/index.html.haml | 2 +- app/views/admin/groups/show.html.haml | 2 +- app/views/admin/projects/index.html.haml | 2 +- app/views/devise/sessions/_new_ldap.html.haml | 2 +- app/views/explore/groups/index.html.haml | 2 +- app/views/explore/projects/index.html.haml | 2 +- app/views/groups/members.html.haml | 2 +- app/views/layouts/_search.html.haml | 2 +- app/views/projects/blob/_remove.html.haml | 2 +- app/views/projects/branches/new.html.haml | 2 +- app/views/projects/compare/_form.html.haml | 2 +- app/views/projects/tags/new.html.haml | 2 +- app/views/projects/team_members/import.html.haml | 2 +- app/views/search/show.html.haml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) (limited to 'app') diff --git a/app/views/admin/groups/index.html.haml b/app/views/admin/groups/index.html.haml index 9a0d5967927..e83c667767f 100644 --- a/app/views/admin/groups/index.html.haml +++ b/app/views/admin/groups/index.html.haml @@ -10,7 +10,7 @@ = form_tag admin_groups_path, method: :get, class: 'form-inline' do .form-group = text_field_tag :name, params[:name], class: "form-control input-mn-300" - = submit_tag "Search", class: "btn submit btn-primary" + = button_tag "Search", class: "btn submit btn-primary" %hr diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml index d59d2a23179..bb660e60bd2 100644 --- a/app/views/admin/groups/show.html.haml +++ b/app/views/admin/groups/show.html.haml @@ -64,7 +64,7 @@ %div.prepend-top-10 = select_tag :access_level, options_for_select(GroupMember.access_level_roles), class: "project-access-select select2" %hr - = submit_tag 'Add users into group', class: "btn btn-create" + = button_tag 'Add users into group', class: "btn btn-create" .panel.panel-default .panel-heading %h3.panel-title diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml index 5ca6090f8d3..2cd6b12be7f 100644 --- a/app/views/admin/projects/index.html.haml +++ b/app/views/admin/projects/index.html.haml @@ -35,7 +35,7 @@ = label %hr = hidden_field_tag :sort, params[:sort] - = submit_tag "Search", class: "btn submit btn-primary" + = button_tag "Search", class: "btn submit btn-primary" = link_to "Reset", admin_projects_path, class: "btn btn-cancel" .col-md-9 diff --git a/app/views/devise/sessions/_new_ldap.html.haml b/app/views/devise/sessions/_new_ldap.html.haml index 6c5a878e904..be3cafab935 100644 --- a/app/views/devise/sessions/_new_ldap.html.haml +++ b/app/views/devise/sessions/_new_ldap.html.haml @@ -2,4 +2,4 @@ = text_field_tag :username, nil, {class: "form-control top", placeholder: "LDAP Login", autofocus: "autofocus"} = password_field_tag :password, nil, {class: "form-control bottom", placeholder: "Password"} %br/ - = submit_tag "LDAP Sign in", class: "btn-save btn" + = button_tag "LDAP Sign in", class: "btn-save btn" diff --git a/app/views/explore/groups/index.html.haml b/app/views/explore/groups/index.html.haml index 80ddd5c1bde..b45ba920d1d 100644 --- a/app/views/explore/groups/index.html.haml +++ b/app/views/explore/groups/index.html.haml @@ -4,7 +4,7 @@ .form-group = search_field_tag :search, params[:search], placeholder: "Filter by name", class: "form-control search-text-input input-mn-300", id: "groups_search" .form-group - = submit_tag 'Search', class: "btn btn-primary wide" + = button_tag 'Search', class: "btn btn-primary wide" .pull-right .dropdown.inline diff --git a/app/views/explore/projects/index.html.haml b/app/views/explore/projects/index.html.haml index c8bf78385e8..f797c4e3830 100644 --- a/app/views/explore/projects/index.html.haml +++ b/app/views/explore/projects/index.html.haml @@ -4,7 +4,7 @@ .form-group = search_field_tag :search, params[:search], placeholder: "Filter by name", class: "form-control search-text-input input-mn-300", id: "projects_search" .form-group - = submit_tag 'Search', class: "btn btn-primary wide" + = button_tag 'Search', class: "btn btn-primary wide" .pull-right .dropdown.inline diff --git a/app/views/groups/members.html.haml b/app/views/groups/members.html.haml index ebf407d4ef1..9931fa5c3a6 100644 --- a/app/views/groups/members.html.haml +++ b/app/views/groups/members.html.haml @@ -13,7 +13,7 @@ = form_tag members_group_path(@group), method: :get, class: 'form-inline member-search-form' do .form-group = search_field_tag :search, params[:search], { placeholder: 'Find existing member by name', class: 'form-control search-text-input input-mn-300' } - = submit_tag 'Search', class: 'btn' + = button_tag 'Search', class: 'btn' - if current_user && current_user.can?(:manage_group, @group) .pull-right diff --git a/app/views/layouts/_search.html.haml b/app/views/layouts/_search.html.haml index 5ab82122ad7..2460a6a014d 100644 --- a/app/views/layouts/_search.html.haml +++ b/app/views/layouts/_search.html.haml @@ -8,7 +8,7 @@ - if @snippet || @snippets = hidden_field_tag :snippets, true = hidden_field_tag :repository_ref, @ref - = submit_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 } :javascript diff --git a/app/views/projects/blob/_remove.html.haml b/app/views/projects/blob/_remove.html.haml index 93ffd4463b1..bc43f96b15d 100644 --- a/app/views/projects/blob/_remove.html.haml +++ b/app/views/projects/blob/_remove.html.haml @@ -19,7 +19,7 @@ .form-group .col-sm-2 .col-sm-10 - = submit_tag 'Remove file', class: 'btn btn-remove btn-remove-file' + = button_tag 'Remove file', class: 'btn btn-remove btn-remove-file' = link_to "Cancel", '#', class: "btn btn-cancel", "data-dismiss" => "modal" :javascript diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml index 3f202f7ea6b..d2e307816bd 100644 --- a/app/views/projects/branches/new.html.haml +++ b/app/views/projects/branches/new.html.haml @@ -15,7 +15,7 @@ .col-sm-10 = text_field_tag :ref, params[:ref], placeholder: 'existing branch name, tag or commit SHA', required: true, tabindex: 2, class: 'form-control' .form-actions - = submit_tag 'Create branch', class: 'btn btn-create', tabindex: 3 + = button_tag 'Create branch', class: 'btn btn-create', tabindex: 3 = link_to 'Cancel', project_branches_path(@project), class: 'btn btn-cancel' :javascript diff --git a/app/views/projects/compare/_form.html.haml b/app/views/projects/compare/_form.html.haml index da6157cf1b6..cb0a3747f7d 100644 --- a/app/views/projects/compare/_form.html.haml +++ b/app/views/projects/compare/_form.html.haml @@ -12,7 +12,7 @@ %span.input-group-addon to = text_field_tag :to, params[:to], class: "form-control"   - = submit_tag "Compare", class: "btn btn-create commits-compare-btn" + = button_tag "Compare", class: "btn btn-create commits-compare-btn" - if compare_to_mr_button? = link_to compare_mr_path, class: 'prepend-left-10 btn' do %strong Make a merge request diff --git a/app/views/projects/tags/new.html.haml b/app/views/projects/tags/new.html.haml index 45ee61caf68..1c80e76ec7e 100644 --- a/app/views/projects/tags/new.html.haml +++ b/app/views/projects/tags/new.html.haml @@ -21,7 +21,7 @@ = text_field_tag :message, nil, placeholder: 'Enter message.', required: false, tabindex: 3, class: 'form-control' .light (Optional) Entering a message will create an annotated tag. .form-actions - = submit_tag 'Create tag', class: 'btn btn-create', tabindex: 3 + = button_tag 'Create tag', class: 'btn btn-create', tabindex: 3 = link_to 'Cancel', project_tags_path(@project), class: 'btn btn-cancel' :javascript diff --git a/app/views/projects/team_members/import.html.haml b/app/views/projects/team_members/import.html.haml index 510b579fe2f..d1f46c61b2e 100644 --- a/app/views/projects/team_members/import.html.haml +++ b/app/views/projects/team_members/import.html.haml @@ -9,6 +9,6 @@ .col-sm-10= select_tag(:source_project_id, options_from_collection_for_select(current_user.authorized_projects, :id, :name_with_namespace), prompt: "Select project", class: "select2 lg", required: true) .form-actions - = submit_tag 'Import project members', class: "btn btn-create" + = button_tag 'Import project members', class: "btn btn-create" = link_to "Cancel", project_team_index_path(@project), class: "btn btn-cancel" diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml index bae57917a4c..5b4816e4c40 100644 --- a/app/views/search/show.html.haml +++ b/app/views/search/show.html.haml @@ -6,7 +6,7 @@ .col-sm-6 = search_field_tag :search, params[:search], placeholder: "issue 143", class: "form-control search-text-input", id: "dashboard_search" .col-sm-4 - = submit_tag 'Search', class: "btn btn-create" + = button_tag 'Search', class: "btn btn-create" .form-group .col-sm-2 - unless params[:snippets].eql? 'true' -- cgit v1.2.1 From 3d705131f7d1a85dbf09053a200fbf36c6225625 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Mon, 13 Oct 2014 22:05:21 -0500 Subject: Added a password strength indicator to the profile page and the sign_up page, added CSS to best display it and created the custom script to load the meter. --- app/assets/javascripts/application.js.coffee | 2 ++ app/assets/javascripts/password_strength.js.coffee | 33 ++++++++++++++++++++++ app/assets/stylesheets/sections/profile.scss | 9 ++++++ app/views/devise/registrations/new.html.haml | 6 ++-- app/views/profiles/passwords/edit.html.haml | 2 +- 5 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 app/assets/javascripts/password_strength.js.coffee (limited to 'app') diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee index ff0d0bb32b9..493babad856 100644 --- a/app/assets/javascripts/application.js.coffee +++ b/app/assets/javascripts/application.js.coffee @@ -18,6 +18,8 @@ #= require jquery.turbolinks #= require turbolinks #= require bootstrap +#= require pwstrength-bootstrap-1.2.2 +#= require password_strength #= require select2 #= require raphael #= require g.raphael-min diff --git a/app/assets/javascripts/password_strength.js.coffee b/app/assets/javascripts/password_strength.js.coffee new file mode 100644 index 00000000000..e6fec307c59 --- /dev/null +++ b/app/assets/javascripts/password_strength.js.coffee @@ -0,0 +1,33 @@ +overwritten_messages = + wordSimilarToUsername: "Your password should not contain your username" + +overwritten_rules = + wordSequences: false + +$(document).ready -> + profileOptions = {} + profileOptions.ui = + container: "#password-strength" + showVerdictsInsideProgressBar: true + showPopover: true + showErrors: true + errorMessages: overwritten_messages + profileOptions.rules = + activated: overwritten_rules + + signUpOptions = {} + signUpOptions.common = + usernameField: "#user_username" + signUpOptions.ui = + container: "#password-strength" + showPopover: true + showErrors: true + showVerdicts: false + showProgressBar: false + showStatus: true + errorMessages: overwritten_messages + signUpOptions.rules = + activated: overwritten_rules + + $("#user_password").pwstrength profileOptions + $("#user_password_sign_up").pwstrength signUpOptions diff --git a/app/assets/stylesheets/sections/profile.scss b/app/assets/stylesheets/sections/profile.scss index 086875582f3..2c2af7f52c5 100644 --- a/app/assets/stylesheets/sections/profile.scss +++ b/app/assets/stylesheets/sections/profile.scss @@ -111,3 +111,12 @@ height: 50px; } } + +//CSS for password-strength indicator +#password-strength { + margin-bottom: 0; +} + +.progress { + margin-top: 10px; +} diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index d6a952f3dc5..806d206d7b9 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -2,7 +2,7 @@ .login-heading %h3 Sign up .login-body - = form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| + = form_for(resource, as: resource_name, url: registration_path(resource_name), role: 'form') do |f| .devise-errors = devise_error_messages! %div @@ -11,8 +11,8 @@ = f.text_field :username, class: "form-control middle", placeholder: "Username", required: true %div = f.email_field :email, class: "form-control middle", placeholder: "Email", required: true - %div - = f.password_field :password, class: "form-control middle", placeholder: "Password", required: true + .form-group#password-strength + = f.password_field :password, class: "form-control middle", id: "user_password_sign_up", placeholder: "Password", required: true %div = f.password_field :password_confirmation, class: "form-control bottom", placeholder: "Confirm password", required: true %div diff --git a/app/views/profiles/passwords/edit.html.haml b/app/views/profiles/passwords/edit.html.haml index 2a7d317aa3e..4440dcf338d 100644 --- a/app/views/profiles/passwords/edit.html.haml +++ b/app/views/profiles/passwords/edit.html.haml @@ -21,7 +21,7 @@ %div = link_to "Forgot your password?", reset_profile_password_path, method: :put - .form-group + .form-group#password-strength = f.label :password, 'New password', class: 'control-label' .col-sm-10 = f.password_field :password, required: true, class: 'form-control' -- cgit v1.2.1 From b66a1527356d808f418bab273f821c83a4365c90 Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Sun, 19 Oct 2014 10:50:23 +0200 Subject: Factor abilities methods in app controller, user model and services. --- app/controllers/application_controller.rb | 7 +------ app/controllers/explore/groups_controller.rb | 3 +-- app/controllers/explore/projects_controller.rb | 3 +-- app/models/ability.rb | 8 ++++++++ app/models/user.rb | 6 +----- app/services/base_service.rb | 6 +----- 6 files changed, 13 insertions(+), 20 deletions(-) (limited to 'app') diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 13d8d2a3e0a..f50889d62b9 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -5,7 +5,6 @@ class ApplicationController < ActionController::Base before_filter :authenticate_user! before_filter :reject_blocked! before_filter :check_password_expiration - before_filter :add_abilities before_filter :ldap_security_check before_filter :dev_tools if Rails.env == 'development' before_filter :default_headers @@ -73,7 +72,7 @@ class ApplicationController < ActionController::Base end def abilities - @abilities ||= Six.new + Ability.abilities end def can?(object, action, subject) @@ -111,10 +110,6 @@ class ApplicationController < ActionController::Base nil end - def add_abilities - abilities << Ability - end - def authorize_project!(action) return access_denied! unless can?(current_user, action, project) end diff --git a/app/controllers/explore/groups_controller.rb b/app/controllers/explore/groups_controller.rb index f8e1a31e0b3..ada7031fea4 100644 --- a/app/controllers/explore/groups_controller.rb +++ b/app/controllers/explore/groups_controller.rb @@ -1,7 +1,6 @@ class Explore::GroupsController < ApplicationController skip_before_filter :authenticate_user!, - :reject_blocked, :set_current_user_for_observers, - :add_abilities + :reject_blocked, :set_current_user_for_observers layout "explore" diff --git a/app/controllers/explore/projects_controller.rb b/app/controllers/explore/projects_controller.rb index b6fa8b7e387..d75fd8e72fa 100644 --- a/app/controllers/explore/projects_controller.rb +++ b/app/controllers/explore/projects_controller.rb @@ -1,7 +1,6 @@ class Explore::ProjectsController < ApplicationController skip_before_filter :authenticate_user!, - :reject_blocked, - :add_abilities + :reject_blocked layout 'explore' diff --git a/app/models/ability.rb b/app/models/ability.rb index e155abc1449..97a72bf3635 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -262,5 +262,13 @@ class Ability end rules end + + def abilities + @abilities ||= begin + abilities = Six.new + abilities << self + abilities + end + end end end diff --git a/app/models/user.rb b/app/models/user.rb index 42faea0070e..154cc0f3e16 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -330,11 +330,7 @@ class User < ActiveRecord::Base end def abilities - @abilities ||= begin - abilities = Six.new - abilities << Ability - abilities - end + Ability.abilities end def can_select_namespace? diff --git a/app/services/base_service.rb b/app/services/base_service.rb index ed286c04095..0d46eeaa18f 100644 --- a/app/services/base_service.rb +++ b/app/services/base_service.rb @@ -6,11 +6,7 @@ class BaseService end def abilities - @abilities ||= begin - abilities = Six.new - abilities << Ability - abilities - end + Ability.abilities end def can?(object, action, subject) -- cgit v1.2.1 From 91c96b3714a8f5753d9851ee8e2a859b201f6905 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Wed, 22 Oct 2014 12:40:41 -0500 Subject: Added a password strength indicator to the reset password view and the change password view after first login. Updated JS to work with the updated views. --- app/assets/javascripts/password_strength.js.coffee | 11 ++++++----- app/views/devise/passwords/edit.html.haml | 4 ++-- app/views/profiles/passwords/new.html.haml | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/password_strength.js.coffee b/app/assets/javascripts/password_strength.js.coffee index e6fec307c59..61e25deac4c 100644 --- a/app/assets/javascripts/password_strength.js.coffee +++ b/app/assets/javascripts/password_strength.js.coffee @@ -15,10 +15,10 @@ $(document).ready -> profileOptions.rules = activated: overwritten_rules - signUpOptions = {} - signUpOptions.common = + deviseOptions = {} + deviseOptions.common = usernameField: "#user_username" - signUpOptions.ui = + deviseOptions.ui = container: "#password-strength" showPopover: true showErrors: true @@ -26,8 +26,9 @@ $(document).ready -> showProgressBar: false showStatus: true errorMessages: overwritten_messages - signUpOptions.rules = + deviseOptions.rules = activated: overwritten_rules $("#user_password").pwstrength profileOptions - $("#user_password_sign_up").pwstrength signUpOptions + $("#user_password_sign_up").pwstrength deviseOptions + $("#user_password_recover").pwstrength deviseOptions diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 1326cc0aac9..f6cbf9b82ba 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -6,8 +6,8 @@ .devise-errors = devise_error_messages! = f.hidden_field :reset_password_token - %div - = f.password_field :password, class: "form-control top", placeholder: "New password", required: true + .form-group#password-strength + = f.password_field :password, class: "form-control top", id: "user_password_recover", placeholder: "New password", required: true %div = f.password_field :password_confirmation, class: "form-control bottom", placeholder: "Confirm new password", required: true .clearfix.append-bottom-10 diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml index aef7348fd20..b52514668e3 100644 --- a/app/views/profiles/passwords/new.html.haml +++ b/app/views/profiles/passwords/new.html.haml @@ -14,7 +14,7 @@ .form-group = f.label :current_password, class: 'control-label' .col-sm-10= f.password_field :current_password, required: true, class: 'form-control' - .form-group + .form-group#password-strength = f.label :password, class: 'control-label' .col-sm-10= f.password_field :password, required: true, class: 'form-control' .form-group -- cgit v1.2.1 From 7039c9868a3209d89f8306c65ca5b74f8e2ea2c0 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Wed, 22 Oct 2014 20:39:02 -0500 Subject: Updated the IDs of the fields, so that it wouldn't mess with many tests Updated some tests to match new IDs --- app/assets/javascripts/password_strength.js.coffee | 2 +- app/views/profiles/passwords/edit.html.haml | 2 +- app/views/profiles/passwords/new.html.haml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/password_strength.js.coffee b/app/assets/javascripts/password_strength.js.coffee index 61e25deac4c..696a5ccf0b9 100644 --- a/app/assets/javascripts/password_strength.js.coffee +++ b/app/assets/javascripts/password_strength.js.coffee @@ -29,6 +29,6 @@ $(document).ready -> deviseOptions.rules = activated: overwritten_rules - $("#user_password").pwstrength profileOptions + $("#user_password_profile").pwstrength profileOptions $("#user_password_sign_up").pwstrength deviseOptions $("#user_password_recover").pwstrength deviseOptions diff --git a/app/views/profiles/passwords/edit.html.haml b/app/views/profiles/passwords/edit.html.haml index 4440dcf338d..8e84d312194 100644 --- a/app/views/profiles/passwords/edit.html.haml +++ b/app/views/profiles/passwords/edit.html.haml @@ -24,7 +24,7 @@ .form-group#password-strength = f.label :password, 'New password', class: 'control-label' .col-sm-10 - = f.password_field :password, required: true, class: 'form-control' + = f.password_field :password, required: true, class: 'form-control', id: 'user_password_profile' .form-group = f.label :password_confirmation, class: 'control-label' .col-sm-10 diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml index b52514668e3..746b3a721e1 100644 --- a/app/views/profiles/passwords/new.html.haml +++ b/app/views/profiles/passwords/new.html.haml @@ -16,7 +16,7 @@ .col-sm-10= f.password_field :current_password, required: true, class: 'form-control' .form-group#password-strength = f.label :password, class: 'control-label' - .col-sm-10= f.password_field :password, required: true, class: 'form-control' + .col-sm-10= f.password_field :password, required: true, class: 'form-control', id: 'user_password_profile' .form-group = f.label :password_confirmation, class: 'control-label' .col-sm-10 -- cgit v1.2.1 From 7fbc4f5b3ac2abfa8ad94cc228114462b7b94601 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Thu, 23 Oct 2014 17:49:48 -0500 Subject: Corrected the layout of the strength indicator to be more consistent throughout the application. Fixed a test that was looking for an outdated HTML ID --- app/assets/javascripts/password_strength.js.coffee | 6 +++--- app/assets/stylesheets/sections/profile.scss | 12 ++++++++++-- app/views/devise/passwords/edit.html.haml | 2 +- app/views/profiles/passwords/new.html.haml | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/password_strength.js.coffee b/app/assets/javascripts/password_strength.js.coffee index 696a5ccf0b9..7f4a9180ae9 100644 --- a/app/assets/javascripts/password_strength.js.coffee +++ b/app/assets/javascripts/password_strength.js.coffee @@ -7,10 +7,11 @@ overwritten_rules = $(document).ready -> profileOptions = {} profileOptions.ui = - container: "#password-strength" - showVerdictsInsideProgressBar: true + showProgressBar: false + showVerdicts: false showPopover: true showErrors: true + showStatus: true errorMessages: overwritten_messages profileOptions.rules = activated: overwritten_rules @@ -19,7 +20,6 @@ $(document).ready -> deviseOptions.common = usernameField: "#user_username" deviseOptions.ui = - container: "#password-strength" showPopover: true showErrors: true showVerdicts: false diff --git a/app/assets/stylesheets/sections/profile.scss b/app/assets/stylesheets/sections/profile.scss index 2c2af7f52c5..fce0a703a0a 100644 --- a/app/assets/stylesheets/sections/profile.scss +++ b/app/assets/stylesheets/sections/profile.scss @@ -117,6 +117,14 @@ margin-bottom: 0; } -.progress { - margin-top: 10px; +.has-success input { + background-color: #C3FF88 !important; +} + +.has-error input { + background-color: #FFA0A0 !important; +} + +.has-warning input { + background-color: #FFEC8B !important; } diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index f6cbf9b82ba..182ca5e774b 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -6,7 +6,7 @@ .devise-errors = devise_error_messages! = f.hidden_field :reset_password_token - .form-group#password-strength + .form-group = f.password_field :password, class: "form-control top", id: "user_password_recover", placeholder: "New password", required: true %div = f.password_field :password_confirmation, class: "form-control bottom", placeholder: "Confirm new password", required: true diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml index 746b3a721e1..42d2d0db29c 100644 --- a/app/views/profiles/passwords/new.html.haml +++ b/app/views/profiles/passwords/new.html.haml @@ -14,7 +14,7 @@ .form-group = f.label :current_password, class: 'control-label' .col-sm-10= f.password_field :current_password, required: true, class: 'form-control' - .form-group#password-strength + .form-group = f.label :password, class: 'control-label' .col-sm-10= f.password_field :password, required: true, class: 'form-control', id: 'user_password_profile' .form-group -- cgit v1.2.1 From 000af8d5d7087cadbfd8ad677fb941e74a8ee3c7 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Fri, 24 Oct 2014 17:19:35 -0500 Subject: Moved require from application.js to password_strength.js Corrected div id for profile password/edit Added first spinach tests --- app/assets/javascripts/application.js.coffee | 1 - app/assets/javascripts/password_strength.js.coffee | 1 + app/views/profiles/passwords/edit.html.haml | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee index 493babad856..faf725109f5 100644 --- a/app/assets/javascripts/application.js.coffee +++ b/app/assets/javascripts/application.js.coffee @@ -18,7 +18,6 @@ #= require jquery.turbolinks #= require turbolinks #= require bootstrap -#= require pwstrength-bootstrap-1.2.2 #= require password_strength #= require select2 #= require raphael diff --git a/app/assets/javascripts/password_strength.js.coffee b/app/assets/javascripts/password_strength.js.coffee index 7f4a9180ae9..33b4d2e0f69 100644 --- a/app/assets/javascripts/password_strength.js.coffee +++ b/app/assets/javascripts/password_strength.js.coffee @@ -1,3 +1,4 @@ +#= require pwstrength-bootstrap-1.2.2 overwritten_messages = wordSimilarToUsername: "Your password should not contain your username" diff --git a/app/views/profiles/passwords/edit.html.haml b/app/views/profiles/passwords/edit.html.haml index 8e84d312194..425200ff523 100644 --- a/app/views/profiles/passwords/edit.html.haml +++ b/app/views/profiles/passwords/edit.html.haml @@ -21,7 +21,7 @@ %div = link_to "Forgot your password?", reset_profile_password_path, method: :put - .form-group#password-strength + .form-group = f.label :password, 'New password', class: 'control-label' .col-sm-10 = f.password_field :password, required: true, class: 'form-control', id: 'user_password_profile' -- cgit v1.2.1 From 37f33393b2e6aa18c416cb7a55d8de80dde0af58 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Fri, 24 Oct 2014 19:17:00 -0500 Subject: Changed colors to match GitLab's red & green and softened the yellow. --- app/assets/stylesheets/sections/profile.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/assets/stylesheets/sections/profile.scss b/app/assets/stylesheets/sections/profile.scss index fce0a703a0a..b9f4e317e9c 100644 --- a/app/assets/stylesheets/sections/profile.scss +++ b/app/assets/stylesheets/sections/profile.scss @@ -118,13 +118,13 @@ } .has-success input { - background-color: #C3FF88 !important; + background-color: #D6F1D7 !important; } .has-error input { - background-color: #FFA0A0 !important; + background-color: #F3CECE !important; } .has-warning input { - background-color: #FFEC8B !important; + background-color: #FFE9A4 !important; } -- cgit v1.2.1 From d3bdd3ba67dda8b8392770a2b6e4a7473ec4d42d Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Mon, 27 Oct 2014 10:02:20 +0100 Subject: Do not filter out issues and merge requests related to user right away. --- app/finders/issuable_finder.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 56c4f22120d..d0574240511 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -48,7 +48,7 @@ class IssuableFinder else [] end - elsif current_user && params[:authorized_only].presence + elsif current_user && params[:authorized_only].presence && !current_user_related? klass.of_projects(current_user.authorized_projects).references(:project) else klass.of_projects(ProjectsFinder.new.execute(current_user)).references(:project) @@ -142,4 +142,8 @@ class IssuableFinder def project Project.where(id: params[:project_id]).first if params[:project_id].present? end + + def current_user_related? + params[:scope] == 'created-by-me' || params[:scope] == 'authored' || params[:scope] == 'assigned-to-me' + end end -- cgit v1.2.1 From d08bb4b3a467d730009a97c79573854af79147d6 Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Mon, 27 Oct 2014 16:08:11 +0100 Subject: Add project name to rename repository section --- app/views/projects/edit.html.haml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index f48f4bb2953..79be310c2cf 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -13,7 +13,11 @@ = f.label :name, class: 'control-label' do Project name .col-sm-10 - = f.text_field :name, placeholder: "Example Project", class: "form-control" + = f.text_field :name, placeholder: "Example Project", class: "form-control", readonly: true + %p.hint + Rename the project at + %strong Rename repository + section. .form-group @@ -124,6 +128,12 @@ .errors-holder .panel-body = form_for(@project, html: { class: 'form-horizontal' }) do |f| + .form-group.project_name_holder + = f.label :name, class: 'control-label' do + Project name + .col-sm-9 + .form-group + = f.text_field :name, placeholder: "Example Project", class: "form-control" .form-group = f.label :path, class: 'control-label' do %span Path -- cgit v1.2.1 From 2d187976be893a764aea9699e6b5a1cb15c34d84 Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Wed, 22 Oct 2014 00:19:16 +0200 Subject: Run user select Js only where needed Transform current implementation into regular Coffescript classes so that the same call method can be reused on the dispatcher as for other classes. --- app/assets/javascripts/dispatcher.js.coffee | 6 +++ .../javascripts/project_users_select.js.coffee | 19 ++++---- app/assets/javascripts/users_select.js.coffee | 53 ++++++++++++---------- 3 files changed, 43 insertions(+), 35 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee index fb0560dba49..b070aba2ef4 100644 --- a/app/assets/javascripts/dispatcher.js.coffee +++ b/app/assets/javascripts/dispatcher.js.coffee @@ -62,6 +62,7 @@ class Dispatcher new TeamMembers() when 'groups:members' new GroupMembers() + new UsersSelect() when 'groups:new', 'groups:edit', 'admin:groups:edit' new GroupAvatar() when 'projects:tree:show' @@ -81,6 +82,8 @@ class Dispatcher when 'admin' new Admin() switch path[1] + when 'groups' + new UsersSelect() when 'projects' new NamespaceSelect() when 'dashboard' @@ -95,6 +98,8 @@ class Dispatcher new ProjectNew() when 'show' new ProjectShow() + when 'issues', 'merge_requests' + new ProjectUsersSelect() when 'wikis' new Wikis() shortcut_handler = new ShortcutsNavigation() @@ -103,6 +108,7 @@ class Dispatcher shortcut_handler = new ShortcutsNavigation() when 'team_members', 'deploy_keys', 'hooks', 'services', 'protected_branches' shortcut_handler = new ShortcutsNavigation() + new UsersSelect() # If we haven't installed a custom shortcut handler, install the default one diff --git a/app/assets/javascripts/project_users_select.js.coffee b/app/assets/javascripts/project_users_select.js.coffee index cfbcd5108c8..7fb33926096 100644 --- a/app/assets/javascripts/project_users_select.js.coffee +++ b/app/assets/javascripts/project_users_select.js.coffee @@ -1,6 +1,6 @@ -@projectUsersSelect = - init: -> - $('.ajax-project-users-select').each (i, select) -> +class @ProjectUsersSelect + constructor: -> + $('.ajax-project-users-select').each (i, select) => project_id = $(select).data('project-id') || $('body').data('project-id') $(select).select2 @@ -28,14 +28,16 @@ Api.user(id, callback) - formatResult: projectUsersSelect.projectUserFormatResult - formatSelection: projectUsersSelect.projectUserFormatSelection + formatResult: (args...) => + @formatResult(args...) + formatSelection: (args...) => + @formatSelection(args...) dropdownCssClass: "ajax-project-users-dropdown" dropdownAutoWidth: true escapeMarkup: (m) -> # we do not want to escape markup since we are displaying html in results m - projectUserFormatResult: (user) -> + formatResult: (user) -> if user.avatar_url avatar = user.avatar_url else @@ -52,8 +54,5 @@
#{user.username}
" - projectUserFormatSelection: (user) -> + formatSelection: (user) -> user.name - -$ -> - projectUsersSelect.init() diff --git a/app/assets/javascripts/users_select.js.coffee b/app/assets/javascripts/users_select.js.coffee index 86318bd7d94..9eee7406511 100644 --- a/app/assets/javascripts/users_select.js.coffee +++ b/app/assets/javascripts/users_select.js.coffee @@ -1,5 +1,30 @@ -$ -> - userFormatResult = (user) -> +class @UsersSelect + constructor: -> + $('.ajax-users-select').each (i, select) => + $(select).select2 + placeholder: "Search for a user" + multiple: $(select).hasClass('multiselect') + minimumInputLength: 0 + query: (query) -> + Api.users query.term, (users) -> + data = { results: users } + query.callback(data) + + initSelection: (element, callback) -> + id = $(element).val() + if id isnt "" + Api.user(id, callback) + + + formatResult: (args...) => + @formatResult(args...) + formatSelection: (args...) => + @formatSelection(args...) + dropdownCssClass: "ajax-users-dropdown" + escapeMarkup: (m) -> # we do not want to escape markup since we are displaying html in results + m + + formatResult: (user) -> if user.avatar_url avatar = user.avatar_url else @@ -11,27 +36,5 @@ $ ->
#{user.username}
" - userFormatSelection = (user) -> + formatSelection: (user) -> user.name - - $('.ajax-users-select').each (i, select) -> - $(select).select2 - placeholder: "Search for a user" - multiple: $(select).hasClass('multiselect') - minimumInputLength: 0 - query: (query) -> - Api.users query.term, (users) -> - data = { results: users } - query.callback(data) - - initSelection: (element, callback) -> - id = $(element).val() - if id isnt "" - Api.user(id, callback) - - - formatResult: userFormatResult - formatSelection: userFormatSelection - dropdownCssClass: "ajax-users-dropdown" - escapeMarkup: (m) -> # we do not want to escape markup since we are displaying html in results - m -- cgit v1.2.1 From 50ee0b81b8ade93a919a78ef1c04dc0afd6f3074 Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Tue, 28 Oct 2014 09:19:58 +0100 Subject: Leave the project name field editable, fix the test. --- app/views/projects/edit.html.haml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'app') diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index 79be310c2cf..b85cf7d8d37 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -13,11 +13,7 @@ = f.label :name, class: 'control-label' do Project name .col-sm-10 - = f.text_field :name, placeholder: "Example Project", class: "form-control", readonly: true - %p.hint - Rename the project at - %strong Rename repository - section. + = f.text_field :name, placeholder: "Example Project", class: "form-control", id: "project_name_edit" .form-group -- cgit v1.2.1 From 776bca07cd4b3996a39035e90232c99599ed2663 Mon Sep 17 00:00:00 2001 From: Drew Blessing Date: Thu, 16 Oct 2014 11:34:19 -0500 Subject: Add Atlassian Bamboo service --- app/controllers/projects/services_controller.rb | 3 +- app/models/project.rb | 3 +- app/models/project_services/bamboo_service.rb | 105 ++++++++++++++++++++++++ app/views/projects/services/_form.html.haml | 4 +- 4 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 app/models/project_services/bamboo_service.rb (limited to 'app') diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb index b50f6286459..a5f30dcfd9d 100644 --- a/app/controllers/projects/services_controller.rb +++ b/app/controllers/projects/services_controller.rb @@ -41,7 +41,8 @@ class Projects::ServicesController < Projects::ApplicationController params.require(:service).permit( :title, :token, :type, :active, :api_key, :subdomain, :room, :recipients, :project_url, :webhook, - :user_key, :device, :priority, :sound + :user_key, :device, :priority, :sound, :bamboo_url, :username, :password, + :build_key ) end end diff --git a/app/models/project.rb b/app/models/project.rb index 613f98ba44b..c58c9b551c9 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -65,6 +65,7 @@ class Project < ActiveRecord::Base has_one :gemnasium_service, dependent: :destroy has_one :slack_service, dependent: :destroy has_one :buildbox_service, dependent: :destroy + has_one :bamboo_service, dependent: :destroy has_one :pushover_service, dependent: :destroy has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id" has_one :forked_from_project, through: :forked_project_link @@ -313,7 +314,7 @@ class Project < ActiveRecord::Base end def available_services_names - %w(gitlab_ci campfire hipchat pivotaltracker flowdock assembla emails_on_push gemnasium slack pushover buildbox) + %w(gitlab_ci campfire hipchat pivotaltracker flowdock assembla emails_on_push gemnasium slack pushover buildbox bamboo) end def gitlab_ci? diff --git a/app/models/project_services/bamboo_service.rb b/app/models/project_services/bamboo_service.rb new file mode 100644 index 00000000000..b9eec9ab21e --- /dev/null +++ b/app/models/project_services/bamboo_service.rb @@ -0,0 +1,105 @@ +class BambooService < CiService + include HTTParty + + prop_accessor :bamboo_url, :build_key, :username, :password + + validates :bamboo_url, presence: true, + format: { with: URI::regexp }, if: :activated? + validates :build_key, presence: true, if: :activated? + validates :username, presence: true, + if: ->(service) { service.password? }, if: :activated? + validates :password, presence: true, + if: ->(service) { service.username? }, if: :activated? + + attr_accessor :response + + after_save :compose_service_hook, if: :activated? + + def compose_service_hook + hook = service_hook || build_service_hook + hook.save + end + + def title + 'Atlassian Bamboo CI' + end + + def description + 'A continuous integration and build server' + end + + def help + 'You must set up automatic revision labeling and a repository trigger in Bamboo.' + end + + def to_param + 'bamboo' + end + + def fields + [ + { type: 'text', name: 'bamboo_url', + placeholder: 'Bamboo root URL like https://bamboo.example.com' }, + { type: 'text', name: 'build_key', + placeholder: 'Bamboo build plan key like KEY' }, + { type: 'text', name: 'username', + placeholder: 'A user with API access, if applicable' }, + { type: 'password', name: 'password' }, + ] + end + + def build_info(sha) + url = URI.parse("#{bamboo_url}/rest/api/latest/result?label=#{sha}") + + if username.blank? && password.blank? + @response = HTTParty.get(parsed_url.to_s, verify: false) + else + get_url = "#{url}&os_authType=basic" + auth = { + username: username, + password: password, + } + @response = HTTParty.get(get_url, verify: false, basic_auth: auth) + end + end + + def build_page(sha) + build_info(sha) if @response.nil? || !@response.code + + if @response.code != 200 || @response['results']['results']['size'] == '0' + # If actual build link can't be determined, send user to build summary page. + "#{bamboo_url}/browse/#{build_key}" + else + # If actual build link is available, go to build result page. + result_key = @response['results']['results']['result']['planResultKey']['key'] + "#{bamboo_url}/browse/#{result_key}" + end + end + + def commit_status(sha) + build_info(sha) if @response.nil? || !@response.code + return :error unless @response.code == 200 || @response.code == 404 + + status = if @response.code == 404 || @response['results']['results']['size'] == '0' + 'Pending' + else + @response['results']['results']['result']['buildState'] + end + + if status.include?('Success') + 'success' + elsif status.include?('Failed') + 'failed' + elsif status.include?('Pending') + 'pending' + else + :error + end + end + + def execute(_data) + # Bamboo requires a GET and does not take any data. + self.class.get("#{bamboo_url}/updateAndBuild.action?buildKey=#{build_key}", + verify: false) + end +end diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml index 16d59d1fe9d..1151f22c7e8 100644 --- a/app/views/projects/services/_form.html.haml +++ b/app/views/projects/services/_form.html.haml @@ -28,7 +28,7 @@ - @service.fields.each do |field| - name = field[:name] - - value = @service.send(name) + - value = @service.send(name) unless field[:type] == 'password' - type = field[:type] - placeholder = field[:placeholder] - choices = field[:choices] @@ -45,6 +45,8 @@ = f.check_box name - elsif type == 'select' = f.select name, options_for_select(choices, value ? value : default_choice), {}, { class: "form-control" } + - elsif type == 'password' + = f.password_field name, class: 'form-control' .form-actions = f.submit 'Save', class: 'btn btn-save' -- cgit v1.2.1 From 9397d19380aa4f63c9f8b67bf06b9d9ca3db3c1a Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Tue, 28 Oct 2014 11:02:36 -0500 Subject: Added ID to the form-group, to fix alignment of inputs --- app/views/devise/passwords/edit.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 182ca5e774b..f6cbf9b82ba 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -6,7 +6,7 @@ .devise-errors = devise_error_messages! = f.hidden_field :reset_password_token - .form-group + .form-group#password-strength = f.password_field :password, class: "form-control top", id: "user_password_recover", placeholder: "New password", required: true %div = f.password_field :password_confirmation, class: "form-control bottom", placeholder: "Confirm new password", required: true -- cgit v1.2.1 From bf07fcf06ad7a5d2fd5f25079ce9e16d003481c7 Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Tue, 28 Oct 2014 11:04:46 -0500 Subject: Removed unnecessary role in form. --- app/views/devise/registrations/new.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 806d206d7b9..123de881f59 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -2,7 +2,7 @@ .login-heading %h3 Sign up .login-body - = form_for(resource, as: resource_name, url: registration_path(resource_name), role: 'form') do |f| + = form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| .devise-errors = devise_error_messages! %div -- cgit v1.2.1 From d9023da90d3d723bcb9ba372b0b89a8747aca6af Mon Sep 17 00:00:00 2001 From: Patricio Cano Date: Tue, 28 Oct 2014 12:48:20 -0500 Subject: Refactored password_strength configuration --- app/assets/javascripts/password_strength.js.coffee | 24 +++++++++------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'app') diff --git a/app/assets/javascripts/password_strength.js.coffee b/app/assets/javascripts/password_strength.js.coffee index 33b4d2e0f69..825f5630266 100644 --- a/app/assets/javascripts/password_strength.js.coffee +++ b/app/assets/javascripts/password_strength.js.coffee @@ -4,29 +4,25 @@ overwritten_messages = overwritten_rules = wordSequences: false + +options = + showProgressBar: false + showVerdicts: false + showPopover: true + showErrors: true + showStatus: true + errorMessages: overwritten_messages $(document).ready -> profileOptions = {} - profileOptions.ui = - showProgressBar: false - showVerdicts: false - showPopover: true - showErrors: true - showStatus: true - errorMessages: overwritten_messages + profileOptions.ui = options profileOptions.rules = activated: overwritten_rules deviseOptions = {} deviseOptions.common = usernameField: "#user_username" - deviseOptions.ui = - showPopover: true - showErrors: true - showVerdicts: false - showProgressBar: false - showStatus: true - errorMessages: overwritten_messages + deviseOptions.ui = options deviseOptions.rules = activated: overwritten_rules -- cgit v1.2.1 From ec5482a0dc460ec8d6f25ca6fd40377aba2d7714 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 29 Oct 2014 16:34:28 +0200 Subject: Explicitly require addressable gem feature you need. Fixes Buildbox CI integration Signed-off-by: Dmitriy Zaporozhets --- app/models/project_services/buildbox_service.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app') diff --git a/app/models/project_services/buildbox_service.rb b/app/models/project_services/buildbox_service.rb index b0f8e28c97f..0ab67b79fe4 100644 --- a/app/models/project_services/buildbox_service.rb +++ b/app/models/project_services/buildbox_service.rb @@ -12,6 +12,8 @@ # properties :text # +require "addressable/uri" + class BuildboxService < CiService prop_accessor :project_url, :token -- cgit v1.2.1 From fd17ba9ffc3350c3054746eac4b6be1a84d690ac Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 29 Oct 2014 15:46:42 +0200 Subject: Mentioned users are not limited by project scope any more Signed-off-by: Dmitriy Zaporozhets --- app/models/concerns/mentionable.rb | 6 +----- app/services/notification_service.rb | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) (limited to 'app') diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb index 5938d9cb28e..6c1aa99668a 100644 --- a/app/models/concerns/mentionable.rb +++ b/app/models/concerns/mentionable.rb @@ -52,11 +52,7 @@ module Mentionable if identifier == "all" users += project.team.members.flatten else - if has_project - id = project.team.members.find_by(username: identifier).try(:id) - else - id = User.find_by(username: identifier).try(:id) - end + id = User.find_by(username: identifier).try(:id) users << User.find(id) unless id.blank? end end diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb index 36781314278..c9a1574b84e 100644 --- a/app/services/notification_service.rb +++ b/app/services/notification_service.rb @@ -124,6 +124,7 @@ class NotificationService opts = { noteable_type: note.noteable_type, project_id: note.project_id } target = note.noteable + if target.respond_to?(:participants) recipients = target.participants else -- cgit v1.2.1