Merge branch 'master' into mr-filter-by-title
Conflicts: app/controllers/projects/merge_requests_controller.rb
This commit is contained in:
commit
ec02cdf205
34 changed files with 95 additions and 64 deletions
|
@ -60,6 +60,7 @@ v 7.9.0 (unreleased)
|
|||
- Remove annoying notice messages when create/update merge request
|
||||
- Allow smb:// links in Markdown text.
|
||||
- Filter merge request by title or description at Merge Requests page
|
||||
- Block user if he/she was blocked in Active Directory
|
||||
|
||||
v 7.8.4
|
||||
- Fix issue_tracker_id substitution in custom issue trackers
|
||||
|
|
|
@ -5,12 +5,12 @@ class Admin::GroupsController < Admin::ApplicationController
|
|||
@groups = Group.all
|
||||
@groups = @groups.sort(@sort = params[:sort])
|
||||
@groups = @groups.search(params[:name]) if params[:name].present?
|
||||
@groups = @groups.page(params[:page]).per(20)
|
||||
@groups = @groups.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def show
|
||||
@members = @group.members.order("access_level DESC").page(params[:members_page]).per(30)
|
||||
@projects = @group.projects.page(params[:projects_page]).per(30)
|
||||
@members = @group.members.order("access_level DESC").page(params[:members_page]).per(PER_PAGE)
|
||||
@projects = @group.projects.page(params[:projects_page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
|
@ -11,15 +11,15 @@ class Admin::ProjectsController < Admin::ApplicationController
|
|||
@projects = @projects.abandoned if params[:abandoned].present?
|
||||
@projects = @projects.search(params[:name]) if params[:name].present?
|
||||
@projects = @projects.sort(@sort = params[:sort])
|
||||
@projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20)
|
||||
@projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def show
|
||||
if @group
|
||||
@group_members = @group.members.order("access_level DESC").page(params[:group_members_page]).per(30)
|
||||
@group_members = @group.members.order("access_level DESC").page(params[:group_members_page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
@project_members = @project.project_members.page(params[:project_members_page]).per(30)
|
||||
@project_members = @project.project_members.page(params[:project_members_page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def transfer
|
||||
|
|
|
@ -4,6 +4,8 @@ class ApplicationController < ActionController::Base
|
|||
include Gitlab::CurrentSettings
|
||||
include GitlabRoutingHelper
|
||||
|
||||
PER_PAGE = 20
|
||||
|
||||
before_filter :authenticate_user_from_token!
|
||||
before_filter :authenticate_user!
|
||||
before_filter :reject_blocked!
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class Dashboard::GroupsController < ApplicationController
|
||||
def index
|
||||
@user_groups = current_user.group_members.page(params[:page]).per(20)
|
||||
@user_groups = current_user.group_members.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def leave
|
||||
|
|
|
@ -8,7 +8,7 @@ class Dashboard::MilestonesController < ApplicationController
|
|||
else state('active')
|
||||
end
|
||||
@dashboard_milestones = Milestones::GroupService.new(project_milestones).execute
|
||||
@dashboard_milestones = Kaminari.paginate_array(@dashboard_milestones).page(params[:page]).per(30)
|
||||
@dashboard_milestones = Kaminari.paginate_array(@dashboard_milestones).page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
|
@ -25,13 +25,13 @@ class DashboardController < ApplicationController
|
|||
|
||||
def merge_requests
|
||||
@merge_requests = get_merge_requests_collection
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(20)
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
|
||||
@merge_requests = @merge_requests.preload(:author, :target_project)
|
||||
end
|
||||
|
||||
def issues
|
||||
@issues = get_issues_collection
|
||||
@issues = @issues.page(params[:page]).per(20)
|
||||
@issues = @issues.page(params[:page]).per(PER_PAGE)
|
||||
@issues = @issues.preload(:author, :project)
|
||||
|
||||
respond_to do |format|
|
||||
|
|
|
@ -8,6 +8,6 @@ class Explore::GroupsController < ApplicationController
|
|||
@groups = GroupsFinder.new.execute(current_user)
|
||||
@groups = @groups.search(params[:search]) if params[:search].present?
|
||||
@groups = @groups.sort(@sort = params[:sort])
|
||||
@groups = @groups.page(params[:page]).per(20)
|
||||
@groups = @groups.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,17 +11,17 @@ class Explore::ProjectsController < ApplicationController
|
|||
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
|
||||
@projects = @projects.search(params[:search]) if params[:search].present?
|
||||
@projects = @projects.sort(@sort = params[:sort])
|
||||
@projects = @projects.includes(:namespace).page(params[:page]).per(20)
|
||||
@projects = @projects.includes(:namespace).page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def trending
|
||||
@trending_projects = TrendingProjectsFinder.new.execute(current_user)
|
||||
@trending_projects = @trending_projects.page(params[:page]).per(10)
|
||||
@trending_projects = @trending_projects.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def starred
|
||||
@starred_projects = ProjectsFinder.new.execute(current_user)
|
||||
@starred_projects = @starred_projects.reorder('star_count DESC')
|
||||
@starred_projects = @starred_projects.page(params[:page]).per(10)
|
||||
@starred_projects = @starred_projects.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,7 +10,7 @@ class Groups::MilestonesController < ApplicationController
|
|||
else state('active')
|
||||
end
|
||||
@group_milestones = Milestones::GroupService.new(project_milestones).execute
|
||||
@group_milestones = Kaminari.paginate_array(@group_milestones).page(params[:page]).per(30)
|
||||
@group_milestones = Kaminari.paginate_array(@group_milestones).page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
|
@ -52,13 +52,13 @@ class GroupsController < Groups::ApplicationController
|
|||
|
||||
def merge_requests
|
||||
@merge_requests = get_merge_requests_collection
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(20)
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
|
||||
@merge_requests = @merge_requests.preload(:author, :target_project)
|
||||
end
|
||||
|
||||
def issues
|
||||
@issues = get_issues_collection
|
||||
@issues = @issues.page(params[:page]).per(20)
|
||||
@issues = @issues.page(params[:page]).per(PER_PAGE)
|
||||
@issues = @issues.preload(:author, :project)
|
||||
|
||||
respond_to do |format|
|
||||
|
|
|
@ -43,7 +43,7 @@ class ProfilesController < ApplicationController
|
|||
end
|
||||
|
||||
def history
|
||||
@events = current_user.recent_events.page(params[:page]).per(20)
|
||||
@events = current_user.recent_events.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def update_username
|
||||
|
|
|
@ -8,7 +8,7 @@ class Projects::BranchesController < Projects::ApplicationController
|
|||
def index
|
||||
@sort = params[:sort] || 'name'
|
||||
@branches = @repository.branches_sorted_by(@sort)
|
||||
@branches = Kaminari.paginate_array(@branches).page(params[:page]).per(30)
|
||||
@branches = Kaminari.paginate_array(@branches).page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def recent
|
||||
|
|
|
@ -20,7 +20,7 @@ class Projects::IssuesController < Projects::ApplicationController
|
|||
terms = params['issue_search']
|
||||
@issues = get_issues_collection
|
||||
@issues = @issues.full_search(terms) if terms.present?
|
||||
@issues = @issues.page(params[:page]).per(20)
|
||||
@issues = @issues.page(params[:page]).per(PER_PAGE)
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
|
|
|
@ -7,7 +7,7 @@ class Projects::LabelsController < Projects::ApplicationController
|
|||
respond_to :js, :html
|
||||
|
||||
def index
|
||||
@labels = @project.labels.page(params[:page]).per(20)
|
||||
@labels = @project.labels.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
|
@ -20,7 +20,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
|||
terms = params['issue_search']
|
||||
@merge_requests = get_merge_requests_collection
|
||||
@merge_requests = @merge_requests.full_search(terms) if terms.present?
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(20)
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
|
|
|
@ -18,7 +18,7 @@ class Projects::MilestonesController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
@milestones = @milestones.includes(:project)
|
||||
@milestones = @milestones.page(params[:page]).per(20)
|
||||
@milestones = @milestones.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
|
@ -7,7 +7,7 @@ class Projects::TagsController < Projects::ApplicationController
|
|||
|
||||
def index
|
||||
sorted = VersionSorter.rsort(@repository.tag_names)
|
||||
@tags = Kaminari.paginate_array(sorted).page(params[:page]).per(30)
|
||||
@tags = Kaminari.paginate_array(sorted).page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def create
|
||||
|
|
|
@ -7,7 +7,7 @@ class Projects::WikisController < Projects::ApplicationController
|
|||
before_filter :load_project_wiki
|
||||
|
||||
def pages
|
||||
@wiki_pages = Kaminari.paginate_array(@project_wiki.pages).page(params[:page]).per(30)
|
||||
@wiki_pages = Kaminari.paginate_array(@project_wiki.pages).page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
|
@ -16,7 +16,7 @@ class SnippetsController < ApplicationController
|
|||
layout :determine_layout
|
||||
|
||||
def index
|
||||
@snippets = SnippetsFinder.new.execute(current_user, filter: :all).page(params[:page]).per(20)
|
||||
@snippets = SnippetsFinder.new.execute(current_user, filter: :all).page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def user_index
|
||||
|
@ -28,7 +28,7 @@ class SnippetsController < ApplicationController
|
|||
filter: :by_user,
|
||||
user: @user,
|
||||
scope: params[:scope] }).
|
||||
page(params[:page]).per(20)
|
||||
page(params[:page]).per(PER_PAGE)
|
||||
|
||||
if @user == current_user
|
||||
render 'current_user_index'
|
||||
|
|
|
@ -86,15 +86,6 @@ module ApplicationHelper
|
|||
end
|
||||
end
|
||||
|
||||
def group_icon(group_path)
|
||||
group = Group.find_by(path: group_path)
|
||||
if group && group.avatar.present?
|
||||
group.avatar.url
|
||||
else
|
||||
image_path('no_group_avatar.png')
|
||||
end
|
||||
end
|
||||
|
||||
def avatar_icon(user_email = '', size = nil)
|
||||
user = User.find_by(email: user_email)
|
||||
|
||||
|
|
|
@ -40,4 +40,16 @@ module GroupsHelper
|
|||
false
|
||||
end
|
||||
end
|
||||
|
||||
def group_icon(group)
|
||||
if group.is_a?(String)
|
||||
group = Group.find_by(path: group)
|
||||
end
|
||||
|
||||
if group && group.avatar.present?
|
||||
group.avatar.url
|
||||
else
|
||||
image_path('no_group_avatar.png')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,7 +28,7 @@ module NamespacesHelper
|
|||
|
||||
def namespace_icon(namespace, size = 40)
|
||||
if namespace.kind_of?(Group)
|
||||
group_icon(namespace.path)
|
||||
group_icon(namespace)
|
||||
else
|
||||
avatar_icon(namespace.owner.email, size)
|
||||
end
|
||||
|
|
|
@ -265,4 +265,14 @@ module ProjectsHelper
|
|||
"success"
|
||||
end
|
||||
end
|
||||
|
||||
def service_field_value(type, value)
|
||||
return value unless type == 'password'
|
||||
|
||||
if value.present?
|
||||
"***********"
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
Group info:
|
||||
%ul.well-list
|
||||
%li
|
||||
= image_tag group_icon(@group.path), class: "avatar s60"
|
||||
= image_tag group_icon(@group), class: "avatar s60"
|
||||
%li
|
||||
%span.light Name:
|
||||
%strong= @group.name
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
%i.fa.fa-sign-out
|
||||
Leave
|
||||
|
||||
= image_tag group_icon(group.path), class: "avatar s40 avatar-tile"
|
||||
= image_tag group_icon(group), class: "avatar s40 avatar-tile"
|
||||
= link_to group, class: 'group-name' do
|
||||
%strong= group.name
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
.form-group
|
||||
.col-sm-2
|
||||
.col-sm-10
|
||||
= image_tag group_icon(@group.to_param), alt: '', class: 'avatar group-avatar s160'
|
||||
= image_tag group_icon(@group), alt: '', class: 'avatar group-avatar s160'
|
||||
%p.light
|
||||
- if @group.avatar?
|
||||
You can change your group avatar here
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.dashboard
|
||||
%div
|
||||
= image_tag group_icon(@group.path), class: "avatar group-avatar s90"
|
||||
= image_tag group_icon(@group), class: "avatar group-avatar s90"
|
||||
.clearfix
|
||||
%h2
|
||||
= @group.name
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
- @service.fields.each do |field|
|
||||
- name = field[:name]
|
||||
- title = field[:title] || name.humanize
|
||||
- value = @service.send(name) unless field[:type] == 'password'
|
||||
- value = service_field_value(field[:type], @service.send(name))
|
||||
- type = field[:type]
|
||||
- placeholder = field[:placeholder]
|
||||
- choices = field[:choices]
|
||||
|
@ -94,7 +94,7 @@
|
|||
- 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'
|
||||
= f.password_field name, placeholder: value, class: 'form-control'
|
||||
- if help
|
||||
%span.help-block= help
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.clearfix
|
||||
- groups.each do |group|
|
||||
= link_to group, class: 'profile-groups-avatars inline', title: group.name do
|
||||
= image_tag group_icon(group.path), class: 'avatar group-avatar s40'
|
||||
= image_tag group_icon(group), class: 'avatar group-avatar s40'
|
||||
|
|
|
@ -34,7 +34,14 @@ module Gitlab
|
|||
def allowed?
|
||||
if Gitlab::LDAP::Person.find_by_dn(user.ldap_identity.extern_uid, adapter)
|
||||
return true unless ldap_config.active_directory
|
||||
!Gitlab::LDAP::Person.disabled_via_active_directory?(user.ldap_identity.extern_uid, adapter)
|
||||
|
||||
# Block user in GitLab if he/she was blocked in AD
|
||||
if Gitlab::LDAP::Person.disabled_via_active_directory?(user.ldap_identity.extern_uid, adapter)
|
||||
user.block unless user.blocked?
|
||||
false
|
||||
else
|
||||
true
|
||||
end
|
||||
else
|
||||
false
|
||||
end
|
||||
|
|
|
@ -39,24 +39,6 @@ describe ApplicationHelper do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'group_icon' do
|
||||
avatar_file_path = File.join(Rails.root, 'public', 'gitlab_logo.png')
|
||||
|
||||
it 'should return an url for the avatar' do
|
||||
group = create(:group)
|
||||
group.avatar = File.open(avatar_file_path)
|
||||
group.save!
|
||||
expect(group_icon(group.path).to_s).
|
||||
to match("/uploads/group/avatar/#{ group.id }/gitlab_logo.png")
|
||||
end
|
||||
|
||||
it 'should give default avatar_icon when no avatar is present' do
|
||||
group = create(:group)
|
||||
group.save!
|
||||
expect(group_icon(group.path)).to match('group_avatar.png')
|
||||
end
|
||||
end
|
||||
|
||||
describe 'project_icon' do
|
||||
avatar_file_path = File.join(Rails.root, 'public', 'gitlab_logo.png')
|
||||
|
||||
|
|
21
spec/helpers/groups_helper.rb
Normal file
21
spec/helpers/groups_helper.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe GroupsHelper do
|
||||
describe 'group_icon' do
|
||||
avatar_file_path = File.join(Rails.root, 'public', 'gitlab_logo.png')
|
||||
|
||||
it 'should return an url for the avatar' do
|
||||
group = create(:group)
|
||||
group.avatar = File.open(avatar_file_path)
|
||||
group.save!
|
||||
expect(group_icon(group.path).to_s).
|
||||
to match("/uploads/group/avatar/#{ group.id }/gitlab_logo.png")
|
||||
end
|
||||
|
||||
it 'should give default avatar_icon when no avatar is present' do
|
||||
group = create(:group)
|
||||
group.save!
|
||||
expect(group_icon(group.path)).to match('group_avatar.png')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -20,6 +20,11 @@ describe Gitlab::LDAP::Access do
|
|||
before { Gitlab::LDAP::Person.stub(disabled_via_active_directory?: true) }
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
|
||||
it "should block user in GitLab" do
|
||||
access.allowed?
|
||||
user.should be_blocked
|
||||
end
|
||||
end
|
||||
|
||||
context 'and has no disabled flag in active diretory' do
|
||||
|
@ -38,4 +43,4 @@ describe Gitlab::LDAP::Access do
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue