Merge branch 'Undev-team-and-group-descriptions'

This commit is contained in:
Dmitriy Zaporozhets 2013-03-01 16:26:39 +02:00
commit 1cfc2b6fc7
27 changed files with 149 additions and 48 deletions

View file

@ -30,6 +30,8 @@
border-color: #DDD;
}
.well { padding: 15px; }
/** HELPERS **/
.nothing_here_message {
text-align: center;

View file

@ -2,13 +2,14 @@
#
# Table name: namespaces
#
# id :integer not null, primary key
# name :string(255) not null
# path :string(255) not null
# owner_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255)
# id :integer not null, primary key
# name :string(255) not null
# description :string(255) not null
# path :string(255) not null
# owner_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255)
#
class Group < Namespace

View file

@ -2,17 +2,18 @@
#
# Table name: namespaces
#
# id :integer not null, primary key
# name :string(255) not null
# path :string(255) not null
# owner_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255)
# id :integer not null, primary key
# name :string(255) not null
# description :string(255) not null
# path :string(255) not null
# owner_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255)
#
class Namespace < ActiveRecord::Base
attr_accessible :name, :path
attr_accessible :name, :description, :path
has_many :projects, dependent: :destroy
belongs_to :owner, class_name: "User"
@ -22,7 +23,7 @@ class Namespace < ActiveRecord::Base
length: { within: 0..255 },
format: { with: Gitlab::Regex.name_regex,
message: "only letters, digits, spaces & '_' '-' '.' allowed." }
validates :description, length: { within: 0..255 }
validates :path, uniqueness: true, presence: true, length: { within: 1..255 },
format: { with: Gitlab::Regex.path_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }

View file

@ -11,7 +11,7 @@
#
class UserTeam < ActiveRecord::Base
attr_accessible :name, :owner_id, :path
attr_accessible :name, :description, :owner_id, :path
belongs_to :owner, class_name: User
@ -26,6 +26,7 @@ class UserTeam < ActiveRecord::Base
length: { within: 0..255 },
format: { with: Gitlab::Regex.name_regex,
message: "only letters, digits, spaces & '_' '-' '.' allowed." }
validates :description, length: { within: 0..255 }
validates :path, uniqueness: true, presence: true, length: { within: 1..255 },
format: { with: Gitlab::Regex.path_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }

View file

@ -1,4 +1,4 @@
%h3.page_title Rename Group
%h3.page_title Edit Group
%hr
= form_for [:admin, @group] do |f|
- if @group.errors.any?
@ -10,7 +10,10 @@
.input
= f.text_field :name, placeholder: "Example Group", class: "xxlarge"
.clearfix.group-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.clearfix.group_name_holder
= f.label :path do
@ -24,5 +27,5 @@
%li It will change the git path to repositories under this group.
.form-actions
= f.submit 'Rename group', class: "btn btn-remove"
= f.submit 'Edit group', class: "btn btn-remove"
= link_to 'Cancel', admin_groups_path, class: "btn btn-cancel"

View file

@ -17,6 +17,7 @@
Name
%i.icon-sort-down
%th Path
%th Description
%th Projects
%th Owner
%th.cred Danger Zone!
@ -25,11 +26,12 @@
%tr
%td
%strong= link_to group.name, [:admin, group]
%td= group.description
%td= group.path
%td= group.projects.count
%td
= link_to group.owner_name, admin_user_path(group.owner)
%td.bgred
= link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn btn-small"
= link_to 'Edit', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn btn-small"
= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
= paginate @groups, theme: "admin"

View file

@ -9,8 +9,14 @@
Group name is
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Create group', class: "btn btn-primary"
.clearfix.group-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.form-actions
= f.submit 'Create group', class: "btn btn-primary"
%hr
.padded
%ul

View file

@ -16,7 +16,13 @@
&nbsp;
= link_to edit_admin_group_path(@group), class: "btn btn-small pull-right" do
%i.icon-edit
Rename
Edit
%tr
%td
%b
Description:
%td
= @group.description
%tr
%td
%b

View file

@ -1,4 +1,4 @@
%h3.page_title Rename Team
%h3.page_title Edit Team
%hr
= form_for @team, url: admin_team_path(@team), method: :put do |f|
- if @team.errors.any?
@ -10,6 +10,11 @@
.input
= f.text_field :name, placeholder: "Example Team", class: "xxlarge"
.clearfix.team-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.clearfix.team_name_holder
= f.label :path do
%span.cred Team path is
@ -19,5 +24,5 @@
%li It will change web url for access team and team projects.
.form-actions
= f.submit 'Rename team', class: "btn btn-remove"
= f.submit 'Edit team', class: "btn btn-remove"
= link_to 'Cancel', admin_teams_path, class: "btn btn-cancel"

View file

@ -16,6 +16,7 @@
%th
Name
%i.icon-sort-down
%th Description
%th Path
%th Projects
%th Members
@ -26,13 +27,14 @@
%tr
%td
%strong= link_to team.name, admin_team_path(team)
%td= team.description
%td= team.path
%td= team.projects.count
%td= team.members.count
%td
= link_to team.owner.name, admin_user_path(team.owner)
%td.bgred
= link_to 'Rename', edit_admin_team_path(team), id: "edit_#{dom_id(team)}", class: "btn btn-small"
= link_to 'Edit', edit_admin_team_path(team), id: "edit_#{dom_id(team)}", class: "btn btn-small"
= link_to 'Destroy', admin_team_path(team), confirm: "REMOVE #{team.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
= paginate @teams, theme: "admin"

View file

@ -9,8 +9,15 @@
Team name is
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Create team', class: "btn btn-primary"
.clearfix.team-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.form-actions
= f.submit 'Create team', class: "btn btn-primary"
%hr
.padded
%ul

View file

@ -16,7 +16,13 @@
&nbsp;
= link_to edit_admin_team_path(@team), class: "btn btn-small pull-right" do
%i.icon-edit
Rename
Edit
%tr
%td
%b
Description:
%td
= @team.description
%tr
%td
%b

View file

@ -9,8 +9,15 @@
Group name is
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Save group', class: "btn btn-save"
.clearfix.group-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.form-actions
= f.submit 'Save group', class: "btn btn-save"
%hr

View file

@ -9,9 +9,16 @@
Group name is
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Create group', class: "btn btn-create"
%hr
.clearfix.group-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.form-actions
= f.submit 'Create group', class: "btn btn-create"
.padded
%ul
%li Group is kind of directory for several projects

View file

@ -12,6 +12,9 @@
%p.nothing_here_message Project activity will be displayed here
.loading.hide
.side.span4
- if @group.description.present?
.description.well.light
= @group.description
= render "projects", projects: @projects
%div
%span.rss-icon

View file

@ -12,13 +12,20 @@
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xlarge left"
.clearfix.team-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.clearfix
= f.label :path do
Team path is
.input
= f.text_field :path, placeholder: "opensource", class: "xlarge left"
.form-actions
= f.submit 'Save team changes', class: "btn btn-save"
= f.submit 'Save team changes', class: "btn btn-primary"
= link_to 'Delete team', team_path(@team), method: :delete, confirm: "You are shure?", class: "btn btn-remove pull-right"
.span5
.ui-box
%h5.title Remove team
@ -26,4 +33,3 @@
%p
Removed team can not be restored!
= link_to 'Remove team', team_path(@team), method: :delete, confirm: "You are sure?", class: "btn btn-remove btn-small"

View file

@ -9,9 +9,15 @@
Team name is
.input
= f.text_field :name, placeholder: "Ex. Ruby Developers", class: "xxlarge left"
&nbsp;
= f.submit 'Create team', class: "btn btn-create"
%hr
.clearfix.team-description-holder
= f.label :description, "Details"
.input
= f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
.form-actions
= f.submit 'Create team', class: "btn btn-create"
.padded
%ul
%li All created teams are public (users can view who enter into team and which project are assigned for this team)

View file

@ -11,6 +11,9 @@
%p.nothing_here_message Projects activity will be displayed here
.loading.hide
.side.span4
- if @team.description.present?
.description.well.light
= @team.description
= render "projects", projects: @projects
%div
%span.rss-icon

View file

@ -0,0 +1,5 @@
class AddDescriptionToNamsespace < ActiveRecord::Migration
def change
add_column :namespaces, :description, :string, default: '', null: false
end
end

View file

@ -0,0 +1,5 @@
class AddDescriptionToTeams < ActiveRecord::Migration
def change
add_column :user_teams, :description, :string, default: '', null: false
end
end

View file

@ -106,12 +106,13 @@ ActiveRecord::Schema.define(:version => 20130220133245) do
add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id"
create_table "namespaces", :force => true do |t|
t.string "name", :null => false
t.string "path", :null => false
t.integer "owner_id", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "name", :null => false
t.string "path", :null => false
t.integer "owner_id", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "type"
t.string "description", :default => "", :null => false
end
add_index "namespaces", ["name"], :name => "index_namespaces_on_name"
@ -232,8 +233,9 @@ ActiveRecord::Schema.define(:version => 20130220133245) do
t.string "name"
t.string "path"
t.integer "owner_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "description", :default => "", :null => false
end
create_table "users", :force => true do |t|

View file

@ -25,11 +25,13 @@ class AdminGroups < Spinach::FeatureSteps
And 'submit form with new group info' do
fill_in 'group_name', :with => 'gitlab'
fill_in 'group_description', :with => 'Group description'
click_button "Create group"
end
Then 'I should see newly created group' do
page.should have_content "Group: gitlab"
page.should have_content "Group description"
end
Then 'I should be redirected to group page' do

View file

@ -18,6 +18,7 @@ class AdminTeams < Spinach::FeatureSteps
And 'submit form with new team info' do
fill_in 'user_team_name', with: 'gitlab'
fill_in 'user_team_description', with: 'description'
click_button 'Create team'
end
@ -27,6 +28,7 @@ class AdminTeams < Spinach::FeatureSteps
And 'I should see newly created team' do
page.should have_content "Team: gitlab"
page.should have_content "description"
end
When 'I visit admin teams page' do

View file

@ -69,12 +69,14 @@ class Groups < Spinach::FeatureSteps
end
And 'submit form with new group info' do
fill_in 'group_name', :with => 'Samurai'
fill_in 'group_name', with: 'Samurai'
fill_in 'group_description', with: 'Tokugawa Shogunate'
click_button "Create group"
end
Then 'I should see newly created group' do
page.should have_content "Samurai"
page.should have_content "Tokugawa Shogunate"
page.should have_content "You will only see events from projects in this group"
end

View file

@ -44,9 +44,16 @@ class Userteams < Spinach::FeatureSteps
And 'I submit form with new team info' do
fill_in 'name', with: 'gitlab'
fill_in 'user_team_description', with: 'team description'
click_button 'Create team'
end
And 'I should see newly created team' do
page.should have_content "gitlab"
page.should have_content "team description"
end
Then 'I should be redirected to new team page' do
team = UserTeam.last
current_path.should == team_path(team)

View file

@ -20,6 +20,7 @@ Feature: UserTeams
When I click to "New team" link
And I submit form with new team info
Then I should be redirected to new team page
Then I should see newly created team
Scenario: I should see team dashboard list
When I have teams with projects and members

View file

@ -15,6 +15,7 @@
FactoryGirl.define do
factory :user_team do
sequence(:name) { |n| "team#{n}" }
sequence(:description) { |n| "team_description#{n}" }
path { name.downcase.gsub(/\s/, '_') }
owner
end