Merge branch 'master' into mr-filter-by-title

Conflicts:
	app/controllers/projects/merge_requests_controller.rb
This commit is contained in:
Dmitriy Zaporozhets 2015-03-12 16:29:03 -07:00
commit ec02cdf205
34 changed files with 95 additions and 64 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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!

View file

@ -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

View file

@ -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

View file

@ -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|

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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|

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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'

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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'

View file

@ -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

View file

@ -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')

View 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

View file

@ -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