summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-08 12:22:09 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-08 12:22:09 +0300
commit4537623d12fb7372262267be5d6ec3b41f3f476c (patch)
treeccd0494b1112c388114e032f994505a2344123be /app
parentc7e490ebd5ab69fe043cd39145bd6ef3850a6921 (diff)
parent1a83fea711961844adc7ddb21ce007143fefc144 (diff)
downloadgitlab-ce-4537623d12fb7372262267be5d6ec3b41f3f476c.tar.gz
Merge branch 'master' into karlhungus-mr-on-fork
Conflicts: app/contexts/filter_context.rb app/contexts/search_context.rb app/models/merge_request.rb app/models/note.rb app/views/shared/_merge_requests.html.haml spec/controllers/commit_controller_spec.rb spec/services/notification_service_spec.rb
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/behaviors/toggler_behavior.coffee4
-rw-r--r--app/assets/javascripts/branch-graph.js.coffee10
-rw-r--r--app/assets/javascripts/dispatcher.js.coffee4
-rw-r--r--app/assets/javascripts/extensions/jquery.js.coffee4
-rw-r--r--app/assets/javascripts/gfm_auto_complete.js.coffee2
-rw-r--r--app/assets/javascripts/main.js.coffee2
-rw-r--r--app/assets/javascripts/merge_requests.js.coffee7
-rw-r--r--app/assets/javascripts/notes.js3
-rw-r--r--app/assets/javascripts/wikis.js.coffee7
-rw-r--r--app/assets/stylesheets/common.scss36
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap.scss43
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/blocks.scss29
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/buttons.scss133
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/common.scss18
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/files.scss6
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/forms.scss29
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/lists.scss10
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/mixins.scss1
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/nav.scss7
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/tables.scss9
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap/typography.scss11
-rw-r--r--app/assets/stylesheets/sections/commits.scss8
-rw-r--r--app/assets/stylesheets/sections/issues.scss11
-rw-r--r--app/assets/stylesheets/sections/nav.scss4
-rw-r--r--app/assets/stylesheets/sections/projects.scss23
-rw-r--r--app/assets/stylesheets/sections/tree.scss2
-rw-r--r--app/assets/stylesheets/themes/ui_mars.scss4
-rw-r--r--app/contexts/filter_context.rb4
-rw-r--r--app/contexts/merge_requests_load_context.rb2
-rw-r--r--app/contexts/search_context.rb6
-rw-r--r--app/controllers/profiles/groups_controller.rb2
-rw-r--r--app/controllers/projects/branches_controller.rb4
-rw-r--r--app/controllers/projects/edit_tree_controller.rb2
-rw-r--r--app/controllers/projects/repositories_controller.rb4
-rw-r--r--app/controllers/users_groups_controller.rb3
-rw-r--r--app/helpers/commits_helper.rb56
-rw-r--r--app/helpers/dashboard_helper.rb11
-rw-r--r--app/helpers/groups_helper.rb16
-rw-r--r--app/helpers/notifications_helper.rb11
-rw-r--r--app/helpers/tree_helper.rb8
-rw-r--r--app/models/deprecated/user_team.rb2
-rw-r--r--app/models/deprecated/user_team_project_relationship.rb2
-rw-r--r--app/models/deprecated/user_team_user_relationship.rb2
-rw-r--r--app/models/merge_request.rb11
-rw-r--r--app/models/note.rb52
-rw-r--r--app/models/repository.rb20
-rw-r--r--app/services/notification_service.rb17
-rw-r--r--app/views/admin/groups/edit.html.haml18
-rw-r--r--app/views/admin/groups/index.html.haml2
-rw-r--r--app/views/admin/groups/new.html.haml12
-rw-r--r--app/views/admin/hooks/index.html.haml6
-rw-r--r--app/views/admin/projects/index.html.haml2
-rw-r--r--app/views/admin/users/_form.html.haml54
-rw-r--r--app/views/admin/users/index.html.haml4
-rw-r--r--app/views/dashboard/_filter.html.haml27
-rw-r--r--app/views/dashboard/issues.html.haml30
-rw-r--r--app/views/dashboard/merge_requests.html.haml9
-rw-r--r--app/views/dashboard/projects.html.haml6
-rw-r--r--app/views/groups/_new_group_member.html.haml17
-rw-r--r--app/views/groups/edit.html.haml18
-rw-r--r--app/views/groups/issues.html.haml16
-rw-r--r--app/views/groups/members.html.haml36
-rw-r--r--app/views/groups/merge_requests.html.haml2
-rw-r--r--app/views/groups/new.html.haml16
-rw-r--r--app/views/help/index.html.haml2
-rw-r--r--app/views/notify/new_user_email.html.haml2
-rw-r--r--app/views/notify/new_user_email.text.erb2
-rw-r--r--app/views/profiles/account.html.haml25
-rw-r--r--app/views/profiles/design.html.haml6
-rw-r--r--app/views/profiles/groups/index.html.haml25
-rw-r--r--app/views/profiles/history.html.haml5
-rw-r--r--app/views/profiles/keys/_form.html.haml12
-rw-r--r--app/views/profiles/keys/index.html.haml10
-rw-r--r--app/views/profiles/notifications/_settings.html.haml2
-rw-r--r--app/views/profiles/notifications/show.html.haml43
-rw-r--r--app/views/profiles/passwords/new.html.haml12
-rw-r--r--app/views/profiles/show.html.haml2
-rw-r--r--app/views/projects/blame/_head.html.haml2
-rw-r--r--app/views/projects/blame/show.html.haml14
-rw-r--r--app/views/projects/blob/_actions.html.haml10
-rw-r--r--app/views/projects/branches/_filter.html.haml (renamed from app/views/projects/repositories/_filter.html.haml)4
-rw-r--r--app/views/projects/branches/index.html.haml2
-rw-r--r--app/views/projects/branches/recent.html.haml8
-rw-r--r--app/views/projects/commits/_head.html.haml2
-rw-r--r--app/views/projects/commits/_text_file.html.haml4
-rw-r--r--app/views/projects/commits/show.html.haml2
-rw-r--r--app/views/projects/compare/_form.html.haml4
-rw-r--r--app/views/projects/create.js.haml1
-rw-r--r--app/views/projects/deploy_keys/_form.html.haml14
-rw-r--r--app/views/projects/deploy_keys/index.html.haml24
-rw-r--r--app/views/projects/edit.html.haml28
-rw-r--r--app/views/projects/edit_tree/show.html.haml1
-rw-r--r--app/views/projects/hooks/index.html.haml6
-rw-r--r--app/views/projects/issues/_filter.html.haml7
-rw-r--r--app/views/projects/issues/_form.html.haml26
-rw-r--r--app/views/projects/issues/index.html.haml4
-rw-r--r--app/views/projects/merge_requests/_filter.html.haml23
-rw-r--r--app/views/projects/merge_requests/_form.html.haml10
-rw-r--r--app/views/projects/merge_requests/edit.html.haml2
-rw-r--r--app/views/projects/merge_requests/index.html.haml2
-rw-r--r--app/views/projects/merge_requests/show/_how_to_merge.html.haml4
-rw-r--r--app/views/projects/merge_requests/show/_mr_accept.html.haml5
-rw-r--r--app/views/projects/milestones/_form.html.haml4
-rw-r--r--app/views/projects/milestones/_milestone.html.haml3
-rw-r--r--app/views/projects/milestones/index.html.haml2
-rw-r--r--app/views/projects/milestones/show.html.haml46
-rw-r--r--app/views/projects/network/_head.html.haml2
-rw-r--r--app/views/projects/new.html.haml51
-rw-r--r--app/views/projects/notes/_diff_notes_with_reply.html.haml20
-rw-r--r--app/views/projects/notes/_discussion.html.haml2
-rw-r--r--app/views/projects/notes/_note.html.haml3
-rw-r--r--app/views/projects/protected_branches/index.html.haml2
-rw-r--r--app/views/projects/repositories/show.html.haml9
-rw-r--r--app/views/projects/snippets/_form.html.haml12
-rw-r--r--app/views/projects/team_members/_form.html.haml10
-rw-r--r--app/views/projects/team_members/_group_members.html.haml4
-rw-r--r--app/views/projects/team_members/_team.html.haml4
-rw-r--r--app/views/projects/team_members/import.html.haml13
-rw-r--r--app/views/projects/team_members/index.html.haml8
-rw-r--r--app/views/projects/wikis/_form.html.haml17
-rw-r--r--app/views/projects/wikis/_nav.html.haml2
-rw-r--r--app/views/projects/wikis/_new.html.haml2
-rw-r--r--app/views/projects/wikis/git_access.html.haml3
-rw-r--r--app/views/public/projects/index.html.haml2
-rw-r--r--app/views/search/show.html.haml2
-rw-r--r--app/views/shared/_filter.html.haml29
-rw-r--r--app/views/shared/_issues.html.haml15
-rw-r--r--app/views/shared/_merge_requests.html.haml3
-rw-r--r--app/views/snippets/_form.html.haml12
-rw-r--r--app/views/snippets/current_user_index.html.haml7
-rw-r--r--app/views/snippets/index.html.haml8
-rw-r--r--app/views/snippets/show.html.haml2
-rw-r--r--app/views/users_groups/_users_group.html.haml14
-rw-r--r--app/views/users_groups/update.js.haml2
134 files changed, 869 insertions, 740 deletions
diff --git a/app/assets/javascripts/behaviors/toggler_behavior.coffee b/app/assets/javascripts/behaviors/toggler_behavior.coffee
index d2181e7b759..7e438c51c1c 100644
--- a/app/assets/javascripts/behaviors/toggler_behavior.coffee
+++ b/app/assets/javascripts/behaviors/toggler_behavior.coffee
@@ -11,3 +11,7 @@ $ ->
container = $(".js-toggle-visibility-container")
container.toggleClass("hide")
e.preventDefault()
+
+ $("body").on "click", ".js-toggle-button", (e) ->
+ $(@).closest(".js-toggle-container").find(".js-toggle-content").toggle()
+ e.preventDefault()
diff --git a/app/assets/javascripts/branch-graph.js.coffee b/app/assets/javascripts/branch-graph.js.coffee
index 6e069f264f1..318538509a5 100644
--- a/app/assets/javascripts/branch-graph.js.coffee
+++ b/app/assets/javascripts/branch-graph.js.coffee
@@ -62,22 +62,22 @@ class BranchGraph
cuday = 0
cumonth = ""
- r.rect(0, 0, 26, @barHeight).attr fill: "#222"
- r.rect(26, 0, 20, @barHeight).attr fill: "#444"
+ r.rect(0, 0, 40, @barHeight).attr fill: "#222"
+ r.rect(40, 0, 30, @barHeight).attr fill: "#444"
for day, mm in @days
if cuday isnt day[0]
# Dates
- r.text(36, @offsetY + @unitTime * mm, day[0])
+ r.text(55, @offsetY + @unitTime * mm, day[0])
.attr(
font: "12px Monaco, monospace"
- fill: "#DDD"
+ fill: "#BBB"
)
cuday = day[0]
if cumonth isnt day[1]
# Months
- r.text(13, @offsetY + @unitTime * mm, day[1])
+ r.text(20, @offsetY + @unitTime * mm, day[1])
.attr(
font: "12px Monaco, monospace"
fill: "#EEE"
diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
index d490233c2ec..b0b947dd476 100644
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ b/app/assets/javascripts/dispatcher.js.coffee
@@ -39,7 +39,9 @@ class Dispatcher
switch path.first()
when 'admin' then new Admin()
- when 'wikis' then new Wikis()
+ when 'projects'
+ new Wikis() if path[1] == 'wikis'
+
initSearch: ->
autocomplete_json = $('.search-autocomplete-json').data('autocomplete-opts')
diff --git a/app/assets/javascripts/extensions/jquery.js.coffee b/app/assets/javascripts/extensions/jquery.js.coffee
index 8a997fe318e..40fb6cb9fc3 100644
--- a/app/assets/javascripts/extensions/jquery.js.coffee
+++ b/app/assets/javascripts/extensions/jquery.js.coffee
@@ -7,3 +7,7 @@ $.fn.enableButton = ->
$(@).removeAttr('disabled').
removeClass('disabled')
+$.fn.disableButton = ->
+ $(@).attr('disabled', 'disabled').
+ addClass('disabled')
+
diff --git a/app/assets/javascripts/gfm_auto_complete.js.coffee b/app/assets/javascripts/gfm_auto_complete.js.coffee
index c8c57b91e03..e22761e57a4 100644
--- a/app/assets/javascripts/gfm_auto_complete.js.coffee
+++ b/app/assets/javascripts/gfm_auto_complete.js.coffee
@@ -44,7 +44,7 @@ GitLab.GfmAutoComplete =
tpl: @Issues.template
callbacks:
before_save: (issues) ->
- $.map issues, (i) -> id: i.id, title: i.title, search: "#{i.id} #{i.title}"
+ $.map issues, (i) -> id: i.id, title: sanitize(i.title), search: "#{i.id} #{i.title}"
input.one "focus", =>
$.getJSON(@dataSource).done (data) ->
diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee
index f65211c5d13..f22c7a28f35 100644
--- a/app/assets/javascripts/main.js.coffee
+++ b/app/assets/javascripts/main.js.coffee
@@ -119,7 +119,7 @@ $ ->
# Commit show suppressed diff
- $(".supp_diff_link").bind "click", ->
+ $(".content").on "click", ".supp_diff_link", ->
$(@).next('table').show()
$(@).remove()
diff --git a/app/assets/javascripts/merge_requests.js.coffee b/app/assets/javascripts/merge_requests.js.coffee
index 769a940959b..153198ca5c5 100644
--- a/app/assets/javascripts/merge_requests.js.coffee
+++ b/app/assets/javascripts/merge_requests.js.coffee
@@ -22,12 +22,7 @@ class MergeRequest
this.$('.show-all-commits').on 'click', =>
this.showAllCommits()
- modal = $('#modal_merge_info').modal modal: true, show:false
-
- $('.how_to_merge_link').bind "click", ->
- modal.show()
- $('.modal-header .close').bind "click", ->
- modal.hide()
+ modal = $('#modal_merge_info').modal(show: false)
# Local jQuery finder
$: (selector) ->
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index 5e1e4dc4113..5225623c1f0 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -227,10 +227,11 @@ var NoteList = {
// Show the attachment delete link
note.find(".js-note-attachment-delete").show();
+ GitLab.GfmAutoComplete.setup();
+
var form = note.find(".note-edit-form");
form.show();
-
var textarea = form.find("textarea");
var p = $("<p></p>").text(textarea.val());
var hidden_div = $('<div class="note-original-content"></div>').append(p);
diff --git a/app/assets/javascripts/wikis.js.coffee b/app/assets/javascripts/wikis.js.coffee
index f2867c8026e..17e790e5b7c 100644
--- a/app/assets/javascripts/wikis.js.coffee
+++ b/app/assets/javascripts/wikis.js.coffee
@@ -1,10 +1,5 @@
class Wikis
constructor: ->
- modal = $('#modal-new-wiki').modal({modal: true, show:false})
-
- $('.add-new-wiki').bind "click", ->
- modal.show()
-
$('.build-new-wiki').bind "click", ->
field = $('#new_wiki_path')
slug = field.val()
@@ -13,7 +8,5 @@ class Wikis
if(slug.length > 0)
location.href = path + "/" + slug
- $('.modal-header .close').bind "click", ->
- modal.hide()
@Wikis = Wikis
diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss
index 2b3382dd8bb..ee6d5698e32 100644
--- a/app/assets/stylesheets/common.scss
+++ b/app/assets/stylesheets/common.scss
@@ -81,33 +81,6 @@ span.update-author {
font-weight: normal;
}
-form {
- @extend .form-horizontal;
-
- .actions {
- @extend .form-actions;
- }
-
- .clearfix {
- @extend .control-group;
- }
-
- .input {
- @extend .controls;
- }
-
- label {
- @extend .control-label;
- }
- .xlarge {
- @extend .input-xlarge;
- }
- .xxlarge {
- @extend .input-xxlarge;
- }
-}
-
-
.field_with_errors {
display: inline;
}
@@ -121,15 +94,6 @@ ul.breadcrumb {
}
a {
- color: #474D57;
- font-weight: bold;
- font-size: 14px;
- }
-}
-
-input[type=text] {
- &.large_text {
- padding: 6px;
font-size: 16px;
}
}
diff --git a/app/assets/stylesheets/gitlab_bootstrap.scss b/app/assets/stylesheets/gitlab_bootstrap.scss
index 2ad1bf944a9..1b24683fd97 100644
--- a/app/assets/stylesheets/gitlab_bootstrap.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap.scss
@@ -2,11 +2,49 @@
$baseFontSize: 13px !default;
$baseLineHeight: 18px !default;
-// BOOTSTRAP
-@import "bootstrap";
+/**
+ * BOOTSTRAP
+ */
+@import "bootstrap/variables";
+@import "bootstrap/mixins";
+@import "bootstrap/reset";
+@import "bootstrap/scaffolding";
+@import "bootstrap/grid";
+@import "bootstrap/layouts";
+@import "bootstrap/type";
+@import "bootstrap/code";
+@import "bootstrap/forms";
+@import "bootstrap/tables";
+@import "bootstrap/sprites";
+@import "bootstrap/dropdowns";
+@import "bootstrap/wells";
+@import "bootstrap/component-animations";
+@import "bootstrap/close";
+@import "bootstrap/button-groups";
+@import "bootstrap/alerts";
+@import "bootstrap/navs";
+@import "bootstrap/navbar";
+@import "bootstrap/breadcrumbs";
+@import "bootstrap/pagination";
+@import "bootstrap/pager";
+@import "bootstrap/modals";
+@import "bootstrap/tooltip";
+@import "bootstrap/popovers";
+@import "bootstrap/thumbnails";
+@import "bootstrap/media";
+@import "bootstrap/labels-badges";
+@import "bootstrap/progress-bars";
+@import "bootstrap/accordion";
+@import "bootstrap/carousel";
+@import "bootstrap/hero-unit";
+@import "bootstrap/utilities";
@import "bootstrap/responsive-utilities";
@import "bootstrap/responsive-1200px-min";
+/**
+ * Font icons
+ *
+ */
@import "font-awesome";
/**
@@ -26,3 +64,4 @@ $baseLineHeight: 18px !default;
@import "gitlab_bootstrap/files.scss";
@import "gitlab_bootstrap/tables.scss";
@import "gitlab_bootstrap/lists.scss";
+@import "gitlab_bootstrap/forms.scss";
diff --git a/app/assets/stylesheets/gitlab_bootstrap/blocks.scss b/app/assets/stylesheets/gitlab_bootstrap/blocks.scss
index 053c275c3bb..0c561552dcb 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/blocks.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/blocks.scss
@@ -10,15 +10,34 @@
*
*/
.ui-box {
- background: #F9F9F9;
+ background: #FFF;
margin-bottom: 20px;
border: 1px solid #CCC;
word-wrap: break-word;
- @include solid-shade;
+
+ &.small-box {
+ margin-bottom: 10px;
+
+ .title {
+ font-size: 13px;
+ line-height: 30px;
+
+ a {
+ color: #666;
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+ }
&.ui-box-show {
margin:20px 0;
background: #FFF;
+
+ .control-group {
+ margin-bottom: 0;
+ }
}
&.ui-box-danger {
@@ -71,10 +90,6 @@
border-top: 1px solid #eee;
}
- &.white {
- background: #fff;
- }
-
ul {
margin: 0;
}
@@ -102,6 +117,8 @@
.btn {
vertical-align: middle;
+ padding: 4px 12px;
+ @include box-shadow(0 0px 1px 1px #f2f2f2);
}
.nav-pills {
diff --git a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss
index 90b041b29db..9eb32ca95e6 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss
@@ -1,59 +1,103 @@
.btn {
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 13px;
+ line-height: $baseLineHeight;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ border: 1px solid #BBB;
+ color: $style_color;
+ @include border-radius($baseBorderRadius);
+ @include box-shadow(inset 0 1px 0 rgba(255,255,255,.2));
@include linear-gradient(#f1f1f1, #e1e1e1);
text-shadow: 0 1px 1px #FFF;
- border-color: #BBB;
+ text-decoration: none;
+ &.hover,
&:hover {
+ color: $style_color;
background: #f1f1f1;
- @include linear-gradient(#fAfAfA, #f1f1f1);
border-color: #AAA;
- color: #333;
+ text-decoration: none;
+ @include linear-gradient(#fAfAfA, #f1f1f1);
}
- &.btn-primary {
- background: #2a79A3;
- @include linear-gradient(#47A7b7, #2585b5);
- border-color: #2A79A3;
- color: #fff;
- text-shadow: 0 1px 1px #268;
- &:hover {
- background: $primary_color;
- color: #fff;
- }
+ &.focus,
+ &:focus {
+ text-decoration: none;
+ @include box-shadow(inset 0 2px 4px rgba(0,0,0,.15));
+ }
- &.disabled {
- color: #fff;
- background: $primary_color;
- }
+ &.active,
+ &:active {
+ background-image: none;
+ outline: 0;
+ text-decoration: none;
+ @include box-shadow(inset 0 2px 4px rgba(0,0,0,.15));
}
- &.btn-info {
- background: #5aB9C3;
- border-color: $primary_color;
- color: #fff;
- text-shadow: 0 1px 1px #268;
- &:hover {
- background: $primary_color;
- color: #fff;
- }
+ &.disabled,
+ &[disabled] {
+ cursor: default;
+ background-image: none;
+ @include opacity(65);
+ @include box-shadow(none);
+ }
- &.disabled {
- color: #fff;
- background: $primary_color;
+ &.btn-primary {
+ color: #FFF;
+ border-color: #189;
+ text-shadow: 0 1px 1px #189;
+ @include linear-gradient(#4AC, #289);
+
+ &.hover,
+ &:hover,
+ &.disabled,
+ &[disabled] {
+ color: #FFF;
+ background: #389;
}
}
&.btn-success {
- &:hover {
- background: #51a351;
+ color: #FFF;
+ border-color: #1A1;
+ text-shadow: 0 1px 1px #FFF;
+ text-shadow: 0 1px 1px #181;
+ @include linear-gradient(#62C452, #51a351);
+
+
+ &.hover,
+ &:hover,
+ &.disabled,
+ &[disabled] {
+ color: #FFF;
+ background: #2A2;
}
+ }
+
+ &.btn-danger {
+ color: #FFF;
+ text-shadow: 0 1px 1px #811;
+ border-color: #BD362F;
+ @include linear-gradient(#EE5F5B, #BD362F);
- &.disabled {
- color: #fff;
- background: #2b2;
+
+ &.hover,
+ &:hover,
+ &.disabled,
+ &[disabled] {
+ color: #FFF;
+ background: #A22;
}
}
+ &.btn-new {
+ @extend .btn-success;
+ }
+
&.btn-create {
@extend .wide;
@extend .btn-success;
@@ -67,12 +111,6 @@
&.btn-close,
&.btn-remove {
@extend .btn-danger;
- border-color: #BD362F;
-
- &:hover {
- color: #fff;
- background: #EE4E49;
- }
}
&.btn-cancel {
@@ -84,13 +122,9 @@
padding-right: 20px;
}
- &.small {
- @extend .btn-small;
- }
-
- &.active {
- border-color: #aaa;
- background-color: #ccc;
+ &.btn-small {
+ padding: 2px 10px;
+ font-size: 12px;
}
&.btn-tiny {
@@ -104,9 +138,4 @@
margin-right: 7px;
float: left;
}
-
- &.padded {
- margin-right: 3px;
- padding: 4px 10px 4px;
- }
}
diff --git a/app/assets/stylesheets/gitlab_bootstrap/common.scss b/app/assets/stylesheets/gitlab_bootstrap/common.scss
index 1d958a05b80..cd652590089 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/common.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/common.scss
@@ -48,7 +48,13 @@
line-height: 36px;
}
-p.slead { color: #456; font-size: 16px; margin-bottom: 12px; font-weight: 200; line-height: 24px; }
+.slead {
+ color: #666;
+ font-size: 14px;
+ margin-bottom: 12px;
+ font-weight: normal;
+ line-height: 24px;
+}
/** FORMS **/
input[type='search'].search-text-input {
@@ -66,7 +72,7 @@ input[type='text'].danger {
text-shadow: 0 1px 1px #fff
}
-fieldset legend { font-size: 17px; }
+fieldset legend { font-size: 15px; }
.tab-content {
overflow: visible;
@@ -90,3 +96,11 @@ pre.well-pre {
border-radius: 0;
color: #555;
}
+
+.input-append .btn.active, .input-prepend .btn.active {
+ background: #CCC;
+ border-color: #BBB;
+ text-shadow: 0 1px 1px #fff;
+ font-weight: bold;
+ @include box-shadow(inset 0 2px 4px rgba(0,0,0,.15));
+}
diff --git a/app/assets/stylesheets/gitlab_bootstrap/files.scss b/app/assets/stylesheets/gitlab_bootstrap/files.scss
index ec03fd0d844..a0d6682eb8f 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/files.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/files.scss
@@ -3,18 +3,18 @@
*
*/
.file-holder {
- border: 1px solid #BBB;
+ border: 1px solid #CCC;
margin-bottom: 1em;
- @include solid-shade;
.file-title {
border-bottom: 1px solid #bbb;
@include bg-dark-gray-gradient;
+ text-shadow: 0 1px 1px #fff;
margin: 0;
font-weight: normal;
font-weight: bold;
text-align: left;
- color: #666;
+ color: $style_color;
padding: 9px 10px;
height: 18px;
diff --git a/app/assets/stylesheets/gitlab_bootstrap/forms.scss b/app/assets/stylesheets/gitlab_bootstrap/forms.scss
new file mode 100644
index 00000000000..bc8fbc2e24e
--- /dev/null
+++ b/app/assets/stylesheets/gitlab_bootstrap/forms.scss
@@ -0,0 +1,29 @@
+form {
+ @extend .form-horizontal;
+
+ label {
+ @extend .control-label;
+ }
+}
+
+input {
+ &.input-xpadding {
+ padding: 6px 10px;
+ }
+}
+
+.control-group {
+ .control-label {
+ padding-top: 6px;
+ }
+ .controls {
+ input, textarea {
+ padding: 6px 10px;
+ }
+
+ input[type="radio"], input[type="checkbox"] {
+ margin-top: 6px;
+ }
+ }
+}
+
diff --git a/app/assets/stylesheets/gitlab_bootstrap/lists.scss b/app/assets/stylesheets/gitlab_bootstrap/lists.scss
index cc7084d27d5..83066b5beec 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/lists.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/lists.scss
@@ -6,7 +6,6 @@
margin: 0;
list-style: none;
li {
- background-color: #FFF;
padding: 10px;
min-height: 20px;
border-bottom: 1px solid #eee;
@@ -84,4 +83,13 @@ ul.bordered-list {
a { color: #777; }
}
}
+
+ &.top-list {
+ li:first-child {
+ padding-top: 0;
+ h4, h5 {
+ margin-top: 0;
+ }
+ }
+ }
}
diff --git a/app/assets/stylesheets/gitlab_bootstrap/mixins.scss b/app/assets/stylesheets/gitlab_bootstrap/mixins.scss
index b9abb5e4c67..9ddaaf31c1c 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/mixins.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/mixins.scss
@@ -90,7 +90,6 @@
@mixin page-title {
color: $style_color;
font-size: 20px;
- font-weight: normal;
line-height: 1.5;
margin-top: 0px;
margin-bottom: 15px;
diff --git a/app/assets/stylesheets/gitlab_bootstrap/nav.scss b/app/assets/stylesheets/gitlab_bootstrap/nav.scss
index de077303617..f75d643aa0f 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/nav.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/nav.scss
@@ -10,6 +10,7 @@
> li > a {
@include border-radius(0);
}
+
&.nav-stacked {
> li > a {
border-left: 4px solid #EEE;
@@ -30,6 +31,12 @@
}
}
}
+
+ &.nav-pills-small {
+ > li > a {
+ padding: 8px 12px;
+ }
+ }
}
.nav-pills > .active > a > i[class^="icon-"] { background: inherit; }
diff --git a/app/assets/stylesheets/gitlab_bootstrap/tables.scss b/app/assets/stylesheets/gitlab_bootstrap/tables.scss
index f46ae91b6ab..a1a5139cda9 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/tables.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/tables.scss
@@ -1,8 +1,7 @@
table {
@extend .table;
@extend .table-striped;
- @include solid-shade;
- border: 1px solid #bbb;
+ border: 1px solid #CCC;
width: 100%;
&.low {
@@ -20,7 +19,7 @@ table {
th {
font-weight: bold;
vertical-align: middle;
- border-bottom: 1px solid #bbb;
+ border-bottom: 1px solid #CCC;
text-shadow: 0 1px 1px #fff;
@include bg-dark-gray-gradient;
@@ -46,11 +45,11 @@ table {
}
&:first-child {
- border-left: 1px solid #bbb;
+ border-left: 1px solid #CCC;
}
&:last-child {
- border-right: 1px solid #bbb;
+ border-right: 1px solid #CCC;
}
}
diff --git a/app/assets/stylesheets/gitlab_bootstrap/typography.scss b/app/assets/stylesheets/gitlab_bootstrap/typography.scss
index 69292ca0b64..d3986556376 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/typography.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/typography.scss
@@ -2,6 +2,10 @@
* Headers
*
*/
+h1, h2, h3, h4, h5, h6 {
+ font-weight: 500;
+ line-height: 1.1;
+}
h1.page-title {
@include page-title;
@@ -48,13 +52,6 @@ a {
text-decoration: underline;
}
- &.btn {
- color: $style_color;
- &:hover {
- color: $style_color;
- }
- }
-
&.dark {
color: $style_color;
}
diff --git a/app/assets/stylesheets/sections/commits.scss b/app/assets/stylesheets/sections/commits.scss
index 1a2c5e76706..35de2826c9b 100644
--- a/app/assets/stylesheets/sections/commits.scss
+++ b/app/assets/stylesheets/sections/commits.scss
@@ -421,8 +421,8 @@
.commits-compare-switch{
background: url("switch_icon.png") no-repeat center center;
- width: 16px;
- height: 18px;
+ width: 22px;
+ height: 22px;
text-indent: -9999px;
float: left;
margin-right: 9px;
@@ -471,3 +471,7 @@ li.commit {
}
}
}
+
+.commit-breadcrumb {
+ padding: 0;
+}
diff --git a/app/assets/stylesheets/sections/issues.scss b/app/assets/stylesheets/sections/issues.scss
index ed7902fec3a..5b79b30b5c2 100644
--- a/app/assets/stylesheets/sections/issues.scss
+++ b/app/assets/stylesheets/sections/issues.scss
@@ -44,7 +44,7 @@ input.check_all_issues {
margin: 0;
margin-right: 10px;
position: relative;
- top: 8px;
+ top: 10px;
height: 22px;
}
@@ -52,6 +52,10 @@ input.check_all_issues {
.title {
height: 40px;
}
+
+ form {
+ margin: 0;
+ }
}
.btn.close_issue {
@@ -88,14 +92,11 @@ input.check_all_issues {
}
.update_selected_issues {
- position: relative;
- top:5px;
margin-left: 4px;
- float: left;
}
.update_issues_text {
- padding: 3px;
+ padding: 5px;
line-height: 28px;
float: left;
color: #479;
diff --git a/app/assets/stylesheets/sections/nav.scss b/app/assets/stylesheets/sections/nav.scss
index 77ed57a6cfc..54263523e85 100644
--- a/app/assets/stylesheets/sections/nav.scss
+++ b/app/assets/stylesheets/sections/nav.scss
@@ -7,7 +7,7 @@
ul {
margin: auto;
- height: 42px;
+ height: 40px;
overflow: hidden;
.count {
font-weight: normal;
@@ -74,7 +74,7 @@
text-align: center;
font-weight: normal;
height: 38px;
- line-height: 36px;
+ line-height: 34px;
color: #777;
text-shadow: 0 1px 1px white;
padding: 0 10px;
diff --git a/app/assets/stylesheets/sections/projects.scss b/app/assets/stylesheets/sections/projects.scss
index 505c8d960f4..027b51f48f0 100644
--- a/app/assets/stylesheets/sections/projects.scss
+++ b/app/assets/stylesheets/sections/projects.scss
@@ -1,22 +1,5 @@
.new_project,
.edit_project {
- .project_name_holder {
- input,
- label {
- font-size: 16px;
- line-height: 20px;
- padding: 8px;
- }
- .btn {
- padding: 6px 10px;
- margin-left: 10px;
- margin-bottom: 8px;
- }
- }
- .adv_settings {
- h6 { margin-left: 40px; }
- }
-
fieldset.features {
.control-label {
font-weight: bold;
@@ -30,6 +13,10 @@
padding: 4px 7px;
border: 1px solid #CCC;
margin-bottom: 20px;
+
+ .btn {
+ padding: 4px 12px;
+ }
}
.project_clone_holder {
@@ -114,7 +101,7 @@ ul.nav.nav-projects-tabs {
.public-clone {
background: #333;
color: #f5f5f5;
- padding: 5px 10px;
+ padding: 6px 10px;
margin: 1px;
font-weight: normal;
}
diff --git a/app/assets/stylesheets/sections/tree.scss b/app/assets/stylesheets/sections/tree.scss
index d8f32e49c2d..b8b82bcf68c 100644
--- a/app/assets/stylesheets/sections/tree.scss
+++ b/app/assets/stylesheets/sections/tree.scss
@@ -104,6 +104,8 @@
}
.tree-btn-group {
+ top: 2px;
+
.btn {
margin-right: 0px;
padding: 2px 10px;
diff --git a/app/assets/stylesheets/themes/ui_mars.scss b/app/assets/stylesheets/themes/ui_mars.scss
index 44649ea037c..a2b8c21ea11 100644
--- a/app/assets/stylesheets/themes/ui_mars.scss
+++ b/app/assets/stylesheets/themes/ui_mars.scss
@@ -31,8 +31,4 @@
border-left: 1px solid #666;
}
}
-
- .main-nav {
- box-shadow: 0 -1px 0 white inset;
- }
}
diff --git a/app/contexts/filter_context.rb b/app/contexts/filter_context.rb
index e7f80e1a4e4..cd054e0c2c3 100644
--- a/app/contexts/filter_context.rb
+++ b/app/contexts/filter_context.rb
@@ -11,8 +11,8 @@ class FilterContext
end
def apply_filter items
- if params[:project_id]
- items = items.by_project(params[:project_id])
+ if params[:project_id].present?
+ items = items.where(project_id: params[:project_id])
end
if params[:search].present?
diff --git a/app/contexts/merge_requests_load_context.rb b/app/contexts/merge_requests_load_context.rb
index 9eba81295a9..40b4c7bac74 100644
--- a/app/contexts/merge_requests_load_context.rb
+++ b/app/contexts/merge_requests_load_context.rb
@@ -2,7 +2,7 @@
# based on filtering passed via params for @project
class MergeRequestsLoadContext < BaseContext
def execute
- type = params[:f]
+ type = params[:status]
merge_requests = project.merge_requests
diff --git a/app/contexts/search_context.rb b/app/contexts/search_context.rb
index 4b1be84a2e1..e756c415005 100644
--- a/app/contexts/search_context.rb
+++ b/app/contexts/search_context.rb
@@ -11,7 +11,7 @@ class SearchContext
return result unless query.present?
projects = Project.where(id: project_ids)
- result[:projects] = projects.search(query).limit(10)
+ result[:projects] = projects.search(query).limit(20)
# Search inside singe project
project = projects.first if projects.length == 1
@@ -19,8 +19,8 @@ class SearchContext
if params[:search_code].present?
result[:blobs] = project.repository.search_files(query, params[:repository_ref]) unless project.empty_repo?
else
- result[:merge_requests] = MergeRequest.in_projects(project_ids).search(query).limit(10)
- result[:issues] = Issue.where(project_id: project_ids).search(query).limit(10)
+ result[:merge_requests] = MergeRequest.in_projects(project_ids).search(query).limit(20)
+ result[:issues] = Issue.where(project_id: project_ids).search(query).limit(20)
result[:wiki_pages] = []
end
result
diff --git a/app/controllers/profiles/groups_controller.rb b/app/controllers/profiles/groups_controller.rb
index 793d2a32954..e276d07b489 100644
--- a/app/controllers/profiles/groups_controller.rb
+++ b/app/controllers/profiles/groups_controller.rb
@@ -2,7 +2,7 @@ class Profiles::GroupsController < ApplicationController
layout "profile"
def index
- @groups = current_user.authorized_groups.page(params[:page]).per(20)
+ @user_groups = current_user.users_groups.page(params[:page]).per(20)
end
def leave
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb
index 97dbb2bc0c0..aa6914414ce 100644
--- a/app/controllers/projects/branches_controller.rb
+++ b/app/controllers/projects/branches_controller.rb
@@ -11,6 +11,10 @@ class Projects::BranchesController < Projects::ApplicationController
@branches = Kaminari.paginate_array(@repository.branches).page(params[:page]).per(30)
end
+ def recent
+ @branches = @repository.recent_branches
+ end
+
def create
@repository.add_branch(params[:branch_name], params[:ref])
diff --git a/app/controllers/projects/edit_tree_controller.rb b/app/controllers/projects/edit_tree_controller.rb
index 11c97291296..3b945fc7126 100644
--- a/app/controllers/projects/edit_tree_controller.rb
+++ b/app/controllers/projects/edit_tree_controller.rb
@@ -10,7 +10,7 @@ class Projects::EditTreeController < Projects::ApplicationController
before_filter :edit_requirements, only: [:show, :update]
def show
- @last_commit = @project.repository.last_commit_for(@ref, @path).sha
+ @last_commit = Gitlab::Git::Commit.last_for_path(@project.repository, @ref, @path).sha
end
def update
diff --git a/app/controllers/projects/repositories_controller.rb b/app/controllers/projects/repositories_controller.rb
index 7e6c7016ecf..20e2a9311ee 100644
--- a/app/controllers/projects/repositories_controller.rb
+++ b/app/controllers/projects/repositories_controller.rb
@@ -4,10 +4,6 @@ class Projects::RepositoriesController < Projects::ApplicationController
before_filter :authorize_code_access!
before_filter :require_non_empty_project
- def show
- @activities = @repository.commits_with_refs(20)
- end
-
def stats
@stats = Gitlab::Git::Stats.new(@repository.raw, @repository.root_ref)
@graph = @stats.graph
diff --git a/app/controllers/users_groups_controller.rb b/app/controllers/users_groups_controller.rb
index 36eb8dbbfa4..df13b86fdcd 100644
--- a/app/controllers/users_groups_controller.rb
+++ b/app/controllers/users_groups_controller.rb
@@ -13,7 +13,8 @@ class UsersGroupsController < ApplicationController
end
def update
- # TODO: implement
+ @member = @group.users_groups.find(params[:id])
+ @member.update_attributes(params[:users_group])
end
def destroy
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 20a2443f523..e889b390968 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -15,61 +15,9 @@ module CommitsHelper
commit_person_link(commit, options.merge(source: :committer))
end
- def identification_type(line)
- if line[0] == "+"
- "new"
- elsif line[0] == "-"
- "old"
- else
- nil
- end
- end
-
- def build_line_anchor(diff, line_new, line_old)
- "#{hexdigest(diff.new_path)}_#{line_old}_#{line_new}"
- end
-
def each_diff_line(diff, index)
- diff_arr = diff.diff.lines.to_a
-
- line_old = 1
- line_new = 1
- type = nil
-
- lines_arr = ::Gitlab::InlineDiff.processing diff_arr
- lines_arr.each do |line|
- next if line.match(/^\-\-\- \/dev\/null/)
- next if line.match(/^\+\+\+ \/dev\/null/)
- next if line.match(/^\-\-\- a/)
- next if line.match(/^\+\+\+ b/)
-
- full_line = html_escape(line.gsub(/\n/, ''))
- full_line = ::Gitlab::InlineDiff.replace_markers full_line
-
- if line.match(/^@@ -/)
- type = "match"
-
- line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0
- line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0
-
- next if line_old == 1 && line_new == 1 #top of file
- yield(full_line, type, nil, nil, nil)
- next
- else
- type = identification_type(line)
- line_code = build_line_anchor(diff, line_new, line_old)
- yield(full_line, type, line_code, line_new, line_old)
- end
-
-
- if line[0] == "+"
- line_new += 1
- elsif line[0] == "-"
- line_old += 1
- else
- line_new += 1
- line_old += 1
- end
+ Gitlab::DiffParser.new(diff).each do |full_line, type, line_code, line_new, line_old|
+ yield(full_line, type, line_code, line_new, line_old)
end
end
diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb
index e3be07c9fe0..35c7bcbd2cf 100644
--- a/app/helpers/dashboard_helper.rb
+++ b/app/helpers/dashboard_helper.rb
@@ -1,5 +1,5 @@
module DashboardHelper
- def dashboard_filter_path(entity, options={})
+ def filter_path(entity, options={})
exist_opts = {
status: params[:status],
project_id: params[:project_id],
@@ -7,12 +7,9 @@ module DashboardHelper
options = exist_opts.merge(options)
- case entity
- when 'issue' then
- issues_dashboard_path(options)
- when 'merge_request'
- merge_requests_dashboard_path(options)
- end
+ path = request.path
+ path << "?#{options.to_param}"
+ path
end
def entities_per_project project, entity
diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb
index 2ffbff7af8d..8573c59dc94 100644
--- a/app/helpers/groups_helper.rb
+++ b/app/helpers/groups_helper.rb
@@ -1,20 +1,4 @@
module GroupsHelper
- def group_filter_path(entity, options={})
- exist_opts = {
- status: params[:status],
- project_id: params[:project_id],
- }
-
- options = exist_opts.merge(options)
-
- case entity
- when 'issue' then
- issues_group_path(@group, options)
- when 'merge_request'
- merge_requests_group_path(@group, options)
- end
- end
-
def remove_user_from_group_message(group, user)
"You are going to remove #{user.name} from #{group.name} Group. Are you sure?"
end
diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb
index 7342393a707..ae3402b2617 100644
--- a/app/helpers/notifications_helper.rb
+++ b/app/helpers/notifications_helper.rb
@@ -1,2 +1,13 @@
module NotificationsHelper
+ def notification_icon(notification)
+ if notification.disabled?
+ content_tag :i, nil, class: 'icon-circle cred'
+ elsif notification.participating?
+ content_tag :i, nil, class: 'icon-circle cblue'
+ elsif notification.watch?
+ content_tag :i, nil, class: 'icon-circle cgreen'
+ else
+ content_tag :i, nil, class: 'icon-circle-blank cblue'
+ end
+ end
end
diff --git a/app/helpers/tree_helper.rb b/app/helpers/tree_helper.rb
index d41f8377559..73d36d0801c 100644
--- a/app/helpers/tree_helper.rb
+++ b/app/helpers/tree_helper.rb
@@ -39,12 +39,12 @@ module TreeHelper
#
# Returns boolean
def markup?(filename)
- filename.end_with?(*%w(.textile .rdoc .org .creole
- .mediawiki .rst .asciidoc .pod))
+ filename.downcase.end_with?(*%w(.textile .rdoc .org .creole
+ .mediawiki .rst .asciidoc .pod))
end
def gitlab_markdown?(filename)
- filename.end_with?(*%w(.mdown .md .markdown))
+ filename.downcase.end_with?(*%w(.mdown .md .markdown))
end
def plain_text_readme? filename
@@ -57,6 +57,8 @@ module TreeHelper
end
def allowed_tree_edit?
+ return false unless @repository.branch_names.include?(@ref)
+
if @project.protected_branch? @ref
can?(current_user, :push_code_to_protected_branches, @project)
else
diff --git a/app/models/deprecated/user_team.rb b/app/models/deprecated/user_team.rb
index a036cedc4c7..822884297d4 100644
--- a/app/models/deprecated/user_team.rb
+++ b/app/models/deprecated/user_team.rb
@@ -1,3 +1,5 @@
+# Will be removed in 6.1 with tables
+#
# == Schema Information
#
# Table name: user_teams
diff --git a/app/models/deprecated/user_team_project_relationship.rb b/app/models/deprecated/user_team_project_relationship.rb
index 991510be936..e93223f3e24 100644
--- a/app/models/deprecated/user_team_project_relationship.rb
+++ b/app/models/deprecated/user_team_project_relationship.rb
@@ -1,3 +1,5 @@
+# Will be removed in 6.1 with tables
+#
# == Schema Information
#
# Table name: user_team_project_relationships
diff --git a/app/models/deprecated/user_team_user_relationship.rb b/app/models/deprecated/user_team_user_relationship.rb
index 1f7e2625f5f..ae4c789994a 100644
--- a/app/models/deprecated/user_team_user_relationship.rb
+++ b/app/models/deprecated/user_team_user_relationship.rb
@@ -1,3 +1,5 @@
+# Will be removed in 6.1 with tables
+#
# == Schema Information
#
# Table name: user_team_user_relationships
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 703032649b9..b3c7aa39cf8 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -149,11 +149,12 @@ class MergeRequest < ActiveRecord::Base
end
def unmerged_diffs
- if for_fork?
- diffs = Gitlab::Satellite::MergeAction.new(author, self).diffs_between_satellite
- else
- diffs = target_project.repository.diffs_between(source_branch, target_branch)
- end
+ diffs = if for_fork?
+ Gitlab::Satellite::MergeAction.new(author, self).diffs_between_satellite
+ else
+ Gitlab::Git::Diff.between(project.repository, source_branch, target_branch)
+ end
+
diffs ||= []
diffs
end
diff --git a/app/models/note.rb b/app/models/note.rb
index fecee950713..c0bf79237c1 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -50,6 +50,9 @@ class Note < ActiveRecord::Base
scope :inc_author_project, ->{ includes(:project, :author) }
scope :inc_author, ->{ includes(:author) }
+ serialize :st_diff
+ before_create :set_diff, if: ->(n) { n.line_code.present? }
+
def self.create_status_change_note(noteable, project, author, status)
create({
noteable: noteable,
@@ -67,28 +70,61 @@ class Note < ActiveRecord::Base
nil
end
- def diff
- if noteable.diffs.present?
- noteable.diffs.select do |d|
- if d.new_path
- Digest::SHA1.hexdigest(d.new_path) == diff_file_index
- end
- end.first
+ def find_diff
+ return nil unless noteable && noteable.diffs.present?
+
+ @diff ||= noteable.diffs.find do |d|
+ Digest::SHA1.hexdigest(d.new_path) == diff_file_index if d.new_path
end
end
+ def set_diff
+ # First lets find notes with same diff
+ # before iterating over all mr diffs
+ diff = Note.where(noteable_id: self.noteable_id, noteable_type: self.noteable_type, line_code: self.line_code).last.try(:diff)
+ diff ||= find_diff
+
+ self.st_diff = diff.to_hash if diff
+ end
+
+ def diff
+ @diff ||= Gitlab::Git::Diff.new(st_diff) if st_diff.respond_to?(:map)
+ end
+
+ def active?
+ # TODO: determine if discussion is outdated
+ # according to recent MR diff or not
+ true
+ end
+
def diff_file_index
line_code.split('_')[0]
end
def diff_file_name
- diff.new_path
+ diff.new_path if diff
+ end
+
+ def diff_old_line
+ line_code.split('_')[1].to_i
end
def diff_new_line
line_code.split('_')[2].to_i
end
+ def diff_line
+ return @diff_line if @diff_line
+
+ if diff
+ Gitlab::DiffParser.new(diff).each do |full_line, type, line_code, line_new, line_old|
+ @diff_line = full_line if line_code == self.line_code
+ end
+ end
+
+ @diff_line
+ end
+
def discussion_id
@discussion_id ||= [:discussion, noteable_type.try(:underscore), noteable_id || commit_id, line_code].join("-").to_sym
end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 588cabfbae0..a2fd91bbec1 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -18,19 +18,25 @@ class Repository
end
def commit(id = nil)
- commit = raw_repository.commit(id)
+ commit = Gitlab::Git::Commit.find(raw_repository, id)
commit = Commit.new(commit) if commit
commit
end
def commits(ref, path = nil, limit = nil, offset = nil)
- commits = raw_repository.commits(ref, path, limit, offset)
+ commits = Gitlab::Git::Commit.where(
+ repo: raw_repository,
+ ref: ref,
+ path: path,
+ limit: limit,
+ offset: offset,
+ )
commits = Commit.decorate(commits) if commits.present?
commits
end
- def commits_between(target, source)
- commits = raw_repository.commits_between(target, source)
+ def commits_between(from, to)
+ commits = Gitlab::Git::Commit.between(raw_repository, from, to)
commits = Commit.decorate(commits) if commits.present?
commits
end
@@ -43,6 +49,12 @@ class Repository
tags.find { |tag| tag.name == name }
end
+ def recent_branches(limit = 20)
+ branches.sort do |a, b|
+ a.commit.committed_date <=> b.commit.committed_date
+ end[0..limit]
+ end
+
def add_branch(branch_name, ref)
Rails.cache.delete(cache_key(:branch_names))
diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb
index 5548c18bfe1..c20b07e69f0 100644
--- a/app/services/notification_service.rb
+++ b/app/services/notification_service.rb
@@ -102,19 +102,22 @@ class NotificationService
# ignore wall messages
return true unless note.noteable_type.present?
+ # ignore gitlab service messages
+ return true if note.note =~ /\A_Status changed to closed_/
+
opts = { noteable_type: note.noteable_type, project_id: note.project_id }
if note.commit_id.present?
opts.merge!(commit_id: note.commit_id)
- recipients = [note.commit_author]
else
opts.merge!(noteable_id: note.noteable_id)
- target = note.noteable
- if target.respond_to?(:participants)
- recipients = target.participants
- else
- recipients = []
- end
+ end
+
+ target = note.noteable
+ if target.respond_to?(:participants)
+ recipients = target.participants
+ else
+ recipients = note.mentioned_users
end
# Get users who left comment in thread
diff --git a/app/views/admin/groups/edit.html.haml b/app/views/admin/groups/edit.html.haml
index f4d931f480f..8ed463a8191 100644
--- a/app/views/admin/groups/edit.html.haml
+++ b/app/views/admin/groups/edit.html.haml
@@ -4,22 +4,22 @@
- if @group.errors.any?
.alert.alert-error
%span= @group.errors.full_messages.first
- .clearfix.group_name_holder
+ .control-group.group_name_holder
= f.label :name do
Group name is
- .input
- = f.text_field :name, placeholder: "Example Group", class: "xxlarge"
+ .controls
+ = f.text_field :name, placeholder: "Example Group", class: "input-xxlarge"
- .clearfix.group-description-holder
+ .control-group.group-description-holder
= f.label :description, "Details"
- .input
- = f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
+ .controls
+ = f.text_area :description, maxlength: 250, class: "input-xxlarge js-gfm-input", rows: 4
- .clearfix.group_name_holder
+ .control-group.group_name_holder
= f.label :path do
%span.cred Group path is
- .input
- = f.text_field :path, placeholder: "example-group", class: "xxlarge danger"
+ .controls
+ = f.text_field :path, placeholder: "example-group", class: "input-xxlarge danger"
%ul.cred
%li Changing group path can have unintended side effects.
%li Renaming group path will rename directory for all related projects
diff --git a/app/views/admin/groups/index.html.haml b/app/views/admin/groups/index.html.haml
index cff0251cd5a..8e45dc76ec6 100644
--- a/app/views/admin/groups/index.html.haml
+++ b/app/views/admin/groups/index.html.haml
@@ -4,7 +4,7 @@
allows you to keep projects organized.
Use groups for uniting related projects.
- = link_to 'New Group', new_admin_group_path, class: "btn btn-small pull-right"
+ = link_to 'New Group', new_admin_group_path, class: "btn btn-new pull-right"
%br
= form_tag admin_groups_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "span6"
diff --git a/app/views/admin/groups/new.html.haml b/app/views/admin/groups/new.html.haml
index 483c40b1791..0ae35eb6b43 100644
--- a/app/views/admin/groups/new.html.haml
+++ b/app/views/admin/groups/new.html.haml
@@ -4,15 +4,15 @@
- if @group.errors.any?
.alert.alert-error
%span= @group.errors.full_messages.first
- .clearfix
+ .control-group
= f.label :name do
Group name is
- .input
- = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
- .clearfix.group-description-holder
+ .controls
+ = f.text_field :name, placeholder: "Ex. OpenSource", class: "input-xxlarge left"
+ .control-group.group-description-holder
= f.label :description, "Details"
- .input
- = f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
+ .controls
+ = f.text_area :description, maxlength: 250, class: "input-xxlarge js-gfm-input", rows: 4
.form-actions
= f.submit 'Create group', class: "btn btn-create"
diff --git a/app/views/admin/hooks/index.html.haml b/app/views/admin/hooks/index.html.haml
index 316e8235cbe..8f302dce5d4 100644
--- a/app/views/admin/hooks/index.html.haml
+++ b/app/views/admin/hooks/index.html.haml
@@ -10,10 +10,10 @@
.alert.alert-error
- @hook.errors.full_messages.each do |msg|
%p= msg
- .clearfix
+ .control-group
= f.label :url, "URL:"
- .input
- = f.text_field :url, class: "text_field xxlarge"
+ .controls
+ = f.text_field :url, class: "text_field input-xxlarge input-xpadding"
&nbsp;
= f.submit "Add System Hook", class: "btn btn-create"
%hr
diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml
index d641d366ca7..bc297209ae5 100644
--- a/app/views/admin/projects/index.html.haml
+++ b/app/views/admin/projects/index.html.haml
@@ -38,7 +38,7 @@
.title
Projects (#{@projects.total_count})
.pull-right
- = link_to 'New Project', new_project_path, class: "btn btn-small btn-primary wide"
+ = link_to 'New Project', new_project_path, class: "btn btn-new"
%ul.well-list
- @projects.each do |project|
%li
diff --git a/app/views/admin/users/_form.html.haml b/app/views/admin/users/_form.html.haml
index 4f7f05c84f1..1365404edad 100644
--- a/app/views/admin/users/_form.html.haml
+++ b/app/views/admin/users/_form.html.haml
@@ -8,28 +8,28 @@
%fieldset
%legend Account
- .clearfix
+ .control-group
= f.label :name
- .input
+ .controls
= f.text_field :name, required: true, autocomplete: "off"
%span.help-inline * required
- .clearfix
+ .control-group
= f.label :username
- .input
+ .controls
= f.text_field :username, required: true, autocomplete: "off"
%span.help-inline * required
- .clearfix
+ .control-group
= f.label :email
- .input
+ .controls
= f.text_field :email, required: true, autocomplete: "off"
%span.help-inline * required
- if @user.new_record?
%fieldset
%legend Password
- .clearfix
+ .control-group
= f.label :password
- .input
+ .controls
%strong
A temporary password will be generated and sent to user.
%br
@@ -37,33 +37,33 @@
- else
%fieldset
%legend Password
- .clearfix
+ .control-group
= f.label :password
- .input= f.password_field :password, disabled: f.object.force_random_password
- .clearfix
+ .controls= f.password_field :password, disabled: f.object.force_random_password
+ .control-group
= f.label :password_confirmation
- .input= f.password_field :password_confirmation, disabled: f.object.force_random_password
+ .controls= f.password_field :password_confirmation, disabled: f.object.force_random_password
%fieldset
%legend Access
.row
.span8
- .clearfix
+ .control-group
= f.label :projects_limit
- .input= f.number_field :projects_limit
+ .controls= f.number_field :projects_limit
- .clearfix
+ .control-group
= f.label :can_create_group
- .input= f.check_box :can_create_group
+ .controls= f.check_box :can_create_group
- .clearfix
+ .control-group
= f.label :can_create_team
- .input= f.check_box :can_create_team
+ .controls= f.check_box :can_create_team
- .clearfix
+ .control-group
= f.label :admin do
%strong.cred Administrator
- .input= f.check_box :admin
+ .controls= f.check_box :admin
.span4
- unless @user.new_record?
.alert.alert-error
@@ -75,17 +75,17 @@
= link_to 'Block User', block_admin_user_path(@user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn btn-small btn-remove"
%fieldset
%legend Profile
- .clearfix
+ .control-group
= f.label :skype
- .input= f.text_field :skype
- .clearfix
+ .controls= f.text_field :skype
+ .control-group
= f.label :linkedin
- .input= f.text_field :linkedin
- .clearfix
+ .controls= f.text_field :linkedin
+ .control-group
= f.label :twitter
- .input= f.text_field :twitter
+ .controls= f.text_field :twitter
- .actions
+ .form-actions
- if @user.new_record?
= f.submit 'Create user', class: "btn btn-create"
= link_to 'Cancel', admin_users_path, class: "btn btn-cancel"
diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml
index c2dfcb5e6fa..b32f0ae87cc 100644
--- a/app/views/admin/users/index.html.haml
+++ b/app/views/admin/users/index.html.haml
@@ -30,7 +30,7 @@
.title
Users (#{@users.total_count})
.pull-right
- = link_to 'New User', new_admin_user_path, class: "btn btn-small wide btn-primary"
+ = link_to 'New User', new_admin_user_path, class: "btn btn-new"
%ul.well-list
- @users.each do |user|
%li
@@ -55,4 +55,4 @@
- else
= 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 @users, theme: "gitlab"
+ = paginate @users, theme: "gitlab"
diff --git a/app/views/dashboard/_filter.html.haml b/app/views/dashboard/_filter.html.haml
deleted file mode 100644
index d3208e6aad6..00000000000
--- a/app/views/dashboard/_filter.html.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-= form_tag dashboard_filter_path(entity), method: 'get' do
- %fieldset
- %ul.nav.nav-pills.nav-stacked
- %li{class: ("active" if !params[:status])}
- = link_to dashboard_filter_path(entity, status: nil) do
- Open
- %li{class: ("active" if params[:status] == 'closed')}
- = link_to dashboard_filter_path(entity, status: 'closed') do
- Closed
- %li{class: ("active" if params[:status] == 'all')}
- = link_to dashboard_filter_path(entity, status: 'all') do
- All
-
- %fieldset
- %legend Projects:
- %ul.nav.nav-pills.nav-stacked
- - @projects.each do |project|
- - unless entities_per_project(project, entity).zero?
- %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.pull-right= entities_per_project(project, entity)
-
- %fieldset
- %hr
- = link_to "Reset", dashboard_filter_path(entity), class: 'btn pull-right'
-
diff --git a/app/views/dashboard/issues.html.haml b/app/views/dashboard/issues.html.haml
index 63003c2859b..8b736fb5039 100644
--- a/app/views/dashboard/issues.html.haml
+++ b/app/views/dashboard/issues.html.haml
@@ -1,29 +1,13 @@
%h3.page-title
- Issues
- %span.light
- &ndash;
- Assigned to you
+ Issues assigned to me
%span.pull-right #{@issues.total_count} issues
+%p.light
+ For all issues you should visit project issues page. Or you can use search panel to find specific issue
+%hr
+
.row
.span3
- = render 'filter', entity: 'issue'
+ = render 'shared/filter', entity: 'issue'
.span9
- - if @issues.any?
- - @issues.group_by(&:project).each do |group|
- %div.ui-box
- - project = group[0]
- .title
- = link_to_project project
- &nbsp;
- %i.icon-angle-right
- &nbsp;
- = link_to 'issues', project_issues_path(project)
-
- %ul.well-list.issues-list
- - group[1].each do |issue|
- = render 'projects/issues/issue', issue: issue
- %hr
- = paginate @issues, theme: "gitlab"
- - else
- %p.nothing_here_message Nothing to show here
+ = render 'shared/issues'
diff --git a/app/views/dashboard/merge_requests.html.haml b/app/views/dashboard/merge_requests.html.haml
index de5d8018757..6ffe54028b5 100644
--- a/app/views/dashboard/merge_requests.html.haml
+++ b/app/views/dashboard/merge_requests.html.haml
@@ -1,12 +1,13 @@
%h3.page-title
Merge Requests
- %span.light
- &ndash;
- Authored by or assigned to you
%span.pull-right #{@merge_requests.total_count} merge requests
+
+%p.light
+ Only merge requests authored or assigned to you are listed here.
+%hr
.row
.span3
- = render 'filter', entity: 'merge_request'
+ = render 'shared/filter', entity: 'merge_request'
.span9
= render 'shared/merge_requests'
diff --git a/app/views/dashboard/projects.html.haml b/app/views/dashboard/projects.html.haml
index 78ba479c5af..8fd0744a63f 100644
--- a/app/views/dashboard/projects.html.haml
+++ b/app/views/dashboard/projects.html.haml
@@ -1,3 +1,7 @@
+%h3.page-title My Projects
+%p.light
+ All projects you have access to are listed here. Public projects are not included here unless you have membership in it
+%hr
.row
.span3
%ul.nav.nav-pills.nav-stacked
@@ -32,7 +36,7 @@
= label.name
.span9
- %ul.bordered-list.my-projects
+ %ul.bordered-list.my-projects.top-list
- @projects.each do |project|
%li
%h4.project-title
diff --git a/app/views/groups/_new_group_member.html.haml b/app/views/groups/_new_group_member.html.haml
index 87c9c3264e0..234392c03e1 100644
--- a/app/views/groups/_new_group_member.html.haml
+++ b/app/views/groups/_new_group_member.html.haml
@@ -1,16 +1,19 @@
= form_for @users_group, url: group_users_groups_path(@group) do |f|
%fieldset
- %legend= "New Group member(s) for #{@group.name}"
+ %legend
+ New member(s) for
+ %strong #{@group.name}
+ group
- %h6 1. Choose users you want in the group
- .clearfix
+ %p 1. Choose users you want in the group
+ .control-group
= f.label :user_ids, "People"
- .input= users_select_tag(:user_ids, multiple: true, class: 'input-large')
+ .controls= users_select_tag(:user_ids, multiple: true, class: 'input-large')
- %h6 2. Set access level for them
- .clearfix
+ %p 2. Set access level for them
+ .control-group
= f.label :group_access, "Group Access"
- .input= select_tag :group_access, options_for_select(UsersGroup.group_access_roles, @users_group.group_access), class: "project-access-select chosen"
+ .controls= select_tag :group_access, options_for_select(UsersGroup.group_access_roles, @users_group.group_access), class: "project-access-select chosen"
.form-actions
= f.submit 'Add users into group', class: "btn btn-create"
diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml
index ba3333832ea..fe66f89626f 100644
--- a/app/views/groups/edit.html.haml
+++ b/app/views/groups/edit.html.haml
@@ -20,22 +20,22 @@
.ui-box
.title
%strong= @group.name
- Group Settings:
+ group settings:
%div.form-holder
= form_for @group do |f|
- if @group.errors.any?
.alert.alert-error
%span= @group.errors.full_messages.first
- .clearfix
+ .control-group
= f.label :name do
Group name is
- .input
- = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
+ .controls
+ = f.text_field :name, placeholder: "Ex. OpenSource", class: "input-xxlarge left"
- .clearfix.group-description-holder
+ .control-group.group-description-holder
= f.label :description, "Details"
- .input
- = f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
+ .controls
+ = f.text_area :description, maxlength: 250, class: "input-xxlarge js-gfm-input", rows: 4
.form-actions
= f.submit 'Save group', class: "btn btn-save"
@@ -44,7 +44,7 @@
.ui-box
.title
%strong= @group.name
- Projects:
+ projects:
- if can? current_user, :manage_group, @group
%span.pull-right
= link_to new_project_path(namespace_id: @group.id), class: "btn btn-tiny" do
@@ -85,4 +85,4 @@
%p
%strong Removed group can not be restored!
- = link_to 'Remove Group', @group, confirm: 'Removed group can not be restored! Are you sure?', method: :delete, class: "btn btn-remove btn-small"
+ = link_to 'Remove Group', @group, confirm: 'Removed group can not be restored! Are you sure?', method: :delete, class: "btn btn-remove"
diff --git a/app/views/groups/issues.html.haml b/app/views/groups/issues.html.haml
index 5c76f1c22ed..2785f92e41b 100644
--- a/app/views/groups/issues.html.haml
+++ b/app/views/groups/issues.html.haml
@@ -6,18 +6,6 @@
%hr
.row
.span3
- = render 'filter', entity: 'issue'
+ = render 'shared/filter', entity: 'issue'
.span9
- - if @issues.any?
- - @issues.group_by(&:project).each do |group|
- %div.ui-box
- - project = group[0]
- .title
- = link_to_project project
- %ul.well-list.issues-list
- - group[1].each do |issue|
- = render 'projects/issues/issue', issue: issue
- %hr
- = paginate @issues, theme: "gitlab"
- - else
- %p.nothing_here_message Nothing to show here
+ = render 'shared/issues'
diff --git a/app/views/groups/members.html.haml b/app/views/groups/members.html.haml
index 82a16e53c6e..77bab11b331 100644
--- a/app/views/groups/members.html.haml
+++ b/app/views/groups/members.html.haml
@@ -1,21 +1,17 @@
+%h3.page-title
+ Group members
+%p.light
+ Members of group have access to all group projects.
+%hr
- can_manage_group = current_user.can? :manage_group, @group
-.row
- .span6
- - if can_manage_group
- = render "new_group_member"
- - else
- .light-well
- %h4.nothing_here_message
- Only group owners can manage group members
- .span6
- .ui-box
- .title
- %strong #{@group.name}
- Group Members
- %small
- (#{@members.count})
- %ul.well-list
- - @members.each do |member|
- = render 'users_groups/users_group', member: member, show_controls: can_manage_group
- %p.light
- Group members get access to all projects in this group
+.ui-box
+ .title
+ %strong #{@group.name}
+ group members
+ %small
+ (#{@members.count})
+ %ul.well-list
+ - @members.each do |member|
+ = render 'users_groups/users_group', member: member, show_controls: can_manage_group
+- if can_manage_group
+ = render "new_group_member"
diff --git a/app/views/groups/merge_requests.html.haml b/app/views/groups/merge_requests.html.haml
index eb8497c03f1..93a07f4ed89 100644
--- a/app/views/groups/merge_requests.html.haml
+++ b/app/views/groups/merge_requests.html.haml
@@ -6,6 +6,6 @@
%hr
.row
.span3
- = render 'filter', entity: 'merge_request'
+ = render 'shared/filter', entity: 'merge_request'
.span9
= render 'shared/merge_requests'
diff --git a/app/views/groups/new.html.haml b/app/views/groups/new.html.haml
index 4aa58dedc4a..02049bb2ee6 100644
--- a/app/views/groups/new.html.haml
+++ b/app/views/groups/new.html.haml
@@ -2,19 +2,19 @@
- if @group.errors.any?
.alert.alert-error
%span= @group.errors.full_messages.first
- .clearfix
+ .control-group
= f.label :name do
Group name is
- .input
- = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
+ .controls
+ = f.text_field :name, placeholder: "Ex. OpenSource", class: "input-xxlarge left"
- .clearfix.group-description-holder
+ .control-group.group-description-holder
= f.label :description, "Details"
- .input
- = f.text_area :description, maxlength: 250, class: "xxlarge js-gfm-input", rows: 4
+ .controls
+ = f.text_area :description, maxlength: 250, class: "input-xxlarge js-gfm-input", rows: 4
- .clearfix
- .input
+ .control-group
+ .controls
%ul
%li Group is kind of directory for several projects
%li All created groups are private
diff --git a/app/views/help/index.html.haml b/app/views/help/index.html.haml
index e5c3b577f91..ff01136f5bb 100644
--- a/app/views/help/index.html.haml
+++ b/app/views/help/index.html.haml
@@ -8,8 +8,6 @@
%br
Fast, secure and stable solution based on Ruby on Rails.
-%br
-
.row
.span4
.ui-box
diff --git a/app/views/notify/new_user_email.html.haml b/app/views/notify/new_user_email.html.haml
index fc2c02ef827..09518cd3c7f 100644
--- a/app/views/notify/new_user_email.html.haml
+++ b/app/views/notify/new_user_email.html.haml
@@ -4,7 +4,7 @@
- if Gitlab.config.gitlab.signup_enabled
Your account has been created successfully.
- else
- The Administrator created an account for you. Now you are a member of company GitLab application.
+ The Administrator created an account for you. Now you are a member of the company GitLab application.
%p
login..........................................
%code= @user['email']
diff --git a/app/views/notify/new_user_email.text.erb b/app/views/notify/new_user_email.text.erb
index 70fe0e0736a..50ed595b38a 100644
--- a/app/views/notify/new_user_email.text.erb
+++ b/app/views/notify/new_user_email.text.erb
@@ -1,6 +1,6 @@
Hi <%= @user.name %>!
-The Administrator created an account for you. Now you are a member of company GitLab application.
+The Administrator created an account for you. Now you are a member of the company GitLab application.
login.................. <%= @user.email %>
<% if @user.created_by_id %>
diff --git a/app/views/profiles/account.html.haml b/app/views/profiles/account.html.haml
index 9b1354d9f2c..122ff1b4a01 100644
--- a/app/views/profiles/account.html.haml
+++ b/app/views/profiles/account.html.haml
@@ -1,3 +1,10 @@
+%h3.page-title
+ Account settings
+%p.light
+ You can change password, username, private token here.
+ - if current_user.ldap_user?
+ Some options are unavailable for LDAP accounts
+%hr
- unless current_user.ldap_user?
- if Gitlab.config.omniauth.enabled
%fieldset
@@ -20,15 +27,15 @@
- @user.errors.full_messages.each do |msg|
%li= msg
- .clearfix
+ .control-group
= f.label :password
- .input= f.password_field :password, required: true
- .clearfix
+ .controls= f.password_field :password, required: true
+ .control-group
= f.label :password_confirmation
- .input
+ .controls
= f.password_field :password_confirmation, required: true
- .clearfix
- .input
+ .control-group
+ .controls
= f.submit 'Save password', class: "btn btn-save"
@@ -47,7 +54,7 @@
It can be used for atom feed or API
%p.cgray
- if current_user.private_token
- = text_field_tag "token", current_user.private_token, class: "xxlarge large_text"
+ = text_field_tag "token", current_user.private_token, class: "input-xxlarge large_text input-xpadding"
= 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.
@@ -63,7 +70,7 @@
= form_for @user, url: update_username_profile_path, method: :put, remote: true do |f|
.padded
= f.label :username
- .input
+ .controls
= f.text_field :username, required: true
&nbsp;
%span.loading-gif.hide= image_tag "ajax_loader.gif"
@@ -76,7 +83,7 @@
%ul.cred
%li It will change web url for personal projects.
%li It will change the git path to repositories for personal projects.
- .input
+ .controls
= f.submit 'Save username', class: "btn btn-save"
- if gitlab_config.signup_enabled
diff --git a/app/views/profiles/design.html.haml b/app/views/profiles/design.html.haml
index 9b6cace4e89..75f00ab10a2 100644
--- a/app/views/profiles/design.html.haml
+++ b/app/views/profiles/design.html.haml
@@ -1,3 +1,9 @@
+%h3.page-title
+ My appearance settings
+%p.light
+ Appearance settings saved to your profile and available across all devices
+%hr
+
= form_for @user, url: profile_path, remote: true, method: :put do |f|
%fieldset.application-theme
%legend
diff --git a/app/views/profiles/groups/index.html.haml b/app/views/profiles/groups/index.html.haml
index 01f73a24f94..c7c657a92a6 100644
--- a/app/views/profiles/groups/index.html.haml
+++ b/app/views/profiles/groups/index.html.haml
@@ -1,14 +1,20 @@
+%h3.page-title
+ Group membership
+ - if current_user.can_create_group?
+ %span.pull-right
+ = link_to new_group_path, class: "btn btn-new" do
+ %i.icon-plus
+ New Group
+%p.light
+ Members of group have access to all group projects.
+%hr
.ui-box
.title
%strong Groups
- (#{@groups.count})
- - if current_user.can_create_group?
- %span.pull-right
- = link_to new_group_path, class: "btn btn-small btn-primary" do
- %i.icon-plus
- New Group
+ (#{@user_groups.count})
%ul.well-list
- - @groups.each do |group|
+ - @user_groups.each do |user_group|
+ - group = user_group.group
%li
.pull-right
- if can?(current_user, :manage_group, group)
@@ -23,4 +29,7 @@
= link_to group, class: 'group-name' do
= group.name
-= paginate @groups
+ as #{user_group.human_access}
+
+
+= paginate @user_groups
diff --git a/app/views/profiles/history.html.haml b/app/views/profiles/history.html.haml
index aa7006c569b..5e59463ce37 100644
--- a/app/views/profiles/history.html.haml
+++ b/app/views/profiles/history.html.haml
@@ -1,3 +1,8 @@
+%h3.page-title
+ Account history
+%p.light
+ You can see all events authored by your account here
+%hr
.profile_history
= render @events
%hr
diff --git a/app/views/profiles/keys/_form.html.haml b/app/views/profiles/keys/_form.html.haml
index 7ba8e20a44f..3a0b6cd48a1 100644
--- a/app/views/profiles/keys/_form.html.haml
+++ b/app/views/profiles/keys/_form.html.haml
@@ -6,18 +6,18 @@
- @key.errors.full_messages.each do |msg|
%li= msg
- .clearfix
+ .control-group
= f.label :title
- .input= f.text_field :title
- .clearfix
+ .controls= f.text_field :title, class: "input-xlarge"
+ .control-group
= f.label :key
- .input
+ .controls
%p.light
Paste your public key here. Read more about how generate it #{link_to "here", help_ssh_path}
- = f.text_area :key, class: [:xxlarge, :thin_area]
+ = f.text_area :key, class: "input-xxlarge thin_area"
- .actions
+ .form-actions
= f.submit 'Add key', class: "btn btn-create"
= link_to "Cancel", profile_keys_path, class: "btn btn-cancel"
diff --git a/app/views/profiles/keys/index.html.haml b/app/views/profiles/keys/index.html.haml
index 03413764be4..0704874763e 100644
--- a/app/views/profiles/keys/index.html.haml
+++ b/app/views/profiles/keys/index.html.haml
@@ -1,16 +1,18 @@
+%h3.page-title
+ My SSH keys
+ .pull-right
+ = link_to "Add SSH Key", new_profile_key_path, class: "btn btn-new"
%p.light
SSH key allows you to establish a secure connection between your computer and GitLab
-%p.light
+ %br
Before you can add ssh key you need to
= link_to "generate it", help_ssh_path
-
+%hr
.ui-box
.title
SSH Keys (#{@keys.count})
- .pull-right
- = link_to "Add SSH Key", new_profile_key_path, class: "btn btn-small btn-primary"
%ul.well-list#keys-table
= render @keys
- if @keys.blank?
diff --git a/app/views/profiles/notifications/_settings.html.haml b/app/views/profiles/notifications/_settings.html.haml
index 1a4a4a9f916..5f62c8099d0 100644
--- a/app/views/profiles/notifications/_settings.html.haml
+++ b/app/views/profiles/notifications/_settings.html.haml
@@ -2,6 +2,8 @@
.row
.span4
%span
+ = notification_icon(notification)
+
- if membership.kind_of? UsersGroup
= link_to membership.group.name, membership.group
- else
diff --git a/app/views/profiles/notifications/show.html.haml b/app/views/profiles/notifications/show.html.haml
index 43b1cf6f8df..d7963a88d5d 100644
--- a/app/views/profiles/notifications/show.html.haml
+++ b/app/views/profiles/notifications/show.html.haml
@@ -1,19 +1,27 @@
-%h3.page-title Setup your notification level
-
-%p.light
- %strong Disabled
- &ndash; You will not get any notifications via email
+%h3.page-title
+ Notifications settings
%p.light
- %strong Participating
- &ndash; You will receive only notifications from related resources(ex. from assigned issue or your commit)
-%p.light
- %strong Watch
- &ndash; You will receive all notifications from projects in which you participate
+ Application use email specified in your profile for notifications
%hr
+.alert.alert-info
+ %p
+ %i.icon-circle.cred
+ %strong Disabled
+ &ndash; You will not get any notifications via email
+ %p
+ %i.icon-circle.cblue
+ %strong Participating
+ &ndash; You will receive only notifications from related resources(ex. from assigned issue or your commit)
+ %p
+ %i.icon-circle.cgreen
+ %strong Watch
+ &ndash; You will receive all notifications from projects in which you participate
.row
.span4
- %h5 Global setting
+ %h4
+ = notification_icon(@notification)
+ Global setting
.span7
= form_tag profile_notifications_path, method: :put, remote: true, class: 'update-notifications' do
= hidden_field_tag :notification_type, 'global'
@@ -30,20 +38,21 @@
= radio_button_tag :notification_level, Notification::N_WATCH, @notification.watch?, class: 'trigger-submit'
%span Watch
-%hr
+%br
= link_to '#', class: 'js-toggle-visibility-link' do
- %h6.btn.btn-tiny
+ %span.btn.btn-tiny
%i.icon-chevron-down
%span Advanced notifications settings
.js-toggle-visibility-container.hide
- %h5 Groups:
- %ul.well-list
+ %hr
+ %h4 Groups:
+ %ul.bordered-list
- @users_groups.each do |users_group|
- notification = Notification.new(users_group)
= render 'settings', type: 'group', membership: users_group, notification: notification
- %h5 Projects:
- %ul.well-list
+ %h4 Projects:
+ %ul.bordered-list
- @users_projects.each do |users_project|
- notification = Notification.new(users_project)
= render 'settings', type: 'project', membership: users_project, notification: notification
diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml
index c92424160b3..a4e7dadd16a 100644
--- a/app/views/profiles/passwords/new.html.haml
+++ b/app/views/profiles/passwords/new.html.haml
@@ -10,13 +10,13 @@
- @user.errors.full_messages.each do |msg|
%li= msg
- .clearfix
+ .control-group
= f.label :password
- .input= f.password_field :password, required: true
- .clearfix
+ .controls= f.password_field :password, required: true
+ .control-group
= f.label :password_confirmation
- .input
+ .controls
= f.password_field :password_confirmation, required: true
- .clearfix
- .input
+ .control-group
+ .controls
= f.submit 'Set new password', class: "btn btn-create"
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index dd1186fd37c..25bf7912f1e 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -87,4 +87,4 @@
= link_to "Add Public Key", new_profile_key_path, class: "btn btn-small"
.form-actions
- = f.submit 'Save', class: "btn btn-save"
+ = f.submit 'Save changes', class: "btn btn-save"
diff --git a/app/views/projects/blame/_head.html.haml b/app/views/projects/blame/_head.html.haml
deleted file mode 100644
index 3a883829562..00000000000
--- a/app/views/projects/blame/_head.html.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-%div.tree-ref-holder
- = render 'shared/ref_switcher', destination: 'tree', path: params[:path]
diff --git a/app/views/projects/blame/show.html.haml b/app/views/projects/blame/show.html.haml
index e9a69390577..cdca8b2e634 100644
--- a/app/views/projects/blame/show.html.haml
+++ b/app/views/projects/blame/show.html.haml
@@ -1,21 +1,11 @@
-= render "head"
+%h3.page-title Blame view
#tree-holder.tree-holder
- %ul.breadcrumb
- %li
- %i.icon-angle-right
- = link_to project_tree_path(@project, @ref) do
- = @project.name
- - tree_breadcrumbs(@tree, 6) do |link|
- \/
- %li= link
- .clear
-
.file-holder
.file-title
%i.icon-file
%span.file_name
- = @blob.name
+ = @path
%small= number_to_human_size @blob.size
%span.options= render "projects/blob/actions"
.file-content.blame
diff --git a/app/views/projects/blob/_actions.html.haml b/app/views/projects/blob/_actions.html.haml
index 456c7432c94..5641c528a4f 100644
--- a/app/views/projects/blob/_actions.html.haml
+++ b/app/views/projects/blob/_actions.html.haml
@@ -1,12 +1,12 @@
.btn-group.tree-btn-group
-# only show edit link for text files
- if @blob.text?
- = link_to "edit", project_edit_tree_path(@project, @id), class: "btn btn-tiny", disabled: !allowed_tree_edit?
- = link_to "raw", project_raw_path(@project, @id), class: "btn btn-tiny", target: "_blank"
+ = link_to "edit", project_edit_tree_path(@project, @id), class: "btn btn-small", disabled: !allowed_tree_edit?
+ = link_to "raw", project_raw_path(@project, @id), class: "btn btn-small", target: "_blank"
-# only show normal/blame view links for text files
- if @blob.text?
- if current_page? project_blame_path(@project, @id)
- = link_to "normal view", project_blob_path(@project, @id), class: "btn btn-tiny"
+ = link_to "normal view", project_blob_path(@project, @id), class: "btn btn-small"
- else
- = link_to "blame", project_blame_path(@project, @id), class: "btn btn-tiny" unless @blob.empty?
- = link_to "history", project_commits_path(@project, @id), class: "btn btn-tiny"
+ = link_to "blame", project_blame_path(@project, @id), class: "btn btn-small" unless @blob.empty?
+ = link_to "history", project_commits_path(@project, @id), class: "btn btn-small"
diff --git a/app/views/projects/repositories/_filter.html.haml b/app/views/projects/branches/_filter.html.haml
index 660d9d25a35..7ea11a74a2b 100644
--- a/app/views/projects/repositories/_filter.html.haml
+++ b/app/views/projects/branches/_filter.html.haml
@@ -1,6 +1,6 @@
%ul.nav.nav-pills.nav-stacked
- = nav_link(path: 'repositories#show') do
- = link_to 'Recent', project_repository_path(@project)
+ = nav_link(path: 'branches#recent') do
+ = link_to 'Recent', recent_project_branches_path(@project)
= nav_link(path: 'protected_branches#index') do
= link_to project_protected_branches_path(@project) do
Protected
diff --git a/app/views/projects/branches/index.html.haml b/app/views/projects/branches/index.html.haml
index 4cfafe1a7af..7a0eda6408a 100644
--- a/app/views/projects/branches/index.html.haml
+++ b/app/views/projects/branches/index.html.haml
@@ -1,7 +1,7 @@
= render "projects/commits/head"
.row
.span3
- = render "projects/repositories/filter"
+ = render "filter"
.span9
- unless @branches.empty?
%ul.bordered-list
diff --git a/app/views/projects/branches/recent.html.haml b/app/views/projects/branches/recent.html.haml
new file mode 100644
index 00000000000..6cafb47364b
--- /dev/null
+++ b/app/views/projects/branches/recent.html.haml
@@ -0,0 +1,8 @@
+= render "projects/commits/head"
+.row
+ .span3
+ = render "filter"
+ .span9
+ %ul.bordered-list
+ - @branches.each do |branch|
+ = render "projects/branches/branch", branch: branch
diff --git a/app/views/projects/commits/_head.html.haml b/app/views/projects/commits/_head.html.haml
index 06d69eb5f75..c16abac7f17 100644
--- a/app/views/projects/commits/_head.html.haml
+++ b/app/views/projects/commits/_head.html.haml
@@ -7,7 +7,7 @@
= link_to 'Compare', project_compare_index_path(@project)
= nav_link(html_options: {class: branches_tab_class}) do
- = link_to project_repository_path(@project) do
+ = link_to recent_project_branches_path(@project) do
Branches
%span.badge= @repository.branches.length
diff --git a/app/views/projects/commits/_text_file.html.haml b/app/views/projects/commits/_text_file.html.haml
index bfc3180a84c..c724213878a 100644
--- a/app/views/projects/commits/_text_file.html.haml
+++ b/app/views/projects/commits/_text_file.html.haml
@@ -3,7 +3,7 @@
%a.supp_diff_link Diff suppressed. Click to show
%table.text-file{class: "#{'hide' if too_big}"}
- - each_diff_line(diff, index) do |line, type, line_code, line_new, line_old|
+ - each_diff_line(diff, index) do |line, type, line_code, line_new, line_old, raw_line|
%tr.line_holder{ id: line_code, class: "#{type}" }
- if type == "match"
%td.old_line= "..."
@@ -20,4 +20,4 @@
- if @reply_allowed
- comments = @line_notes.select { |n| n.line_code == line_code }.sort_by(&:created_at)
- unless comments.empty?
- = render "projects/notes/diff_notes_with_reply", notes: comments
+ = render "projects/notes/diff_notes_with_reply", notes: comments, line: line
diff --git a/app/views/projects/commits/show.html.haml b/app/views/projects/commits/show.html.haml
index d56923fdca4..723c5a1c340 100644
--- a/app/views/projects/commits/show.html.haml
+++ b/app/views/projects/commits/show.html.haml
@@ -1,7 +1,7 @@
= render "head"
- if @path.present?
- %ul.breadcrumb
+ %ul.breadcrumb.commit-breadcrumb
%li.light
History for
= commits_breadcrumbs
diff --git a/app/views/projects/compare/_form.html.haml b/app/views/projects/compare/_form.html.haml
index 0d388651e14..ee733f80954 100644
--- a/app/views/projects/compare/_form.html.haml
+++ b/app/views/projects/compare/_form.html.haml
@@ -14,9 +14,9 @@
.pull-left
- if params[:to] && params[:from]
= link_to 'switch', {from: params[:to], to: params[:from]}, {class: 'commits-compare-switch has_tooltip', title: 'Switch base of comparison'}
- = text_field_tag :from, params[:from], placeholder: "master", class: "xlarge"
+ = text_field_tag :from, params[:from], placeholder: "master", class: "input-xlarge input-xpadding"
= "..."
- = text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
+ = text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "input-xlarge input-xpadding"
.pull-left
&nbsp;
= submit_tag "Compare", class: "btn btn-create commits-compare-btn"
diff --git a/app/views/projects/create.js.haml b/app/views/projects/create.js.haml
index 52e61f47283..a444b8b59a6 100644
--- a/app/views/projects/create.js.haml
+++ b/app/views/projects/create.js.haml
@@ -4,5 +4,6 @@
- else
:plain
$(".project-edit-errors").html("#{escape_javascript(render('errors'))}");
+ $('.project-submit').enable();
$('.save-project-loader').hide();
$('.project-edit-container').show();
diff --git a/app/views/projects/deploy_keys/_form.html.haml b/app/views/projects/deploy_keys/_form.html.haml
index 71bf309dd8b..00b41e657b6 100644
--- a/app/views/projects/deploy_keys/_form.html.haml
+++ b/app/views/projects/deploy_keys/_form.html.haml
@@ -6,18 +6,18 @@
- @key.errors.full_messages.each do |msg|
%li= msg
- .clearfix
+ .control-group
= f.label :title
- .input= f.text_field :title
- .clearfix
+ .controls= f.text_field :title, class: 'input-xlarge'
+ .control-group
= f.label :key
- .input
- = f.text_area :key, class: [:xxlarge, :thin_area]
- %p.hint
+ .controls
+ %p.light
Paste a machine public key here. Read more about how generate it
= link_to "here", help_ssh_path
+ = f.text_area :key, class: "input-xxlarge thin_area"
- .actions
+ .form-actions
= f.submit 'Create', class: "btn-create btn"
= link_to "Cancel", project_deploy_keys_path(@project), class: "btn btn-cancel"
diff --git a/app/views/projects/deploy_keys/index.html.haml b/app/views/projects/deploy_keys/index.html.haml
index a1fa3475a84..3e797691241 100644
--- a/app/views/projects/deploy_keys/index.html.haml
+++ b/app/views/projects/deploy_keys/index.html.haml
@@ -1,19 +1,21 @@
-%p.slead
- Deploy keys allow read-only access to repository. They can be used for CI, staging or production servers
+%h3.page-title
+ Deploy keys allow read-only access to repository
-%p
- You can create a deploy key or add existing one
- = link_to new_project_deploy_key_path(@project), class: "btn btn-primary pull-right", title: "New Deploy Key" do
+ = link_to new_project_deploy_key_path(@project), class: "btn btn-new pull-right", title: "New Deploy Key" do
%i.icon-plus
New Deploy Key
+%p.light
+ They can be used for CI, staging or production servers.
+ You can create a deploy key or add existing one
+
%hr.clearfix
.row
.span5.enabled-keys
- %h5.cgreen
- Enabled deploy keys
- %small for this project
+ %h5
+ %strong.cgreen Enabled deploy keys
+ for this project
%ul.bordered-list
= render @enabled_keys
- if @enabled_keys.blank?
@@ -21,10 +23,10 @@
%p.nothing_here_message Create #{link_to 'new deploy key', new_project_deploy_key_path(@project)} or add existing one
.span5.available-keys
%h5
- Available deploy keys
- %small from projects you are able to manage
+ %strong Deploy keys
+ from projects available for you
%ul.bordered-list
= render @available_keys
- if @available_keys.blank?
.light-well
- %p.nothing_here_message All deploy keys created in projects you own will be displayed here
+ %p.nothing_here_message All deploy keys created in projects you participate will be displayed here
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index f9fc65a71b4..11df63d5ac7 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -4,28 +4,28 @@
.ui-box.white
.title
%strong= @project.name
- Project Settings:
+ project settings:
.form-holder
= form_for(@project, remote: true) do |f|
%fieldset
- .clearfix.project_name_holder
+ .control-group.project_name_holder
= f.label :name do
Project name is
- .input
+ .controls
= f.text_field :name, placeholder: "Example Project", class: "span5"
- .clearfix
+ .control-group
= f.label :description do
Project description
%span.light (optional)
- .input
+ .controls
= f.text_area :description, placeholder: "awesome project", class: "span5", rows: 3, maxlength: 250
- - unless @project.empty_repo?
- .clearfix
+ - if @project.repository.exists? && @project.repository.branch_names.any?
+ .control-group
= f.label :default_branch, "Default Branch"
- .input= f.select(:default_branch, @repository.branch_names, {}, {class: 'chosen'})
+ .controls= f.select(:default_branch, @repository.branch_names, {}, {class: 'chosen'})
- if can?(current_user, :change_public_mode, @project)
@@ -66,11 +66,11 @@
- if Project.issues_tracker.values.count > 1
.control-group
= f.label :issues_tracker, "Issues tracker", class: 'control-label'
- .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled })
+ .controls= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled })
- .clearfix
+ .control-group
= f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label'
- .input= f.text_field :issues_tracker_id, disabled: !@project.can_have_issues_tracker_id?
+ .controls= f.text_field :issues_tracker_id, disabled: !@project.can_have_issues_tracker_id?
.control-group
= f.label :merge_requests_enabled, "Merge Requests", class: 'control-label'
@@ -98,7 +98,7 @@
.form-actions
- = f.submit 'Save', class: "btn btn-save"
+ = f.submit 'Save changes', class: "btn btn-save"
- if can?(current_user, :change_namespace, @project)
.ui-box.ui-box-danger
@@ -110,7 +110,7 @@
= f.label :namespace_id do
%span Namespace
.controls
- .clearfix
+ .control-group
= f.select :namespace_id, namespaces_options(@project.namespace_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
%ul
%li Be careful. Changing project namespace can have unintended side effects
@@ -130,7 +130,7 @@
= f.label :path do
%span Path
.controls
- .clearfix
+ .control-group
= f.text_field :path
%ul
%li Be careful. Rename of project repo can have unintended side effects
diff --git a/app/views/projects/edit_tree/show.html.haml b/app/views/projects/edit_tree/show.html.haml
index 65b6e994884..06396ba992b 100644
--- a/app/views/projects/edit_tree/show.html.haml
+++ b/app/views/projects/edit_tree/show.html.haml
@@ -1,3 +1,4 @@
+%h3.page-title Edit mode
.file-editor
= form_tag(project_edit_tree_path(@project, @id), method: :put, class: "form-horizontal") do
.file-holder
diff --git a/app/views/projects/hooks/index.html.haml b/app/views/projects/hooks/index.html.haml
index c4b51d09335..53e54103617 100644
--- a/app/views/projects/hooks/index.html.haml
+++ b/app/views/projects/hooks/index.html.haml
@@ -11,10 +11,10 @@
.alert.alert-error
- @hook.errors.full_messages.each do |msg|
%p= msg
- .clearfix
+ .control-group
= f.label :url, "URL:"
- .input
- = f.text_field :url, class: "text_field xxlarge"
+ .controls
+ = f.text_field :url, class: "text_field input-xxlarge input-xpadding", placeholder: 'http://example.com/trigger-ci.json'
&nbsp;
= f.submit "Add Web Hook", class: "btn btn-create"
%hr
diff --git a/app/views/projects/issues/_filter.html.haml b/app/views/projects/issues/_filter.html.haml
index 8495c323cb8..663d786634d 100644
--- a/app/views/projects/issues/_filter.html.haml
+++ b/app/views/projects/issues/_filter.html.haml
@@ -18,6 +18,9 @@
All
%fieldset
- %hr
- = link_to "Reset", project_issues_path(@project), class: 'btn pull-right'
+ - if %w(status milestone_id assignee_id label_name).select { |k| params[k].present? }.any?
+ = link_to project_issues_path(@project), class: 'cgray pull-right' do
+ %i.icon-remove
+ Clear filter
+
diff --git a/app/views/projects/issues/_form.html.haml b/app/views/projects/issues/_form.html.haml
index b711d861125..2672fbb2cde 100644
--- a/app/views/projects/issues/_form.html.haml
+++ b/app/views/projects/issues/_form.html.haml
@@ -8,18 +8,18 @@
%br
.ui-box.ui-box-show
.ui-box-head
- .clearfix
+ .control-group
= f.label :title do
%strong= "Subject *"
- .input
- = f.text_field :title, maxlength: 255, class: "xxlarge js-gfm-input", autofocus: true, required: true
+ .controls
+ = f.text_field :title, maxlength: 255, class: "input-xxlarge js-gfm-input", autofocus: true, required: true
.ui-box-body
- .clearfix
+ .control-group
.issue_assignee.pull-left
= f.label :assignee_id do
%i.icon-user
Assign to
- .input
+ .controls
.pull-left
= f.select(:assignee_id, @project.team.members.sort_by(&:name).map {|p| [ p.name, p.id ] }, { include_blank: "Select a user" }, {class: 'chosen'})
.pull-right
@@ -29,25 +29,25 @@
= f.label :milestone_id do
%i.icon-time
Milestone
- .input= f.select(:milestone_id, @project.milestones.active.all.collect {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }, {class: 'chosen'})
+ .controls= f.select(:milestone_id, @project.milestones.active.all.collect {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }, {class: 'chosen'})
.ui-box-bottom
- .clearfix
+ .control-group
= f.label :label_list do
%i.icon-tag
Labels
- .input
- = f.text_field :label_list, maxlength: 2000, class: "xxlarge"
+ .controls
+ = f.text_field :label_list, maxlength: 2000, class: "input-xxlarge"
%p.hint Separate labels with commas.
- .clearfix
+ .control-group
= f.label :description, "Details"
- .input
- = f.text_area :description, class: "xxlarge js-gfm-input", rows: 14
+ .controls
+ = f.text_area :description, class: "input-xxlarge js-gfm-input", rows: 14
%p.hint Issues are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
- .actions
+ .form-actions
- if @issue.new_record?
= f.submit 'Submit new issue', class: "btn btn-create"
-else
diff --git a/app/views/projects/issues/index.html.haml b/app/views/projects/issues/index.html.haml
index ebe124d8906..50df3ee3b7a 100644
--- a/app/views/projects/issues/index.html.haml
+++ b/app/views/projects/issues/index.html.haml
@@ -6,7 +6,7 @@
.pull-right
.span6
- 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: "btn btn-primary pull-right", 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-new pull-right", title: "New Issue", id: "new_issue_link" do
%i.icon-plus
New Issue
= form_tag project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: 'pull-right' do
@@ -14,7 +14,7 @@
= hidden_field_tag :assignee_id, params[:assignee_id], id: 'search_assignee_id'
= hidden_field_tag :milestone_id, params[:milestone_id], id: 'search_milestone_id'
= hidden_field_tag :label_name, params[:label_name], id: 'search_label_name'
- = search_field_tag :issue_search, nil, { placeholder: 'Search', class: 'issue_search input-xlarge append-right-10 search-text-input' }
+ = search_field_tag :issue_search, nil, { placeholder: 'Filter by title or description', class: 'input-xpadding issue_search input-xlarge append-right-10 search-text-input' }
.row
.span3
diff --git a/app/views/projects/merge_requests/_filter.html.haml b/app/views/projects/merge_requests/_filter.html.haml
index 4b48306ed05..9f09a7e7bb1 100644
--- a/app/views/projects/merge_requests/_filter.html.haml
+++ b/app/views/projects/merge_requests/_filter.html.haml
@@ -1,20 +1,21 @@
= form_tag project_issues_path(@project), method: 'get' do
%fieldset
%ul.nav.nav-pills.nav-stacked
- %li{class: ("active" if (params[:f] == 'open' || !params[:f]))}
- = link_to project_merge_requests_path(@project, f: 'open', milestone_id: params[:milestone_id]) do
+ %li{class: ("active" if (params[:status] == 'open' || !params[:status]))}
+ = link_to project_merge_requests_path(@project, status: 'open', milestone_id: params[:milestone_id]) do
Open
- %li{class: ("active" if params[:f] == "closed")}
- = link_to project_merge_requests_path(@project, f: "closed", milestone_id: params[:milestone_id]) do
+ %li{class: ("active" if params[:status] == "closed")}
+ = link_to project_merge_requests_path(@project, status: "closed", milestone_id: params[:milestone_id]) do
Closed
- %li{class: ("active" if params[:f] == 'assigned-to-me')}
- = link_to project_merge_requests_path(@project, f: 'assigned-to-me', milestone_id: params[:milestone_id]) do
+ %li{class: ("active" if params[:status] == 'assigned-to-me')}
+ = link_to project_merge_requests_path(@project, status: 'assigned-to-me', milestone_id: params[:milestone_id]) do
Assigned To Me
- %li{class: ("active" if params[:f] == 'all')}
- = link_to project_merge_requests_path(@project, f: 'all', milestone_id: params[:milestone_id]) do
+ %li{class: ("active" if params[:status] == 'all')}
+ = link_to project_merge_requests_path(@project, status: 'all', milestone_id: params[:milestone_id]) do
All
%fieldset
- %hr
- = link_to "Reset", project_merge_requests_path(@project), class: 'btn pull-right'
-
+ - if %w(status milestone_id assignee_id label_name).select { |k| params[k].present? }.any?
+ = link_to project_merge_requests_path(@project), class: 'cgray pull-right' do
+ %i.icon-remove
+ Clear filter
diff --git a/app/views/projects/merge_requests/_form.html.haml b/app/views/projects/merge_requests/_form.html.haml
index 54697706198..c8a69800500 100644
--- a/app/views/projects/merge_requests/_form.html.haml
+++ b/app/views/projects/merge_requests/_form.html.haml
@@ -33,21 +33,21 @@
%i.icon-paper-clip
Details
.merge-request-form-info
- .clearfix
+ .control-group
= f.label :title do
%strong= "Title *"
- .input= f.text_field :title, class: "input-xxlarge pad js-gfm-input", maxlength: 255, rows: 5, required: true
- .clearfix
+ .controls= f.text_field :title, class: "input-xxlarge pad js-gfm-input", maxlength: 255, rows: 5, required: true
+ .control-group
.left
= f.label :assignee_id do
%i.icon-user
Assign to
- .input= f.select(:assignee_id, @project.team.members.sort_by(&:name).map {|p| [ p.name, p.id ] }, { include_blank: "Select user" }, {class: 'chosen span3'})
+ .controls= f.select(:assignee_id, @project.team.members.sort_by(&:name).map {|p| [ p.name, p.id ] }, { include_blank: "Select user" }, {class: 'chosen span3'})
.left
= f.label :milestone_id do
%i.icon-time
Milestone
- .input= f.select(:milestone_id, @project.milestones.active.all.map {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }, {class: 'chosen'})
+ .controls= f.select(:milestone_id, @project.milestones.active.all.map {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }, {class: 'chosen'})
.form-actions
- if @merge_request.new_record?
diff --git a/app/views/projects/merge_requests/edit.html.haml b/app/views/projects/merge_requests/edit.html.haml
index 348ebee46e4..67a1541d9bf 100644
--- a/app/views/projects/merge_requests/edit.html.haml
+++ b/app/views/projects/merge_requests/edit.html.haml
@@ -1,4 +1,4 @@
%h3.page-title
- = "Edit merge request #{@merge_request.id}"
+ = "Edit merge request ##{@merge_request.id}"
%hr
= render 'form'
diff --git a/app/views/projects/merge_requests/index.html.haml b/app/views/projects/merge_requests/index.html.haml
index f54a213a3f3..9b9da8d1b8f 100644
--- a/app/views/projects/merge_requests/index.html.haml
+++ b/app/views/projects/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: "pull-right btn btn-primary", title: "New Merge Request" do
+ = link_to new_project_merge_request_path(@project), class: "pull-right btn btn-new", title: "New Merge Request" do
%i.icon-plus
New Merge Request
%h3.page-title
diff --git a/app/views/projects/merge_requests/show/_how_to_merge.html.haml b/app/views/projects/merge_requests/show/_how_to_merge.html.haml
index a0eb2309585..030ac285f2a 100644
--- a/app/views/projects/merge_requests/show/_how_to_merge.html.haml
+++ b/app/views/projects/merge_requests/show/_how_to_merge.html.haml
@@ -1,7 +1,7 @@
%div#modal_merge_info.modal.hide
.modal-header
- %a.close{href: "#"} ×
- %h3 How To Merge
+ %a.close{href: "#", "data-dismiss" => "modal"} ×
+ %h3 How to merge
.modal-body
- if @merge_request.for_fork?
- source_remote = @merge_request.source_project.namespace.nil? ? "source" :@merge_request.source_project.namespace.path
diff --git a/app/views/projects/merge_requests/show/_mr_accept.html.haml b/app/views/projects/merge_requests/show/_mr_accept.html.haml
index 47db8cdc8d2..621a3cfa25e 100644
--- a/app/views/projects/merge_requests/show/_mr_accept.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_accept.html.haml
@@ -11,7 +11,8 @@
%p
You can accept this request automatically.
If you still want to do it manually -
- %strong= link_to "click here", "#", class: "how_to_merge_link vlink", title: "How To Merge"
+ %strong
+ = link_to "click here", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
for instructions
.accept_group
= f.submit "Accept Merge Request", class: "btn btn-create accept_merge_request"
@@ -31,7 +32,7 @@
.automerge_widget.cannot_be_merged{style: "display:none"}
.alert.alert-disabled
%span
- = link_to "Show how to merge", "#", class: "how_to_merge_link btn btn-small padded", title: "How To Merge"
+ = link_to "Show how to merge", "#modal_merge_info", class: "how_to_merge_link btn btn-small padded", title: "How To Merge", "data-toggle" => "modal"
&nbsp;
%strong This request can't be merged with GitLab. You should do it manually
diff --git a/app/views/projects/milestones/_form.html.haml b/app/views/projects/milestones/_form.html.haml
index 0dc9dab872f..78e4cd2243e 100644
--- a/app/views/projects/milestones/_form.html.haml
+++ b/app/views/projects/milestones/_form.html.haml
@@ -26,13 +26,13 @@
.span6
.control-group
= f.label :due_date, "Due Date", class: "control-label"
- .input= f.hidden_field :due_date
+ .controls= f.hidden_field :due_date
.controls
.datepicker
.form-actions
- if @milestone.new_record?
- = f.submit 'Create milestone', class: "btn-save btn"
+ = f.submit 'Create milestone', class: "btn-create btn"
= link_to "Cancel", project_milestones_path(@project), class: "btn btn-cancel"
-else
= f.submit 'Save changes', class: "btn-save btn"
diff --git a/app/views/projects/milestones/_milestone.html.haml b/app/views/projects/milestones/_milestone.html.haml
index 894fa6c1133..bc3368b765c 100644
--- a/app/views/projects/milestones/_milestone.html.haml
+++ b/app/views/projects/milestones/_milestone.html.haml
@@ -4,8 +4,7 @@
= link_to edit_project_milestone_path(milestone.project, milestone), class: "btn btn-small edit-milestone-link grouped" do
%i.icon-edit
Edit
- - if milestone.can_be_closed?
- = link_to 'Close', project_milestone_path(@project, milestone, milestone: {state_event: :close }), method: :put, remote: true, class: "btn btn-small btn-remove"
+ = link_to 'Close Milestone', project_milestone_path(@project, milestone, milestone: {state_event: :close }), method: :put, remote: true, class: "btn btn-small btn-remove"
%h4
= link_to_gfm truncate(milestone.title, length: 100), project_milestone_path(milestone.project, milestone)
- if milestone.expired? and not milestone.closed?
diff --git a/app/views/projects/milestones/index.html.haml b/app/views/projects/milestones/index.html.haml
index 727fa6149d1..0c0828c9064 100644
--- a/app/views/projects/milestones/index.html.haml
+++ b/app/views/projects/milestones/index.html.haml
@@ -3,7 +3,7 @@
%h3.page-title
Milestones
- if can? current_user, :admin_milestone, @project
- = link_to new_project_milestone_path(@project), class: "pull-right btn btn-primary", title: "New Milestone" do
+ = link_to new_project_milestone_path(@project), class: "pull-right btn btn-new", title: "New Milestone" do
%i.icon-plus
New Milestone
diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml
index 7be3ba2f758..8a5c2a938b1 100644
--- a/app/views/projects/milestones/show.html.haml
+++ b/app/views/projects/milestones/show.html.haml
@@ -1,32 +1,23 @@
= render "projects/issues/head"
-.row
- .span6
- %h3.page-title
- Milestone ##{@milestone.id}
- %small
- = @milestone.expires_at
- .back-link
- = link_to project_milestones_path(@project) do
- &larr; To milestones list
- .span6
- .pull-right
- - unless @milestone.closed?
- = 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 btn-small grouped" do
- %i.icon-edit
- Edit
+%h3.page-title
+ Milestone ##{@milestone.id}
+ %small
+ = @milestone.expires_at
+ .pull-right
+ - if can?(current_user, :admin_milestone, @project)
+ = link_to edit_project_milestone_path(@project, @milestone), class: "btn grouped" do
+ %i.icon-edit
+ Edit
+ = link_to 'Close Milestone', project_milestone_path(@project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-remove"
+- if @milestone.issues.any? && @milestone.can_be_closed?
+ .alert.alert-success
+ %span All issues for this milestone are closed. You may close milestone now.
+.back-link
+ = link_to project_milestones_path(@project) do
+ &larr; To milestones list
-- if @milestone.can_be_closed?
- %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: {state_event: :close }), method: :put, class: "btn btn-small btn-remove"
.ui-box.ui-box-show
.ui-box-head
@@ -69,6 +60,11 @@
Participants
%span.badge= @users.count
+ .pull-right
+ = 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 btn-small edit-milestone-link grouped"
.tab-content
.tab-pane.active#tab-issues
diff --git a/app/views/projects/network/_head.html.haml b/app/views/projects/network/_head.html.haml
index 59ce787e187..ed9fcaace25 100644
--- a/app/views/projects/network/_head.html.haml
+++ b/app/views/projects/network/_head.html.haml
@@ -15,7 +15,7 @@
.control-group
= label_tag :search , "Looking for commit:", class: 'control-label light'
.controls
- = text_field_tag :q, @options[:q], placeholder: "Input SHA", class: "search-input xlarge"
+ = text_field_tag :q, @options[:q], placeholder: "Input SHA", class: "search-input input-xlarge"
= button_tag type: 'submit', class: 'btn vtop' do
%i.icon-search
- @options.each do |key, value|
diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml
index e45b2b5757e..d309f0686e0 100644
--- a/app/views/projects/new.html.haml
+++ b/app/views/projects/new.html.haml
@@ -1,51 +1,52 @@
-.project-edit-container
+%p.slead
+ New projects are private by default. You choose who can see the project and commit to repository.
+%hr
+.project-edit-container.prepend-top-10
.project-edit-errors
= render 'projects/errors'
.project-edit-content
= form_for @project, remote: true do |f|
- .clearfix.project_name_holder
+ .control-group.project_name_holder
= f.label :name do
- Project name is
- .input
- = f.text_field :name, placeholder: "Example Project", class: "xxlarge", tabindex: 1, autofocus: true
- = f.submit 'Create project', class: "btn btn-create project-submit", tabindex: 4
+ %strong Project name is
+ .controls
+ = f.text_field :name, placeholder: "Example Project", class: "input-xlarge", tabindex: 1, autofocus: true
- if current_user.can_select_namespace?
- .clearfix
+ .control-group
= f.label :namespace_id do
%span Namespace
- .input
+ .controls
= f.select :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'chosen', tabindex: 2}
- .clearfix
- .input
+ .control-group
+ .controls
= link_to "#", class: 'appear-link' do
%i.icon-upload-alt
%span Import existing repository?
- .clearfix.appear-data.import-url-data
+ .control-group.appear-data.import-url-data
= f.label :import_url do
%span Import existing repo
- .input
- = f.text_field :import_url, class: 'xlarge', placeholder: 'https://github.com/randx/six.git'
+ .controls
+ = f.text_field :import_url, class: 'input-xlarge', placeholder: 'https://github.com/randx/six.git'
.light
URL must be cloneable
- .clearfix
+ .control-group
= f.label :description do
Description
%span.light (optional)
- .input
- = f.text_area :description, placeholder: "awesome project", class: "span5", rows: 3, maxlength: 250, tabindex: 3
+ .controls
+ = f.text_area :description, placeholder: "awesome project", class: "input-xlarge", rows: 3, maxlength: 250, tabindex: 3
- %p.padded
- New projects are private by default. You choose who can see the project and commit to repository.
- %hr
+ .form-actions
+ = f.submit 'Create project', class: "btn btn-create project-submit", tabindex: 4
- - if current_user.can_create_group?
- .clearfix
- .input.light
- Need a group for several dependent projects?
- = link_to new_group_path, class: "btn btn-tiny" do
- Create a group
+ - if current_user.can_create_group?
+ .pull-right
+ .controls.light
+ Need a group for several dependent projects?
+ = link_to new_group_path, class: "btn btn-tiny" do
+ Create a group
.save-project-loader.hide
%center
diff --git a/app/views/projects/notes/_diff_notes_with_reply.html.haml b/app/views/projects/notes/_diff_notes_with_reply.html.haml
index 5a1a945f399..9537ab18caa 100644
--- a/app/views/projects/notes/_diff_notes_with_reply.html.haml
+++ b/app/views/projects/notes/_diff_notes_with_reply.html.haml
@@ -1,11 +1,13 @@
- note = notes.first # example note
-%tr.notes_holder
- %td.notes_line{ colspan: 2 }
- %span.btn.disabled
- %i.icon-comment
- = notes.count
- %td.notes_content
- %ul.notes{ rel: note.discussion_id }
- = render notes
+-# Check if line want not changed since comment was left
+- if !defined?(line) || line == note.diff_line
+ %tr.notes_holder
+ %td.notes_line{ colspan: 2 }
+ %span.btn.disabled
+ %i.icon-comment
+ = notes.count
+ %td.notes_content
+ %ul.notes{ rel: note.discussion_id }
+ = render notes
- = render "projects/notes/discussion_reply_button", note: note
+ = render "projects/notes/discussion_reply_button", note: note
diff --git a/app/views/projects/notes/_discussion.html.haml b/app/views/projects/notes/_discussion.html.haml
index 8c79b5ad53e..a964d86a8dc 100644
--- a/app/views/projects/notes/_discussion.html.haml
+++ b/app/views/projects/notes/_discussion.html.haml
@@ -36,7 +36,7 @@
ago
.discussion-body
- if note.for_diff_line?
- - if note.diff
+ - if note.active?
.content
.file= render "projects/notes/discussion_diff", discussion_notes: discussion_notes, note: note
- else
diff --git a/app/views/projects/notes/_note.html.haml b/app/views/projects/notes/_note.html.haml
index 1389d899310..fbc924c4e1d 100644
--- a/app/views/projects/notes/_note.html.haml
+++ b/app/views/projects/notes/_note.html.haml
@@ -8,8 +8,11 @@
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
= link_to "#", title: "Edit comment", class: "js-note-edit" do
%i.icon-edit
+ Edit
+ &nbsp;
= link_to project_note_path(@project, note), title: "Remove comment", method: :delete, confirm: 'Are you sure you want to remove this comment?', remote: true, class: "danger js-note-delete" do
%i.icon-trash.cred
+ Remove
= image_tag gravatar_icon(note.author_email), class: "avatar s32"
= link_to_member(@project, note.author, avatar: false)
%span.note-last-update
diff --git a/app/views/projects/protected_branches/index.html.haml b/app/views/projects/protected_branches/index.html.haml
index 9cadb6fb126..8930ec4b30a 100644
--- a/app/views/projects/protected_branches/index.html.haml
+++ b/app/views/projects/protected_branches/index.html.haml
@@ -1,7 +1,7 @@
= render "projects/commits/head"
.row
.span3
- = render "projects/repositories/filter"
+ = render "projects/branches/filter"
.span9
.alert.alert-info
%p Protected branches designed to prevent push for all except #{link_to "masters", help_permissions_path, class: "vlink"}.
diff --git a/app/views/projects/repositories/show.html.haml b/app/views/projects/repositories/show.html.haml
deleted file mode 100644
index 611d0eddc4c..00000000000
--- a/app/views/projects/repositories/show.html.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-= render "projects/commits/head"
-.row
- .span3
- = render "filter"
- .span9
- %ul.bordered-list
- - @activities.each do |update|
- = render "projects/branches/branch", branch: update.head
-
diff --git a/app/views/projects/snippets/_form.html.haml b/app/views/projects/snippets/_form.html.haml
index a8aa5460f2e..14a42f34f25 100644
--- a/app/views/projects/snippets/_form.html.haml
+++ b/app/views/projects/snippets/_form.html.haml
@@ -9,16 +9,16 @@
- @snippet.errors.full_messages.each do |msg|
%li= msg
- .clearfix
+ .control-group
= f.label :title
- .input= f.text_field :title, placeholder: "Example Snippet", class: 'input-xlarge', required: true
- .clearfix
+ .controls= f.text_field :title, placeholder: "Example Snippet", class: 'input-xlarge', required: true
+ .control-group
= f.label "Lifetime"
- .input= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'}
- .clearfix
+ .controls= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'}
+ .control-group
.file-editor
= f.label :file_name, "File"
- .input
+ .controls
.file-holder.snippet
.file-title
= f.text_field :file_name, placeholder: "example.rb", class: 'snippet-file-name', required: true
diff --git a/app/views/projects/team_members/_form.html.haml b/app/views/projects/team_members/_form.html.haml
index 0eb106ee93f..8dd2faa219b 100644
--- a/app/views/projects/team_members/_form.html.haml
+++ b/app/views/projects/team_members/_form.html.haml
@@ -9,16 +9,16 @@
%li= msg
%h6 1. Choose people you want in the team
- .clearfix
+ .control-group
= f.label :user_ids, "People"
- .input
+ .controls
= users_select_tag(:user_ids, multiple: true)
%h6 2. Set access level for them
- .clearfix
+ .control-group
= f.label :project_access, "Project Access"
- .input= select_tag :project_access, options_for_select(Project.access_options, @user_project_relation.project_access), class: "project-access-select chosen"
+ .controls= select_tag :project_access, options_for_select(Project.access_options, @user_project_relation.project_access), class: "project-access-select chosen"
- .actions
+ .form-actions
= 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/projects/team_members/_group_members.html.haml b/app/views/projects/team_members/_group_members.html.haml
index 5c3f813bb20..68f08006854 100644
--- a/app/views/projects/team_members/_group_members.html.haml
+++ b/app/views/projects/team_members/_group_members.html.haml
@@ -1,7 +1,7 @@
.ui-box
.title
- %strong #{@group.name} Group
- members (#{@group.users_groups.count})
+ %strong #{@group.name}
+ group members (#{@group.users_groups.count})
.pull-right
= link_to members_group_path(@group), class: 'btn btn-small' do
%i.icon-edit
diff --git a/app/views/projects/team_members/_team.html.haml b/app/views/projects/team_members/_team.html.haml
index ee660482f3f..2daf6847665 100644
--- a/app/views/projects/team_members/_team.html.haml
+++ b/app/views/projects/team_members/_team.html.haml
@@ -2,8 +2,8 @@
- can_admin_project = (can? current_user, :admin_project, @project)
.ui-box
.title
- %strong #{@project.name} Project
- members (#{members.count})
+ %strong #{@project.name}
+ project members (#{members.count})
%ul.well-list
- members.each do |team_member|
= render 'team_member', member: team_member, current_user_can_admin_project: can_admin_project
diff --git a/app/views/projects/team_members/import.html.haml b/app/views/projects/team_members/import.html.haml
index c293cb4beef..36ebe27805b 100644
--- a/app/views/projects/team_members/import.html.haml
+++ b/app/views/projects/team_members/import.html.haml
@@ -1,15 +1,14 @@
%h3.page-title
- = "Import team from another project"
+ = "Import members from another project"
+%p.light
+ Only project members will be improted. Group members will be skipped.
%hr
-%p.slead
- Read more about project team import #{link_to "here", '#', class: 'vlink'}.
= form_tag apply_import_project_team_members_path(@project), method: 'post' do
- %p.slead Choose project you want to use as team source:
.padded
= label_tag :source_project_id, "Project"
- .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)
+ .controls= 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 btn-save"
+ .form-actions
+ = submit_tag 'Import project members', class: "btn btn-create"
= link_to "Cancel", project_team_index_path(@project), class: "btn btn-cancel"
diff --git a/app/views/projects/team_members/index.html.haml b/app/views/projects/team_members/index.html.haml
index e8ae84bb8f5..88325587f44 100644
--- a/app/views/projects/team_members/index.html.haml
+++ b/app/views/projects/team_members/index.html.haml
@@ -3,14 +3,14 @@
- if can? current_user, :admin_team_member, @project
%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 new_project_team_member_path(@project), class: "btn btn-primary small grouped", title: "New Team Member" do
+ = link_to new_project_team_member_path(@project), class: "btn btn-new grouped", title: "New Team Member" do
New Team Member
+ = link_to import_project_team_members_path(@project), class: "btn grouped", title: "Import team from another project" do
+ Import members
%p.light
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
+= render "team", members: @users_projects
- if @group
= render "group_members"
-= render "team", members: @users_projects
diff --git a/app/views/projects/wikis/_form.html.haml b/app/views/projects/wikis/_form.html.haml
index 464b1508a7e..16061c9dcbb 100644
--- a/app/views/projects/wikis/_form.html.haml
+++ b/app/views/projects/wikis/_form.html.haml
@@ -15,7 +15,7 @@
= f.select :format, options_for_select(GollumWiki::MARKUPS, {selected: @wiki.format}), {}, class: "pull-right input-medium"
= f.label :format, class: "pull-right", style: "padding-right: 20px;"
.ui-box-body
- .input
+ .controls
%span.cgray
Wiki content is parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
To link to a (new) page you can just type
@@ -23,14 +23,17 @@
\.
.ui-box-bottom
- = f.label :content
- .input= f.text_area :content, class: 'span8 js-gfm-input'
+ .control-group
+ = f.label :content
+ .controls= f.text_area :content, class: 'span8 js-gfm-input'
.ui-box-bottom
- = f.label :commit_message
- .input= f.text_field :message, class: 'span8'
- .actions
- = f.submit 'Save', class: "btn-save btn"
+ .control-group
+ = f.label :commit_message
+ .controls= f.text_field :message, class: 'span8'
+ .form-actions
- if @wiki && @wiki.persisted?
+ = f.submit 'Save changes', class: "btn-save btn"
= link_to "Cancel", project_wiki_path(@project, @wiki), class: "btn btn-cancel"
- else
+ = f.submit 'Create page', class: "btn-create btn"
= link_to "Cancel", project_wiki_path(@project, :home), class: "btn btn-cancel"
diff --git a/app/views/projects/wikis/_nav.html.haml b/app/views/projects/wikis/_nav.html.haml
index d62b46a7e5b..0a7e51e974c 100644
--- a/app/views/projects/wikis/_nav.html.haml
+++ b/app/views/projects/wikis/_nav.html.haml
@@ -12,7 +12,7 @@
- if can?(current_user, :write_wiki, @project)
.pull-right
- = link_to '#', class: "add-new-wiki btn btn-small btn-primary" do
+ = link_to '#modal-new-wiki', class: "add-new-wiki btn btn-new", "data-toggle" => "modal" do
%i.icon-plus
New Page
diff --git a/app/views/projects/wikis/_new.html.haml b/app/views/projects/wikis/_new.html.haml
index c52fbcb58f6..f64772b2001 100644
--- a/app/views/projects/wikis/_new.html.haml
+++ b/app/views/projects/wikis/_new.html.haml
@@ -1,6 +1,6 @@
%div#modal-new-wiki.modal.hide
.modal-header
- %a.close{href: "#"} ×
+ %a.close{href: "#", "data-dismiss" => "modal"} ×
%h3.page-title New Wiki Page
.modal-body
= label_tag :new_wiki_path do
diff --git a/app/views/projects/wikis/git_access.html.haml b/app/views/projects/wikis/git_access.html.haml
index e783a982ddb..dd01bb99041 100644
--- a/app/views/projects/wikis/git_access.html.haml
+++ b/app/views/projects/wikis/git_access.html.haml
@@ -1,10 +1,9 @@
= render 'nav'
%h3.page-title
- Git Access
+ Git access for
%strong= @gollum_wiki.path_with_namespace
= render 'main_links'
-%br
.content
.project_clone_panel
.row
diff --git a/app/views/public/projects/index.html.haml b/app/views/public/projects/index.html.haml
index e933268973a..7fea017acec 100644
--- a/app/views/public/projects/index.html.haml
+++ b/app/views/public/projects/index.html.haml
@@ -7,7 +7,7 @@
.pull-right
= form_tag public_projects_path, method: :get, class: 'form-inline' do |f|
.search-holder
- .input
+ .controls
= search_field_tag :search, params[:search], placeholder: "gitlab-ci", class: "span3 search-text-input", id: "projects_search"
= submit_tag 'Search', class: "btn btn-primary wide"
diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml
index f9647377961..ed939024d94 100644
--- a/app/views/search/show.html.haml
+++ b/app/views/search/show.html.haml
@@ -2,7 +2,7 @@
.search-holder
= label_tag :search do
%span Looking for
- .input
+ .controls
= search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search"
= hidden_field_tag :project_id, params[:project_id]
= hidden_field_tag :group_id, params[:group_id]
diff --git a/app/views/shared/_filter.html.haml b/app/views/shared/_filter.html.haml
new file mode 100644
index 00000000000..fc3232e0e0e
--- /dev/null
+++ b/app/views/shared/_filter.html.haml
@@ -0,0 +1,29 @@
+= form_tag filter_path(entity), method: 'get' do
+ %fieldset
+ %ul.nav.nav-pills.nav-stacked
+ %li{class: ("active" if params[:status].blank?)}
+ = link_to filter_path(entity, status: nil) do
+ Open
+ %li{class: ("active" if params[:status] == 'closed')}
+ = link_to filter_path(entity, status: 'closed') do
+ Closed
+ %li{class: ("active" if params[:status] == 'all')}
+ = link_to filter_path(entity, status: 'all') do
+ All
+
+ %fieldset
+ %legend Projects:
+ %ul.nav.nav-pills.nav-pills-small.nav-stacked
+ - @projects.each do |project|
+ - unless entities_per_project(project, entity).zero?
+ %li{class: ("active" if params[:project_id] == project.id.to_s)}
+ = link_to filter_path(entity, project_id: project.id) do
+ = project.name_with_namespace
+ %small.pull-right= entities_per_project(project, entity)
+
+ %fieldset
+ - if params[:status].present? || params[:project_id].present?
+ = link_to filter_path(entity, status: nil, project_id: nil), class: 'pull-right cgray' do
+ %i.icon-remove
+ Clear filter
+
diff --git a/app/views/shared/_issues.html.haml b/app/views/shared/_issues.html.haml
new file mode 100644
index 00000000000..6f4852d8785
--- /dev/null
+++ b/app/views/shared/_issues.html.haml
@@ -0,0 +1,15 @@
+- if @issues.any?
+ - @issues.group_by(&:project).each do |group|
+ .ui-box.small-box
+ - project = group[0]
+ .title
+ = link_to_project project
+ = link_to 'show all', project_issues_path(project), class: 'pull-right'
+
+ %ul.well-list.issues-list
+ - group[1].each do |issue|
+ = render 'projects/issues/issue', issue: issue
+ = paginate @issues, theme: "gitlab"
+- else
+ %p.nothing_here_message Nothing to show here
+
diff --git a/app/views/shared/_merge_requests.html.haml b/app/views/shared/_merge_requests.html.haml
index 5276f4bae31..4be445e6a32 100644
--- a/app/views/shared/_merge_requests.html.haml
+++ b/app/views/shared/_merge_requests.html.haml
@@ -1,13 +1,12 @@
- if @merge_requests.any?
- @merge_requests.group_by(&:target_project).each do |group|
- .ui-box
+ .ui-box.small-box
- project = group[0]
.title
= link_to_project project
%ul.well-list.mr-list
- group[1].each do |merge_request|
= render 'projects/merge_requests/merge_request', merge_request: merge_request
- %hr
= paginate @merge_requests, theme: "gitlab"
- else
diff --git a/app/views/snippets/_form.html.haml b/app/views/snippets/_form.html.haml
index e5c63afe980..fa0d5157a2e 100644
--- a/app/views/snippets/_form.html.haml
+++ b/app/views/snippets/_form.html.haml
@@ -9,16 +9,16 @@
- @snippet.errors.full_messages.each do |msg|
%li= msg
- .clearfix
+ .control-group
= f.label :title
- .input= f.text_field :title, placeholder: "Example Snippet", class: 'input-xlarge', required: true
- .clearfix
+ .controls= f.text_field :title, placeholder: "Example Snippet", class: 'input-xlarge', required: true
+ .control-group
= f.label "Private?"
- .input= f.check_box :private, {class: ''}
- .clearfix
+ .controls= f.check_box :private, {class: ''}
+ .control-group
.file-editor
= f.label :file_name, "File"
- .input
+ .controls
.file-holder.snippet
.file-title
= f.text_field :file_name, placeholder: "example.rb", class: 'snippet-file-name', required: true
diff --git a/app/views/snippets/current_user_index.html.haml b/app/views/snippets/current_user_index.html.haml
index b60026f4584..a2a9aef04eb 100644
--- a/app/views/snippets/current_user_index.html.haml
+++ b/app/views/snippets/current_user_index.html.haml
@@ -1,12 +1,13 @@
%h3.page-title
My Snippets
- %small share code pastes with others out of git repository
.pull-right
- = link_to new_snippet_path, class: "btn btn-small add_new grouped btn-primary", title: "New Snippet" do
+ = link_to new_snippet_path, class: "btn btn-new grouped", title: "New Snippet" do
Add new snippet
- = link_to snippets_path, class: "btn btn-small grouped" do
+ = link_to snippets_path, class: "btn grouped" do
Discover snippets
+%p.light
+ Share code pastes with others out of git repository
%hr
.row
diff --git a/app/views/snippets/index.html.haml b/app/views/snippets/index.html.haml
index c65ed4fb9df..2f6c914a159 100644
--- a/app/views/snippets/index.html.haml
+++ b/app/views/snippets/index.html.haml
@@ -1,13 +1,15 @@
%h3.page-title
Public snippets
- %small share code pastes with others out of git repository
.pull-right
- = link_to new_snippet_path, class: "btn btn-small add_new grouped btn-primary", title: "New Snippet" do
+ = link_to new_snippet_path, class: "btn btn-new grouped", title: "New Snippet" do
Add new snippet
- = link_to user_snippets_path(current_user), class: "btn btn-small grouped" do
+ = link_to user_snippets_path(current_user), class: "btn grouped" do
My snippets
+%p.light
+ Public snippets created by you and other users are listed here
+
%hr
= render 'snippets'
diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml
index 5cf1fefe5f0..37f9e7576f5 100644
--- a/app/views/snippets/show.html.haml
+++ b/app/views/snippets/show.html.haml
@@ -7,7 +7,7 @@
private
.pull-right
- = link_to new_snippet_path, class: "btn btn-small add_new grouped btn-primary", title: "New Snippet" do
+ = link_to new_snippet_path, class: "btn btn-new btn-small", title: "New Snippet" do
Add new snippet
diff --git a/app/views/users_groups/_users_group.html.haml b/app/views/users_groups/_users_group.html.haml
index d3d08dd5dea..c8d306838f7 100644
--- a/app/views/users_groups/_users_group.html.haml
+++ b/app/views/users_groups/_users_group.html.haml
@@ -1,6 +1,6 @@
- user = member.user
- return unless user
-%li{class: dom_class(member)}
+%li{class: "#{dom_class(member)} js-toggle-container", id: dom_id(member)}
= image_tag gravatar_icon(user.email, 16), class: "avatar s16"
%strong= user.name
%span.cgray= user.username
@@ -8,12 +8,16 @@
%span.label.label-success It's you
%span.pull-right
- - if @group.owners.include?(user)
- %span.label.label-info Group Owner
- - else
- = member.human_access
+ %strong= member.human_access
- if show_controls && user != @group.owner && user != current_user
+ = link_to '#', class: "btn-tiny btn js-toggle-button", title: 'Edit access level' do
+ %i.icon-edit
= link_to group_users_group_path(@group, member), confirm: remove_user_from_group_message(@group, user), method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
%i.icon-minus.icon-white
+ .edit-member.hide.js-toggle-content
+ = form_for [@group, member], remote: true do |f|
+ .alert.prepend-top-20
+ = f.select :group_access, options_for_select(UsersGroup.group_access_roles, member.group_access)
+ = f.submit 'Save', class: 'btn btn-save'
diff --git a/app/views/users_groups/update.js.haml b/app/views/users_groups/update.js.haml
new file mode 100644
index 00000000000..5bad48abafd
--- /dev/null
+++ b/app/views/users_groups/update.js.haml
@@ -0,0 +1,2 @@
+:plain
+ $("##{dom_id(@member)}").replaceWith('#{escape_javascript(render(@member, member: @member, show_controls: true))}');