diff --git a/Capfile.example b/Capfile.example
new file mode 100644
index 0000000000000000000000000000000000000000..8863835da4aa2e646324c8b904be7653cc453cff
--- /dev/null
+++ b/Capfile.example
@@ -0,0 +1,4 @@
+load 'deploy'
+load 'deploy/assets'
+require 'bundler/capistrano'
+load 'config/deploy'
diff --git a/README.md b/README.md
index 1a43be134da284a96be9f02324fbf0f8daa482c5..ee029f9bfcb6875d8ccc96338c7b433c39323b5f 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
GitLab is a free project and repository management application
-
+[](http://ci.gitlab.org/projects/1?ref=master)
## Application details
diff --git a/app/assets/images/home_icon.PNG b/app/assets/images/home_icon.PNG
deleted file mode 100644
index b1d60d5935760d7f7c448a6ea3e7270fe405a664..0000000000000000000000000000000000000000
Binary files a/app/assets/images/home_icon.PNG and /dev/null differ
diff --git a/app/assets/images/icon-attachment.png b/app/assets/images/icon-attachment.png
deleted file mode 100644
index 168ad8dce3765ac98968def2101ba9f298e9f637..0000000000000000000000000000000000000000
Binary files a/app/assets/images/icon-attachment.png and /dev/null differ
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index 8a7e08dd0e8f30ce06968184679f865c3895cf01..919c6b7f4a2dcb3c4de41dc37d3099825e822f68 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -20,12 +20,12 @@ var NoteList = {
if(NoteList.reversed) {
var form = $(".js-main-target-form");
- form.find(".buttons, .note_options").hide();
+ form.find(".note-form-actions").hide();
var textarea = form.find(".js-note-text");
textarea.css("height", "40px");
textarea.on("focus", function(){
textarea.css("height", "80px");
- form.find(".buttons, .note_options").show();
+ form.find(".note-form-actions").show();
});
}
diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss
index 1884c39bc61f6919b1c7b845ab4258382f4096fe..c9a11d0a1acf5efce28dc524998701cd7324218c 100644
--- a/app/assets/stylesheets/common.scss
+++ b/app/assets/stylesheets/common.scss
@@ -338,10 +338,6 @@ li.note {
li {
border-bottom:none !important;
}
- .attachment {
- padding-left: 20px;
- background:url("icon-attachment.png") no-repeat left center;
- }
}
}
diff --git a/app/assets/stylesheets/gitlab_bootstrap.scss b/app/assets/stylesheets/gitlab_bootstrap.scss
index f53e0e50bab2cb1343291e489a2dc82d3ca1f99d..2ad1bf944a94bdcaa170c412716893936fd79951 100644
--- a/app/assets/stylesheets/gitlab_bootstrap.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap.scss
@@ -17,6 +17,8 @@ $baseLineHeight: 18px !default;
@import "gitlab_bootstrap/variables.scss";
@import "gitlab_bootstrap/fonts.scss";
@import "gitlab_bootstrap/mixins.scss";
+@import "gitlab_bootstrap/avatar.scss";
+@import "gitlab_bootstrap/nav.scss";
@import "gitlab_bootstrap/common.scss";
@import "gitlab_bootstrap/typography.scss";
@import "gitlab_bootstrap/buttons.scss";
diff --git a/app/assets/stylesheets/gitlab_bootstrap/avatar.scss b/app/assets/stylesheets/gitlab_bootstrap/avatar.scss
new file mode 100644
index 0000000000000000000000000000000000000000..de1fb1551bf74da2c74f48044b6d5179acf4ffce
--- /dev/null
+++ b/app/assets/stylesheets/gitlab_bootstrap/avatar.scss
@@ -0,0 +1,8 @@
+/** AVATARS **/
+img.avatar { float: left; margin-right: 12px; width: 40px; border: 1px solid #ddd; padding: 1px; }
+img.avatar.s16 { width: 16px; height: 16px; margin-right: 6px; }
+img.avatar.s24 { width: 24px; height: 24px; margin-right: 8px; }
+img.avatar.s32 { width: 32px; height: 32px; margin-right: 10px; }
+img.avatar.s90 { width: 90px; height: 90px; margin-right: 15px; }
+img.lil_av { padding-left: 4px; padding-right: 3px; }
+img.small { width: 80px; }
diff --git a/app/assets/stylesheets/gitlab_bootstrap/blocks.scss b/app/assets/stylesheets/gitlab_bootstrap/blocks.scss
index 8cb1c045778ef3aa8b990c6fae0fc34fe4dbbbdd..4d1b64463629168abed98373526e8a5946afc12a 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/blocks.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/blocks.scss
@@ -95,7 +95,11 @@
form {
margin-bottom: 0;
- margin-top: 3px;
+ margin-top: 0;
+ }
+
+ .btn-tiny {
+ @include box-shadow(0 0px 0px 1px #f1f1f1);
}
.nav-pills {
diff --git a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss
index 674481e2cd243528a59ce04b2fcceaaa1e6584ae..03497e32d267c1c9dd4b4282dce7d59fdcd83a89 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss
@@ -1,17 +1,16 @@
.btn {
- @include linear-gradient(#f7f7f7, #d5d5d5);
+ @include linear-gradient(#f1f1f1, #e1e1e1);
+ text-shadow: 0 1px 1px #FFF;
border-color: #BBB;
+
&:hover {
- @include bg-gray-gradient;
- border-color: #bbb;
+ background: #f1f1f1;
+ @include linear-gradient(#fAfAfA, #f1f1f1);
+ border-color: #AAA;
color: #333;
}
- &.btn-white {
- background: #FFF;
- }
-
- &.primary {
+ &.btn-primary {
background: #2a79A3;
@include linear-gradient(#47A7b7, #2585b5);
border-color: #2A79A3;
@@ -58,21 +57,18 @@
}
}
- &.save-btn {
+ &.btn-create {
@extend .wide;
- @extend .primary;
+ @extend .success;
}
- &.cancel-btn {
- float: right;
- }
-
- &.wide {
- padding-left: 30px;
- padding-right: 30px;
+ &.btn-save {
+ @extend .wide;
+ @extend .btn-primary;
}
- &.danger {
+ &.btn-close,
+ &.btn-remove {
@extend .btn-danger;
border-color: #BD362F;
@@ -82,8 +78,13 @@
}
}
- &.danger {
- @extend .btn-danger;
+ &.btn-cancel {
+ float: right;
+ }
+
+ &.wide {
+ padding-left: 20px;
+ padding-right: 20px;
}
&.small {
@@ -95,7 +96,7 @@
background-color: #ccc;
}
- &.very_small {
+ &.btn-tiny {
font-size: 11px;
padding: 2px 6px;
line-height: 16px;
diff --git a/app/assets/stylesheets/gitlab_bootstrap/common.scss b/app/assets/stylesheets/gitlab_bootstrap/common.scss
index f6b4881658c7852face8a84335e4de2a99eea30a..cb292bc711fa14123278a3e0bf3590752ebcd97b 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/common.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/common.scss
@@ -9,7 +9,6 @@
/** COMMON CLASSES **/
.left { float:left }
-.right { float:right!important }
.append-bottom-10 { margin-bottom:10px }
.append-bottom-20 { margin-bottom:20px }
.prepend-top-10 { margin-top:10px }
@@ -22,82 +21,13 @@
.light { color: #888 }
.tiny { font-weight: normal }
-/** PILLS & TABS**/
-.nav-pills {
- .active a {
- background: $primary_color;
- }
-
- > li > a {
- @include border-radius(0);
- }
- &.nav-stacked {
- > li > a {
- border-left: 4px solid #EEE;
- padding: 12px;
- }
- > .active > a {
- border-color: #29B;
- border-radius: 0;
- background: #F1F1F1;
- color: $style_color;
- font-weight: bold;
- }
- }
-}
-
-.nav-pills > .active > a > i[class^="icon-"] { background: inherit; }
-
-
-
-/**
- * nav-tabs
- *
- */
-.nav-tabs > li > a, .nav-pills > li > a { color: $style_color; }
-.nav.nav-tabs {
- li {
- > a {
- padding: 8px 20px;
- margin-right: 7px;
- line-height: 20px;
- border-color: #EEE;
- color: #888;
- border-bottom: 1px solid #ddd;
- .badge {
- background-color: #eee;
- color: #888;
- text-shadow: 0 1px 1px #fff;
- }
- i[class^="icon-"] {
- line-height: 14px;
- }
- }
- &.active {
- > a {
- border-color: #CCC;
- border-bottom: 1px solid #fff;
- color: #333;
- }
- }
- }
-
- &.nav-small-tabs > li > a { padding: 6px 9px; }
-}
/** ALERT MESSAGES **/
-.alert-message { @extend .alert; }
-.alert-messag.success { @extend .alert-success; }
-.alert-message.error { @extend .alert-error; }
-
-/** AVATARS **/
-img.avatar { float: left; margin-right: 12px; width: 40px; border: 1px solid #ddd; padding: 1px; }
-img.avatar.s16 { width: 16px; height: 16px; margin-right: 6px; }
-img.avatar.s24 { width: 24px; height: 24px; margin-right: 8px; }
-img.avatar.s32 { width: 32px; height: 32px; margin-right: 10px; }
-img.avatar.s90 { width: 90px; height: 90px; margin-right: 15px; }
-img.lil_av { padding-left: 4px; padding-right: 3px; }
-img.small { width: 80px; }
+.alert.alert-disabled {
+ background: #EEE;
+ color: #777;
+ border-color: #DDD;
+}
/** HELPERS **/
.nothing_here_message {
diff --git a/app/assets/stylesheets/gitlab_bootstrap/nav.scss b/app/assets/stylesheets/gitlab_bootstrap/nav.scss
new file mode 100644
index 0000000000000000000000000000000000000000..2eaef61ca333bf7f9a8d3a39c7ccb76a05aaf944
--- /dev/null
+++ b/app/assets/stylesheets/gitlab_bootstrap/nav.scss
@@ -0,0 +1,65 @@
+/**
+ * nav-pills
+ *
+ */
+.nav-pills {
+ .active a {
+ background: $primary_color;
+ }
+
+ > li > a {
+ @include border-radius(0);
+ }
+ &.nav-stacked {
+ > li > a {
+ border-left: 4px solid #EEE;
+ padding: 12px;
+ }
+ > .active > a {
+ border-color: #29B;
+ border-radius: 0;
+ background: #F1F1F1;
+ color: $style_color;
+ font-weight: bold;
+ }
+ }
+}
+
+.nav-pills > .active > a > i[class^="icon-"] { background: inherit; }
+
+
+
+/**
+ * nav-tabs
+ *
+ */
+.nav-tabs > li > a, .nav-pills > li > a { color: $style_color; }
+.nav.nav-tabs {
+ li {
+ > a {
+ padding: 8px 20px;
+ margin-right: 7px;
+ line-height: 20px;
+ border-color: #EEE;
+ color: #888;
+ border-bottom: 1px solid #ddd;
+ .badge {
+ background-color: #eee;
+ color: #888;
+ text-shadow: 0 1px 1px #fff;
+ }
+ i[class^="icon-"] {
+ line-height: 14px;
+ }
+ }
+ &.active {
+ > a {
+ border-color: #CCC;
+ border-bottom: 1px solid #fff;
+ color: #333;
+ }
+ }
+ }
+
+ &.nav-small-tabs > li > a { padding: 6px 9px; }
+}
diff --git a/app/assets/stylesheets/sections/events.scss b/app/assets/stylesheets/sections/events.scss
index 7472cb093263e401b902ae5ec12af58657198663..ff8101471783b9f777a0b629c3c87257caa2cd92 100644
--- a/app/assets/stylesheets/sections/events.scss
+++ b/app/assets/stylesheets/sections/events.scss
@@ -127,7 +127,7 @@
.btn-new-mr {
@extend .btn-info;
@extend .small;
- @extend .right;
+ @extend .pull-right;
margin: -3px;
}
}
diff --git a/app/assets/stylesheets/sections/nav.scss b/app/assets/stylesheets/sections/nav.scss
index bc19bc75a6797d0a95a99e01696913ba4560f222..50091cd7365f7a37618bf3ccf5dbc8cf4eb924b5 100644
--- a/app/assets/stylesheets/sections/nav.scss
+++ b/app/assets/stylesheets/sections/nav.scss
@@ -6,8 +6,7 @@ ul.main_menu {
margin: auto;
margin: 30px 0;
margin-top: 10px;
- border-bottom: 1px solid #DDD;
- height: 37px;
+ height: 38px;
position: relative;
overflow: hidden;
.count {
@@ -33,6 +32,7 @@ ul.main_menu {
margin: 0;
display: table-cell;
width: 1%;
+ border-bottom: 2px solid #EEE;
&.active {
border-bottom: 2px solid #474D57;
a {
@@ -42,10 +42,8 @@ ul.main_menu {
&.home {
a {
- background: url(home_icon.PNG) no-repeat center center;
- text-indent:-9999px;
- min-width: 20px;
- img {
+ i {
+ font-size: 20px;
position: relative;
top: 4px;
}
@@ -56,7 +54,7 @@ ul.main_menu {
display: block;
text-align: center;
font-weight: normal;
- height: 35px;
+ height: 36px;
line-height: 36px;
color: #777;
text-shadow: 0 1px 1px white;
diff --git a/app/assets/stylesheets/sections/notes.scss b/app/assets/stylesheets/sections/notes.scss
index 7a1cc444e5d920b5d2f0d007ae7de1d9fe46e960..648cb210e9cbf4f772d9faaf97cd6253f78599c2 100644
--- a/app/assets/stylesheets/sections/notes.scss
+++ b/app/assets/stylesheets/sections/notes.scss
@@ -81,14 +81,6 @@ ul.notes {
.attachment {
font-size: 14px;
margin-top: -20px;
-
- .icon-attachment {
- @extend .icon-paper-clip;
- font-size: 24px;
- position: relative;
- text-align: right;
- top: 6px;
- }
}
.note-body {
margin-left: 45px;
@@ -214,9 +206,11 @@ ul.notes {
* Note Form
*/
-.comment-btn,
+.comment-btn {
+ @extend .btn-create;
+}
.reply-btn {
- @extend .save-btn;
+ @extend .btn-primary;
}
.file .content tr.line_holder:hover > td { background: $hover !important; }
.file .content tr.line_holder:hover > td .line_note_link {
@@ -227,11 +221,6 @@ ul.notes {
.discussion {
.new_note {
margin: 8px 5px 8px 0;
-
- .note_options {
- // because of the smaller width and the extra "cancel" button
- margin-top: 8px;
- }
}
}
.new_note {
@@ -244,37 +233,6 @@ ul.notes {
.clearfix {
margin-bottom: 0;
}
- .note_options {
- h6 {
- @extend .left;
- line-height: 20px;
- padding-right: 16px;
- padding-bottom: 16px;
- }
- label {
- padding: 0;
- }
-
- .attachment {
- @extend .right;
- position: relative;
- width: 350px;
- height: 50px;
- margin:0 0 5px !important;
-
- // hide the actual file field
- input {
- display: none;
- }
-
- .choose-btn {
- float: right;
- }
- }
- .notify_options {
- @extend .right;
- }
- }
.note_text_and_preview {
// makes the "absolute" position for links relative to this
position: relative;
@@ -313,3 +271,17 @@ ul.notes {
@extend .thumbnail;
margin-left: 45px;
}
+
+
+.note-form-actions {
+ background: #F9F9F9;
+ height: 45px;
+ padding: 0 5px;
+
+ .note-form-option {
+ margin-top: 8px;
+ margin-left: 15px;
+ @extend .pull-left;
+ @extend .span4;
+ }
+}
diff --git a/app/assets/stylesheets/sections/projects.scss b/app/assets/stylesheets/sections/projects.scss
index b6db65adff14d70f975961f8f636e3bd7248b6b9..28df1b5ac28dfe6f3029d253f75f32033bc88158 100644
--- a/app/assets/stylesheets/sections/projects.scss
+++ b/app/assets/stylesheets/sections/projects.scss
@@ -4,7 +4,7 @@
}
.side {
- @extend .right;
+ @extend .pull-right;
.projects_box {
> .title {
diff --git a/app/controllers/graph_controller.rb b/app/controllers/graph_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..30ec5e89db2e99bee4695b546a4b4bd946f6667a
--- /dev/null
+++ b/app/controllers/graph_controller.rb
@@ -0,0 +1,18 @@
+class GraphController < ProjectResourceController
+ include ExtractsPath
+
+ # Authorize
+ before_filter :authorize_read_project!
+ before_filter :authorize_code_access!
+ before_filter :require_non_empty_project
+
+ def show
+ respond_to do |format|
+ format.html
+ format.json do
+ graph = Gitlab::Graph::JsonBuilder.new(project, @ref)
+ render :json => graph.to_json
+ end
+ end
+ end
+end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 6e5e1f91381d1a1595f81a77d068e87aa60f5868..7978ea6222c469a01bfa7633363058d941f92a1f 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -90,16 +90,6 @@ class ProjectsController < ProjectResourceController
end
end
- def graph
- respond_to do |format|
- format.html
- format.json do
- graph = Gitlab::Graph::JsonBuilder.new(project)
- render :json => graph.to_json
- end
- end
- end
-
def destroy
return access_denied! unless can?(current_user, :remove_project, project)
diff --git a/app/controllers/refs_controller.rb b/app/controllers/refs_controller.rb
index 09d9eb51b8241ac01623643069a410396c0873a6..0e4dba3dc4b0074ae4d965b15a6979551aa69556 100644
--- a/app/controllers/refs_controller.rb
+++ b/app/controllers/refs_controller.rb
@@ -13,6 +13,8 @@ class RefsController < ProjectResourceController
format.html do
new_path = if params[:destination] == "tree"
project_tree_path(@project, (@ref + "/" + params[:path]))
+ elsif params[:destination] == "graph"
+ project_graph_path(@project, @ref)
else
project_commits_path(@project, @ref)
end
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb
index 111982e9147ed5627ca4fda209f25d11263529ab..1a3d34eb886c672b4f66eb79a2e4e297582788c3 100644
--- a/app/helpers/gitlab_markdown_helper.rb
+++ b/app/helpers/gitlab_markdown_helper.rb
@@ -13,7 +13,13 @@ module GitlabMarkdownHelper
def link_to_gfm(body, url, html_options = {})
return "" if body.blank?
- gfm_body = gfm(escape_once(body), html_options)
+ escaped_body = if body =~ /^\
.*?}m) do |match|
"#{match}#{link_to("", url, html_options)[0..-5]}" # "".length +1
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 4f0a80710cbd74be16636a96609981e1af4f8a1e..05303e86ae8977143a6730022007c09b48127119 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -43,7 +43,7 @@ module ProjectsHelper
tm = project.team_member_by_id(author)
if tm
- link_to author_html, project_team_member_path(project, tm), class: "author_link"
+ link_to author_html, project_team_member_path(project, tm.user_username), class: "author_link"
else
author_html
end.html_safe
diff --git a/app/models/project.rb b/app/models/project.rb
index dde1592780899d486ec015f856e1547953d036f7..6a3d7ab15d264b8f83aec0d579e63a784bf03aac 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -8,7 +8,6 @@
# description :text
# created_at :datetime not null
# updated_at :datetime not null
-# private_flag :boolean default(TRUE), not null
# creator_id :integer
# default_branch :string(255)
# issues_enabled :boolean default(TRUE), not null
@@ -16,6 +15,7 @@
# merge_requests_enabled :boolean default(TRUE), not null
# wiki_enabled :boolean default(TRUE), not null
# namespace_id :integer
+# public :boolean default(FALSE), not null
#
require "grit"
diff --git a/app/models/user.rb b/app/models/user.rb
index 5a95deec53d0844aa49d70ec6ff0ca3f7242219f..5b0df09a439780bbcc90ae731ffabb3e8af6bac6 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -31,6 +31,8 @@
# extern_uid :string(255)
# provider :string(255)
# username :string(255)
+# can_create_group :boolean default(TRUE), not null
+# can_create_team :boolean default(TRUE), not null
#
class User < ActiveRecord::Base
diff --git a/app/models/user_team.rb b/app/models/user_team.rb
index b28a6a041ac75ecee5bdc4aafdd6e6305f5418a6..dc8cf9eeb22dede1712ef000cd49f72544a99843 100644
--- a/app/models/user_team.rb
+++ b/app/models/user_team.rb
@@ -1,3 +1,15 @@
+# == Schema Information
+#
+# Table name: user_teams
+#
+# id :integer not null, primary key
+# name :string(255)
+# path :string(255)
+# owner_id :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
class UserTeam < ActiveRecord::Base
attr_accessible :name, :owner_id, :path
diff --git a/app/models/user_team_project_relationship.rb b/app/models/user_team_project_relationship.rb
index 1b0368c7eccb6864ebc672a7e4492ca8e7be0d4c..a7aa88970c77f5faeeed7534d4dc5ea48032d828 100644
--- a/app/models/user_team_project_relationship.rb
+++ b/app/models/user_team_project_relationship.rb
@@ -1,3 +1,15 @@
+# == Schema Information
+#
+# Table name: user_team_project_relationships
+#
+# id :integer not null, primary key
+# project_id :integer
+# user_team_id :integer
+# greatest_access :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
class UserTeamProjectRelationship < ActiveRecord::Base
attr_accessible :greatest_access, :project_id, :user_team_id
diff --git a/app/models/user_team_user_relationship.rb b/app/models/user_team_user_relationship.rb
index 63bdc49e5b6f3e18f0210a4bebb2ae628acbaa7a..1f7e2625f5f4665472270932068b963521fa2846 100644
--- a/app/models/user_team_user_relationship.rb
+++ b/app/models/user_team_user_relationship.rb
@@ -1,3 +1,16 @@
+# == Schema Information
+#
+# Table name: user_team_user_relationships
+#
+# id :integer not null, primary key
+# user_id :integer
+# user_team_id :integer
+# group_admin :boolean
+# permission :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
class UserTeamUserRelationship < ActiveRecord::Base
attr_accessible :group_admin, :permission, :user_id, :user_team_id
diff --git a/app/models/users_project.rb b/app/models/users_project.rb
index 183878cb30c39ee5a4b9575cc3759382b5f69103..94edfd9eddfbd4f1a3c91a6bf69907664c26df61 100644
--- a/app/models/users_project.rb
+++ b/app/models/users_project.rb
@@ -33,7 +33,7 @@ class UsersProject < ActiveRecord::Base
validates :project_access, inclusion: { in: [GUEST, REPORTER, DEVELOPER, MASTER] }, presence: true
validates :project, presence: true
- delegate :name, :email, to: :user, prefix: true
+ delegate :name, :username, :email, to: :user, prefix: true
scope :guests, where(project_access: GUEST)
scope :reporters, where(project_access: REPORTER)
diff --git a/app/observers/key_observer.rb b/app/observers/key_observer.rb
index bf5fa647647d9d628ef7bae009525246fd5261c8..44e78643d830b073fce56643706122f994a5675b 100644
--- a/app/observers/key_observer.rb
+++ b/app/observers/key_observer.rb
@@ -2,11 +2,21 @@ class KeyObserver < ActiveRecord::Observer
include Gitolited
def after_save(key)
- gitolite.set_key(key.identifier, key.key, key.projects)
+ GitoliteWorker.perform_async(
+ :set_key,
+ key.identifier,
+ key.key,
+ key.projects.map(&:id)
+ )
end
def after_destroy(key)
return if key.is_deploy_key && !key.last_deploy?
- gitolite.remove_key(key.identifier, key.projects)
+
+ GitoliteWorker.perform_async(
+ :remove_key,
+ key.identifier,
+ key.projects.map(&:id)
+ )
end
end
diff --git a/app/observers/project_observer.rb b/app/observers/project_observer.rb
index cc454ae3e353a70dc380873cdba471f9e77e634b..ccdb146140b426eea186d4cf5e6f20d3c1c92d7f 100644
--- a/app/observers/project_observer.rb
+++ b/app/observers/project_observer.rb
@@ -15,7 +15,7 @@ class ProjectObserver < ActiveRecord::Observer
end
def after_create project
- log_info("#{project.owner.name} created a new project \"#{project.name}\"")
+ log_info("#{project.owner.name} created a new project \"#{project.name_with_namespace}\"")
end
protected
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index 9a5e7edea0fd4281c2eb74fcafe487319b4e677c..46a876294ceb745f93098bfe2b8fdc147bcb2d51 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -6,7 +6,7 @@
= link_to admin_projects_path do
%h1= Project.count
%hr
- = link_to 'New Project', new_project_path, class: "btn small"
+ = link_to 'New Project', new_project_path, class: "btn btn-small"
.span4
.ui-box
%h5.title Groups
@@ -14,7 +14,7 @@
= link_to admin_groups_path do
%h1= Group.count
%hr
- = link_to 'New Group', new_admin_group_path, class: "btn small"
+ = link_to 'New Group', new_admin_group_path, class: "btn btn-small"
.span4
.ui-box
%h5.title Users
@@ -22,7 +22,7 @@
= link_to admin_users_path do
%h1= User.count
%hr
- = link_to 'New User', new_admin_user_path, class: "btn small"
+ = link_to 'New User', new_admin_user_path, class: "btn btn-small"
.row
.span4
@@ -31,7 +31,7 @@
- @projects.each do |project|
%p
= link_to project.name_with_namespace, [:admin, project]
- %span.light.right
+ %span.light.pull-right
= time_ago_in_words project.created_at
ago
@@ -42,7 +42,7 @@
%p
= link_to [:admin, user] do
= user.name
- %span.light.right
+ %span.light.pull-right
= time_ago_in_words user.created_at
ago
@@ -51,25 +51,25 @@
%hr
%p
Issues
- %span.light.right
+ %span.light.pull-right
= Issue.count
%p
Merge Requests
- %span.light.right
+ %span.light.pull-right
= MergeRequest.count
%p
Notes
- %span.light.right
+ %span.light.pull-right
= Note.count
%p
Snippets
- %span.light.right
+ %span.light.pull-right
= Snippet.count
%p
SSH Keys
- %span.light.right
+ %span.light.pull-right
= Key.count
%p
Milestones
- %span.light.right
+ %span.light.pull-right
= Milestone.count
diff --git a/app/views/admin/groups/edit.html.haml b/app/views/admin/groups/edit.html.haml
index 901d07e74f36371212e4d97b49e5aa1a8cd5a9e1..dce044956c36558805fd007e125a70cbdb3acf75 100644
--- a/app/views/admin/groups/edit.html.haml
+++ b/app/views/admin/groups/edit.html.haml
@@ -2,7 +2,7 @@
%hr
= form_for [:admin, @group] do |f|
- if @group.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @group.errors.full_messages.first
.clearfix.group_name_holder
= f.label :name do
@@ -24,5 +24,5 @@
%li It will change the git path to repositories under this group.
.form-actions
- = f.submit 'Rename group', class: "btn danger"
- = link_to 'Cancel', admin_groups_path, class: "btn cancel-btn"
+ = f.submit 'Rename group', class: "btn btn-remove"
+ = link_to 'Cancel', admin_groups_path, class: "btn btn-cancel"
diff --git a/app/views/admin/groups/index.html.haml b/app/views/admin/groups/index.html.haml
index 49acedc8c79979413016533633ce36a5c90d45e0..25ce66575bfa79def312b6315fcfa9b0dbea7ce2 100644
--- a/app/views/admin/groups/index.html.haml
+++ b/app/views/admin/groups/index.html.haml
@@ -4,11 +4,11 @@
allows you to keep projects organized.
Use groups for uniting related projects.
- = link_to 'New Group', new_admin_group_path, class: "btn small right"
+ = link_to 'New Group', new_admin_group_path, class: "btn btn-small pull-right"
%br
= form_tag admin_groups_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge"
- = submit_tag "Search", class: "btn submit primary"
+ = submit_tag "Search", class: "btn submit btn-primary"
%table
%thead
@@ -30,6 +30,6 @@
%td
= link_to group.owner_name, admin_user_path(group.owner_id)
%td.bgred
- = link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small"
- = link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger"
+ = link_to 'Rename', 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"
diff --git a/app/views/admin/groups/new.html.haml b/app/views/admin/groups/new.html.haml
index 6ff0e781d1740461cbb40d9e9b6f0e8859a9edf8..60c6fa5ad090683891ccc8b4792f9fe607ce7496 100644
--- a/app/views/admin/groups/new.html.haml
+++ b/app/views/admin/groups/new.html.haml
@@ -2,7 +2,7 @@
%hr
= form_for [:admin, @group] do |f|
- if @group.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @group.errors.full_messages.first
.clearfix
= f.label :name do
@@ -10,7 +10,7 @@
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
- = f.submit 'Create group', class: "btn primary"
+ = f.submit 'Create group', class: "btn btn-primary"
%hr
.padded
%ul
diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml
index e347f916c4fb750439ef33cc789858b58d53de43..6ae8a75d696992efd65e7e1cf812d50b5714e7a3 100644
--- a/app/views/admin/groups/show.html.haml
+++ b/app/views/admin/groups/show.html.haml
@@ -14,7 +14,7 @@
%td
= @group.name
- = link_to edit_admin_group_path(@group), class: "btn btn-small right" do
+ = link_to edit_admin_group_path(@group), class: "btn btn-small pull-right" do
%i.icon-edit
Rename
%tr
@@ -29,7 +29,7 @@
Owner:
%td
= @group.owner_name
- .right
+ .pull-right
= link_to "#", class: "btn btn-small change-owner-link" do
%i.icon-edit
Change owner
@@ -42,7 +42,7 @@
= form_for [:admin, @group] do |f|
= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
%div
- = f.submit 'Change Owner', class: "btn danger"
+ = f.submit 'Change Owner', class: "btn btn-remove"
= link_to "Cancel", "#", class: "btn change-owner-cancel-link"
- if @group.projects.any?
@@ -63,7 +63,7 @@
%span.monospace= project.path_with_namespace + ".git"
%td= project.users.count
%td.bgred
- = link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn danger small"
+ = link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn btn-remove small"
= form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do
%table.zebra-striped
@@ -88,7 +88,7 @@
%td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}
%tr
- %td= submit_tag 'Add user to projects in group', class: "btn primary"
+ %td= submit_tag 'Add user to projects in group', class: "btn btn-primary"
%td
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
@@ -110,7 +110,7 @@
.input
= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
.form-actions
- = submit_tag 'Add', class: "btn primary"
+ = submit_tag 'Add', class: "btn btn-primary"
:javascript
$(function(){
diff --git a/app/views/admin/hooks/index.html.haml b/app/views/admin/hooks/index.html.haml
index f17355fb2c2996f77851c7fa5704e50c454c52bb..acbf7a108b85d52168935a8fc33c689407ad619e 100644
--- a/app/views/admin/hooks/index.html.haml
+++ b/app/views/admin/hooks/index.html.haml
@@ -7,7 +7,7 @@
= form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f|
-if @hook.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
- @hook.errors.full_messages.each do |msg|
%p= msg
.clearfix
@@ -15,7 +15,7 @@
.input
= f.text_field :url, class: "text_field xxlarge"
- = f.submit "Add System Hook", class: "btn primary"
+ = f.submit "Add System Hook", class: "btn btn-primary"
%hr
-if @hooks.any?
@@ -33,7 +33,7 @@
%td
= link_to admin_hook_path(hook) do
%strong= hook.url
- = link_to 'Test Hook', admin_hook_test_path(hook), class: "btn small right"
+ = link_to 'Test Hook', admin_hook_test_path(hook), class: "btn btn-small pull-right"
%td POST
%td
- = link_to 'Remove', admin_hook_path(hook), confirm: 'Are you sure?', method: :delete, class: "danger btn small right"
+ = link_to 'Remove', admin_hook_path(hook), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove btn-small pull-right"
diff --git a/app/views/admin/logs/show.html.haml b/app/views/admin/logs/show.html.haml
index c8be2ffa43cd923fd2c0206af7e16ab3e5a3ad6d..9ddd781c6ec4656e317c43cbb0f3be4d5e48bf88 100644
--- a/app/views/admin/logs/show.html.haml
+++ b/app/views/admin/logs/show.html.haml
@@ -15,7 +15,7 @@
.file_title
%i.icon-file
githost.log
- .right
+ .pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
@@ -29,7 +29,7 @@
.file_title
%i.icon-file
application.log
- .right
+ .pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
@@ -43,7 +43,7 @@
.file_title
%i.icon-file
production.log
- .right
+ .pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
@@ -57,7 +57,7 @@
.file_title
%i.icon-file
sidekiq.log
- .right
+ .pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
diff --git a/app/views/admin/projects/_form.html.haml b/app/views/admin/projects/_form.html.haml
index 0c7cf68ef439334b80834e96481eb842d978345a..ebf69924a2590e744d821c889cb4e94e3d22f653 100644
--- a/app/views/admin/projects/_form.html.haml
+++ b/app/views/admin/projects/_form.html.haml
@@ -1,6 +1,6 @@
= form_for [:admin, project] do |f|
-if project.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- project.errors.full_messages.each do |msg|
%li= msg
@@ -65,8 +65,8 @@
.actions
- = f.submit 'Save Project', class: "btn save-btn"
- = link_to 'Cancel', admin_projects_path, class: "btn cancel-btn"
+ = f.submit 'Save Project', class: "btn btn-save"
+ = link_to 'Cancel', admin_projects_path, class: "btn btn-cancel"
diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml
index e47cda766369833b3867ef72fef4b95608ed6a90..15b2778252a367aa5e5f74b6062127cd3d8738c0 100644
--- a/app/views/admin/projects/index.html.haml
+++ b/app/views/admin/projects/index.html.haml
@@ -1,6 +1,6 @@
%h3.page_title
Projects
- = link_to 'New Project', new_project_path, class: "btn small right"
+ = link_to 'New Project', new_project_path, class: "btn btn-small pull-right"
%hr
@@ -37,7 +37,7 @@
.form-actions
- = submit_tag "Search", class: "btn submit primary"
+ = submit_tag "Search", class: "btn submit btn-primary"
= link_to "Reset", admin_projects_path, class: "btn"
.span8
.ui-box
@@ -51,9 +51,9 @@
- else
%i.icon-lock.cgreen
= link_to project.name_with_namespace, [:admin, project]
- .right
- = link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn small"
- = link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn small danger"
+ .pull-right
+ = link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
+ = link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
- if @projects.blank?
%p.nothing_here_message 0 projects matches
- else
diff --git a/app/views/admin/projects/members/_form.html.haml b/app/views/admin/projects/members/_form.html.haml
index f1bb6cfa226b249f3fdbdb9bfa8260382695a3aa..8041202980dabce7914b5b2dac95b7598637621a 100644
--- a/app/views/admin/projects/members/_form.html.haml
+++ b/app/views/admin/projects/members/_form.html.haml
@@ -1,6 +1,6 @@
= form_for @team_member_relation, as: :team_member, url: admin_project_member_path(@project, @member) do |f|
-if @team_member_relation.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @team_member_relation.errors.full_messages.each do |msg|
%li= msg
@@ -12,5 +12,5 @@
%br
.actions
- = f.submit 'Save', class: "btn primary"
+ = f.submit 'Save', class: "btn btn-primary"
= link_to 'Cancel', :back, class: "btn"
diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml
index a213c09d4569f73b7d56d2c81500eb355bc0cded..b9294bbafbe250e09eb558ff1b8a4542323cd44c 100644
--- a/app/views/admin/projects/show.html.haml
+++ b/app/views/admin/projects/show.html.haml
@@ -1,6 +1,6 @@
%h3.page_title
Project: #{@project.name_with_namespace}
- = link_to edit_admin_project_path(@project), class: "btn right" do
+ = link_to edit_admin_project_path(@project), class: "btn pull-right" do
%i.icon-edit
Edit
@@ -129,8 +129,8 @@
%td
= link_to tm.name, admin_user_path(tm)
%td= @project.project_access_human(tm)
- %td= link_to 'Edit Access', edit_admin_project_member_path(@project, tm), class: "btn small"
- %td= link_to 'Remove from team', admin_project_member_path(@project, tm), confirm: 'Are you sure?', method: :delete, class: "btn danger small"
+ %td= link_to 'Edit Access', edit_admin_project_member_path(@project, tm), class: "btn btn-small"
+ %td= link_to 'Remove from team', admin_project_member_path(@project, tm), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove small"
%br
%h5 Add new team member
@@ -147,7 +147,7 @@
%td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}
%tr
- %td= submit_tag 'Add', class: "btn primary"
+ %td= submit_tag 'Add', class: "btn btn-primary"
%td
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
diff --git a/app/views/admin/teams/edit.html.haml b/app/views/admin/teams/edit.html.haml
index b2499ef6b8b710e8f0cf56c0cf34a35f1633b0e2..9282398ce5bfbfa4be6754ceaaf3277fa1c980a5 100644
--- a/app/views/admin/teams/edit.html.haml
+++ b/app/views/admin/teams/edit.html.haml
@@ -2,7 +2,7 @@
%hr
= form_for @team, url: admin_team_path(@team), method: :put do |f|
- if @team.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @team.errors.full_messages.first
.clearfix.team_name_holder
= f.label :name do
@@ -19,5 +19,5 @@
%li It will change web url for access team and team projects.
.form-actions
- = f.submit 'Rename team', class: "btn danger"
- = link_to 'Cancel', admin_teams_path, class: "btn cancel-btn"
+ = f.submit 'Rename team', class: "btn btn-remove"
+ = link_to 'Cancel', admin_teams_path, class: "btn btn-cancel"
diff --git a/app/views/admin/teams/index.html.haml b/app/views/admin/teams/index.html.haml
index 3ab57448ab20506c40aaf73ee0318d55613c9e59..1f2f4763f76e4a2cd71ae6d346193177bbc4636a 100644
--- a/app/views/admin/teams/index.html.haml
+++ b/app/views/admin/teams/index.html.haml
@@ -3,12 +3,12 @@
%small
simple Teams description
- = link_to 'New Team', new_admin_team_path, class: "btn small right"
+ = link_to 'New Team', new_admin_team_path, class: "btn btn-small pull-right"
%br
= form_tag admin_teams_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge"
- = submit_tag "Search", class: "btn submit primary"
+ = submit_tag "Search", class: "btn submit btn-primary"
%table
%thead
@@ -32,7 +32,7 @@
%td
= link_to team.owner.name, admin_user_path(team.owner_id)
%td.bgred
- = link_to 'Rename', edit_admin_team_path(team), id: "edit_#{dom_id(team)}", class: "btn small"
- = link_to 'Destroy', admin_team_path(team), confirm: "REMOVE #{team.name}? Are you sure?", method: :delete, class: "btn small danger"
+ = link_to 'Rename', 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"
diff --git a/app/views/admin/teams/members/_form.html.haml b/app/views/admin/teams/members/_form.html.haml
index b75d788a94aa4e127d23d2ee2ff7d16b2c9e5c77..f1388aab4bbf82cef500b5de5da583bb82df153d 100644
--- a/app/views/admin/teams/members/_form.html.haml
+++ b/app/views/admin/teams/members/_form.html.haml
@@ -1,6 +1,6 @@
= form_tag admin_team_member_path(@team, @member), method: :put do
-if @member.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @member.errors.full_messages.each do |msg|
%li= msg
@@ -16,5 +16,5 @@
%br
.actions
- = submit_tag 'Save', class: "btn primary"
+ = submit_tag 'Save', class: "btn btn-primary"
= link_to 'Cancel', :back, class: "btn"
diff --git a/app/views/admin/teams/members/new.html.haml b/app/views/admin/teams/members/new.html.haml
index 066ab19fd084935d53981f24e69d1c4a88d26699..a37c941db5351b79603dfb7bf9c6d3d3929d885b 100644
--- a/app/views/admin/teams/members/new.html.haml
+++ b/app/views/admin/teams/members/new.html.haml
@@ -26,4 +26,4 @@
%td
%span= check_box_tag :group_admin
%span Admin?
- %td= submit_tag 'Add', class: "btn primary", id: :add_members_to_team
+ %td= submit_tag 'Add', class: "btn btn-primary", id: :add_members_to_team
diff --git a/app/views/admin/teams/new.html.haml b/app/views/admin/teams/new.html.haml
index a40a2c4ebf953ef9ffc78507c9dd7e9d3b635045..5d55a7975eecb477afb2e2612639b02c9730029e 100644
--- a/app/views/admin/teams/new.html.haml
+++ b/app/views/admin/teams/new.html.haml
@@ -2,7 +2,7 @@
%hr
= form_for @team, url: admin_teams_path do |f|
- if @team.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @team.errors.full_messages.first
.clearfix
= f.label :name do
@@ -10,7 +10,7 @@
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
- = f.submit 'Create team', class: "btn primary"
+ = f.submit 'Create team', class: "btn btn-primary"
%hr
.padded
%ul
diff --git a/app/views/admin/teams/projects/_form.html.haml b/app/views/admin/teams/projects/_form.html.haml
index db4fe85b00086ae723f9f4507f4b41b136524c6b..5b79d518d42f24e9655b8485af1eb93f604518b2 100644
--- a/app/views/admin/teams/projects/_form.html.haml
+++ b/app/views/admin/teams/projects/_form.html.haml
@@ -1,6 +1,6 @@
= form_tag admin_team_project_path(@team, @project), method: :put do
-if @project.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @project.errors.full_messages.each do |msg|
%li= msg
@@ -12,5 +12,5 @@
%br
.actions
- = submit_tag 'Save', class: "btn primary"
+ = submit_tag 'Save', class: "btn btn-primary"
= link_to 'Cancel', :back, class: "btn"
diff --git a/app/views/admin/teams/projects/new.html.haml b/app/views/admin/teams/projects/new.html.haml
index 8a0a18a48c07db33f7cb2175a2f71d627d67fbbd..b60dad35214f9a793568f1166a8c5c0c8e9011af 100644
--- a/app/views/admin/teams/projects/new.html.haml
+++ b/app/views/admin/teams/projects/new.html.haml
@@ -20,4 +20,4 @@
%tr
%td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
%td= select_tag :greatest_project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3" }
- %td= submit_tag 'Add', class: "btn primary", id: :assign_projects_to_team
+ %td= submit_tag 'Add', class: "btn btn-primary", id: :assign_projects_to_team
diff --git a/app/views/admin/teams/show.html.haml b/app/views/admin/teams/show.html.haml
index 6a1deaff9893aa6540fe27c64d7080e2db8f1d29..e5d079981c0f9b98d1c658ac09256e0144f2c21e 100644
--- a/app/views/admin/teams/show.html.haml
+++ b/app/views/admin/teams/show.html.haml
@@ -14,7 +14,7 @@
%td
= @team.name
- = link_to edit_admin_team_path(@team), class: "btn btn-small right" do
+ = link_to edit_admin_team_path(@team), class: "btn btn-small pull-right" do
%i.icon-edit
Rename
%tr
@@ -23,7 +23,7 @@
Owner:
%td
= @team.owner.name
- .right
+ .pull-right
= link_to "#", class: "btn btn-small change-owner-link" do
%i.icon-edit
Change owner
@@ -36,13 +36,13 @@
= form_for @team, url: admin_team_path(@team) do |f|
= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
%div
- = f.submit 'Change Owner', class: "btn danger"
+ = f.submit 'Change Owner', class: "btn btn-remove"
= link_to "Cancel", "#", class: "btn change-owner-cancel-link"
%fieldset
%legend
Members (#{@team.members.count})
- %span= link_to 'Add members', new_admin_team_member_path(@team), class: "btn success small right", id: :add_members_to_team
+ %span= link_to 'Add members', new_admin_team_member_path(@team), class: "btn btn-primary btn-small pull-right", id: :add_members_to_team
- if @team.members.any?
%table#members_list
%thead
@@ -60,14 +60,14 @@
%td= @team.human_default_projects_access(member)
%td= @team.admin?(member) ? "Admin" : "Member"
%td.bgred
- = link_to 'Edit', edit_admin_team_member_path(@team, member), class: "btn small"
+ = link_to 'Edit', edit_admin_team_member_path(@team, member), class: "btn btn-small"
- = link_to 'Remove', admin_team_member_path(@team, member), confirm: 'Remove member from team. Are you sure?', method: :delete, class: "btn danger small", id: "remove_member_#{member.id}"
+ = link_to 'Remove', admin_team_member_path(@team, member), confirm: 'Remove member from team. Are you sure?', method: :delete, class: "btn btn-remove btn-small", id: "remove_member_#{member.id}"
%fieldset
%legend
Projects (#{@team.projects.count})
- %span= link_to 'Add projects', new_admin_team_project_path(@team), class: "btn success small right", id: :assign_projects_to_team
+ %span= link_to 'Add projects', new_admin_team_project_path(@team), class: "btn btn-primary btn-small pull-right", id: :assign_projects_to_team
- if @team.projects.any?
%table#projects_list
%thead
@@ -82,9 +82,9 @@
%td
%span= @team.human_max_project_access(project)
%td.bgred
- = link_to 'Edit', edit_admin_team_project_path(@team, project), class: "btn small"
+ = link_to 'Edit', edit_admin_team_project_path(@team, project), class: "btn btn-small"
- = link_to 'Relegate', admin_team_project_path(@team, project), confirm: 'Remove project from team. Are you sure?', method: :delete, class: "btn danger small", id: "relegate_project_#{project.id}"
+ = link_to 'Relegate', admin_team_project_path(@team, project), confirm: 'Remove project from team. Are you sure?', method: :delete, class: "btn btn-remove small", id: "relegate_project_#{project.id}"
:javascript
$(function(){
diff --git a/app/views/admin/users/_form.html.haml b/app/views/admin/users/_form.html.haml
index 465568ade9efd098acd34b6c98ce65561043d69b..51b05c05993cf647530ffeea93da4546b4ad017e 100644
--- a/app/views/admin/users/_form.html.haml
+++ b/app/views/admin/users/_form.html.haml
@@ -63,10 +63,10 @@
.alert.alert-error
- if @admin_user.blocked
%p This user is blocked and is not able to login to GitLab
- = link_to 'Unblock User', unblock_admin_user_path(@admin_user), method: :put, class: "btn small"
+ = link_to 'Unblock User', unblock_admin_user_path(@admin_user), method: :put, class: "btn btn-small"
- else
%p Blocked users will be removed from all projects & will not be able to login to GitLab.
- = link_to 'Block User', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
+ = link_to 'Block User', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn btn-small btn-remove"
%fieldset
%legend Profile
.clearfix
@@ -80,8 +80,8 @@
.input= f.text_field :twitter
.actions
- = f.submit 'Save', class: "btn save-btn"
+ = f.submit 'Save', class: "btn btn-save"
- if @admin_user.new_record?
- = link_to 'Cancel', admin_users_path, class: "btn cancel-btn"
+ = link_to 'Cancel', admin_users_path, class: "btn btn-cancel"
- else
- = link_to 'Cancel', admin_user_path(@admin_user), class: "btn cancel-btn"
+ = link_to 'Cancel', admin_user_path(@admin_user), class: "btn btn-cancel"
diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml
index 87290abe7a64ad14eb60575bf038938edc0de459..87d6309aefdfb8d1d1a2b45716e0c1e61c6baf65 100644
--- a/app/views/admin/users/index.html.haml
+++ b/app/views/admin/users/index.html.haml
@@ -1,11 +1,11 @@
%h3.page_title
Users
- = link_to 'New User', new_admin_user_path, class: "btn small right"
+ = link_to 'New User', new_admin_user_path, class: "btn btn-small pull-right"
%br
= form_tag admin_users_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge"
- = submit_tag "Search", class: "btn submit primary"
+ = submit_tag "Search", class: "btn submit btn-primary"
%ul.nav.nav-tabs
%li{class: "#{'active' unless params[:filter]}"}
= link_to admin_users_path do
@@ -44,15 +44,15 @@
%td= user.username
%td= user.email
%td= user.users_projects.count
- %td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn small"
+ %td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn btn-small"
%td.bgred
- if user == current_user
%span.cred It's you!
- else
- if user.blocked
- = link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success"
+ = link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn btn-small success"
- else
- = link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
- = link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn small danger"
+ = link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn btn-small btn-remove"
+ = link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn btn-small btn-remove"
= paginate @admin_users, theme: "admin"
diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml
index d9d720dad76f0360fb153a5eef53610d81219e82..08201abd7d52b8a04e57cfb033b0f73352706e69 100644
--- a/app/views/admin/users/show.html.haml
+++ b/app/views/admin/users/show.html.haml
@@ -4,7 +4,7 @@
%small Blocked
- if @admin_user.admin
%small Administrator
- = link_to edit_admin_user_path(@admin_user), class: "btn right" do
+ = link_to edit_admin_user_path(@admin_user), class: "btn pull-right" do
%i.icon-edit
Edit
@@ -86,7 +86,7 @@
%td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3"
%tr
- %td= submit_tag 'Add', class: "btn primary"
+ %td= submit_tag 'Add', class: "btn btn-primary"
%td
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
@@ -123,5 +123,5 @@
%tr
%td= link_to project.name_with_namespace, admin_project_path(project)
%td= tm.project_access_human
- %td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn small"
- %td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn small danger"
+ %td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn btn-small"
+ %td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn btn-small btn-remove"
diff --git a/app/views/blame/_head.html.haml b/app/views/blame/_head.html.haml
index 85da18052b4aca1045b90c5f264fa060d4073299..ef9e6c9c53288280e7147b2f57b419ef3f150046 100644
--- a/app/views/blame/_head.html.haml
+++ b/app/views/blame/_head.html.haml
@@ -3,5 +3,5 @@
= render partial: 'shared/ref_switcher', locals: {destination: 'tree', path: params[:path]}
= nav_link(controller: :refs) do
= link_to 'Source', project_tree_path(@project, @ref)
- %li.right
+ %li.pull-right
= render "shared/clone_panel"
diff --git a/app/views/commit/huge_commit.html.haml b/app/views/commit/huge_commit.html.haml
index ba97a7c572c79b234fd1978c0ed80476e72e30e3..7f0bcf380375a18ab529ff072aae5b2a612b3c6f 100644
--- a/app/views/commit/huge_commit.html.haml
+++ b/app/views/commit/huge_commit.html.haml
@@ -1,3 +1,3 @@
= render "commits/commit_box"
-.alert-message.block-message.error
+.alert.alert-error
%h4 Commit diffs are too big to be displayed
diff --git a/app/views/commit/show.html.haml b/app/views/commit/show.html.haml
index 6bee6493ac63785000f457dc4772c36d00ddc7f0..485f2d1e67c6261e5a7ec27725cfca2d2e2ad464 100644
--- a/app/views/commit/show.html.haml
+++ b/app/views/commit/show.html.haml
@@ -1,6 +1,6 @@
= render "commits/commit_box"
-%p.right.cgray
+%p.pull-right.cgray
This commit has
%span.cgreen #{@commit.stats.additions} additions
and
diff --git a/app/views/commits/_commit_box.html.haml b/app/views/commits/_commit_box.html.haml
index 0544a1d10fee4a3f6bce9ecc37bd76b15bdca748..4c80c13ced14a481268f7e6ce4f839e154b46b9d 100644
--- a/app/views/commits/_commit_box.html.haml
+++ b/app/views/commits/_commit_box.html.haml
@@ -1,6 +1,6 @@
.ui-box.ui-box-show
.ui-box-head
- .right
+ .pull-right
- if @notes_count > 0
%span.btn.disabled.grouped
%i.icon-comment
@@ -13,7 +13,7 @@
%ul.dropdown-menu
%li= link_to "Email Patches", project_commit_path(@project, @commit, format: :patch)
%li= link_to "Plain Diff", project_commit_path(@project, @commit, format: :diff)
- = link_to project_tree_path(@project, @commit), class: "btn primary grouped" do
+ = link_to project_tree_path(@project, @commit), class: "btn btn-primary grouped" do
%span Browse Code »
%h3.commit-title.page_title
= gfm escape_once(@commit.title)
diff --git a/app/views/commits/_diffs.html.haml b/app/views/commits/_diffs.html.haml
index 9a9aed39b0821b77cbb6254163b5a0e011877ab6..76f9f267b4166f350f8976155e50a04e4600fa3e 100644
--- a/app/views/commits/_diffs.html.haml
+++ b/app/views/commits/_diffs.html.haml
@@ -1,7 +1,7 @@
- if @suppress_diff
- .alert-message.block-message
+ .alert.alert-block
%p
- %strong Warning! Large commit with more then #{Commit::DIFF_SAFE_SIZE} files changed.
+ %strong Warning! Large commit with more than #{Commit::DIFF_SAFE_SIZE} files changed.
%p To prevent performance issue we rejected diff information.
%p
But if you still want to see diff
@@ -25,7 +25,7 @@
%span= diff.old_path
- if @commit.prev_commit
- = link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn right view-file'} do
+ = link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn pull-right view-file'} do
View file @
%span.commit-short-id= @commit.short_id(6)
- else
@@ -33,7 +33,7 @@
- if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
%span.file-mode= "#{diff.a_mode} → #{diff.b_mode}"
- = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn very_small right view-file'} do
+ = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn btn-tiny pull-right view-file'} do
View file @
%span.commit-short-id= @commit.short_id(6)
diff --git a/app/views/commits/_head.html.haml b/app/views/commits/_head.html.haml
index a5f3fdf5c5e47170a0040b14ff33c4773b4acf49..02debe426fefefa84886887b6d840d6bfedfd97c 100644
--- a/app/views/commits/_head.html.haml
+++ b/app/views/commits/_head.html.haml
@@ -22,7 +22,7 @@
- if current_controller?(:commits) && current_user.private_token
- %li.right
+ %li.pull-right
%span.rss-icon
= link_to project_commits_path(@project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Feed" do
= image_tag "rss_ui.png", title: "feed"
diff --git a/app/views/compare/_form.html.haml b/app/views/compare/_form.html.haml
index 0915782dddc70d637ecac033a0678dc9d1523c28..7c0688a2287b8732d1ba716ccda28ff09aa0b3b1 100644
--- a/app/views/compare/_form.html.haml
+++ b/app/views/compare/_form.html.haml
@@ -19,7 +19,7 @@
= text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
.pull-left
- = submit_tag "Compare", class: "btn primary wide commits-compare-btn"
+ = submit_tag "Compare", class: "btn btn-primary wide commits-compare-btn"
- if @refs_are_same
.alert
%span Refs are the same
diff --git a/app/views/dashboard/_filter.html.haml b/app/views/dashboard/_filter.html.haml
index 4624af799487e5486fa7a630a24776d7d74f4d88..82e679d5927c422c0284bdb99f116e917b2f4cbf 100644
--- a/app/views/dashboard/_filter.html.haml
+++ b/app/views/dashboard/_filter.html.haml
@@ -25,9 +25,9 @@
%li{class: ("active" if params[:project_id] == project.id.to_s)}
= link_to dashboard_filter_path(entity, project_id: project.id) do
= project.name_with_namespace
- %small.right= entities_per_project(project, entity)
+ %small.pull-right= entities_per_project(project, entity)
%fieldset
%hr
- = link_to "Reset", dashboard_filter_path(entity), class: 'btn right'
+ = link_to "Reset", dashboard_filter_path(entity), class: 'btn pull-right'
diff --git a/app/views/dashboard/_groups.html.haml b/app/views/dashboard/_groups.html.haml
index f9774669d9a8f392ac355f2e250f2d0747ed9369..ba8d3029eaf4f5949d6f832961dc092ba6b712f4 100644
--- a/app/views/dashboard/_groups.html.haml
+++ b/app/views/dashboard/_groups.html.haml
@@ -4,8 +4,8 @@
%small
(#{groups.count})
- if current_user.can_create_group?
- %span.right
- = link_to new_group_path, class: "btn very_small info" do
+ %span.pull-right
+ = link_to new_group_path, class: "btn btn-tiny info" do
%i.icon-plus
New Group
%ul.well-list
@@ -13,6 +13,6 @@
%li
= link_to group_path(id: group.path), class: dom_class(group) do
%strong.well-title= truncate(group.name, length: 35)
- %span.right.light
+ %span.pull-right.light
- if group.owner == current_user
%i.icon-wrench
diff --git a/app/views/dashboard/_projects.html.haml b/app/views/dashboard/_projects.html.haml
index f2acd2b0b0c66ba636447bfcb69769a598d358a0..30fb726801452d5fe9e9b6b24c1451c4f7b7f280 100644
--- a/app/views/dashboard/_projects.html.haml
+++ b/app/views/dashboard/_projects.html.haml
@@ -4,8 +4,8 @@
%small
(#{@projects_count})
- if current_user.can_create_project?
- %span.right
- = link_to new_project_path, class: "btn very_small info" do
+ %span.pull-right
+ = link_to new_project_path, class: "btn btn-tiny info" do
%i.icon-plus
New Project
diff --git a/app/views/dashboard/_teams.html.haml b/app/views/dashboard/_teams.html.haml
index 5b2ea7a2384ce9d04c4077ae6e2743524d2af0fb..f56115856a741f55afab3662c7ed93184255f2c5 100644
--- a/app/views/dashboard/_teams.html.haml
+++ b/app/views/dashboard/_teams.html.haml
@@ -3,8 +3,8 @@
Teams
%small
(#{@teams.count})
- %span.right
- = link_to new_team_path, class: "btn very_small info" do
+ %span.pull-right
+ = link_to new_team_path, class: "btn btn-tiny info" do
%i.icon-plus
New Team
%ul.well-list
@@ -12,7 +12,7 @@
%li
= link_to team_path(id: team.path), class: dom_class(team) do
%strong.well-title= truncate(team.name, length: 35)
- %span.right.light
+ %span.pull-right.light
- if team.owner == current_user
%i.icon-wrench
- tm = current_user.user_team_user_relationships.find_by_user_team_id(team.id)
diff --git a/app/views/dashboard/_zero_authorized_projects.html.haml b/app/views/dashboard/_zero_authorized_projects.html.haml
index d1676ed11fadc6d7ec51a788c413ea0db96457d0..4b0d0d6873d13a3ddc1d0186bd9d8debd090908c 100644
--- a/app/views/dashboard/_zero_authorized_projects.html.haml
+++ b/app/views/dashboard/_zero_authorized_projects.html.haml
@@ -6,7 +6,7 @@
= current_user.projects_limit
projects. Click on button below to add a new one
.link_holder
- = link_to new_project_path, class: "btn primary" do
+ = link_to new_project_path, class: "btn btn-primary" do
New Project »
- else
If you will be added to project - it will be displayed here
diff --git a/app/views/dashboard/issues.html.haml b/app/views/dashboard/issues.html.haml
index 307d0d85ea3ab18f49dc82c8d0e9b0e81412bd30..affe01a7ef94fba499d04eedd928adc65e35ff9d 100644
--- a/app/views/dashboard/issues.html.haml
+++ b/app/views/dashboard/issues.html.haml
@@ -1,7 +1,7 @@
%h3.page_title
Issues
%small (assigned to you)
- %small.right #{@issues.total_count} issues
+ %small.pull-right #{@issues.total_count} issues
%hr
diff --git a/app/views/dashboard/merge_requests.html.haml b/app/views/dashboard/merge_requests.html.haml
index 0c4d6e0aadfbe30a6aa3984a88e3dd1558ea6821..a311729dd4d3386c3afa4f17e26729a98f3292c4 100644
--- a/app/views/dashboard/merge_requests.html.haml
+++ b/app/views/dashboard/merge_requests.html.haml
@@ -1,7 +1,7 @@
%h3.page_title
Merge Requests
%small (authored by or assigned to you)
- %small.right #{@merge_requests.total_count} merge requests
+ %small.pull-right #{@merge_requests.total_count} merge requests
%hr
.row
diff --git a/app/views/dashboard/projects.html.haml b/app/views/dashboard/projects.html.haml
index e6c710e68e990a268ca8ce0b70ce5826a1a833ac..8e21b0c7e023e032be82d739187a1da933bd385b 100644
--- a/app/views/dashboard/projects.html.haml
+++ b/app/views/dashboard/projects.html.haml
@@ -3,8 +3,8 @@
%span
(#{@projects.total_count})
- if current_user.can_create_project?
- %span.right
- = link_to new_project_path, class: "btn very_small info" do
+ %span.pull-right
+ = link_to new_project_path, class: "btn btn-tiny info" do
%i.icon-plus
New Project
@@ -42,7 +42,7 @@
%small.light
%strong Last activity:
%span= project_last_activity(project)
- .right.light
+ .pull-right.light
- if project.owner == current_user
%i.icon-wrench
- tm = project.team.get_tm(current_user.id)
diff --git a/app/views/deploy_keys/_form.html.haml b/app/views/deploy_keys/_form.html.haml
index 6beba562a9508967fa429e3a30dafe00dbbf94f5..5fb83021dc08a94e1d1e8856162bc10e159a7161 100644
--- a/app/views/deploy_keys/_form.html.haml
+++ b/app/views/deploy_keys/_form.html.haml
@@ -1,7 +1,7 @@
%div
= form_for [@project, @key], url: project_deploy_keys_path do |f|
-if @key.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @key.errors.full_messages.each do |msg|
%li= msg
@@ -18,6 +18,6 @@
= link_to "here", help_ssh_path
.actions
- = f.submit 'Save', class: "save-btn btn"
- = link_to "Cancel", project_deploy_keys_path(@project), class: "btn cancel-btn"
+ = f.submit 'Save', class: "btn-save btn"
+ = link_to "Cancel", project_deploy_keys_path(@project), class: "btn btn-cancel"
diff --git a/app/views/deploy_keys/_show.html.haml b/app/views/deploy_keys/_show.html.haml
index a5314ae92ade74b90fb77c1ed5e63dda373b22cb..635054350ecec96baa4fdf756e7f6f852c3a111d 100644
--- a/app/views/deploy_keys/_show.html.haml
+++ b/app/views/deploy_keys/_show.html.haml
@@ -8,5 +8,5 @@
= time_ago_in_words(key.created_at)
ago
%td
- = link_to 'Remove', project_deploy_key_path(key.project, key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key small right"
+ = link_to 'Remove', project_deploy_key_path(key.project, key), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove delete-key btn-small pull-right"
diff --git a/app/views/deploy_keys/index.html.haml b/app/views/deploy_keys/index.html.haml
index b9c654a1abe5cbbc7d974f0f3ba66638e430daaf..db167f4e2f29b115c943ca139b17ca70065d9df8 100644
--- a/app/views/deploy_keys/index.html.haml
+++ b/app/views/deploy_keys/index.html.haml
@@ -4,7 +4,7 @@
Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers.
- if can? current_user, :admin_project, @project
- = link_to new_project_deploy_key_path(@project), class: "btn small", title: "New Deploy Key" do
+ = link_to new_project_deploy_key_path(@project), class: "btn btn-small", title: "New Deploy Key" do
Add Deploy Key
- if @keys.any?
%table
diff --git a/app/views/deploy_keys/show.html.haml b/app/views/deploy_keys/show.html.haml
index c94cf10dde09a62dd15258c9cad2ca5108d741b6..227afecb0619a60156a17359ea52df3caf5c680c 100644
--- a/app/views/deploy_keys/show.html.haml
+++ b/app/views/deploy_keys/show.html.haml
@@ -10,5 +10,5 @@
← To keys list
%hr
%pre= @key.key
-.right
- = link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key"
+.pull-right
+ = link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "btn-remove btn delete-key"
diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml
index 31d355673ab2b0c9f5f7cfe4a9157b219a83d6a4..e5800025c6de847e49120dba55e06a9b3e0d6cbf 100644
--- a/app/views/devise/passwords/edit.html.haml
+++ b/app/views/devise/passwords/edit.html.haml
@@ -8,5 +8,5 @@
%div
= f.password_field :password_confirmation, class: "text bottom", placeholder: "Confirm new password"
%div
- = f.submit "Change my password", class: "btn primary"
- .right= render partial: "devise/shared/links"
+ = f.submit "Change my password", class: "btn btn-primary"
+ .pull-right= render partial: "devise/shared/links"
diff --git a/app/views/devise/passwords/new.html.erb b/app/views/devise/passwords/new.html.erb
index 860d67d19e7a9c8f5bd70d1a13115c70aabbf7e7..1171b3bfb753bf72f11bd14baf7f1c2ca5b5598b 100644
--- a/app/views/devise/passwords/new.html.erb
+++ b/app/views/devise/passwords/new.html.erb
@@ -4,6 +4,6 @@
<%= f.email_field :email, :placeholder => "Email", :class => "text" %>
- <%= f.submit "Reset password", :class => "primary btn" %>
+ <%= f.submit "Reset password", :class => "btn-primary btn" %>
<%= link_to "Sign in", new_session_path(resource_name), :class => "btn" %>
<% end %>
diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml
index 81eb26222615109a82fcf8beddfc5b07383be2d6..2b72d4ade8797ef2814e2f41568cb7be50161cf8 100644
--- a/app/views/devise/registrations/new.html.haml
+++ b/app/views/devise/registrations/new.html.haml
@@ -12,7 +12,7 @@
%div
= f.password_field :password_confirmation, :class => "text bottom", :placeholder => "Confirm password", :required => true
%div
- = f.submit "Sign up", :class => "primary btn wide"
+ = f.submit "Sign up", :class => "btn-primary btn wide"
%br
%hr
= link_to "Sign in", new_session_path(resource_name)
diff --git a/app/views/devise/sessions/_new_ldap.html.haml b/app/views/devise/sessions/_new_ldap.html.haml
index 4233aa61ecb5d80bab88186b737bb3435670eba0..7968b0e9c9fdcb7a4222baacd4bf1cf128c7d027 100644
--- a/app/views/devise/sessions/_new_ldap.html.haml
+++ b/app/views/devise/sessions/_new_ldap.html.haml
@@ -3,11 +3,11 @@
= text_field_tag :username, nil, {:class => "text top", :placeholder => "LDAP Login"}
= password_field_tag :password, nil, {:class => "text bottom", :placeholder => "Password"}
%br/
- = submit_tag "LDAP Sign in", :class => "primary btn"
+ = submit_tag "LDAP Sign in", :class => "btn-primary btn"
- if devise_mapping.omniauthable?
- (resource_class.omniauth_providers - [:ldap]).each do |provider|
%hr/
- = link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider), :class => "btn primary"
+ = link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider), :class => "btn btn-primary"
%br/
%hr/
%a#other_form_toggle{:href => "#", :onclick => "javascript:$('#new_user').toggle();"} Other Sign in
@@ -24,6 +24,6 @@
= f.check_box :remember_me
%span Remember me
%br/
- = f.submit "Sign in", :class => "primary btn"
- .right
+ = f.submit "Sign in", :class => "btn-primary btn"
+ .pull-right
= render :partial => "devise/shared/links"
diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml
index 0983f3157c4eeee3bd6690309e41acaa179825ae..7ea41876e44b7fca92bc0e457c5b0aad7aa189f1 100644
--- a/app/views/devise/sessions/new.html.haml
+++ b/app/views/devise/sessions/new.html.haml
@@ -11,8 +11,8 @@
= f.check_box :remember_me
%span Remember me
%br/
- = f.submit "Sign in", :class => "primary btn wide"
- .right
+ = f.submit "Sign in", :class => "btn-primary btn wide"
+ .pull-right
= link_to "Forgot your password?", new_password_path(resource_name), :class => "btn"
%br/
%br/
diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml
index 191aed0747e0b3c39cb1bf775a6683bf72401523..719f6c3787f982752d118d097001381e89772718 100644
--- a/app/views/events/_event.html.haml
+++ b/app/views/events/_event.html.haml
@@ -1,6 +1,6 @@
- if event.proper?
%div.event-item
- %span.cgray.right
+ %span.cgray.pull-right
#{time_ago_in_words(event.created_at)} ago.
= image_tag gravatar_icon(event.author_email), class: "avatar s24"
diff --git a/app/views/projects/graph.html.haml b/app/views/graph/show.html.haml
similarity index 63%
rename from app/views/projects/graph.html.haml
rename to app/views/graph/show.html.haml
index 72d9cb5ef154215117a23c2791d97d4c7eb3bd47..ca3a8706313ee75af30ccab845ae850aac356760 100644
--- a/app/views/projects/graph.html.haml
+++ b/app/views/graph/show.html.haml
@@ -1,6 +1,7 @@
%h3.page_title Project Network Graph
%br
-
+= render partial: 'shared/ref_switcher', locals: {destination: 'graph', path: @path}
+%br
.graph_holder
%h4
%small You can move around the graph by using the arrow keys.
@@ -11,7 +12,8 @@
var branch_graph;
$(function(){
branch_graph = new BranchGraph($("#holder"), {
- url: '#{url_for controller: 'projects', action: 'graph', format: :json}',
- commit_url: '#{project_commit_path(@project, 'ae45ca32').gsub("ae45ca32", "%s")}'
+ url: '#{project_graph_path(@project, @ref, format: :json)}',
+ commit_url: '#{project_commit_path(@project, 'ae45ca32').gsub("ae45ca32", "%s")}',
+ ref: '#{@ref}'
});
});
diff --git a/app/views/groups/_filter.html.haml b/app/views/groups/_filter.html.haml
index c8b0ad0f4339c8772b67a64d07fbc3e8a68da8d2..c14fc8e5e4b725440a35f3a5e27d3266b8d4bd5c 100644
--- a/app/views/groups/_filter.html.haml
+++ b/app/views/groups/_filter.html.haml
@@ -25,9 +25,9 @@
%li{class: ("active" if params[:project_id] == project.id.to_s)}
= link_to group_filter_path(entity, project_id: project.id) do
= project.name_with_namespace
- %small.right= entities_per_project(project, entity)
+ %small.pull-right= entities_per_project(project, entity)
%fieldset
%hr
- = link_to "Reset", group_filter_path(entity), class: 'btn right'
+ = link_to "Reset", group_filter_path(entity), class: 'btn pull-right'
diff --git a/app/views/groups/_new_group_member.html.haml b/app/views/groups/_new_group_member.html.haml
index 2d599816e2ac584be3447b7adbb048f018b69fcf..9cdbea60370ba69c13a201e941b6577bcc470145 100644
--- a/app/views/groups/_new_group_member.html.haml
+++ b/app/views/groups/_new_group_member.html.haml
@@ -14,5 +14,5 @@
.form-actions
= hidden_field_tag :redirect_to, people_group_path(@group)
- = f.submit 'Add', class: "btn save-btn"
+ = f.submit 'Add', class: "btn btn-save"
diff --git a/app/views/groups/_new_member.html.haml b/app/views/groups/_new_member.html.haml
index 89ac05e774e760433e2ab000df3e94e928356f47..b3424b01bcb5ab54dc9e9202592a20a9035f0ea8 100644
--- a/app/views/groups/_new_member.html.haml
+++ b/app/views/groups/_new_member.html.haml
@@ -14,5 +14,5 @@
.form-actions
= hidden_field_tag :redirect_to, people_group_path(@group, project_id: @project.id)
- = f.submit 'Add', class: "btn save-btn"
+ = f.submit 'Add', class: "btn btn-save"
diff --git a/app/views/groups/_people_filter.html.haml b/app/views/groups/_people_filter.html.haml
index 79a1b01a5faad5763ce877525c3b2a0b39598461..901a037adf32f46cb534887cf839284b6763fbbb 100644
--- a/app/views/groups/_people_filter.html.haml
+++ b/app/views/groups/_people_filter.html.haml
@@ -6,9 +6,9 @@
%li{class: ("active" if params[:project_id] == project.id.to_s)}
= link_to people_group_path(@group, project_id: project.id) do
= project.name_with_namespace
- %small.right= project.users.count
+ %small.pull-right= project.users.count
%fieldset
%hr
- = link_to "Reset", people_group_path(@group), class: 'btn right'
+ = link_to "Reset", people_group_path(@group), class: 'btn pull-right'
diff --git a/app/views/groups/_projects.html.haml b/app/views/groups/_projects.html.haml
index 040d1ae94aae6a79f0da1817f4d1f9f368936873..4fa4a1779835cd8aeaaf2c25fbff7156628f6f66 100644
--- a/app/views/groups/_projects.html.haml
+++ b/app/views/groups/_projects.html.haml
@@ -4,8 +4,8 @@
%small
(#{projects.count})
- if can? current_user, :manage_group, @group
- %span.right
- = link_to new_project_path(namespace_id: @group.id), class: "btn very_small info" do
+ %span.pull-right
+ = link_to new_project_path(namespace_id: @group.id), class: "btn btn-tiny info" do
%i.icon-plus
New Project
%ul.well-list
diff --git a/app/views/groups/issues.html.haml b/app/views/groups/issues.html.haml
index 9e8642f3b2c6abb7c1003c6724db220640667ffe..94682bdd51e035611cef5b90fbcd72d70d8b00c6 100644
--- a/app/views/groups/issues.html.haml
+++ b/app/views/groups/issues.html.haml
@@ -1,7 +1,7 @@
%h3.page_title
Issues
%small (assigned to you)
- %small.right #{@issues.total_count} issues
+ %small.pull-right #{@issues.total_count} issues
%hr
.row
diff --git a/app/views/groups/merge_requests.html.haml b/app/views/groups/merge_requests.html.haml
index 0c4d6e0aadfbe30a6aa3984a88e3dd1558ea6821..a311729dd4d3386c3afa4f17e26729a98f3292c4 100644
--- a/app/views/groups/merge_requests.html.haml
+++ b/app/views/groups/merge_requests.html.haml
@@ -1,7 +1,7 @@
%h3.page_title
Merge Requests
%small (authored by or assigned to you)
- %small.right #{@merge_requests.total_count} merge requests
+ %small.pull-right #{@merge_requests.total_count} merge requests
%hr
.row
diff --git a/app/views/groups/new.html.haml b/app/views/groups/new.html.haml
index b6d5f46507e61a83698cfe7af3b4bda04eccb78c..73be474e2780821721906e49f9687231ae890abb 100644
--- a/app/views/groups/new.html.haml
+++ b/app/views/groups/new.html.haml
@@ -2,7 +2,7 @@
%hr
= form_for @group do |f|
- if @group.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @group.errors.full_messages.first
.clearfix
= f.label :name do
@@ -10,7 +10,7 @@
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
- = f.submit 'Create group', class: "btn primary"
+ = f.submit 'Create group', class: "btn btn-create"
%hr
.padded
%ul
diff --git a/app/views/groups/people.html.haml b/app/views/groups/people.html.haml
index 0bceeaa3ceba6c37a24fb6812bcbb2b972114a57..3e4eb082f564b37b2992d4d6b03221862f4d62d0 100644
--- a/app/views/groups/people.html.haml
+++ b/app/views/groups/people.html.haml
@@ -16,5 +16,5 @@
%strong= user.name
%span.cgray= user.email
- if @group.owner == user
- %span.btn.btn-small.disabled.right Group Owner
+ %span.btn.btn-small.disabled.pull-right Group Owner
diff --git a/app/views/groups/search.html.haml b/app/views/groups/search.html.haml
index 1ba4707aa52d73d3569989485e0e79f4e2290552..f56bbadeac071cb911ab51df5d02e16f5ed4dc0f 100644
--- a/app/views/groups/search.html.haml
+++ b/app/views/groups/search.html.haml
@@ -4,6 +4,6 @@
%strong Looking for
.input
= search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search"
- = submit_tag 'Search', class: "btn primary wide"
+ = submit_tag 'Search', class: "btn btn-primary wide"
- if params[:search].present?
= render 'search/result'
diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml
index 84dd17c045deb11ca973a407578360e66e791ea1..a140b401b9d54048d7f092b5eb2dc0673cc50ff3 100644
--- a/app/views/groups/show.html.haml
+++ b/app/views/groups/show.html.haml
@@ -1,7 +1,7 @@
.projects
.activities.span8
= render "events/event_last_push", event: @last_push
- = link_to dashboard_path, class: 'btn very_small' do
+ = link_to dashboard_path, class: 'btn btn-tiny' do
← To dashboard
%span.cgray You will only see events from projects in this group
diff --git a/app/views/help/_layout.html.haml b/app/views/help/_layout.html.haml
index 3839be2773caa630921abe98db6f2226511498ac..fa5e3a30b2945fbcdad32825c028900593d28ca0 100644
--- a/app/views/help/_layout.html.haml
+++ b/app/views/help/_layout.html.haml
@@ -30,5 +30,5 @@
%li
%strong= link_to "Public Access", help_public_access_path
- .span9.right
+ .span9.pull-right
= yield
diff --git a/app/views/help/index.html.haml b/app/views/help/index.html.haml
index 28791b321f1e1808b87a18ba06406ac3f3101b0e..1a4411c8f30e8393022188fbd82cfd66bb0f55c0 100644
--- a/app/views/help/index.html.haml
+++ b/app/views/help/index.html.haml
@@ -1,6 +1,6 @@
%h3.page_title
GITLAB
- .right
+ .pull-right
%span= Gitlab::Version
%small= Gitlab::Revision
%hr
diff --git a/app/views/hooks/index.html.haml b/app/views/hooks/index.html.haml
index 1fcf6e1c57a6345cb0e888373c71b5e6d98a283c..88a5a7dcffe7939d357d3e0f85ea1bdbad779d1a 100644
--- a/app/views/hooks/index.html.haml
+++ b/app/views/hooks/index.html.haml
@@ -10,7 +10,7 @@
= form_for [@project, @hook], as: :hook, url: project_hooks_path(@project), html: { class: 'form-inline' } do |f|
-if @hook.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
- @hook.errors.full_messages.each do |msg|
%p= msg
.clearfix
@@ -18,7 +18,7 @@
.input
= f.text_field :url, class: "text_field xxlarge"
- = f.submit "Add Web Hook", class: "btn primary"
+ = f.submit "Add Web Hook", class: "btn btn-primary"
%hr
-if @hooks.any?
@@ -37,6 +37,6 @@
→
%span.monospace= hook.url
%td
- .right
- = link_to 'Test Hook', test_project_hook_path(@project, hook), class: "btn small grouped"
- = link_to 'Remove', project_hook_path(@project, hook), confirm: 'Are you sure?', method: :delete, class: "danger btn small grouped"
+ .pull-right
+ = link_to 'Test Hook', test_project_hook_path(@project, hook), class: "btn btn-small grouped"
+ = link_to 'Remove', project_hook_path(@project, hook), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove btn-small grouped"
diff --git a/app/views/issues/_filter.html.haml b/app/views/issues/_filter.html.haml
index 779e55bb7af6670b0f2c1a389d21f5dec9b21b79..21efaa5357cbef9d5b1fe3282856539854af28b8 100644
--- a/app/views/issues/_filter.html.haml
+++ b/app/views/issues/_filter.html.haml
@@ -16,5 +16,5 @@
%fieldset
%hr
- = link_to "Reset", project_issues_path(@project), class: 'btn right'
+ = link_to "Reset", project_issues_path(@project), class: 'btn pull-right'
diff --git a/app/views/issues/_form.html.haml b/app/views/issues/_form.html.haml
index bef235f2dea8a4d29239cf5021463f3cf142b204..6d7613a700dd67db93de5b058e9fb346cf5e8450 100644
--- a/app/views/issues/_form.html.haml
+++ b/app/views/issues/_form.html.haml
@@ -2,7 +2,7 @@
%h3.page_title= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}"
= form_for [@project, @issue] do |f|
-if @issue.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
- @issue.errors.full_messages.each do |msg|
%span= msg
%br
@@ -44,12 +44,12 @@
.actions
- if @issue.new_record?
- = f.submit 'Submit new issue', class: "btn success"
+ = f.submit 'Submit new issue', class: "btn btn-create"
-else
- = f.submit 'Save changes', class: "save-btn btn"
+ = f.submit 'Save changes', class: "btn-save btn"
- cancel_path = @issue.new_record? ? project_issues_path(@project) : project_issue_path(@project, @issue)
- = link_to "Cancel", cancel_path, class: 'btn cancel-btn'
+ = link_to "Cancel", cancel_path, class: 'btn btn-cancel'
diff --git a/app/views/issues/_head.html.haml b/app/views/issues/_head.html.haml
index 4294503c211aaff062d43447e2900526b13f547a..7e0b2cde074ae8c484bc5736d18e90f8588e249c 100644
--- a/app/views/issues/_head.html.haml
+++ b/app/views/issues/_head.html.haml
@@ -5,7 +5,7 @@
= link_to 'Milestones', project_milestones_path(@project), class: "tab"
= nav_link(controller: :labels) do
= link_to 'Labels', project_labels_path(@project), class: "tab"
- %li.right
+ %li.pull-right
%span.rss-icon
= link_to project_issues_path(@project, :atom, { private_token: current_user.private_token }) do
= image_tag "rss_ui.png", title: "feed"
diff --git a/app/views/issues/_issues.html.haml b/app/views/issues/_issues.html.haml
index 8821dbb8d9803af9fe0b70a1ba41bf1061529eb7..3bbd293dba2897aa41e93f739d0a89b9624fc730 100644
--- a/app/views/issues/_issues.html.haml
+++ b/app/views/issues/_issues.html.haml
@@ -4,7 +4,7 @@
- if @issues.present?
%li.bottom
.left= paginate @issues, remote: true, theme: "gitlab"
- .right
+ .pull-right
%span.issue_counter #{@issues.total_count}
issues for this filter
- else
diff --git a/app/views/issues/_show.html.haml b/app/views/issues/_show.html.haml
index dcef901c15fe836accb8f1d51e233a2a20351265..fa888618066628be9e63596df8c7e6b766d3a50e 100644
--- a/app/views/issues/_show.html.haml
+++ b/app/views/issues/_show.html.haml
@@ -2,17 +2,17 @@
- if controller.controller_name == 'issues'
.issue_check
= check_box_tag dom_id(issue,"selected"), nil, false, 'data-id' => issue.id, class: "selected_issue", disabled: !can?(current_user, :modify_issue, issue)
- .right
+ .pull-right
- if issue.notes.any?
- %span.btn.small.disabled.grouped
+ %span.btn.btn-small.disabled.grouped
%i.icon-comment
= issue.notes.count
- if can? current_user, :modify_issue, issue
- if issue.closed
- = link_to 'Reopen', project_issue_path(issue.project, issue, issue: {closed: false }, status_only: true), method: :put, class: "btn small grouped reopen_issue", remote: true
+ = link_to 'Reopen', project_issue_path(issue.project, issue, issue: {closed: false }, status_only: true), method: :put, class: "btn btn-small grouped reopen_issue", remote: true
- else
- = link_to 'Close', project_issue_path(issue.project, issue, issue: {closed: true }, status_only: true), method: :put, class: "btn small grouped close_issue", remote: true
- = link_to edit_project_issue_path(issue.project, issue), class: "btn small edit-issue-link grouped" do
+ = link_to 'Close', project_issue_path(issue.project, issue, issue: {closed: true }, status_only: true), method: :put, class: "btn btn-small grouped close_issue", remote: true
+ = link_to edit_project_issue_path(issue.project, issue), class: "btn btn-small edit-issue-link grouped" do
%i.icon-edit
Edit
diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml
index d5c29c780ce3423b6c326c8b1645a1de16406e6b..875f29e2600749d8ff788c22fd60dd95a4d1ee58 100644
--- a/app/views/issues/index.html.haml
+++ b/app/views/issues/index.html.haml
@@ -3,16 +3,16 @@
%h3.page_title
Issues
%span (#{@issues.total_count})
- .right
+ .pull-right
.span5
- if can? current_user, :write_issue, @project
- = link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "right btn primary", title: "New Issue", id: "new_issue_link" do
+ = link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "btn btn-primary pull-right", title: "New Issue", id: "new_issue_link" do
%i.icon-plus
New Issue
- = form_tag search_project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: :right do
+ = form_tag search_project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: 'pull-right' do
= hidden_field_tag :project_id, @project.id, { id: 'project_id' }
= hidden_field_tag :status, params[:status]
- = search_field_tag :issue_search, nil, { placeholder: 'Search', class: 'issue_search span3 right neib search-text-input' }
+ = search_field_tag :issue_search, nil, { placeholder: 'Search', class: 'issue_search span3 pull-right neib search-text-input' }
.clearfix
@@ -33,7 +33,7 @@
= select_tag('update[milestone_id]', options_from_collection_for_select(issues_active_milestones, "id", "title", params[:milestone_id]), prompt: "Milestone")
= hidden_field_tag 'update[issues_ids]', []
= hidden_field_tag :status, params[:status]
- = button_tag "Save", class: "btn update_selected_issues btn-small save-btn"
+ = button_tag "Save", class: "btn update_selected_issues btn-small btn-save"
.issues_filters
= form_tag project_issues_path(@project), method: :get do
= select_tag(:label_name, options_for_select(issue_tags, params[:label_name]), prompt: "Labels")
diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml
index 6bf789296997bdd647839839ac9144aec0a16d01..474955cc665c78d6620b25b329a40c52235bb800 100644
--- a/app/views/issues/show.html.haml
+++ b/app/views/issues/show.html.haml
@@ -5,7 +5,7 @@
created at
= @issue.created_at.stamp("Aug 21, 2011")
- %span.right
+ %span.pull-right
- if can?(current_user, :admin_project, @project) || @issue.author == current_user
- if @issue.closed
= link_to 'Reopen', project_issue_path(@project, @issue, issue: {closed: false }, status_only: true), method: :put, class: "btn grouped reopen_issue"
@@ -16,7 +16,7 @@
%i.icon-edit
Edit
-.right
+.pull-right
.span3#votes= render 'votes/votes_block', votable: @issue
.back_link
@@ -42,7 +42,7 @@
%cite.cgray and attached to milestone
%strong= link_to_gfm truncate(milestone.title, length: 20), project_milestone_path(milestone.project, milestone)
- .right
+ .pull-right
- @issue.labels.each do |label|
%span.label
%i.icon-tag
diff --git a/app/views/keys/_form.html.haml b/app/views/keys/_form.html.haml
index 26700803e61247fbb76eab513cb2e575feb4cb92..fe26216b1d5acf17eefe9ce465d7aac32fd91fa4 100644
--- a/app/views/keys/_form.html.haml
+++ b/app/views/keys/_form.html.haml
@@ -1,7 +1,7 @@
%div
= form_for @key do |f|
-if @key.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @key.errors.full_messages.each do |msg|
%li= msg
@@ -19,6 +19,6 @@
.actions
- = f.submit 'Save', class: "btn save-btn"
- = link_to "Cancel", keys_path, class: "btn cancel-btn"
+ = f.submit 'Save', class: "btn btn-save"
+ = link_to "Cancel", keys_path, class: "btn btn-cancel"
diff --git a/app/views/keys/_show.html.haml b/app/views/keys/_show.html.haml
index 9d4485cf9a4bbd4982cbb7815a47c41cd790676b..52bbea6fc7bad85d3f63303fce3934edb3ee6234 100644
--- a/app/views/keys/_show.html.haml
+++ b/app/views/keys/_show.html.haml
@@ -8,5 +8,5 @@
= time_ago_in_words(key.created_at)
ago
%td
- = link_to 'Remove', key, confirm: 'Are you sure?', method: :delete, class: "btn small danger delete-key right"
+ = link_to 'Remove', key, confirm: 'Are you sure?', method: :delete, class: "btn btn-small btn-remove delete-key pull-right"
diff --git a/app/views/keys/index.html.haml b/app/views/keys/index.html.haml
index f5a8283a0ce3738e4e902e4ae3e787a1ac1bf5c1..7730b344a7db039935efaf5806883d907a187547 100644
--- a/app/views/keys/index.html.haml
+++ b/app/views/keys/index.html.haml
@@ -1,6 +1,6 @@
%h3.page_title
SSH Keys
- = link_to "Add new", new_key_path, class: "btn right"
+ = link_to "Add new", new_key_path, class: "btn pull-right"
%hr
%p.slead
diff --git a/app/views/keys/show.html.haml b/app/views/keys/show.html.haml
index a8cba6c8f9ecfb1ba76d91aab8c6cadd65825398..059fe5e5806f705ab03b2b819693da699f4972f0 100644
--- a/app/views/keys/show.html.haml
+++ b/app/views/keys/show.html.haml
@@ -10,5 +10,5 @@
%hr
%pre= @key.key
-.right
- = link_to 'Remove', @key, confirm: 'Are you sure?', method: :delete, class: "btn danger delete-key"
+.pull-right
+ = link_to 'Remove', @key, confirm: 'Are you sure?', method: :delete, class: "btn btn-remove delete-key"
diff --git a/app/views/labels/_label.html.haml b/app/views/labels/_label.html.haml
index 6e223e8e61d7f7b641f854da854a118d4d25dd76..027b041d58e91e8ae74c964b221394796f7151c0 100644
--- a/app/views/labels/_label.html.haml
+++ b/app/views/labels/_label.html.haml
@@ -2,7 +2,7 @@
%strong
%i.icon-tag
= label.name
- .right
+ .pull-right
= link_to project_issues_path(label_name: label.name) do
%strong
= pluralize(label.count, 'issue')
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml
index 28626b9c6828f0f374ccd61af808f8016d34efcb..a01886cdabf601cf3793784365edb6f1a2462c72 100644
--- a/app/views/layouts/admin.html.haml
+++ b/app/views/layouts/admin.html.haml
@@ -7,7 +7,8 @@
.container
%ul.main_menu
= nav_link(controller: :dashboard, html_options: {class: 'home'}) do
- = link_to "Stats", admin_root_path
+ = link_to admin_root_path, title: "Stats" do
+ %i.icon-home
= nav_link(controller: :projects) do
= link_to "Projects", admin_projects_path
= nav_link(controller: :teams) do
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 261a8608ca42c907418762fe9c36949b56075dcc..7ee44238d10bd0e8f0ca4faeb33f9a3a8b2b53a8 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -7,7 +7,8 @@
.container
%ul.main_menu
= nav_link(path: 'dashboard#show', html_options: {class: 'home'}) do
- = link_to "Home", root_path, title: "Home"
+ = link_to root_path, title: "Home" do
+ %i.icon-home
= nav_link(path: 'dashboard#projects') do
= link_to projects_dashboard_path do
Projects
diff --git a/app/views/layouts/group.html.haml b/app/views/layouts/group.html.haml
index 46bc9ef145774266e46f3ab7b3fb042ec2858755..4395e4086491c3e7c27391e29355c3e82201884f 100644
--- a/app/views/layouts/group.html.haml
+++ b/app/views/layouts/group.html.haml
@@ -7,7 +7,8 @@
.container
%ul.main_menu
= nav_link(path: 'groups#show', html_options: {class: 'home'}) do
- = link_to "Home", group_path(@group), title: "Home"
+ = link_to group_path(@group), title: "Home" do
+ %i.icon-home
= nav_link(path: 'groups#issues') do
= link_to issues_group_path(@group) do
Issues
diff --git a/app/views/layouts/profile.html.haml b/app/views/layouts/profile.html.haml
index 7852ed6f0e1380a88df9124abd0d064c56fae1c1..57f250c775bcd3b9d2ccd78c05040c0a6c99fcbc 100644
--- a/app/views/layouts/profile.html.haml
+++ b/app/views/layouts/profile.html.haml
@@ -7,7 +7,8 @@
.container
%ul.main_menu
= nav_link(path: 'profiles#show', html_options: {class: 'home'}) do
- = link_to "Profile", profile_path
+ = link_to profile_path, title: "Profile" do
+ %i.icon-home
= nav_link(path: 'profiles#account') do
= link_to "Account", account_profile_path
= nav_link(controller: :keys) do
diff --git a/app/views/layouts/project_resource.html.haml b/app/views/layouts/project_resource.html.haml
index 14671c5ca70b116eb0066908653211618fbc5d5c..09ccb1d7b6a818027cbdf2f24179782b3b79658e 100644
--- a/app/views/layouts/project_resource.html.haml
+++ b/app/views/layouts/project_resource.html.haml
@@ -12,7 +12,8 @@
.container
%ul.main_menu
= nav_link(html_options: {class: "home #{project_tab_class}"}) do
- = link_to @project.path, project_path(@project), title: "Project"
+ = link_to project_path(@project), title: "Project" do
+ %i.icon-home
- if @project.repo_exists?
- if can? current_user, :download_code, @project
@@ -20,8 +21,8 @@
= link_to 'Files', project_tree_path(@project, @ref || @repository.root_ref)
= nav_link(controller: %w(commit commits compare repositories protected_branches)) do
= link_to "Commits", project_commits_path(@project, @ref || @repository.root_ref)
- = nav_link(path: 'projects#graph') do
- = link_to "Network", graph_project_path(@project)
+ = nav_link(controller: %w(graph)) do
+ = link_to "Network", project_graph_path(@project, @ref || @repository.root_ref)
- if @project.issues_enabled
= nav_link(controller: %w(issues milestones labels)) do
diff --git a/app/views/layouts/user_team.html.haml b/app/views/layouts/user_team.html.haml
index 2d397e80905396a0c5bcc5cef981a1c31facecdd..19bbc373f46378d0575fb384725b53753070b972 100644
--- a/app/views/layouts/user_team.html.haml
+++ b/app/views/layouts/user_team.html.haml
@@ -7,7 +7,8 @@
.container
%ul.main_menu
= nav_link(path: 'teams#show', html_options: {class: 'home'}) do
- = link_to "Home", team_path(@team), title: "Home"
+ = link_to team_path(@team), title: "Home" do
+ %i.icon-home
= nav_link(path: 'teams#issues') do
= link_to issues_team_path(@team) do
diff --git a/app/views/merge_requests/_filter.html.haml b/app/views/merge_requests/_filter.html.haml
index 86148fbcfee994da62090ded2a4937ffa0866051..4b48306ed0575bc8e8471610d4a71b8819f24fcf 100644
--- a/app/views/merge_requests/_filter.html.haml
+++ b/app/views/merge_requests/_filter.html.haml
@@ -16,5 +16,5 @@
%fieldset
%hr
- = link_to "Reset", project_merge_requests_path(@project), class: 'btn right'
+ = link_to "Reset", project_merge_requests_path(@project), class: 'btn pull-right'
diff --git a/app/views/merge_requests/_form.html.haml b/app/views/merge_requests/_form.html.haml
index 9a4f0617a3a60210616083a11188263209308882..816c852d24bbffdec761d55d535935c06d8fc4e2 100644
--- a/app/views/merge_requests/_form.html.haml
+++ b/app/views/merge_requests/_form.html.haml
@@ -1,6 +1,6 @@
= form_for [@project, @merge_request], html: { class: "#{controller.action_name}-merge-request form-horizontal" } do |f|
-if @merge_request.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @merge_request.errors.full_messages.each do |msg|
%li= msg
@@ -51,19 +51,19 @@
.form-actions
- if @merge_request.new_record?
- = f.submit 'Submit merge request', class: "btn success"
+ = f.submit 'Submit merge request', class: "btn btn-create"
-else
- = f.submit 'Save changes', class: "save-btn btn"
+ = f.submit 'Save changes', class: "btn btn-save"
- if @merge_request.new_record?
- = link_to project_merge_requests_path(@project), class: "btn cancel-btn" do
+ = link_to project_merge_requests_path(@project), class: "btn btn-cancel" do
Cancel
- else
- = link_to project_merge_request_path(@project, @merge_request), class: "btn cancel-btn" do
+ = link_to project_merge_request_path(@project, @merge_request), class: "btn btn-cancel" do
Cancel
:javascript
$(function(){
- disableButtonIfEmptyField("#merge_request_title", ".save-btn");
+ disableButtonIfEmptyField("#merge_request_title", ".btn-save");
var source_branch = $("#merge_request_source_branch")
, target_branch = $("#merge_request_target_branch");
diff --git a/app/views/merge_requests/_merge_request.html.haml b/app/views/merge_requests/_merge_request.html.haml
index 7369f3dd0619f67baae0e2572cf7b74d512aedcf..09c55d9846523ee6a512a9d0307d9242f58e7c14 100644
--- a/app/views/merge_requests/_merge_request.html.haml
+++ b/app/views/merge_requests/_merge_request.html.haml
@@ -1,20 +1,20 @@
%li{ class: mr_css_classes(merge_request) }
- .right
+ .pull-right
.left
- if merge_request.merged?
- %span.btn.small.disabled.grouped
+ %span.btn.btn-small.disabled.grouped
%strong
%i.icon-ok
= "MERGED"
- if merge_request.notes.any?
- %span.btn.small.disabled.grouped
+ %span.btn.btn-small.disabled.grouped
%i.icon-comment
= merge_request.mr_and_commit_notes.count
- if merge_request.milestone_id?
- %span.btn.small.disabled.grouped
+ %span.btn.btn-small.disabled.grouped
%i.icon-time
= merge_request.milestone.title
- %span.btn.small.disabled.grouped
+ %span.btn.btn-small.disabled.grouped
= merge_request.source_branch
→
= merge_request.target_branch
diff --git a/app/views/merge_requests/index.html.haml b/app/views/merge_requests/index.html.haml
index 61c32b533f6d7ef798f59958a8f883e7372badf7..3073c8f6bab447f57a9ea65320897b54caee26df 100644
--- a/app/views/merge_requests/index.html.haml
+++ b/app/views/merge_requests/index.html.haml
@@ -1,5 +1,5 @@
- if can? current_user, :write_merge_request, @project
- = link_to new_project_merge_request_path(@project), class: "right btn primary", title: "New Merge Request" do
+ = link_to new_project_merge_request_path(@project), class: "pull-right btn btn-primary", title: "New Merge Request" do
%i.icon-plus
New Merge Request
%h3.page_title
@@ -28,8 +28,8 @@
- if @merge_requests.present?
%li.bottom
.left= paginate @merge_requests, theme: "gitlab"
- .right
- %span.cgray.right #{@merge_requests.total_count} merge requests for this filter
+ .pull-right
+ %span.cgray.pull-right #{@merge_requests.total_count} merge requests for this filter
:javascript
$(merge_requestsPage);
diff --git a/app/views/merge_requests/show/_mr_accept.html.haml b/app/views/merge_requests/show/_mr_accept.html.haml
index 128ffe76782e9b0e01ef45d3705019179d8bd0f6..c2c04b863e7df72c52b5890d0f5517de53f6ed1e 100644
--- a/app/views/merge_requests/show/_mr_accept.html.haml
+++ b/app/views/merge_requests/show/_mr_accept.html.haml
@@ -1,5 +1,5 @@
- unless can?(current_user, :accept_mr, @project)
- .alert-message
+ .alert
%strong Only masters can accept MR
@@ -29,14 +29,14 @@
%strong This repository does not have satellite. Ask administrator to fix this issue
.automerge_widget.cannot_be_merged{style: "display:none"}
- .alert.alert-info
+ .alert.alert-disabled
%span
- = link_to "Show how to merge", "#", class: "how_to_merge_link btn small padded", title: "How To Merge"
+ = link_to "Show how to merge", "#", class: "how_to_merge_link btn btn-small padded", title: "How To Merge"
%strong This request can't be merged with GitLab. You should do it manually
.automerge_widget.unchecked
- .alert-message
+ .alert
%strong
%i.icon-refresh
Checking for ability to automatically merge…
diff --git a/app/views/merge_requests/show/_mr_ci.html.haml b/app/views/merge_requests/show/_mr_ci.html.haml
index d46b606ef7f8b4cfa125be781adee638faa212b4..dd1e78a020578711e84077773cdf5bf1f6f7cf91 100644
--- a/app/views/merge_requests/show/_mr_ci.html.haml
+++ b/app/views/merge_requests/show/_mr_ci.html.haml
@@ -23,7 +23,7 @@
= link_to "Build page", ci_build_details_path(@merge_request)
.ci_widget
- .alert-message
+ .alert
%strong
%i.icon-refresh
Checking for CI status for #{@merge_request.last_commit_short_sha}
diff --git a/app/views/merge_requests/show/_mr_title.html.haml b/app/views/merge_requests/show/_mr_title.html.haml
index c2ffe8e3770f1c89ab60b18f9d9222a64729f801..8119728dcb93588aeb595b127378145269dfdf85 100644
--- a/app/views/merge_requests/show/_mr_title.html.haml
+++ b/app/views/merge_requests/show/_mr_title.html.haml
@@ -5,7 +5,7 @@
→
%span.label_branch= @merge_request.target_branch
- %span.right
+ %span.pull-right
- if can?(current_user, :modify_merge_request, @merge_request)
- if @merge_request.open?
.left.btn-group
@@ -17,13 +17,13 @@
%li= link_to "Email Patches", project_merge_request_path(@project, @merge_request, format: :patch)
%li= link_to "Plain Diff", project_merge_request_path(@project, @merge_request, format: :diff)
- = link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {closed: true }, status_only: true), method: :put, class: "btn grouped danger", title: "Close merge request"
+ = link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {closed: true }, status_only: true), method: :put, class: "btn grouped btn-close", title: "Close merge request"
= link_to edit_project_merge_request_path(@project, @merge_request), class: "btn grouped" do
%i.icon-edit
Edit
-.right
+.pull-right
.span3#votes= render 'votes/votes_block', votable: @merge_request
.back_link
diff --git a/app/views/milestones/_form.html.haml b/app/views/milestones/_form.html.haml
index 1c496a93e54137a29e7d2748629cd95a634d825e..fbaf64a305cdb559eb9420f865fcf5c1a94eb953 100644
--- a/app/views/milestones/_form.html.haml
+++ b/app/views/milestones/_form.html.haml
@@ -7,7 +7,7 @@
= form_for [@project, @milestone], html: {class: "new_milestone form-horizontal"} do |f|
-if @milestone.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @milestone.errors.full_messages.each do |msg|
%li= msg
@@ -32,16 +32,16 @@
.form-actions
- if @milestone.new_record?
- = f.submit 'Create milestone', class: "save-btn btn"
- = link_to "Cancel", project_milestones_path(@project), class: "btn cancel-btn"
+ = f.submit 'Create milestone', class: "btn-save btn"
+ = link_to "Cancel", project_milestones_path(@project), class: "btn btn-cancel"
-else
- = f.submit 'Save changes', class: "save-btn btn"
- = link_to "Cancel", project_milestone_path(@project, @milestone), class: "btn cancel-btn"
+ = f.submit 'Save changes', class: "btn-save btn"
+ = link_to "Cancel", project_milestone_path(@project, @milestone), class: "btn btn-cancel"
:javascript
$(function() {
- disableButtonIfEmptyField("#milestone_title", ".save-btn");
+ disableButtonIfEmptyField("#milestone_title", ".btn-save");
$( ".datepicker" ).datepicker({
dateFormat: "yy-mm-dd",
onSelect: function(dateText, inst) { $("#milestone_due_date").val(dateText) }
diff --git a/app/views/milestones/_milestone.html.haml b/app/views/milestones/_milestone.html.haml
index 3864792f7e81995db1246d4a3964208dd1f21839..00e20117f36de3b6df691d7abcc32eb844e75278 100644
--- a/app/views/milestones/_milestone.html.haml
+++ b/app/views/milestones/_milestone.html.haml
@@ -1,7 +1,7 @@
%li{class: "milestone milestone-#{milestone.closed ? 'closed' : 'open'}", id: dom_id(milestone) }
- .right
+ .pull-right
- if can?(current_user, :admin_milestone, milestone.project) and milestone.open?
- = link_to edit_project_milestone_path(milestone.project, milestone), class: "btn small edit-milestone-link grouped" do
+ = link_to edit_project_milestone_path(milestone.project, milestone), class: "btn btn-small edit-milestone-link grouped" do
%i.icon-edit
Edit
%h4
diff --git a/app/views/milestones/index.html.haml b/app/views/milestones/index.html.haml
index 3089595fe0b004298305882a4350f2d91a21fd12..b78f17053fd91e794ae7909ff3fede251d7c7436 100644
--- a/app/views/milestones/index.html.haml
+++ b/app/views/milestones/index.html.haml
@@ -3,7 +3,7 @@
%h3.page_title
Milestones
- if can? current_user, :admin_milestone, @project
- = link_to "New Milestone", new_project_milestone_path(@project), class: "right btn small", title: "New Milestone"
+ = link_to "New Milestone", new_project_milestone_path(@project), class: "pull-right btn btn-small", title: "New Milestone"
%br
%div.ui-box
.title
diff --git a/app/views/milestones/show.html.haml b/app/views/milestones/show.html.haml
index fc7ae51f184328b41a87bb7e1bd008fe5a16e772..43d82a54dd64c654e9c608a761ec4c841e203b91 100644
--- a/app/views/milestones/show.html.haml
+++ b/app/views/milestones/show.html.haml
@@ -8,14 +8,14 @@
= link_to project_milestones_path(@project) do
← To milestones list
.span6
- .right
+ .pull-right
- unless @milestone.closed
- = link_to new_project_issue_path(@project, issue: { milestone_id: @milestone.id }), class: "btn small grouped", title: "New Issue" do
+ = link_to new_project_issue_path(@project, issue: { milestone_id: @milestone.id }), class: "btn btn-small grouped", title: "New Issue" do
%i.icon-plus
New Issue
= link_to 'Browse Issues', project_issues_path(@milestone.project, milestone_id: @milestone.id), class: "btn edit-milestone-link small grouped"
- if can?(current_user, :admin_milestone, @project)
- = link_to edit_project_milestone_path(@project, @milestone), class: "btn small grouped" do
+ = link_to edit_project_milestone_path(@project, @milestone), class: "btn btn-small grouped" do
%i.icon-edit
Edit
@@ -25,7 +25,7 @@
%hr
%p
%span All issues for this milestone are closed. You may close milestone now.
- = link_to 'Close Milestone', project_milestone_path(@project, @milestone, milestone: {closed: true }), method: :put, class: "btn small danger"
+ = link_to 'Close Milestone', project_milestone_path(@project, @milestone, milestone: {closed: true }), method: :put, class: "btn btn-small btn-remove"
.ui-box.ui-box-show
.ui-box-head
@@ -43,7 +43,7 @@
#{@milestone.closed_items_count} closed
–
#{@milestone.open_items_count} open
- %span.right= @milestone.expires_at
+ %span.pull-right= @milestone.expires_at
.progress.progress-info
.bar{style: "width: #{@milestone.percent_complete}%;"}
diff --git a/app/views/notes/_form.html.haml b/app/views/notes/_form.html.haml
index d094119a9da5ea209974de1c4b2c247de258466e..a154c31e5abeedbc565a621c316e941206d05c08 100644
--- a/app/views/notes/_form.html.haml
+++ b/app/views/notes/_form.html.haml
@@ -15,30 +15,30 @@
= f.text_area :note, size: 255, class: 'note_text js-note-text js-gfm-input turn-on'
.note_preview.js-note-preview.turn-off
- .buttons
- = f.submit 'Add Comment', class: "btn comment-btn grouped js-comment-button"
- %a.btn.grouped.js-close-discussion-note-form Cancel
.hint
- .right Comments are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
+ .pull-right Comments are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
.clearfix
- .note_options
- .attachment
- %h6 Attachment:
- .file_name.js-attachment-filename File name...
- %a.choose-btn.btn.small.js-choose-note-attachment-button Choose File ...
- .hint Any file up to 10 MB
+ .note-form-actions
+ .buttons
+ = f.submit 'Add Comment', class: "btn comment-btn grouped js-comment-button"
+ %a.btn.grouped.js-close-discussion-note-form Cancel
- = f.file_field :attachment, class: "js-note-attachment-input"
-
- .notify_options
- %h6 Notify via email:
+ .note-form-option
= label_tag :notify do
= check_box_tag :notify, 1, !@note.for_commit?
- Project team
+ %span.light Notify team via email
.js-notify-commit-author
= label_tag :notify_author do
= check_box_tag :notify_author, 1 , @note.for_commit?
- Commit author
- .clearfix
+ %span.light Notify commit author
+ .note-form-option
+ %a.choose-btn.btn.btn-small.js-choose-note-attachment-button
+ %i.icon-paper-clip
+ %span Choose File ...
+
+ %span.file_name.js-attachment-filename File name...
+ = f.file_field :attachment, class: "js-note-attachment-input hide"
+
+ .clearfix
diff --git a/app/views/notes/_note.html.haml b/app/views/notes/_note.html.haml
index 9efeb563e0a276bb49a2dfa2d4d317f4e466f516..4d3007a0ed1ddc8406bb5abeab33c054862b9afe 100644
--- a/app/views/notes/_note.html.haml
+++ b/app/views/notes/_note.html.haml
@@ -30,8 +30,8 @@
- if note.attachment.url
- if note.attachment.image?
= image_tag note.attachment.url, class: 'note-image-attach'
- .attachment.right
+ .attachment.pull-right
= link_to note.attachment.url, target: "_blank" do
- %i.icon-attachment
+ %i.icon-paper-clip
= note.attachment_identifier
.clear
diff --git a/app/views/profiles/account.html.haml b/app/views/profiles/account.html.haml
index 522e45e637a390a25a7a58e3d64c0291799b50be..2ad000b815bd86cf36e85478b511e87c98adaa00 100644
--- a/app/views/profiles/account.html.haml
+++ b/app/views/profiles/account.html.haml
@@ -12,7 +12,7 @@
%fieldset
%legend
Private token
- %span.cred.right
+ %span.cred.pull-right
keep it secret!
.padded
= form_for @user, url: reset_private_token_profile_path, method: :put do |f|
@@ -24,7 +24,7 @@
%p.cgray
- if current_user.private_token
= text_field_tag "token", current_user.private_token, class: "xxlarge large_text"
- = f.submit 'Reset', confirm: "Are you sure?", class: "btn primary btn-build-token"
+ = f.submit 'Reset', confirm: "Are you sure?", class: "btn btn-primary btn-build-token"
- else
%span You don`t have one yet. Click generate to fix it.
= f.submit 'Generate', class: "btn success btn-build-token"
@@ -35,7 +35,7 @@
.padded
%p.slead After successful password update you will be redirected to login page where you should login with new password
-if @user.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @user.errors.full_messages.each do |msg|
%li= msg
@@ -49,14 +49,14 @@
= f.password_field :password_confirmation, required: true
.clearfix
.input
- = f.submit 'Save password', class: "btn save-btn"
+ = f.submit 'Save password', class: "btn btn-save"
%fieldset.update-username
%legend
Username
- %small.cred.right
+ %small.cred.pull-right
Changing your username can have unintended side effects!
= form_for @user, url: update_username_profile_path, method: :put, remote: true do |f|
.padded
@@ -75,6 +75,6 @@
%li It will change web url for personal projects.
%li It will change the git path to repositories for personal projects.
.input
- = f.submit 'Save username', class: "btn save-btn"
+ = f.submit 'Save username', class: "btn btn-save"
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index 7a3177f0efcc2c9e67cff81a9be81481680c4f69..3cf6330cc3ccd9dcc97998111f48351009edbb8c 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -6,7 +6,7 @@
%small
= @user.email
- .right
+ .pull-right
= link_to destroy_user_session_path, class: "logout", method: :delete do
%small
%i.icon-signout
@@ -15,7 +15,7 @@
= form_for @user, url: profile_path, method: :put, html: { class: "edit_user form-horizontal" } do |f|
-if @user.errors.any?
- %div.alert-message.block-message.error
+ %div.alert.alert-error
%ul
- @user.errors.full_messages.each do |msg|
%li= msg
@@ -46,7 +46,7 @@
= f.text_area :bio, rows: 6, class: "input-xlarge", maxlength: 250
%span.help-block Tell us about yourself in fewer than 250 characters.
- .span5.right
+ .span5.pull-right
%fieldset.tips
%legend Tips:
%ul
@@ -65,18 +65,18 @@
%li
%p
Need a group for several dependent projects?
- = link_to new_group_path, class: "btn very_small" do
+ = link_to new_group_path, class: "btn btn-tiny" do
Create a group
- if current_user.can_create_team?
%li
%p
Want to share a team between projects?
- = link_to new_team_path, class: "btn very_small" do
+ = link_to new_team_path, class: "btn btn-tiny" do
Create a team
%fieldset
%legend
Personal projects:
- %small.right
+ %small.pull-right
%span= current_user.personal_projects.count
of
%span= current_user.projects_limit
@@ -87,10 +87,10 @@
%fieldset
%legend
SSH public keys:
- %span.right
+ %span.pull-right
= link_to pluralize(current_user.keys.count, 'key'), keys_path
.padded
- = link_to "Add Public Key", new_key_path, class: "btn small"
+ = link_to "Add Public Key", new_key_path, class: "btn btn-small"
.form-actions
- = f.submit 'Save', class: "btn save-btn"
+ = f.submit 'Save', class: "btn btn-save"
diff --git a/app/views/projects/_clone_panel.html.haml b/app/views/projects/_clone_panel.html.haml
index 2962ad980b3bfd69ffc450f6afe8a4a02277cf81..e52df19be965aff530be022186c3071fcd52d35b 100644
--- a/app/views/projects/_clone_panel.html.haml
+++ b/app/views/projects/_clone_panel.html.haml
@@ -2,8 +2,8 @@
.row
.span7
.form-horizontal= render "shared/clone_panel"
- .span4.right
- .right
+ .span4.pull-right
+ .pull-right
- unless @project.empty_repo?
- if can? current_user, :download_code, @project
= link_to archive_project_repository_path(@project), class: "btn-small btn grouped" do
diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml
index b582adc97a2ce84306cf2dbdd98b03bc0f0014e8..8d3b1aded5ce67d955186a1953486a01ca5be24d 100644
--- a/app/views/projects/_form.html.haml
+++ b/app/views/projects/_form.html.haml
@@ -1,6 +1,6 @@
= form_for(@project, remote: true) do |f|
- if @project.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @project.errors.full_messages.each do |msg|
%li= msg
@@ -77,9 +77,9 @@
%br
.actions
- = f.submit 'Save', class: "btn save-btn"
+ = f.submit 'Save', class: "btn btn-save"
= link_to 'Cancel', @project, class: "btn"
- unless @project.new_record?
- if can?(current_user, :remove_project, @project)
- .right
- = link_to 'Remove Project', @project, confirm: 'Removed project can not be restored! Are you sure?', method: :delete, class: "btn danger"
+ .pull-right
+ = link_to 'Remove Project', @project, confirm: 'Removed project can not be restored! Are you sure?', method: :delete, class: "btn btn-remove"
diff --git a/app/views/projects/_new_form.html.haml b/app/views/projects/_new_form.html.haml
index 5f7348d47a1605326071a14aefac9169e8ceae12..185164955fcd3271882bfec0b16501e48d60bd4c 100644
--- a/app/views/projects/_new_form.html.haml
+++ b/app/views/projects/_new_form.html.haml
@@ -1,13 +1,13 @@
= form_for(@project, remote: true) do |f|
- if @project.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @project.errors.full_messages.first
.clearfix.project_name_holder
= f.label :name do
Project name is
.input
= f.text_field :name, placeholder: "Example Project", class: "xxlarge"
- = f.submit 'Create project', class: "btn success project-submit"
+ = f.submit 'Create project', class: "btn btn-create project-submit"
- if current_user.can_select_namespace?
.clearfix
@@ -24,11 +24,11 @@
.clearfix
.input.light
Need a group for several dependent projects?
- = link_to new_group_path, class: "btn very_small" do
+ = link_to new_group_path, class: "btn btn-tiny" do
Create a group
- if current_user.can_create_team?
.clearfix
.input.light
Want to share a project between team?
- = link_to new_team_path, class: "btn very_small" do
+ = link_to new_team_path, class: "btn btn-tiny" do
Create a team
diff --git a/app/views/projects/_project_head.html.haml b/app/views/projects/_project_head.html.haml
index cc2155028593365ce02469421fd19f62827129ee..b8c88853a620a53fba325044acdf4f088b93f694 100644
--- a/app/views/projects/_project_head.html.haml
+++ b/app/views/projects/_project_head.html.haml
@@ -13,19 +13,19 @@
= link_to 'Snippets', project_snippets_path(@project), class: "snippets-tab tab"
- if can? current_user, :admin_project, @project
- = nav_link(controller: :deploy_keys, html_options: {class: 'right'}) do
+ = nav_link(controller: :deploy_keys, html_options: {class: 'pull-right'}) do
= link_to project_deploy_keys_path(@project) do
%span
Deploy Keys
- = nav_link(controller: :hooks, html_options: {class: 'right'}) do
+ = nav_link(controller: :hooks, html_options: {class: 'pull-right'}) do
= link_to project_hooks_path(@project) do
%span
Hooks
- = nav_link(controller: :services, html_options: {class: 'right'}) do
+ = nav_link(controller: :services, html_options: {class: 'pull-right'}) do
= link_to project_services_path(@project) do
%span
Services
- = nav_link(path: 'projects#edit', html_options: {class: 'right'}) do
+ = nav_link(path: 'projects#edit', html_options: {class: 'pull-right'}) do
= link_to edit_project_path(@project), class: "stat-tab tab " do
%i.icon-edit
Edit
diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml
index 52dff687a3a70a775401632d35011c316e4077c3..9426517876ea8fc9fd5c5b67a1de5bf5907a4e14 100644
--- a/app/views/projects/empty.html.haml
+++ b/app/views/projects/empty.html.haml
@@ -31,4 +31,4 @@
- if can? current_user, :remove_project, @project
.prepend-top-20
- = link_to 'Remove project', @project, confirm: 'Are you sure?', method: :delete, class: "btn danger right"
+ = link_to 'Remove project', @project, confirm: 'Are you sure?', method: :delete, class: "btn btn-remove pull-right"
diff --git a/app/views/projects/teams/available.html.haml b/app/views/projects/teams/available.html.haml
index 814e216d6adf81bdf5090776b8b0c4727f931aef..da7823638b9741a7a84d199609437b0f2c6f0adc 100644
--- a/app/views/projects/teams/available.html.haml
+++ b/app/views/projects/teams/available.html.haml
@@ -17,6 +17,6 @@
.actions
- = submit_tag 'Assign', class: "btn save-btn"
- = link_to "Cancel", project_team_index_path(@project), class: "btn cancel-btn"
+ = submit_tag 'Assign', class: "btn btn-create"
+ = link_to "Cancel", project_team_index_path(@project), class: "btn btn-cancel"
diff --git a/app/views/protected_branches/index.html.haml b/app/views/protected_branches/index.html.haml
index c1ecceda435a6f69fb80ef878627d277e6bdde45..15644de552f9246f4c1f4d006ae032d7a3bda96b 100644
--- a/app/views/protected_branches/index.html.haml
+++ b/app/views/protected_branches/index.html.haml
@@ -14,7 +14,7 @@
- if can? current_user, :admin_project, @project
= form_for [@project, @protected_branch] do |f|
-if @protected_branch.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @protected_branch.errors.full_messages.each do |msg|
%li= msg
@@ -24,7 +24,7 @@
.span3
= f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "chosen span3"})
- = f.submit 'Protect', class: "primary btn"
+ = f.submit 'Protect', class: "btn-primary btn"
- unless @branches.empty?
%table
@@ -51,4 +51,4 @@
(branch was removed from repository)
%td
- if can? current_user, :admin_project, @project
- = link_to 'Unprotect', [@project, branch], confirm: 'Are you sure?', method: :delete, class: "danger btn small"
+ = link_to 'Unprotect', [@project, branch], confirm: 'Are you sure?', method: :delete, class: "btn btn-remove btn-small"
diff --git a/app/views/public/projects/index.html.haml b/app/views/public/projects/index.html.haml
index afdd4c5fd95150eab8dc3b9554a7f730a3ee9a0b..21e9d2e6029c93036f3d2a07ff5df988cd8447ab 100644
--- a/app/views/public/projects/index.html.haml
+++ b/app/views/public/projects/index.html.haml
@@ -9,7 +9,7 @@
%h5
%i.icon-share
= project.name_with_namespace
- .right
+ .pull-right
%pre.dark.tiny git clone #{project.http_url_to_repo}
diff --git a/app/views/repositories/_feed.html.haml b/app/views/repositories/_feed.html.haml
index 443801337181bdbd7ea08c38cdd041592c62b842..eaf15ca77d63237da15022f7dfce7c139349131b 100644
--- a/app/views/repositories/_feed.html.haml
+++ b/app/views/repositories/_feed.html.haml
@@ -15,6 +15,6 @@
= image_tag gravatar_icon(commit.author_email), class: "", width: 16
= gfm escape_once(truncate(commit.title, length: 40))
%td
- %span.right.cgray
+ %span.pull-right.cgray
= time_ago_in_words(commit.committed_date)
ago
diff --git a/app/views/repositories/stats.html.haml b/app/views/repositories/stats.html.haml
index bdf047f1e989ee9c690b756cf5f1b45aa5fdd4ad..dde35ea38aa0b1d0f4600ea09165c94973a62358 100644
--- a/app/views/repositories/stats.html.haml
+++ b/app/views/repositories/stats.html.haml
@@ -23,7 +23,7 @@
= image_tag gravatar_icon(author.email, 16), class: 'avatar s16'
= author.name
%small.light= author.email
- .right
+ .pull-right
= author.commits
diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml
index 22e1ae50df195cf8d7a0b22655678051667c05a8..5914c22df6ef951d442f7132b177247a83b82b70 100644
--- a/app/views/search/show.html.haml
+++ b/app/views/search/show.html.haml
@@ -4,7 +4,7 @@
%span Looking for
.input
= search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search"
- = submit_tag 'Search', class: "btn primary wide"
+ = submit_tag 'Search', class: "btn btn-primary wide"
.clearfix
.row
.span3
diff --git a/app/views/services/_gitlab_ci.html.haml b/app/views/services/_gitlab_ci.html.haml
index 649c5cc4c3c60212e57f7a927b7097c6a38538a9..dfde643849e3c2fffbfda69b55f5e20f20ebd41e 100644
--- a/app/views/services/_gitlab_ci.html.haml
+++ b/app/views/services/_gitlab_ci.html.haml
@@ -1,7 +1,7 @@
%h3.page_title
GitLab CI
%small Continuous integration server from GitLab
- .right
+ .pull-right
- if @service.active
%small.cgreen Enabled
- else
@@ -16,7 +16,7 @@
%hr
= form_for(@service, :as => :service, :url => project_service_path(@project, :gitlab_ci), :method => :put) do |f|
- if @service.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @service.errors.full_messages.each do |msg|
%li= msg
@@ -40,7 +40,7 @@
.form-actions
- = f.submit 'Save', class: 'btn save-btn'
+ = f.submit 'Save', class: 'btn btn-save'
- if @service.valid? && @service.active
= link_to 'Test settings', test_project_service_path(@project), class: 'btn btn-small'
diff --git a/app/views/services/index.html.haml b/app/views/services/index.html.haml
index 2c94f965eec1f968a999d6613f2e7ec9ddc858c7..27dbf5025691bfb35ee8f631953048244504b59a 100644
--- a/app/views/services/index.html.haml
+++ b/app/views/services/index.html.haml
@@ -8,7 +8,7 @@
= link_to edit_project_service_path(@project, :gitlab_ci) do
GitLab CI
%small Continuous integration server from GitLab
- .right
+ .pull-right
- if @gitlab_ci_service.try(:active)
%small.cgreen
%i.icon-ok
@@ -21,11 +21,11 @@
%h4
Jenkins CI
%small An extendable open source continuous integration server
- .right
+ .pull-right
%small Not implemented yet
%li.disabled
%h4
Campfire
%small Web-based group chat tool
- .right
+ .pull-right
%small Not implemented yet
diff --git a/app/views/snippets/_blob.html.haml b/app/views/snippets/_blob.html.haml
index ed518300ac05615a7464406189c090c843df3101..017a33b34f343fdba99596bf6cdecaff8e8a2ca6 100644
--- a/app/views/snippets/_blob.html.haml
+++ b/app/views/snippets/_blob.html.haml
@@ -3,7 +3,7 @@
%i.icon-file
%strong= @snippet.file_name
%span.options
- = link_to "raw", raw_project_snippet_path(@project, @snippet), class: "btn very_small", target: "_blank"
+ = link_to "raw", raw_project_snippet_path(@project, @snippet), class: "btn btn-tiny", target: "_blank"
.file_content.code
- unless @snippet.content.empty?
%div{class: user_color_scheme_class}
diff --git a/app/views/snippets/_form.html.haml b/app/views/snippets/_form.html.haml
index baef737b56524c8a42da9fa64184f23106f7c1d2..77162cdcde338beb2c54be39ac765e6961b31a15 100644
--- a/app/views/snippets/_form.html.haml
+++ b/app/views/snippets/_form.html.haml
@@ -4,7 +4,7 @@
.snippet-form-holder
= form_for [@project, @snippet] do |f|
-if @snippet.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @snippet.errors.full_messages.each do |msg|
%li= msg
@@ -27,10 +27,10 @@
= f.hidden_field :content, class: 'snippet-file-content'
.form-actions
- = f.submit 'Save', class: "save-btn btn"
+ = f.submit 'Save', class: "btn-save btn"
= link_to "Cancel", project_snippets_path(@project), class: " btn"
- unless @snippet.new_record?
- .right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}"
+ .pull-right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn pull-right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}"
:javascript
diff --git a/app/views/snippets/index.html.haml b/app/views/snippets/index.html.haml
index 7b8f94de7dd5d3a25b79e8bb53444b51722ab8c4..28a533d238f3024428368b054419505c2ff8bd96 100644
--- a/app/views/snippets/index.html.haml
+++ b/app/views/snippets/index.html.haml
@@ -5,7 +5,7 @@
%small share code pastes with others out of git repository
- if can? current_user, :write_snippet, @project
- = link_to new_project_snippet_path(@project), class: "btn small add_new right", title: "New Snippet" do
+ = link_to new_project_snippet_path(@project), class: "btn btn-small add_new pull-right", title: "New Snippet" do
Add new snippet
%br
%table
diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml
index 02022185f9abded1d05ebb6cbabfc13a76bac008..e6bcd88f830e610f290e7827288076db26860f96 100644
--- a/app/views/snippets/show.html.haml
+++ b/app/views/snippets/show.html.haml
@@ -4,7 +4,7 @@
= @snippet.title
%small= @snippet.file_name
- if can?(current_user, :admin_snippet, @project) || @snippet.author == current_user
- = link_to "Edit", edit_project_snippet_path(@project, @snippet), class: "btn small right"
+ = link_to "Edit", edit_project_snippet_path(@project, @snippet), class: "btn btn-small pull-right"
%br
%div= render 'blob'
diff --git a/app/views/team_members/_form.html.haml b/app/views/team_members/_form.html.haml
index f9ee49dbdeb803bece1e4ddac8db34e434c73c54..05bea2db87e91bbbe399b40882ca0fc1c0860db1 100644
--- a/app/views/team_members/_form.html.haml
+++ b/app/views/team_members/_form.html.haml
@@ -3,7 +3,7 @@
%hr
= form_for @user_project_relation, as: :team_member, url: project_team_members_path(@project) do |f|
-if @user_project_relation.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @user_project_relation.errors.full_messages.each do |msg|
%li= msg
@@ -19,5 +19,5 @@
.input= select_tag :project_access, options_for_select(Project.access_options, @user_project_relation.project_access), class: "project-access-select chosen"
.actions
- = f.submit 'Save', class: "btn save-btn"
- = link_to "Cancel", project_team_index_path(@project), class: "btn cancel-btn"
+ = f.submit 'Add users', class: "btn btn-create"
+ = link_to "Cancel", project_team_index_path(@project), class: "btn btn-cancel"
diff --git a/app/views/team_members/_show.html.haml b/app/views/team_members/_show.html.haml
index 529920338054f1954d37805b315d9092c3a42d6f..3df2caed64a0cfbb65a6a1f00625ed918dc2c7b1 100644
--- a/app/views/team_members/_show.html.haml
+++ b/app/views/team_members/_show.html.haml
@@ -10,19 +10,19 @@
%br
%small.cgray= user.email
- .span5.right
+ .span5.pull-right
- if allow_admin
.left
= form_for(member, as: :team_member, url: project_team_member_path(@project, member.user)) do |f|
= f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, class: "medium project-access-select span2"
- .right
+ .pull-right
- if current_user == user
%span.btn.disabled This is you!
- if @project.namespace_owner == user
- %span.btn.disabled.success Owner
+ %span.btn.disabled Owner
- elsif user.blocked
%span.btn.disabled.blocked Blocked
- elsif allow_admin
- = link_to project_team_member_path(@project, user), confirm: remove_from_project_team_message(@project, user), method: :delete, class: "very_small btn danger" do
+ = link_to project_team_member_path(@project, user), confirm: remove_from_project_team_message(@project, user), method: :delete, class: "btn-tiny btn btn-remove" do
%i.icon-minus.icon-white
diff --git a/app/views/team_members/_show_team.html.haml b/app/views/team_members/_show_team.html.haml
index da0262efda53510dae75f3cab7d496c9b1b0835c..f1555f0b87b050a3a8070b5d4110f81f3545324c 100644
--- a/app/views/team_members/_show_team.html.haml
+++ b/app/views/team_members/_show_team.html.haml
@@ -7,9 +7,9 @@
%br
%small.cgray Members: #{team.members.count}
- .span5.right
- .right
+ .span5.pull-right
+ .pull-right
- if allow_admin
.left
- = link_to resign_project_team_path(@project, team), method: :delete, confirm: "Are you shure?", class: "btn danger small" do
+ = link_to resign_project_team_path(@project, team), method: :delete, confirm: "Are you shure?", class: "btn btn-remove small" do
%i.icon-minus.icon-white
diff --git a/app/views/team_members/import.html.haml b/app/views/team_members/import.html.haml
index 135db946041da3c953f5c92f0b5ceacd681e8845..d6c81befd08865726d99e1e997bf21e0c84e6fa1 100644
--- a/app/views/team_members/import.html.haml
+++ b/app/views/team_members/import.html.haml
@@ -12,6 +12,6 @@
.input= select_tag(:source_project_id, options_from_collection_for_select(current_user.authorized_projects, :id, :name_with_namespace), prompt: "Select project", class: "chosen xxlarge", required: true)
.actions
- = submit_tag 'Import', class: "btn save-btn"
- = link_to "Cancel", project_team_index_path(@project), class: "btn cancel-btn"
+ = submit_tag 'Import', class: "btn btn-save"
+ = link_to "Cancel", project_team_index_path(@project), class: "btn btn-cancel"
diff --git a/app/views/team_members/index.html.haml b/app/views/team_members/index.html.haml
index 6425302b83b7ad4dfa4bf6c3849b40719737a95a..3264f58cb32d0bf1817924fcc39fb3bb19e2ac53 100644
--- a/app/views/team_members/index.html.haml
+++ b/app/views/team_members/index.html.haml
@@ -7,12 +7,12 @@
%strong= link_to "here", help_permissions_path, class: "vlink"
- if can? current_user, :admin_team_member, @project
- %span.right
- = link_to import_project_team_members_path(@project), class: "btn small grouped", title: "Import team from another project" do
+ %span.pull-right
+ = link_to import_project_team_members_path(@project), class: "btn btn-small grouped", title: "Import team from another project" do
Import team from another project
- = link_to available_project_teams_path(@project), class: "btn small grouped", title: "Assign project to team of users" do
+ = link_to available_project_teams_path(@project), class: "btn btn-small grouped", title: "Assign project to team of users" do
Assign project to Team of users
- = link_to new_project_team_member_path(@project), class: "btn success small grouped", title: "New Team Member" do
+ = link_to new_project_team_member_path(@project), class: "btn btn-primary small grouped", title: "New Team Member" do
New Team Member
%hr
diff --git a/app/views/team_members/show.html.haml b/app/views/team_members/show.html.haml
index a6a7152e92a84b8f5bf6cda4c321c6d8673cbe4b..192948eff7da0134ff4aae79d9596f7458f03312 100644
--- a/app/views/team_members/show.html.haml
+++ b/app/views/team_members/show.html.haml
@@ -2,7 +2,7 @@
.team_member_show
- if can? current_user, :admin_project, @project
- = link_to 'Remove from team', project_team_member_path(@project, @member), confirm: 'Are you sure?', method: :delete, class: "right btn danger"
+ = link_to 'Remove from team', project_team_member_path(@project, @member), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove pull-right"
.profile_avatar_holder
= image_tag gravatar_icon(@member.email, 60), class: "borders"
%h3.page_title
diff --git a/app/views/teams/_filter.html.haml b/app/views/teams/_filter.html.haml
index 8e358319651afdd591886221465cffa3d4022cf3..f461fcad42e41dbb00faea920ef584103946f486 100644
--- a/app/views/teams/_filter.html.haml
+++ b/app/views/teams/_filter.html.haml
@@ -25,9 +25,9 @@
%li{class: ("active" if params[:project_id] == project.id.to_s)}
= link_to team_filter_path(entity, project_id: project.id) do
= project.name_with_namespace
- %small.right= entities_per_project(project, entity)
+ %small.pull-right= entities_per_project(project, entity)
%fieldset
%hr
- = link_to "Reset", team_filter_path(entity), class: 'btn right'
+ = link_to "Reset", team_filter_path(entity), class: 'btn pull-right'
diff --git a/app/views/teams/_projects.html.haml b/app/views/teams/_projects.html.haml
index 4d99d5c259b70a4c856e868a76a9c0a022a43f38..5677255b15be9b602671e7a0c862032481c096e1 100644
--- a/app/views/teams/_projects.html.haml
+++ b/app/views/teams/_projects.html.haml
@@ -4,8 +4,8 @@
%small
(#{projects.count})
- if can? current_user, :manage_user_team, @team
- %span.right
- = link_to new_team_project_path(@team), class: "btn very_small info" do
+ %span.pull-right
+ = link_to new_team_project_path(@team), class: "btn btn-tiny info" do
%i.icon-plus
Assign Project
%ul.well-list
diff --git a/app/views/teams/edit.html.haml b/app/views/teams/edit.html.haml
index 60535330c4a739a472543781cbdb1dc82669d97c..a3b1c7344142e1ac554308f85cea203a955a2971 100644
--- a/app/views/teams/edit.html.haml
+++ b/app/views/teams/edit.html.haml
@@ -2,7 +2,7 @@
%hr
= form_for @team, url: teams_path do |f|
- if @team.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @team.errors.full_messages.first
.clearfix
= f.label :name do
@@ -17,6 +17,6 @@
= f.text_field :path, placeholder: "opensource", class: "xxlarge left"
.clearfix
.input.span3.center
- = f.submit 'Save team changes', class: "btn primary"
+ = f.submit 'Save team changes', class: "btn btn-primary"
.input.span3.center
- = link_to 'Delete team', team_path(@team), method: :delete, confirm: "You are shure?", class: "btn danger"
+ = link_to 'Delete team', team_path(@team), method: :delete, confirm: "You are shure?", class: "btn btn-remove"
diff --git a/app/views/teams/issues.html.haml b/app/views/teams/issues.html.haml
index 4481e2eaa03ef5e411b924c0ea273b9d9512e4c0..c6a68c37b9c9edeca02b441ae1019cf819030e47 100644
--- a/app/views/teams/issues.html.haml
+++ b/app/views/teams/issues.html.haml
@@ -1,7 +1,7 @@
%h3.page_title
Issues
%small (in Team projects assigned to Team members)
- %small.right #{@issues.total_count} issues
+ %small.pull-right #{@issues.total_count} issues
%hr
.row
diff --git a/app/views/teams/members/_form.html.haml b/app/views/teams/members/_form.html.haml
index b75d788a94aa4e127d23d2ee2ff7d16b2c9e5c77..c22ee78305fab97f9ce5c48269d863269c85aa83 100644
--- a/app/views/teams/members/_form.html.haml
+++ b/app/views/teams/members/_form.html.haml
@@ -1,6 +1,6 @@
= form_tag admin_team_member_path(@team, @member), method: :put do
-if @member.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @member.errors.full_messages.each do |msg|
%li= msg
@@ -16,5 +16,5 @@
%br
.actions
- = submit_tag 'Save', class: "btn primary"
+ = submit_tag 'Save', class: "btn btn-save"
= link_to 'Cancel', :back, class: "btn"
diff --git a/app/views/teams/members/_show.html.haml b/app/views/teams/members/_show.html.haml
index 740d5a498c0f8914f8d72c0df15910aac3077269..6cddb8e482663c34f9368bf0fcf1904954c0d74e 100644
--- a/app/views/teams/members/_show.html.haml
+++ b/app/views/teams/members/_show.html.haml
@@ -10,22 +10,22 @@
%br
%small.cgray= user.email
- .span6.right
+ .span6.pull-right
- if allow_admin
.left.span2
= form_for(member, as: :team_member, url: team_member_path(@team, user)) do |f|
= f.select :permission, options_for_select(UsersProject.access_roles, @team.default_projects_access(user)), {}, class: "medium project-access-select span2"
.left.span2
%span
- Admin access
= check_box_tag :group_admin, true, @team.admin?(user)
- .right
+ Admin access
+ .pull-right
- if current_user == user
%span.btn.disabled This is you!
- if @team.owner == user
- %span.btn.disabled.success Owner
+ %span.btn.disabled.btn-success Owner
- elsif user.blocked
%span.btn.disabled.blocked Blocked
- elsif allow_admin
- = link_to team_member_path(@team, user), confirm: remove_from_user_team_message(@team, user), method: :delete, class: "very_small btn danger" do
+ = link_to team_member_path(@team, user), confirm: remove_from_user_team_message(@team, user), method: :delete, class: "btn-tiny btn btn-remove" do
%i.icon-minus.icon-white
diff --git a/app/views/teams/members/index.html.haml b/app/views/teams/members/index.html.haml
index 90fa0aef35c3c992aa9c1d2d90254de4d159fbf1..87438266cfb75264bf268c3d7d7013a5f9bef5ae 100644
--- a/app/views/teams/members/index.html.haml
+++ b/app/views/teams/members/index.html.haml
@@ -6,8 +6,8 @@
%strong= link_to "here", help_permissions_path, class: "vlink"
- if can? current_user, :manage_user_team, @team
- %span.right
- = link_to new_team_member_path(@team), class: "btn success small grouped", title: "New Team Member" do
+ %span.pull-right
+ = link_to new_team_member_path(@team), class: "btn btn-primary small grouped", title: "New Team Member" do
New Team Member
%hr
diff --git a/app/views/teams/members/new.html.haml b/app/views/teams/members/new.html.haml
index 274cdbadf29fd4e239713856134cafbb0efffb31..083e137e0ae0b6104188bac142f2a9d7487649ce 100644
--- a/app/views/teams/members/new.html.haml
+++ b/app/views/teams/members/new.html.haml
@@ -25,4 +25,4 @@
%td
%span= check_box_tag :group_admin
%span Admin?
- %td= submit_tag 'Add', class: "btn primary", id: :add_members_to_team
+ %td= submit_tag 'Add User', class: "btn btn-create", id: :add_members_to_team
diff --git a/app/views/teams/members/show.html.haml b/app/views/teams/members/show.html.haml
index 4008e8bd23e6c17bbf2351be96ea5b1966fbe5ba..f760c2dae3a2c405376acc73e29c5cb1d21450e8 100644
--- a/app/views/teams/members/show.html.haml
+++ b/app/views/teams/members/show.html.haml
@@ -3,7 +3,7 @@
.team_member_show
- if can? current_user, :admin_project, @project
- = link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "right btn danger"
+ = link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "pull-right btn btn-remove"
.profile_avatar_holder
= image_tag gravatar_icon(user.email, 60), class: "borders"
%h3.page_title
diff --git a/app/views/teams/merge_requests.html.haml b/app/views/teams/merge_requests.html.haml
index c9af529e11301cc0e6a1960f9cd7ada82a1c25db..417d1aa604029e3d0e052f5bdb7902c55d0394b7 100644
--- a/app/views/teams/merge_requests.html.haml
+++ b/app/views/teams/merge_requests.html.haml
@@ -1,7 +1,7 @@
%h3.page_title
Merge Requests
%small (authored by or assigned to Team members)
- %small.right #{@merge_requests.total_count} merge requests
+ %small.pull-right #{@merge_requests.total_count} merge requests
%hr
.row
diff --git a/app/views/teams/new.html.haml b/app/views/teams/new.html.haml
index 12695f2b5aeffc5445f9b0ca8015bcbb56604533..38f61c11c0cac08711fec3e092d980062e09fd58 100644
--- a/app/views/teams/new.html.haml
+++ b/app/views/teams/new.html.haml
@@ -2,7 +2,7 @@
%hr
= form_for @team, url: teams_path do |f|
- if @team.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%span= @team.errors.full_messages.first
.clearfix
= f.label :name do
@@ -10,7 +10,7 @@
.input
= f.text_field :name, placeholder: "Ex. Ruby Developers", class: "xxlarge left"
- = f.submit 'Create team', class: "btn primary"
+ = f.submit 'Create team', class: "btn btn-create"
%hr
.padded
%ul
diff --git a/app/views/teams/projects/_form.html.haml b/app/views/teams/projects/_form.html.haml
index 3749dbc4f994dc43a9405905372f28f76077ce6b..d2c89b0c36bce601e58a7c535600acf5e5dbbe47 100644
--- a/app/views/teams/projects/_form.html.haml
+++ b/app/views/teams/projects/_form.html.haml
@@ -1,6 +1,6 @@
= form_tag team_project_path(@team, @project), method: :put do
-if @project.errors.any?
- .alert-message.block-message.error
+ .alert.alert-error
%ul
- @project.errors.full_messages.each do |msg|
%li= msg
@@ -12,5 +12,5 @@
%br
.actions
- = submit_tag 'Save', class: "btn primary"
- = link_to 'Cancel', :back, class: "btn"
+ = submit_tag 'Save', class: "btn btn-save"
+ = link_to 'Cancel', :back, class: "btn btn-cancel"
diff --git a/app/views/teams/projects/edit.html.haml b/app/views/teams/projects/edit.html.haml
index b91a4982b81205f039d84f68eafeafbfe5f9281c..82c7d734815d84de50dc50b37da0dbfa923af78b 100644
--- a/app/views/teams/projects/edit.html.haml
+++ b/app/views/teams/projects/edit.html.haml
@@ -1,16 +1,6 @@
-%h3
- Edit max access in #{@project.name} for #{@team.name} team
+%h3.page_title
+ Edit max access in #{link_to @project.name_with_namespace, @project} for #{link_to(@team.name, team_path(@team))} team
%hr
-%table.zebra-striped
- %tr
- %td Project:
- %td= @project.name
- %tr
- %td Team:
- %td= @team.name
- %tr
- %td Since:
- %td= assigned_since(@team, @project).stamp("Nov 11, 2010")
= render 'form'
diff --git a/app/views/teams/projects/index.html.haml b/app/views/teams/projects/index.html.haml
index 493fc2c5c9e4fb68af05f7999b98be094319a405..696ee29c7786d7fed3ba43aeba2745916ad7bf93 100644
--- a/app/views/teams/projects/index.html.haml
+++ b/app/views/teams/projects/index.html.haml
@@ -5,8 +5,8 @@
%strong= link_to "here", help_permissions_path, class: "vlink"
- if current_user.can?(:manage_user_team, @team) && @avaliable_projects.any?
- %span.right
- = link_to new_team_project_path(@team), class: "btn success small grouped", title: "New Team Member" do
+ %span.pull-right
+ = link_to new_team_project_path(@team), class: "btn btn-primary small grouped", title: "New Team Member" do
Assign project to Team
%hr
@@ -29,8 +29,8 @@
- if current_user.can?(:admin_user_team, @team)
%td.bgred
- = link_to 'Edit max access', edit_team_project_path(@team, project), class: "btn small"
- = link_to 'Relegate', team_project_path(@team, project), confirm: 'Remove project from team and move to global namespace. Are you sure?', method: :delete, class: "btn danger small"
+ = link_to 'Edit max access', edit_team_project_path(@team, project), class: "btn btn-small"
+ = link_to 'Relegate', team_project_path(@team, project), confirm: 'Remove project from team and move to global namespace. Are you sure?', method: :delete, class: "btn btn-remove small"
- else
%p.nothing_here_message This team has no projects yet
diff --git a/app/views/teams/projects/new.html.haml b/app/views/teams/projects/new.html.haml
index d57f56b2feea41a752afb8637b4d96792b6f2427..3f3671aa0a47859c3376c0ad00397e472fffd9eb 100644
--- a/app/views/teams/projects/new.html.haml
+++ b/app/views/teams/projects/new.html.haml
@@ -20,4 +20,4 @@
%tr
%td= select_tag :project_ids, options_from_collection_for_select(@avaliable_projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
%td= select_tag :greatest_project_access, options_for_select(UserTeam.access_roles), {class: "project-access-select chosen span3" }
- %td= submit_tag 'Add', class: "btn primary", id: :assign_projects_to_team
+ %td= submit_tag 'Add Project', class: "btn btn-create", id: :assign_projects_to_team
diff --git a/app/views/teams/show.html.haml b/app/views/teams/show.html.haml
index d9257ab090c9e8faf387f045c9c9c2a11ba7bcef..d6e80e2a51e23e82e3e53e1a6876ec793fa5d364 100644
--- a/app/views/teams/show.html.haml
+++ b/app/views/teams/show.html.haml
@@ -1,6 +1,6 @@
.projects
.activities.span8
- = link_to dashboard_path, class: 'btn very_small' do
+ = link_to dashboard_path, class: 'btn btn-tiny' do
← To dashboard
%span.cgray Events and projects are filtered in scope of team
diff --git a/app/views/tree/_blob_actions.html.haml b/app/views/tree/_blob_actions.html.haml
index 21334ea1f1652177d038209722ca404d8a45a2dd..0bde968d0e69610e41c3d9cb1bf7739b89a2b222 100644
--- a/app/views/tree/_blob_actions.html.haml
+++ b/app/views/tree/_blob_actions.html.haml
@@ -1,12 +1,12 @@
.btn-group.tree-btn-group
-# only show edit link for text files
- if @tree.text?
- = link_to "edit", edit_project_tree_path(@project, @id), class: "btn very_small", disabled: !allowed_tree_edit?
- = link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
+ = link_to "edit", edit_project_tree_path(@project, @id), class: "btn btn-tiny", disabled: !allowed_tree_edit?
+ = link_to "raw", project_blob_path(@project, @id), class: "btn btn-tiny", target: "_blank"
-# only show normal/blame view links for text files
- if @tree.text?
- if current_page? project_blame_path(@project, @id)
- = link_to "normal view", project_tree_path(@project, @id), class: "btn very_small"
+ = link_to "normal view", project_tree_path(@project, @id), class: "btn btn-tiny"
- else
- = link_to "blame", project_blame_path(@project, @id), class: "btn very_small"
- = link_to "history", project_commits_path(@project, @id), class: "btn very_small"
+ = link_to "blame", project_blame_path(@project, @id), class: "btn btn-tiny"
+ = link_to "history", project_commits_path(@project, @id), class: "btn btn-tiny"
diff --git a/app/views/tree/_head.html.haml b/app/views/tree/_head.html.haml
index f14526cf23a4dbb440c8cb2aa2dd32ea90952b5d..32c3882400eed8d0858d46be2e1c71c38bb6fee7 100644
--- a/app/views/tree/_head.html.haml
+++ b/app/views/tree/_head.html.haml
@@ -3,5 +3,5 @@
= render partial: 'shared/ref_switcher', locals: {destination: 'tree', path: @path}
= nav_link(controller: :tree) do
= link_to 'Source', project_tree_path(@project, @ref)
- %li.right
+ %li.pull-right
= render "shared/clone_panel"
diff --git a/app/views/tree/_tree.html.haml b/app/views/tree/_tree.html.haml
index c284295951023e892ee3e69a3db1db2da3eeee56..29a2ed02d31a1398204205eef0db676148188f30 100644
--- a/app/views/tree/_tree.html.haml
+++ b/app/views/tree/_tree.html.haml
@@ -24,7 +24,7 @@
%th Name
%th Last Update
%th Last Commit
- %th= link_to "history", project_commits_path(@project, @id), class: "btn very_small right"
+ %th= link_to "history", project_commits_path(@project, @id), class: "btn btn-tiny pull-right"
- if tree.up_dir?
%tr.tree-item
diff --git a/app/views/tree/edit.html.haml b/app/views/tree/edit.html.haml
index adee68a00f8f8955b1f5b9c676714eb133308cb1..81918e509b83c96d1e7215c2d71c56768fdb2102 100644
--- a/app/views/tree/edit.html.haml
+++ b/app/views/tree/edit.html.haml
@@ -10,7 +10,7 @@
%strong= @ref
%span.options
.btn-group.tree-btn-group
- = link_to "Cancel", project_tree_path(@project, @id), class: "btn very_small cancel-btn", confirm: "Are you sure?"
+ = link_to "Cancel", project_tree_path(@project, @id), class: "btn btn-tiny btn-cancel", confirm: "Are you sure?"
.file_content.code
%pre#editor= @tree.data
@@ -27,7 +27,7 @@
.message
to branch
%strong= @ref
- = link_to "Cancel", project_tree_path(@project, @id), class: "btn cancel-btn", confirm: "Are you sure?"
+ = link_to "Cancel", project_tree_path(@project, @id), class: "btn btn-cancel", confirm: "Are you sure?"
:javascript
var ace_mode = "#{@tree.language.try(:ace_mode)}";
diff --git a/app/views/users/_profile.html.haml b/app/views/users/_profile.html.haml
index ab6538f083bf60b254c27cdd36530bc824768997..4981aaba0ac39ac0e9c5963606d08cabd5b5432f 100644
--- a/app/views/users/_profile.html.haml
+++ b/app/views/users/_profile.html.haml
@@ -4,20 +4,20 @@
%ul.well-list
%li
%strong Email
- %span.right= mail_to @user.email
+ %span.pull-right= mail_to @user.email
- unless @user.skype.blank?
%li
%strong Skype
- %span.right= @user.skype
+ %span.pull-right= @user.skype
- unless @user.linkedin.blank?
%li
%strong LinkedIn
- %span.right= @user.linkedin
+ %span.pull-right= @user.linkedin
- unless @user.twitter.blank?
%li
%strong Twitter
- %span.right= @user.twitter
+ %span.pull-right= @user.twitter
- unless @user.bio.blank?
%li
%strong Bio
- %span.right= @user.bio
+ %span.pull-right= @user.bio
diff --git a/app/views/users/_projects.html.haml b/app/views/users/_projects.html.haml
index f46a0ed1161ffe523f5dbaeda0ee371f805ee12a..73f635f3a088f8beff8ec8895db70edee2b8d554 100644
--- a/app/views/users/_projects.html.haml
+++ b/app/views/users/_projects.html.haml
@@ -9,7 +9,7 @@
\/
%strong.well-title
= truncate(project.name, length: 45)
- %span.right.light
+ %span.pull-right.light
- if project.owner == @user
%i.icon-wrench
- tm = project.team.get_tm(@user.id)
diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml
index 644826282b8894156e52f71df9e199da8408a325..969fed9ce537f02d127f8838651ed82d8b7941f4 100644
--- a/app/views/users/show.html.haml
+++ b/app/views/users/show.html.haml
@@ -4,8 +4,8 @@
= 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
+ .pull-right
+ = link_to profile_path, class: 'btn btn-small' do
%i.icon-edit
Edit Profile
%br
diff --git a/app/views/wikis/_form.html.haml b/app/views/wikis/_form.html.haml
index 9eb2a571fe5c0bef1cc77913c25c534adf3e58b9..7758b129b07aec99ac6a9b88e11f1ae487adb360 100644
--- a/app/views/wikis/_form.html.haml
+++ b/app/views/wikis/_form.html.haml
@@ -23,5 +23,5 @@
= f.label :content
.input= f.text_area :content, class: 'span8 js-gfm-input'
.actions
- = f.submit 'Save', class: "save-btn btn"
- = link_to "Cancel", project_wiki_path(@project, :index), class: "btn cancel-btn"
+ = f.submit 'Save', class: "btn-save btn"
+ = link_to "Cancel", project_wiki_path(@project, :index), class: "btn btn-cancel"
diff --git a/app/views/wikis/edit.html.haml b/app/views/wikis/edit.html.haml
index 8f6b457f22a833f6716c148aaf357e03f1ceda95..9e221aba47dfcbb24c1ce8e2f8160c7126221cbe 100644
--- a/app/views/wikis/edit.html.haml
+++ b/app/views/wikis/edit.html.haml
@@ -2,7 +2,7 @@
%hr
= render 'form'
-.right
+.pull-right
- if can? current_user, :admin_wiki, @project
- = link_to project_wiki_path(@project, @wiki), confirm: "Are you sure you want to delete this page?", method: :delete, class: "btn small danger" do
+ = link_to project_wiki_path(@project, @wiki), confirm: "Are you sure you want to delete this page?", method: :delete, class: "btn btn-small btn-remove" do
Delete this page
\ No newline at end of file
diff --git a/app/views/wikis/show.html.haml b/app/views/wikis/show.html.haml
index d3bd58bbeec2f46363627f95018b1bb5286fc429..7ff8b5cc01ec9e94faaee58d9f74bec4db998542 100644
--- a/app/views/wikis/show.html.haml
+++ b/app/views/wikis/show.html.haml
@@ -1,12 +1,12 @@
%h3.page_title
= @wiki.title
- %span.right
- = link_to pages_project_wikis_path(@project), class: "btn small grouped" do
+ %span.pull-right
+ = link_to pages_project_wikis_path(@project), class: "btn btn-small grouped" do
Pages
- if can? current_user, :write_wiki, @project
- = link_to history_project_wiki_path(@project, @wiki), class: "btn small grouped" do
+ = link_to history_project_wiki_path(@project, @wiki), class: "btn btn-small grouped" do
History
- = link_to edit_project_wiki_path(@project, @wiki), class: "btn small grouped" do
+ = link_to edit_project_wiki_path(@project, @wiki), class: "btn btn-small grouped" do
%i.icon-edit
Edit
%br
diff --git a/app/workers/gitolite_worker.rb b/app/workers/gitolite_worker.rb
index d134ea035f42ae434159a8d9dade9800f15b4e56..bff7a8c6a6f257a342112f43e9f75a8629617555 100644
--- a/app/workers/gitolite_worker.rb
+++ b/app/workers/gitolite_worker.rb
@@ -4,7 +4,7 @@ class GitoliteWorker
sidekiq_options queue: :gitolite
- def perform(action, arg)
- gitolite.send(action, arg)
+ def perform(action, *arg)
+ gitolite.send(action, *arg)
end
end
diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb
index a906f78f7e3188d66819b2af39d52ee4646b4c13..6d31c08fefc0a7e1f6725c720b2795e3f3da7c32 100644
--- a/app/workers/post_receive.rb
+++ b/app/workers/post_receive.rb
@@ -4,12 +4,22 @@ class PostReceive
sidekiq_options queue: :post_receive
def perform(repo_path, oldrev, newrev, ref, identifier)
- repo_path.gsub!(Gitlab.config.gitolite.repos_path.to_s, "")
+
+ if repo_path.start_with?(Gitlab.config.gitolite.repos_path.to_s)
+ repo_path.gsub!(Gitlab.config.gitolite.repos_path.to_s, "")
+ else
+ Gitlab::GitLogger.error("POST-RECEIVE: Check gitlab.yml config for correct gitolite.repos_path variable. \"#{Gitlab.config.gitolite.repos_path}\" does not match \"#{repo_path}\"")
+ end
+
repo_path.gsub!(/.git$/, "")
repo_path.gsub!(/^\//, "")
project = Project.find_with_namespace(repo_path)
- return false if project.nil?
+
+ if project.nil?
+ Gitlab::GitLogger.error("POST-RECEIVE: Triggered hook for non-existing project with full path \"#{repo_path} \"")
+ return false
+ end
# Ignore push from non-gitlab users
user = if identifier.eql? Gitlab.config.gitolite.admin_key
diff --git a/config/database.yml.postgresql b/config/database.yml.postgresql
index 0e873d2b8fb45ca5713caa5680f160d2dfd8d166..2bc0884f099beb374a2c20f280636bf093428fd3 100644
--- a/config/database.yml.postgresql
+++ b/config/database.yml.postgresql
@@ -6,7 +6,7 @@ production:
encoding: unicode
database: gitlabhq_production
pool: 5
- username: postgres
+ username: gitlab
password:
# host: localhost
# port: 5432
diff --git a/config/deploy.rb.example b/config/deploy.rb.example
new file mode 100644
index 0000000000000000000000000000000000000000..88da580dc7f00f207d33ffca41e33ce84b9dc1d4
--- /dev/null
+++ b/config/deploy.rb.example
@@ -0,0 +1,72 @@
+set :domain, 'set application domain here'
+set :db_adapter, 'mysql' # or postgres
+set :mount_point, '/'
+set :application, 'gitlabhq'
+set :user, 'gitlab'
+set :rails_env, 'production'
+set :deploy_to, "/home/#{user}/apps/#{application}"
+set :bundle_without, %w[development test] + (%w[mysql postgres] - [db_adapter])
+set :asset_env, "RAILS_GROUPS=assets RAILS_RELATIVE_URL_ROOT=#{mount_point.sub /\/+\Z/, ''}"
+
+set :use_sudo, false
+default_run_options[:pty] = true
+
+# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`
+set :scm, :git
+set :repository, "git@#{domain}:#{application}.git"
+set :deploy_via, :remote_cache
+
+# Alternatively, you can deploy via copy, if you don't have gitlab in git
+#set :scm, :none
+#set :repository, '.'
+#set :deploy_via, :copy
+
+server domain, :app, :web, :db, primary: true
+
+namespace :foreman do
+ desc 'Export the Procfile to Ubuntu upstart scripts'
+ task :export, roles: :app do
+ foreman_export = "foreman export upstart /etc/init -f Procfile -a #{application} -u #{user} -l #{shared_path}/log/foreman"
+ run "cd #{release_path} && #{sudo} #{fetch :bundle_cmd, 'bundle'} exec #{foreman_export}"
+ end
+
+ desc 'Start the application services'
+ task :start, roles: :app do
+ run "#{sudo} service #{application} start"
+ end
+
+ desc 'Stop the application services'
+ task :stop, roles: :app do
+ run "#{sudo} service #{application} stop"
+ end
+
+ desc 'Restart the application services'
+ task :restart, roles: :app do
+ run "#{sudo} service #{application} restart"
+ end
+end
+
+namespace :deploy do
+ desc 'Start the application services'
+ task :start, roles: :app do
+ foreman.start
+ end
+
+ desc 'Stop the application services'
+ task :stop, roles: :app do
+ foreman.stop
+ end
+
+ desc 'Restart the application services'
+ task :restart, roles: :app do
+ foreman.restart
+ end
+end
+
+after 'deploy:cold' do
+ run "cd #{release_path} && #{rake} gitlab:setup force=yes RAILS_ENV=#{rails_env}"
+ deploy.restart
+end
+
+after 'deploy:update', 'foreman:export' # Export foreman scripts
+#after 'deploy:update', 'foreman:restart' # Restart application scripts
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 4df8efa9c067c5701bad7089d38fbe43a9dd2d4b..1a34d22417f84ad4c459c353c86822b7c521b084 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -106,7 +106,8 @@ backup:
## Gitolite settings
gitolite:
admin_uri: git@localhost:gitolite-admin
- # repos_path must not be a symlink
+
+ # REPOS_PATH MUST NOT BE A SYMLINK!!!
repos_path: /home/git/repositories/
hooks_path: /home/git/.gitolite/hooks/
admin_key: gitlab
diff --git a/config/routes.rb b/config/routes.rb
index 7ffa081ac326b05b069e938fb61f344f9a846f6d..1abd37fe45fbe322f4d1b3ec895cd550a6ca163c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -163,7 +163,6 @@ Gitlab::Application.routes.draw do
resources :projects, constraints: { id: /[a-zA-Z.0-9_\-\/]+/ }, except: [:new, :create, :index], path: "/" do
member do
get "wall"
- get "graph"
get "files"
end
@@ -173,6 +172,7 @@ Gitlab::Application.routes.draw do
resources :compare, only: [:index, :create]
resources :blame, only: [:show], constraints: {id: /.+/}
resources :blob, only: [:show], constraints: {id: /.+/}
+ resources :graph, only: [:show], constraints: {id: /.+/}
match "/compare/:from...:to" => "compare#show", as: "compare",
:via => [:get, :post], constraints: {from: /.+/, to: /.+/}
diff --git a/db/migrate/20130131070232_remove_private_flag_from_project.rb b/db/migrate/20130131070232_remove_private_flag_from_project.rb
new file mode 100644
index 0000000000000000000000000000000000000000..5754db115589d6442a1c5a1bc9991b68c2b8937c
--- /dev/null
+++ b/db/migrate/20130131070232_remove_private_flag_from_project.rb
@@ -0,0 +1,9 @@
+class RemovePrivateFlagFromProject < ActiveRecord::Migration
+ def up
+ remove_column :projects, :private_flag
+ end
+
+ def down
+ add_column :projects, :private_flag, :boolean, default: true, null: false
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 144f4a57036b51b0c4ebcbb498e9d70628649d40..0f07d2bc8c54061a309b3b9cdf0a07016a6f62c1 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20130125090214) do
+ActiveRecord::Schema.define(:version => 20130131070232) do
create_table "events", :force => true do |t|
t.string "target_type"
@@ -147,7 +147,6 @@ ActiveRecord::Schema.define(:version => 20130125090214) do
t.text "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
- t.boolean "private_flag", :default => true, :null => false
t.integer "creator_id"
t.string "default_branch"
t.boolean "issues_enabled", :default => true, :null => false
diff --git a/doc/api/notes.md b/doc/api/notes.md
index bb33efb8c25dfdbb0f93384a2d4d34f27af5608b..a4ba282607643d6f324c9f8767cf337776c50705 100644
--- a/doc/api/notes.md
+++ b/doc/api/notes.md
@@ -30,6 +30,19 @@ Parameters:
+ `id` (required) - The ID of a project
+### List merge request notes
+
+Get a list of merge request notes.
+
+```
+GET /projects/:id/merge_requests/:merge_request_id/notes
+```
+
+Parameters:
+
++ `id` (required) - The ID of a project
++ `merge_request_id` (required) - The ID of an merge request
+
### List issue notes
Get a list of issue notes.
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 411286750f856b9dfa19425bf4bc0f6432d7e7af..82bb0c0d561068393849c36dcc7fc777f045fabc 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -22,6 +22,8 @@ GET /projects
"created_at": "2012-05-23T08:00:58Z"
},
"private": true,
+ "path": "rails",
+ "path_with_namespace": "rails/rails",
"issues_enabled": false,
"merge_requests_enabled": false,
"wall_enabled": true,
@@ -42,6 +44,8 @@ GET /projects
"created_at": "2012-05-23T08:00:58Z"
},
"private": true,
+ "path": "gitlab",
+ "path_with_namespace": "randx/gitlab",
"issues_enabled": true,
"merge_requests_enabled": true,
"wall_enabled": true,
@@ -78,6 +82,8 @@ Parameters:
"created_at": "2012-05-23T08:00:58Z"
},
"private": true,
+ "path": "gitlab",
+ "path_with_namespace": "randx/gitlab",
"issues_enabled": true,
"merge_requests_enabled": true,
"wall_enabled": true,
diff --git a/doc/api/users.md b/doc/api/users.md
index 200c0e06e0469cbccf76c19341be138619a75a07..b94d7c0f789d56a926b6cdb3f1d35b23af3539be 100644
--- a/doc/api/users.md
+++ b/doc/api/users.md
@@ -20,6 +20,8 @@ GET /users
"linkedin": "",
"twitter": "",
"dark_scheme": false,
+ "extern_uid": "john.smith",
+ "provider": "provider_name",
"theme_id": 1
},
{
@@ -34,6 +36,8 @@ GET /users
"linkedin": "",
"twitter": "",
"dark_scheme": true,
+ "extern_uid": "jack.smith",
+ "provider": "provider_name",
"theme_id": 1
}
]
@@ -64,6 +68,8 @@ Parameters:
"linkedin": "",
"twitter": "",
"dark_scheme": false,
+ "extern_uid": "john.smith",
+ "provider": "provider_name",
"theme_id": 1
}
```
@@ -84,10 +90,47 @@ Parameters:
+ `linkedin` - Linkedin
+ `twitter` - Twitter account
+ `projects_limit` - Number of projects user can create
++ `extern_uid` - External UID
++ `provider` - External provider name
++ `bio` - User's bio
Will return created user with status `201 Created` on success, or `404 Not
found` on fail.
+## User modification
+Modify user. Available only for admin
+
+```
+PUT /users/:id
+```
+
+Parameters:
++ `email` - Email
++ `username` - Username
++ `name` - Name
++ `password` - Password
++ `skype` - Skype ID
++ `linkedin` - Linkedin
++ `twitter` - Twitter account
++ `projects_limit` - Limit projects wich user can create
++ `extern_uid` - External UID
++ `provider` - External provider name
++ `bio` - User's bio
+
+
+Will return created user with status `200 OK` on success, or `404 Not
+found` on fail.
+
+## User deletion
+Delete user. Available only for admin
+
+```
+DELETE /users/:id
+```
+
+Will return deleted user with status `200 OK` on success, or `404 Not
+found` on fail.
+
## Current user
Get currently authenticated user.
diff --git a/features/steps/admin/admin_active_tab.rb b/features/steps/admin/admin_active_tab.rb
index 48ec7bac0d648a9846f8283e1b447086878d3a0f..f14c5f396bedbb433e31452be5e6ded96f7e7941 100644
--- a/features/steps/admin/admin_active_tab.rb
+++ b/features/steps/admin/admin_active_tab.rb
@@ -4,7 +4,7 @@ class AdminActiveTab < Spinach::FeatureSteps
include SharedActiveTab
Then 'the active main tab should be Home' do
- ensure_active_main_tab('Stats')
+ ensure_active_main_tab('Home')
end
Then 'the active main tab should be Projects' do
diff --git a/features/steps/profile/profile_active_tab.rb b/features/steps/profile/profile_active_tab.rb
index 1924a6fa785bb24b3bd289423d598517fecc79e2..ee9f5f201cfca9509192c15dab16adf906f2baf7 100644
--- a/features/steps/profile/profile_active_tab.rb
+++ b/features/steps/profile/profile_active_tab.rb
@@ -4,7 +4,7 @@ class ProfileActiveTab < Spinach::FeatureSteps
include SharedActiveTab
Then 'the active main tab should be Home' do
- ensure_active_main_tab('Profile')
+ ensure_active_main_tab('Home')
end
Then 'the active main tab should be Account' do
diff --git a/features/steps/project/project_active_tab.rb b/features/steps/project/project_active_tab.rb
index a5c80353862a7f313641f209fcf87b40148b9a6b..bce67c8296233634f54df21951998ebfc4c6d472 100644
--- a/features/steps/project/project_active_tab.rb
+++ b/features/steps/project/project_active_tab.rb
@@ -7,7 +7,7 @@ class ProjectActiveTab < Spinach::FeatureSteps
# Main Tabs
Then 'the active main tab should be Home' do
- ensure_active_main_tab(@project.name)
+ ensure_active_main_tab('Home')
end
Then 'the active main tab should be Files' do
diff --git a/features/steps/project/project_network_graph.rb b/features/steps/project/project_network_graph.rb
index 77149bfe2c32231324a5f2cac7e8768b68f0565e..f26deff9367821611cc01f19cc68434495aa970e 100644
--- a/features/steps/project/project_network_graph.rb
+++ b/features/steps/project/project_network_graph.rb
@@ -14,6 +14,6 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
Gitlab::Graph::JsonBuilder.stub(max_count: 10)
project = Project.find_by_name("Shop")
- visit graph_project_path(project)
+ visit project_graph_path(project, "master")
end
end
diff --git a/features/steps/project/project_team_management.rb b/features/steps/project/project_team_management.rb
index 91b3ffeee9a85cd3391c740a846f1169e2d36c53..19352fe0ab8224018fe5856ccc2103cc2a81f6ef 100644
--- a/features/steps/project/project_team_management.rb
+++ b/features/steps/project/project_team_management.rb
@@ -24,7 +24,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
select user.name, :from => "user_ids"
select "Reporter", :from => "project_access"
end
- click_button "Save"
+ click_button "Add users"
end
Then 'I should see "Mike" in team list as "Reporter"' do
diff --git a/features/steps/shared/active_tab.rb b/features/steps/shared/active_tab.rb
index 884f2d5fb71b1c8b4cda68b6d589d2947bc11f97..446e3b9a8b3e6589dff7ab5f05e2d5c0e621d749 100644
--- a/features/steps/shared/active_tab.rb
+++ b/features/steps/shared/active_tab.rb
@@ -2,7 +2,11 @@ module SharedActiveTab
include Spinach::DSL
def ensure_active_main_tab(content)
- page.find('ul.main_menu li.active').should have_content(content)
+ if content == "Home"
+ page.find('ul.main_menu li.active').should have_css('i.icon-home')
+ else
+ page.find('ul.main_menu li.active').should have_content(content)
+ end
end
def ensure_active_sub_tab(content)
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 42ef40d6b9575b9eaa14a08bc9d7fbe1ef347f04..97adfd13f30c4b5841a74a83a35ed6fd20b98d67 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -141,7 +141,7 @@ module SharedPaths
# Stub Graph::JsonBuilder max_size to speed up test (10 commits vs. 650)
Gitlab::Graph::JsonBuilder.stub(max_count: 10)
- visit graph_project_path(@project)
+ visit project_graph_path(@project, root_ref)
end
Given "I visit my project's issues page" do
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 3f228300e265b95356fc098ae9a71bfaf170945c..5cbb1118a89c8a16ade7f814a774eb22b08c9ec2 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -2,7 +2,7 @@ module Gitlab
module Entities
class User < Grape::Entity
expose :id, :username, :email, :name, :bio, :skype, :linkedin, :twitter,
- :dark_scheme, :theme_id, :blocked, :created_at
+ :dark_scheme, :theme_id, :blocked, :created_at, :extern_uid, :provider
end
class UserBasic < Grape::Entity
@@ -21,6 +21,7 @@ module Gitlab
expose :id, :name, :description, :default_branch
expose :owner, using: Entities::UserBasic
expose :private_flag, as: :private
+ expose :path, :path_with_namespace
expose :issues_enabled, :merge_requests_enabled, :wall_enabled, :wiki_enabled, :created_at
expose :namespace
end
diff --git a/lib/api/notes.rb b/lib/api/notes.rb
index 4613db54578ad8de224297566c2b27bdd099a2ec..70344d6e3813a2098f14f9f30dd6428375491de8 100644
--- a/lib/api/notes.rb
+++ b/lib/api/notes.rb
@@ -3,7 +3,7 @@ module Gitlab
class Notes < Grape::API
before { authenticate! }
- NOTEABLE_TYPES = [Issue, Snippet]
+ NOTEABLE_TYPES = [Issue, MergeRequest, Snippet]
resource :projects do
# Get a list of project wall notes
diff --git a/lib/api/users.rb b/lib/api/users.rb
index 140c20f6bd21cb8e6cb54e3d5852b8d409074aac..7ea90c75e9ee6732321c1e13b60e847edf98e211 100644
--- a/lib/api/users.rb
+++ b/lib/api/users.rb
@@ -34,11 +34,14 @@ module Gitlab
# linkedin - Linkedin
# twitter - Twitter account
# projects_limit - Number of projects user can create
+ # extern_uid - External authentication provider UID
+ # provider - External provider
+ # bio - Bio
# Example Request:
# POST /users
post do
authenticated_as_admin!
- attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username]
+ attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio]
user = User.new attrs, as: :admin
if user.save
present user, with: Entities::User
@@ -46,6 +49,48 @@ module Gitlab
not_found!
end
end
+
+ # Update user. Available only for admin
+ #
+ # Parameters:
+ # email - Email
+ # name - Name
+ # password - Password
+ # skype - Skype ID
+ # linkedin - Linkedin
+ # twitter - Twitter account
+ # projects_limit - Limit projects wich user can create
+ # extern_uid - External authentication provider UID
+ # provider - External provider
+ # bio - Bio
+ # Example Request:
+ # PUT /users/:id
+ put ":id" do
+ authenticated_as_admin!
+ attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio]
+ user = User.find_by_id(params[:id])
+
+ if user && user.update_attributes(attrs)
+ present user, with: Entities::User
+ else
+ not_found!
+ end
+ end
+
+ # Delete user. Available only for admin
+ #
+ # Example Request:
+ # DELETE /users/:id
+ delete ":id" do
+ authenticated_as_admin!
+ user = User.find_by_id(params[:id])
+
+ if user
+ user.destroy
+ else
+ not_found!
+ end
+ end
end
resource :user do
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb
index 12700e4f4ac7aaeb525faafcdddee0ac90ddf5e4..976ac01820429b285a215200e42e7e7641bfeae7 100644
--- a/lib/extracts_path.rb
+++ b/lib/extracts_path.rb
@@ -54,9 +54,10 @@ module ExtractsPath
input.gsub!(/^#{Gitlab.config.gitlab.relative_url_root}/, "")
# Remove project, actions and all other staff from path
input.gsub!(/^\/#{Regexp.escape(@project.path_with_namespace)}/, "")
- input.gsub!(/^\/(tree|commits|blame|blob|refs)\//, "") # remove actions
+ input.gsub!(/^\/(tree|commits|blame|blob|refs|graph)\//, "") # remove actions
input.gsub!(/\?.*$/, "") # remove stamps suffix
input.gsub!(/.atom$/, "") # remove rss feed
+ input.gsub!(/.json$/, "") # remove json suffix
input.gsub!(/\/edit$/, "") # remove edit route part
if input.match(/^([[:alnum:]]{40})(.+)/)
diff --git a/lib/gitlab/backend/gitolite.rb b/lib/gitlab/backend/gitolite.rb
index 1bcf1264fa9e5dbc533e78fa6b36a023b0ffb1b0..cd9ac1554d64b81557d602e82b492cdc36d4cf77 100644
--- a/lib/gitlab/backend/gitolite.rb
+++ b/lib/gitlab/backend/gitolite.rb
@@ -8,14 +8,28 @@ module Gitlab
Gitlab::GitoliteConfig.new
end
- def set_key key_id, key_content, projects
+ # Update gitolite config with new key
+ #
+ # Ex.
+ # set_key("m_gitlab_com_12343", "sha-rsa ...", [2, 3, 6])
+ #
+ def set_key(key_id, key_content, project_ids)
+ projects = Project.where(id: project_ids)
+
config.apply do |config|
config.write_key(key_id, key_content)
config.update_projects(projects)
end
end
- def remove_key key_id, projects
+ # Remove ssh key from gitolite config
+ #
+ # Ex.
+ # remove_key("m_gitlab_com_12343", [2, 3, 6])
+ #
+ def remove_key(key_id, project_ids)
+ projects = Project.where(id: project_ids)
+
config.apply do |config|
config.rm_key(key_id)
config.update_projects(projects)
diff --git a/lib/gitlab/graph/commit.rb b/lib/gitlab/graph/commit.rb
index a6bf23a2381899c396895c7ee101bd4eb948aa49..13c8ebc9952b32b1f7f708f8490639e0be9ce3a8 100644
--- a/lib/gitlab/graph/commit.rb
+++ b/lib/gitlab/graph/commit.rb
@@ -5,12 +5,13 @@ module Gitlab
class Commit
include ActionView::Helpers::TagHelper
- attr_accessor :time, :space, :refs
+ attr_accessor :time, :space, :refs, :parent_spaces
def initialize(commit)
@_commit = commit
@time = -1
@space = 0
+ @parent_spaces = []
end
def method_missing(m, *args, &block)
@@ -28,6 +29,7 @@ module Gitlab
}
h[:time] = time
h[:space] = space
+ h[:parent_spaces] = parent_spaces
h[:refs] = refs.collect{|r|r.name}.join(" ") unless refs.nil?
h[:id] = sha
h[:date] = date
diff --git a/lib/gitlab/graph/json_builder.rb b/lib/gitlab/graph/json_builder.rb
index a3157aa4b4d48ecb4de7c5657b63e978c4aa1043..4b3687e06c36f48abe9718c6daab736629544865 100644
--- a/lib/gitlab/graph/json_builder.rb
+++ b/lib/gitlab/graph/json_builder.rb
@@ -9,14 +9,14 @@ module Gitlab
@max_count ||= 650
end
- def initialize project
+ def initialize project, ref
@project = project
+ @ref = ref
@repo = project.repo
@ref_cache = {}
@commits = collect_commits
@days = index_commits
- @space = 0
end
def to_json(*args)
@@ -53,7 +53,7 @@ module Gitlab
#
# @return [Array] list of commit dates corelated with time on commits
def index_commits
- days, heads = [], []
+ days, heads, times = [], [], []
map = {}
commits.reverse.each_with_index do |c,i|
@@ -61,14 +61,15 @@ module Gitlab
days[i] = c.committed_date
map[c.id] = c
heads += c.refs unless c.refs.nil?
+ times[i] = c
end
heads.select!{|h| h.is_a? Grit::Head or h.is_a? Grit::Remote}
# sort heads so the master is top and current branches are closer
heads.sort! do |a,b|
- if a.name == "master"
+ if a.name == @ref
-1
- elsif b.name == "master"
+ elsif b.name == @ref
1
else
b.commit.committed_date <=> a.commit.committed_date
@@ -86,9 +87,62 @@ module Gitlab
end
end
+ # find parent spaces for not overlap lines
+ times.each do |c|
+ c.parent_spaces.concat(find_free_parent_spaces(c, map, times))
+ end
+
days
end
+ def find_free_parent_spaces(commit, map, times)
+ spaces = []
+
+ commit.parents.each do |p|
+ if map.include?(p.id) then
+ parent = map[p.id]
+
+ range = if commit.time < parent.time then
+ commit.time..parent.time
+ else
+ parent.time..commit.time
+ end
+
+ space = if commit.space >= parent.space then
+ find_free_parent_space(range, parent.space, 1, commit.space, times)
+ else
+ find_free_parent_space(range, parent.space, -1, parent.space, times)
+ end
+
+ mark_reserved(range, space)
+ spaces << space
+ end
+ end
+
+ spaces
+ end
+
+ def find_free_parent_space(range, space_base, space_step, space_default, times)
+ if is_overlap?(range, times, space_default) then
+ find_free_space(range, space_base, space_step)
+ else
+ space_default
+ end
+ end
+
+ def is_overlap?(range, times, overlap_space)
+ range.each do |i|
+ if i != range.first &&
+ i != range.last &&
+ times[i].space == overlap_space then
+
+ return true;
+ end
+ end
+
+ false
+ end
+
# Add space mark on commit and its parents
#
# @param [Graph::Commit] the commit object.
@@ -98,10 +152,9 @@ module Gitlab
if leaves.empty?
return
end
- @space = find_free_space(leaves, map)
- leaves.each{|l| l.space = @space}
# and mark it as reserved
min_time = leaves.last.time
+ max_space = 1
parents = leaves.last.parents.collect
parents.each do |p|
if map.include? p.id
@@ -109,6 +162,9 @@ module Gitlab
if parent.time < min_time
min_time = parent.time
end
+ if max_space < parent.space then
+ max_space = parent.space
+ end
end
end
if parent_time.nil?
@@ -116,7 +172,12 @@ module Gitlab
else
max_time = parent_time - 1
end
- mark_reserved(min_time..max_time, @space)
+
+ time_range = leaves.last.time..leaves.first.time
+ space = find_free_space(time_range, max_space, 2)
+ leaves.each{|l| l.space = space}
+
+ mark_reserved(min_time..max_time, space)
# Visit branching chains
leaves.each do |l|
@@ -133,30 +194,25 @@ module Gitlab
end
end
- def find_free_space(leaves, map)
- time_range = leaves.last.time..leaves.first.time
+ def find_free_space(time_range, space_base, space_step)
reserved = []
for day in time_range
reserved += @_reserved[day]
end
- space = base_space(leaves, map)
- while (reserved.include? space) || (space == @space) do
- space += 1
+ reserved.uniq!
+
+ space = space_base
+ while reserved.include?(space) do
+ space += space_step
+ if space <= 0 then
+ space_step *= -1
+ space = space_base + space_step
+ end
end
space
end
- def base_space(leaves, map)
- parents = []
- leaves.each do |l|
- parents.concat l.parents.collect.select{|p| map.include? p.id and map[p.id].space.nonzero?}
- end
-
- space = parents.map{|p| map[p.id].space}.max || 0
- space += 1
- end
-
# Takes most left subtree branch of commits
# which don't have space mark yet.
#
diff --git a/lib/gitlab/satellite/logger.rb b/lib/gitlab/satellite/logger.rb
new file mode 100644
index 0000000000000000000000000000000000000000..6f3f8255aca11e5b9c77bf98bd968a299e3c9756
--- /dev/null
+++ b/lib/gitlab/satellite/logger.rb
@@ -0,0 +1,13 @@
+module Gitlab
+ module Satellite
+ class Logger < Gitlab::Logger
+ def self.file_name
+ 'satellites.log'
+ end
+
+ def format_message(severity, timestamp, progname, msg)
+ "#{timestamp.to_s(:long)}: #{msg}\n"
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/satellite/satellite.rb b/lib/gitlab/satellite/satellite.rb
index d8e8f58963bde352e5de13a4571dcf452f90bb3d..95273a6d2080c79feb7822ace14842a2da73780c 100644
--- a/lib/gitlab/satellite/satellite.rb
+++ b/lib/gitlab/satellite/satellite.rb
@@ -13,6 +13,10 @@ module Gitlab
@project = project
end
+ def log message
+ Gitlab::Satellite::Logger.error(message)
+ end
+
def raise_no_satellite
raise SatelliteNotExistError.new("Satellite doesn't exist")
end
@@ -29,10 +33,13 @@ module Gitlab
output, status = popen("git clone #{project.url_to_repo} #{path}",
Gitlab.config.satellites.path)
+ log("PID: #{project.id}: git clone #{project.url_to_repo} #{path}")
+ log("PID: #{project.id}: -> #{output}")
+
if status.zero?
true
else
- Gitlab::GitLogger.error("Failed to create satellite for #{project.name_with_namespace}")
+ log("Failed to create satellite for #{project.name_with_namespace}")
false
end
end
diff --git a/lib/tasks/gitlab/bulk_add_permission.rake b/lib/tasks/gitlab/bulk_add_permission.rake
index 36c51d060bc735a12bb203a1f189b943cd13d70c..eb1a7559dbda102f60cd9993df7305cc48e4b485 100644
--- a/lib/tasks/gitlab/bulk_add_permission.rake
+++ b/lib/tasks/gitlab/bulk_add_permission.rake
@@ -4,21 +4,21 @@ namespace :gitlab do
task :all_users_to_all_projects => :environment do |t, args|
user_ids = User.where(:admin => false).pluck(:id)
admin_ids = User.where(:admin => true).pluck(:id)
+ projects_ids = Project.pluck(:id)
- Project.find_each do |project|
- puts "Importing #{user_ids.size} users into #{project.code}"
- UsersProject.bulk_import(project, user_ids, UsersProject::DEVELOPER)
- puts "Importing #{admin_ids.size} admins into #{project.code}"
- UsersProject.bulk_import(project, admin_ids, UsersProject::MASTER)
- end
+ puts "Importing #{user_ids.size} users into #{projects_ids.size} projects"
+ UsersProject.add_users_into_projects(projects_ids, user_ids, UsersProject::DEVELOPER)
+
+ puts "Importing #{admin_ids.size} admins into #{projects_ids.size} projects"
+ UsersProject.add_users_into_projects(projects_ids, admin_ids, UsersProject::MASTER)
end
desc "GITLAB | Add a specific user to all projects (as a developer)"
task :user_to_projects, [:email] => :environment do |t, args|
user = User.find_by_email args.email
project_ids = Project.pluck(:id)
-
- UsersProject.user_bulk_import(user, project_ids, UsersProject::DEVELOPER)
+ puts "Importing #{user.email} users into #{project_ids.size} projects"
+ UsersProject.add_users_into_projects(project_ids, Array.wrap(user.id), UsersProject::DEVELOPER)
end
end
end
\ No newline at end of file
diff --git a/lib/tasks/gitlab/setup.rake b/lib/tasks/gitlab/setup.rake
index 5699e5d6188f53cd75f1dcf122c3de5d247c5c4b..1a7907c75c75c51b7025210ac8875c5612115c16 100644
--- a/lib/tasks/gitlab/setup.rake
+++ b/lib/tasks/gitlab/setup.rake
@@ -7,10 +7,12 @@ namespace :gitlab do
def setup
warn_user_is_not_gitlab
- puts "This will create the necessary database tables and seed the database."
- puts "You will lose any previous data stored in the database."
- ask_to_continue
- puts ""
+ unless ENV['force'] == 'yes'
+ puts "This will create the necessary database tables and seed the database."
+ puts "You will lose any previous data stored in the database."
+ ask_to_continue
+ puts ""
+ end
Rake::Task["db:setup"].invoke
Rake::Task["db:seed_fu"].invoke
diff --git a/spec/factories/user_team_project_relationships.rb b/spec/factories/user_team_project_relationships.rb
index 93c7b57d0fac2bcbe5340fd2be2a86496989aee8..e900d86c2e40f6cc8e5fa3c1678b01f153d3aa8f 100644
--- a/spec/factories/user_team_project_relationships.rb
+++ b/spec/factories/user_team_project_relationships.rb
@@ -1,3 +1,15 @@
+# == Schema Information
+#
+# Table name: user_team_project_relationships
+#
+# id :integer not null, primary key
+# project_id :integer
+# user_team_id :integer
+# greatest_access :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
diff --git a/spec/factories/user_team_user_relationships.rb b/spec/factories/user_team_user_relationships.rb
index 55179f9a45b855c3d6f85104df0a659b04468e37..8c729dd875105524d5dea6874849e8948bc6b4d4 100644
--- a/spec/factories/user_team_user_relationships.rb
+++ b/spec/factories/user_team_user_relationships.rb
@@ -1,3 +1,16 @@
+# == Schema Information
+#
+# Table name: user_team_user_relationships
+#
+# id :integer not null, primary key
+# user_id :integer
+# user_team_id :integer
+# group_admin :boolean
+# permission :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
diff --git a/spec/factories/user_teams.rb b/spec/factories/user_teams.rb
index f4fe45cbb8ae39c0b954780bf20a192be0c5ecda..1a9ae8e885c3cf924219bef7ba49d893884d52cc 100644
--- a/spec/factories/user_teams.rb
+++ b/spec/factories/user_teams.rb
@@ -1,3 +1,15 @@
+# == Schema Information
+#
+# Table name: user_teams
+#
+# id :integer not null, primary key
+# name :string(255)
+# path :string(255)
+# owner_id :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 17bc988bf059b49c56488084da8fcc844d97ed6d..6e67ca8233dffbdbab541bc995e34305d7431e92 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -8,7 +8,6 @@
# description :text
# created_at :datetime not null
# updated_at :datetime not null
-# private_flag :boolean default(TRUE), not null
# creator_id :integer
# default_branch :string(255)
# issues_enabled :boolean default(TRUE), not null
@@ -16,6 +15,7 @@
# merge_requests_enabled :boolean default(TRUE), not null
# wiki_enabled :boolean default(TRUE), not null
# namespace_id :integer
+# public :boolean default(FALSE), not null
#
require 'spec_helper'
@@ -42,7 +42,6 @@ describe Project do
describe "Mass assignment" do
it { should_not allow_mass_assignment_of(:namespace_id) }
it { should_not allow_mass_assignment_of(:creator_id) }
- it { should_not allow_mass_assignment_of(:private_flag) }
end
describe "Validation" do
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 2ca82edf74eca7758ae921c7cb8071e91ef40c47..8ab0a0343bbf385eb3b1b4cda9d1d285a10dff00 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -31,6 +31,8 @@
# extern_uid :string(255)
# provider :string(255)
# username :string(255)
+# can_create_group :boolean default(TRUE), not null
+# can_create_team :boolean default(TRUE), not null
#
require 'spec_helper'
diff --git a/spec/models/user_team_project_relationship_spec.rb b/spec/models/user_team_project_relationship_spec.rb
index 81051d599711369e08ac305b2062c6f4f65374cd..86150cf305f31f0a5251ec5bf0892992f2f8973d 100644
--- a/spec/models/user_team_project_relationship_spec.rb
+++ b/spec/models/user_team_project_relationship_spec.rb
@@ -1,3 +1,15 @@
+# == Schema Information
+#
+# Table name: user_team_project_relationships
+#
+# id :integer not null, primary key
+# project_id :integer
+# user_team_id :integer
+# greatest_access :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
require 'spec_helper'
describe UserTeamProjectRelationship do
diff --git a/spec/models/user_team_spec.rb b/spec/models/user_team_spec.rb
index 2d1b99db6f8c91ac8657202a4ab5847d8146576b..76d47f41498ca53f2be784b3ac9d7d8c7e52c9c3 100644
--- a/spec/models/user_team_spec.rb
+++ b/spec/models/user_team_spec.rb
@@ -1,3 +1,15 @@
+# == Schema Information
+#
+# Table name: user_teams
+#
+# id :integer not null, primary key
+# name :string(255)
+# path :string(255)
+# owner_id :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
require 'spec_helper'
describe UserTeam do
diff --git a/spec/models/user_team_user_relationship_spec.rb b/spec/models/user_team_user_relationship_spec.rb
index 309f1975e51bef7a9ed068b7205fb948a90a81f9..981ad1e887313725922352f82ecdbbf64c8f5275 100644
--- a/spec/models/user_team_user_relationship_spec.rb
+++ b/spec/models/user_team_user_relationship_spec.rb
@@ -1,3 +1,16 @@
+# == Schema Information
+#
+# Table name: user_team_user_relationships
+#
+# id :integer not null, primary key
+# user_id :integer
+# user_team_id :integer
+# group_admin :boolean
+# permission :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
require 'spec_helper'
describe UserTeamUserRelationship do
diff --git a/spec/observers/key_observer_spec.rb b/spec/observers/key_observer_spec.rb
index ae7b0f73e57ed413702807b49737a38d19a58073..11f975cc57d061ff7c65f549d5c5db56a23bee0d 100644
--- a/spec/observers/key_observer_spec.rb
+++ b/spec/observers/key_observer_spec.rb
@@ -9,25 +9,19 @@ describe KeyObserver do
is_deploy_key: false
)
- @gitolite = double('Gitlab::Gitolite',
- set_key: true,
- remove_key: true
- )
-
@observer = KeyObserver.instance
- @observer.stub(gitolite: @gitolite)
end
context :after_save do
it do
- @gitolite.should_receive(:set_key).with(@key.identifier, @key.key, @key.projects)
+ GitoliteWorker.should_receive(:perform_async).with(:set_key, @key.identifier, @key.key, @key.projects.map(&:id))
@observer.after_save(@key)
end
end
context :after_destroy do
it do
- @gitolite.should_receive(:remove_key).with(@key.identifier, @key.projects)
+ GitoliteWorker.should_receive(:perform_async).with(:remove_key, @key.identifier, @key.projects.map(&:id))
@observer.after_destroy(@key)
end
end
diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb
index ae4fc111f636edea2174453b8601d43a171eb6c0..ee99d85df4d721aeb412ba84fc9af5f921e0b5ea 100644
--- a/spec/requests/api/notes_spec.rb
+++ b/spec/requests/api/notes_spec.rb
@@ -6,8 +6,10 @@ describe Gitlab::API do
let(:user) { create(:user) }
let!(:project) { create(:project, namespace: user.namespace ) }
let!(:issue) { create(:issue, project: project, author: user) }
+ let!(:merge_request) { create(:merge_request, project: project, author: user) }
let!(:snippet) { create(:snippet, project: project, author: user) }
let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) }
+ let!(:merge_request_note) { create(:note, noteable: merge_request, project: project, author: user) }
let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) }
let!(:wall_note) { create(:note, project: project, author: user) }
before { project.team << [user, :reporter] }
@@ -64,6 +66,15 @@ describe Gitlab::API do
json_response.first['body'].should == snippet_note.note
end
end
+
+ context "when noteable is a Merge Request" do
+ it "should return an array of merge_requests notes" do
+ get api("/projects/#{project.id}/merge_requests/#{merge_request.id}/notes", user)
+ response.status.should == 200
+ json_response.should be_an Array
+ json_response.first['body'].should == merge_request_note.note
+ end
+ end
end
describe "GET /projects/:id/noteable/:noteable_id/notes/:note_id" do
diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb
index ee5f510aac5083d5496e36d2b9cdcd8540150e0d..1645117e231c01d62b55cbba90ff92ff92a682e9 100644
--- a/spec/requests/api/users_spec.rb
+++ b/spec/requests/api/users_spec.rb
@@ -83,6 +83,54 @@ describe Gitlab::API do
end
end
+ describe "PUT /users/:id" do
+ before { admin }
+
+ it "should update user" do
+ put api("/users/#{user.id}", admin), {bio: 'new test bio'}
+ response.status.should == 200
+ json_response['bio'].should == 'new test bio'
+ user.reload.bio.should == 'new test bio'
+ end
+
+ it "should not allow invalid update" do
+ put api("/users/#{user.id}", admin), {email: 'invalid email'}
+ response.status.should == 404
+ user.reload.email.should_not == 'invalid email'
+ end
+
+ it "shouldn't available for non admin users" do
+ put api("/users/#{user.id}", user), attributes_for(:user)
+ response.status.should == 403
+ end
+
+ it "should return 404 for non-existing user" do
+ put api("/users/999999", admin), {bio: 'update should fail'}
+ response.status.should == 404
+ end
+ end
+
+ describe "DELETE /users/:id" do
+ before { admin }
+
+ it "should delete user" do
+ delete api("/users/#{user.id}", admin)
+ response.status.should == 200
+ expect { User.find(user.id) }.to raise_error ActiveRecord::RecordNotFound
+ json_response['email'].should == user.email
+ end
+
+ it "shouldn't available for non admin users" do
+ delete api("/users/#{user.id}", user)
+ response.status.should == 403
+ end
+
+ it "should return 404 for non-existing user" do
+ delete api("/users/999999", admin)
+ response.status.should == 404
+ end
+ end
+
describe "GET /user" do
it "should return current user" do
get api("/user", user)
diff --git a/spec/requests/notes_on_merge_requests_spec.rb b/spec/requests/notes_on_merge_requests_spec.rb
index 2b670359a49d7914069b6bb4658f787bf4202475..0111cf42ac7a7063acd6e776ef6d05b02d97694b 100644
--- a/spec/requests/notes_on_merge_requests_spec.rb
+++ b/spec/requests/notes_on_merge_requests_spec.rb
@@ -22,9 +22,9 @@ describe "On a merge request", js: true do
it { within(".js-main-target-form") { should_not have_link("Cancel") } }
# notifiactions
- it { within(".js-main-target-form") { should have_checked_field("Project team") } }
- it { within(".js-main-target-form") { should_not have_checked_field("Commit author") } }
- it { within(".js-main-target-form") { should_not have_unchecked_field("Commit author") } }
+ it { within(".js-main-target-form") { should have_checked_field("Notify team via email") } }
+ it { within(".js-main-target-form") { should_not have_checked_field("Notify commit author") } }
+ it { within(".js-main-target-form") { should_not have_unchecked_field("Notify commit author") } }
describe "without text" do
it { within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) } }
@@ -125,7 +125,7 @@ describe "On a merge request diff", js: true, focus: true do
it { should have_css(".js-close-discussion-note-form", text: "Cancel") }
# notification options
- it { should have_checked_field("Project team") }
+ it { should have_checked_field("Notify team via email") }
it "shouldn't add a second form for same row" do
find("#4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185.line_holder .js-add-diff-note-button").trigger("click")
diff --git a/spec/requests/notes_on_wall_spec.rb b/spec/requests/notes_on_wall_spec.rb
index 01673f997e935709dbd95a8799e3fb2d44d1c4d1..4adcf74e0b6a4cca6911b6364a5218dec8ef1644 100644
--- a/spec/requests/notes_on_wall_spec.rb
+++ b/spec/requests/notes_on_wall_spec.rb
@@ -21,9 +21,9 @@ describe "On the project wall", js: true do
it { within(".js-main-target-form") { should_not have_link("Cancel") } }
# notifiactions
- it { within(".js-main-target-form") { should have_checked_field("Project team") } }
- it { within(".js-main-target-form") { should_not have_checked_field("Commit author") } }
- it { within(".js-main-target-form") { should_not have_unchecked_field("Commit author") } }
+ it { within(".js-main-target-form") { should have_checked_field("Notify team via email") } }
+ it { within(".js-main-target-form") { should_not have_checked_field("Notify commit author") } }
+ it { within(".js-main-target-form") { should_not have_unchecked_field("Notify commit author") } }
describe "without text" do
it { within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) } }
diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb
index 6171141648c48ac9fb4477497f893f58adb0ad36..f94bedc79a1d1cb36edd6402cf32686c25da13e0 100644
--- a/spec/routing/project_routing_spec.rb
+++ b/spec/routing/project_routing_spec.rb
@@ -76,7 +76,7 @@ describe ProjectsController, "routing" do
end
it "to #graph" do
- get("/gitlabhq/graph").should route_to('projects#graph', id: 'gitlabhq')
+ get("/gitlabhq/graph/master").should route_to('graph#show', project_id: 'gitlabhq', id: 'master')
end
it "to #files" do
diff --git a/vendor/assets/javascripts/branch-graph.js b/vendor/assets/javascripts/branch-graph.js
index 93849c79e80420dbe0bde77a46afc1392d84836b..7929d3b2a14c867e607d71547883a25dfb452004 100644
--- a/vendor/assets/javascripts/branch-graph.js
+++ b/vendor/assets/javascripts/branch-graph.js
@@ -73,7 +73,8 @@
, cumonth = ""
, offsetX = 20
, offsetY = 60
- , barWidth = Math.max(graphWidth, this.dayCount * 20 + 320);
+ , barWidth = Math.max(graphWidth, this.dayCount * 20 + 320)
+ , scrollLeft = cw;
this.raphael = r;
@@ -103,8 +104,9 @@
for (i = 0; i < this.commitCount; i++) {
var x = offsetX + 20 * this.commits[i].time
- , y = offsetY + 20 * this.commits[i].space
- , c;
+ , y = offsetY + 10 * this.commits[i].space
+ , c
+ , ps;
// Draw dot
r.circle(x, y, 3).attr({
@@ -115,10 +117,12 @@
// Draw lines
for (var j = 0, jj = this.commits[i].parents.length; j < jj; j++) {
c = this.preparedCommits[this.commits[i].parents[j][0]];
+ ps = this.commits[i].parent_spaces[j];
if (c) {
var cx = offsetX + 20 * c.time
- , cy = offsetY + 20 * c.space;
- if (c.space == this.commits[i].space) {
+ , cy = offsetY + 10 * c.space
+ , psy = offsetY + 10 * ps;
+ if (c.space == this.commits[i].space && c.space == ps) {
r.path([
"M", x, y,
"L", cx, cy
@@ -128,13 +132,25 @@
});
} else if (c.space < this.commits[i].space) {
- r.path(["M", x - 5, y + .0001, "l-5-2,0,4,5,-2C", x - 5, y, x - 17, y + 2, x - 20, y - 5, "L", cx, y - 5, cx, cy])
+ r.path([
+ "M", x - 5, y,
+ "l-5-2,0,4,5,-2",
+ "L", x - 10, y,
+ "L", x - 15, psy,
+ "L", cx + 5, psy,
+ "L", cx, cy])
.attr({
stroke: this.colors[this.commits[i].space],
"stroke-width": 2
});
} else {
- r.path(["M", x - 3, y + 6, "l-4,3,4,2,0,-5L", x - 10, y + 20, "L", x - 10, cy, cx, cy])
+ r.path([
+ "M", x - 3, y + 6,
+ "l-4,3,4,2,0,-5",
+ "L", x - 5, y + 10,
+ "L", x - 10, psy,
+ "L", cx + 5, psy,
+ "L", cx, cy])
.attr({
stroke: this.colors[c.space],
"stroke-width": 2
@@ -145,12 +161,18 @@
if (this.commits[i].refs) {
this.appendLabel(x, y, this.commits[i].refs);
+
+ // The main branch is displayed in the center.
+ re = new RegExp('(^| )' + this.options.ref + '( |$)');
+ if (this.commits[i].refs.match(re)) {
+ scrollLeft = x - graphWidth / 2;
+ }
}
this.appendAnchor(top, this.commits[i], x, y);
}
top.toFront();
- this.element.scrollLeft(cw);
+ this.element.scrollLeft(scrollLeft);
this.bindEvents();
};
@@ -260,7 +282,7 @@
cursor: "pointer"
})
.click(function(){
- window.location = options.commit_url.replace('%s', commit.id);
+ window.open(options.commit_url.replace('%s', commit.id), '_blank');
})
.hover(function(){
this.tooltip = r.commitTooltip(x, y + 5, commit);