Skip to content
Snippets Groups Projects
Commit f6c482c0 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

User can create group

parent d9027df5
No related branches found
No related tags found
1 merge request!2940Expanding repos and hooks paths in settings
class GroupsController < ApplicationController
respond_to :html
layout 'group'
layout 'group', except: [:new, :create]
 
before_filter :group
before_filter :projects
before_filter :group, except: [:new, :create]
 
# Authorize
before_filter :authorize_read_group!
before_filter :authorize_read_group!, except: [:new, :create]
# Load group projects
before_filter :projects, except: [:new, :create]
def new
@group = Group.new
end
def create
@group = Group.new(params[:group])
@group.path = @group.name.dup.parameterize if @group.name
@group.owner = current_user
if @group.save
redirect_to @group, notice: 'Group was successfully created.'
else
render action: "new"
end
end
 
def show
@events = Event.in_projects(project_ids).limit(20).offset(params[:offset] || 0)
Loading
Loading
Loading
Loading
@@ -39,7 +39,12 @@ module TabHelper
# Returns a list item element String
def nav_link(options = {}, &block)
if path = options.delete(:path)
c, a, _ = path.split('#')
if path.respond_to?(:each)
c = path.map { |p| p.split('#').first }
a = path.map { |p| p.split('#').last }
else
c, a, _ = path.split('#')
end
else
c = options.delete(:controller)
a = options.delete(:action)
Loading
Loading
Loading
Loading
@@ -220,7 +220,7 @@ class User < ActiveRecord::Base
end
 
def can_create_group?
is_admin?
can_create_project?
end
 
def abilities
Loading
Loading
Loading
Loading
@@ -5,7 +5,7 @@
(#{groups.count})
- if current_user.can_create_group?
%span.right
= link_to new_admin_group_path, class: "btn very_small info" do
= link_to new_group_path, class: "btn very_small info" do
%i.icon-plus
New Group
%ul.well-list
Loading
Loading
%h3.page_title New Group
%hr
= form_for @group do |f|
- if @group.errors.any?
.alert-message.block-message.error
%span= @group.errors.full_messages.first
.clearfix
= f.label :name do
Group name is
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Create group', class: "btn primary"
%hr
.padded
%ul
%li Group is kind of directory for several projects
%li All created groups are private
%li People within a group see only projects they have access to
%li All projects of group will be stored in group directory
%li You will be able to move existing projects into group
Loading
Loading
@@ -17,7 +17,7 @@
= link_to new_project_path, title: "Create New Project", class: 'has_bottom_tooltip', 'data-original-title' => 'New project' do
%i.icon-plus
%li
= link_to profile_path, title: "Your Profile", class: 'has_bottom_tooltip', 'data-original-title' => 'Your profile' do
= link_to profile_path, title: "My Profile", class: 'has_bottom_tooltip', 'data-original-title' => 'Your profile' do
%i.icon-user
%li.separator
%li
Loading
Loading
Loading
Loading
@@ -15,6 +15,12 @@
%span Namespace
.input
= f.select :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'chosen'}
- elsif current_user.can_create_group?
.clearfix
.input.light
Need a group for several projects?
= link_to new_group_path, class: "btn very_small" do
Create a group
%hr
%p.padded
New projects are private by default. You choose who can see the project and commit to repository.
.ui-box
%h5.title
Profile
%ul.well-list
%li
%strong Email
%span.right= mail_to @user.email
- unless @user.skype.blank?
%li
%strong Skype
%span.right= @user.skype
- unless @user.linkedin.blank?
%li
%strong LinkedIn
%span.right= @user.linkedin
- unless @user.twitter.blank?
%li
%strong Twitter
%span.right= @user.twitter
- unless @user.bio.blank?
%li
%strong Bio
%span.right= @user.bio
Loading
Loading
@@ -3,6 +3,11 @@
%h3.page_title
= image_tag gravatar_icon(@user.email, 90), class: "avatar s90"
= @user.name
- if @user == current_user
.right
= link_to profile_path, class: 'btn small' do
%i.icon-edit
Edit Profile
%br
%small @#{@user.username}
%br
Loading
Loading
@@ -12,26 +17,5 @@
%h5 Recent events
= render @events
.span4
.ui-box
%h5.title Profile
%ul.well-list
%li
%strong Email
%span.right= mail_to @user.email
- unless @user.skype.blank?
%li
%strong Skype
%span.right= @user.skype
- unless @user.linkedin.blank?
%li
%strong LinkedIn
%span.right= @user.linkedin
- unless @user.twitter.blank?
%li
%strong Twitter
%span.right= @user.twitter
- unless @user.bio.blank?
%li
%strong Bio
%span.right= @user.bio
= render 'profile'
= render 'projects'
Loading
Loading
@@ -112,7 +112,7 @@ Gitlab::Application.routes.draw do
#
# Groups Area
#
resources :groups, constraints: { id: /[^\/]+/ }, only: [:show] do
resources :groups, constraints: { id: /[^\/]+/ }, only: [:show, :new, :create] do
member do
get :issues
get :merge_requests
Loading
Loading
Feature: Groups
Background:
Given I sign in as a user
Scenario: Create a group from dasboard
Given I have group with projects
And I visit dashboard page
When I click new group link
And submit form with new group info
Then I should be redirected to group page
And I should see newly created group
Loading
Loading
@@ -64,6 +64,24 @@ class Groups < Spinach::FeatureSteps
author: current_user
end
 
When 'I click new group link' do
click_link "New Group"
end
And 'submit form with new group info' do
fill_in 'group_name', :with => 'Samurai'
click_button "Create group"
end
Then 'I should see newly created group' do
page.should have_content "Samurai"
page.should have_content "You will only see events from projects in this group"
end
Then 'I should be redirected to group page' do
current_path.should == group_path(Group.last)
end
protected
 
def current_group
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment