Merge branch 'master' into new-project-header-redesign
This commit is contained in:
commit
77daadc92c
21 changed files with 93 additions and 44 deletions
|
@ -1,6 +1,7 @@
|
||||||
Please view this file on the master branch, on stable branches it's out of date.
|
Please view this file on the master branch, on stable branches it's out of date.
|
||||||
|
|
||||||
v 8.4.0 (unreleased)
|
v 8.4.0 (unreleased)
|
||||||
|
- Fix Error 500 when doing a search in dashboard before visiting any project (Stan Hu)
|
||||||
- Implement new UI for group page
|
- Implement new UI for group page
|
||||||
- Add project permissions to all project API endpoints (Stan Hu)
|
- Add project permissions to all project API endpoints (Stan Hu)
|
||||||
|
|
||||||
|
|
|
@ -374,7 +374,7 @@ table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.center-top-menu {
|
.center-top-menu, .left-top-menu {
|
||||||
@include nav-menu;
|
@include nav-menu;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
|
@ -408,6 +408,11 @@ table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.left-top-menu {
|
||||||
|
text-align: left;
|
||||||
|
border-bottom: 1px solid #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
.center-middle-menu {
|
.center-middle-menu {
|
||||||
@include nav-menu;
|
@include nav-menu;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.status-box {
|
.status-box {
|
||||||
@include border-radius(2px);
|
@include border-radius(3px);
|
||||||
|
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&.status-box-open {
|
&.status-box-open {
|
||||||
background-color: #019875;
|
background-color: $green-light;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.center-top-menu {
|
.center-top-menu, .left-top-menu {
|
||||||
li a {
|
li a {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
padding: 19px 10px;
|
padding: 19px 10px;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
border-bottom: 1px solid $border-color;
|
border-bottom: 1px solid $border-color;
|
||||||
color: #5c5d5e;
|
color: #5c5d5e;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 42px;
|
line-height: 34px;
|
||||||
|
|
||||||
.author {
|
.author {
|
||||||
color: #5c5d5e;
|
color: #5c5d5e;
|
||||||
|
|
|
@ -404,6 +404,36 @@ ul.nav.nav-projects-tabs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.top-area {
|
||||||
|
border-bottom: 1px solid #EEE;
|
||||||
|
|
||||||
|
ul.left-top-menu {
|
||||||
|
display: inline-block;
|
||||||
|
width: 50%;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects-search-form {
|
||||||
|
width: 50%;
|
||||||
|
display: inline-block;
|
||||||
|
float: right;
|
||||||
|
padding-top: 7px;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
.btn-green {
|
||||||
|
margin-top: -2px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: $screen-xs-max) {
|
||||||
|
.projects-search-form {
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.fork-namespaces {
|
.fork-namespaces {
|
||||||
.fork-thumbnail {
|
.fork-thumbnail {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -481,11 +511,18 @@ pre.light-well {
|
||||||
|
|
||||||
.projects-search-form {
|
.projects-search-form {
|
||||||
margin: -$gl-padding;
|
margin: -$gl-padding;
|
||||||
background-color: #f8fafc;
|
|
||||||
padding: $gl-padding;
|
padding: $gl-padding;
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
border-top: 1px solid #e7e9ed;
|
|
||||||
border-bottom: 1px solid #e7e9ed;
|
input {
|
||||||
|
display: inline-block;
|
||||||
|
width: calc(100% - 151px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
display: inline-block;
|
||||||
|
width: 135px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.git-empty {
|
.git-empty {
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
= content_for :flash_message do
|
= content_for :flash_message do
|
||||||
= render 'shared/project_limit'
|
= render 'shared/project_limit'
|
||||||
|
.top-area
|
||||||
|
%ul.left-top-menu
|
||||||
|
= nav_link(page: [dashboard_projects_path, root_path]) do
|
||||||
|
= link_to dashboard_projects_path, title: 'Home', class: 'shortcuts-activity', data: {placement: 'right'} do
|
||||||
|
Your Projects
|
||||||
|
= nav_link(page: starred_dashboard_projects_path) do
|
||||||
|
= link_to starred_dashboard_projects_path, title: 'Starred Projects', data: {placement: 'right'} do
|
||||||
|
Starred Projects
|
||||||
|
= nav_link(page: [explore_root_path, trending_explore_projects_path, starred_explore_projects_path, explore_projects_path], html_options: { class: 'hidden-xs' }) do
|
||||||
|
= link_to explore_root_path, title: 'Explore', data: {placement: 'right'} do
|
||||||
|
Explore Projects
|
||||||
|
|
||||||
%ul.center-top-menu
|
.projects-search-form
|
||||||
= nav_link(page: [dashboard_projects_path, root_path]) do
|
= search_field_tag :filter_projects, nil, placeholder: 'Filter by name...', class: 'projects-list-filter form-control hidden-xs', spellcheck: false
|
||||||
= link_to dashboard_projects_path, title: 'Home', class: 'shortcuts-activity', data: {placement: 'right'} do
|
- if current_user.can_create_project?
|
||||||
Your Projects
|
= link_to new_project_path, class: 'btn btn-green' do
|
||||||
= nav_link(page: starred_dashboard_projects_path) do
|
%i.fa.fa-plus
|
||||||
= link_to starred_dashboard_projects_path, title: 'Starred Projects', data: {placement: 'right'} do
|
New Project
|
||||||
Starred Projects
|
|
||||||
= nav_link(page: [explore_root_path, trending_explore_projects_path, starred_explore_projects_path, explore_projects_path], html_options: { class: 'hidden-xs' }) do
|
|
||||||
= link_to explore_root_path, title: 'Explore', data: {placement: 'right'} do
|
|
||||||
Explore Projects
|
|
||||||
|
|
|
@ -1,11 +1,3 @@
|
||||||
.projects-list-holder
|
.projects-list-holder
|
||||||
.projects-search-form
|
|
||||||
.input-group
|
|
||||||
= search_field_tag :filter_projects, nil, placeholder: 'Filter by name', class: 'projects-list-filter form-control', spellcheck: false
|
|
||||||
- if current_user.can_create_project?
|
|
||||||
%span.input-group-btn
|
|
||||||
= link_to new_project_path, class: 'btn btn-green' do
|
|
||||||
%i.fa.fa-plus
|
|
||||||
New Project
|
|
||||||
|
|
||||||
= render 'shared/projects/list', projects: @projects, ci: true
|
= render 'shared/projects/list', projects: @projects, ci: true
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
- content_for :note_actions do
|
- content_for :note_actions do
|
||||||
- if can?(current_user, :update_issue, @issue)
|
- if can?(current_user, :update_issue, @issue)
|
||||||
- if @issue.closed?
|
- if @issue.closed?
|
||||||
= link_to 'Reopen Issue', issue_path(@issue, issue: {state_event: :reopen}, status_only: true), method: :put, class: 'btn btn-grouped btn-reopen js-note-target-reopen', title: 'Reopen Issue'
|
= link_to 'Reopen Issue', issue_path(@issue, issue: {state_event: :reopen}, status_only: true), method: :put, class: 'btn btn-nr btn-grouped btn-reopen js-note-target-reopen', title: 'Reopen Issue'
|
||||||
- else
|
- else
|
||||||
= link_to 'Close Issue', issue_path(@issue, issue: {state_event: :close}, status_only: true), method: :put, class: 'btn btn-grouped btn-close js-note-target-close', title: 'Close Issue'
|
= link_to 'Close Issue', issue_path(@issue, issue: {state_event: :close}, status_only: true), method: :put, class: 'btn btn-nr btn-grouped btn-close js-note-target-close', title: 'Close Issue'
|
||||||
|
|
||||||
#notes
|
#notes
|
||||||
= render 'projects/notes/notes_with_form'
|
= render 'projects/notes/notes_with_form'
|
||||||
|
|
|
@ -23,16 +23,16 @@
|
||||||
|
|
||||||
.pull-right
|
.pull-right
|
||||||
- if can?(current_user, :create_issue, @project)
|
- if can?(current_user, :create_issue, @project)
|
||||||
= link_to new_namespace_project_issue_path(@project.namespace, @project), class: 'btn btn-grouped new-issue-link btn-success', title: 'New Issue', id: 'new_issue_link' do
|
= link_to new_namespace_project_issue_path(@project.namespace, @project), class: 'btn btn-nr btn-grouped new-issue-link btn-success', title: 'New Issue', id: 'new_issue_link' do
|
||||||
= icon('plus')
|
= icon('plus')
|
||||||
New Issue
|
New Issue
|
||||||
- if can?(current_user, :update_issue, @issue)
|
- if can?(current_user, :update_issue, @issue)
|
||||||
- if @issue.closed?
|
- if @issue.closed?
|
||||||
= link_to 'Reopen', issue_path(@issue, issue: {state_event: :reopen}, status_only: true), method: :put, class: 'btn btn-grouped btn-reopen'
|
= link_to 'Reopen', issue_path(@issue, issue: {state_event: :reopen}, status_only: true), method: :put, class: 'btn btn-nr btn-grouped btn-reopen'
|
||||||
- else
|
- else
|
||||||
= link_to 'Close', issue_path(@issue, issue: {state_event: :close}, status_only: true), method: :put, class: 'btn btn-grouped btn-close', title: 'Close Issue'
|
= link_to 'Close', issue_path(@issue, issue: {state_event: :close}, status_only: true), method: :put, class: 'btn btn-nr btn-grouped btn-close', title: 'Close Issue'
|
||||||
|
|
||||||
= link_to edit_namespace_project_issue_path(@project.namespace, @project, @issue), class: 'btn btn-grouped issuable-edit' do
|
= link_to edit_namespace_project_issue_path(@project.namespace, @project, @issue), class: 'btn btn-nr btn-grouped issuable-edit' do
|
||||||
= icon('pencil-square-o')
|
= icon('pencil-square-o')
|
||||||
Edit
|
Edit
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
- content_for :note_actions do
|
- content_for :note_actions do
|
||||||
- if can?(current_user, :update_merge_request, @merge_request)
|
- if can?(current_user, :update_merge_request, @merge_request)
|
||||||
- if @merge_request.open?
|
- if @merge_request.open?
|
||||||
= link_to 'Close', merge_request_path(@merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-grouped btn-close close-mr-link js-note-target-close", title: "Close merge request"
|
= link_to 'Close', merge_request_path(@merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-nr btn-grouped btn-close close-mr-link js-note-target-close", title: "Close merge request"
|
||||||
- if @merge_request.closed?
|
- if @merge_request.closed?
|
||||||
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link js-note-target-reopen", title: "Reopen merge request"
|
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-nr btn-grouped btn-reopen reopen-mr-link js-note-target-reopen", title: "Reopen merge request"
|
||||||
|
|
||||||
#notes= render "projects/notes/notes_with_form"
|
#notes= render "projects/notes/notes_with_form"
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
.issue-btn-group.pull-right
|
.issue-btn-group.pull-right
|
||||||
- if can?(current_user, :update_merge_request, @merge_request)
|
- if can?(current_user, :update_merge_request, @merge_request)
|
||||||
- if @merge_request.open?
|
- if @merge_request.open?
|
||||||
= link_to 'Close', merge_request_path(@merge_request, merge_request: { state_event: :close }), method: :put, class: 'btn btn-grouped btn-close', title: 'Close merge request'
|
= link_to 'Close', merge_request_path(@merge_request, merge_request: { state_event: :close }), method: :put, class: 'btn btn-nr btn-grouped btn-close', title: 'Close merge request'
|
||||||
= link_to edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: 'btn btn-grouped issuable-edit', id: 'edit_merge_request' do
|
= link_to edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: 'btn btn-nr btn-grouped issuable-edit', id: 'edit_merge_request' do
|
||||||
%i.fa.fa-pencil-square-o
|
%i.fa.fa-pencil-square-o
|
||||||
Edit
|
Edit
|
||||||
- if @merge_request.closed?
|
- if @merge_request.closed?
|
||||||
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: 'btn btn-grouped btn-reopen reopen-mr-link', title: 'Reopen merge request'
|
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: 'btn btn-nr btn-grouped btn-reopen reopen-mr-link', title: 'Reopen merge request'
|
||||||
|
|
|
@ -13,6 +13,6 @@
|
||||||
.error-alert
|
.error-alert
|
||||||
|
|
||||||
.note-form-actions.clearfix
|
.note-form-actions.clearfix
|
||||||
= f.submit 'Add Comment', class: "btn btn-create comment-btn btn-grouped js-comment-button"
|
= f.submit 'Add Comment', class: "btn btn-nr btn-create comment-btn btn-grouped js-comment-button"
|
||||||
= yield(:note_actions)
|
= yield(:note_actions)
|
||||||
%a.btn.btn-cancel.js-close-discussion-note-form Cancel
|
%a.btn.btn-cancel.js-close-discussion-note-form Cancel
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
- if issue.description.present?
|
- if issue.description.present?
|
||||||
.description.term
|
.description.term
|
||||||
= preserve do
|
= preserve do
|
||||||
= search_md_sanitize(markdown(issue.description))
|
= search_md_sanitize(markdown(issue.description, { project: issue.project }))
|
||||||
%span.light
|
%span.light
|
||||||
#{issue.project.name_with_namespace}
|
#{issue.project.name_with_namespace}
|
||||||
- if issue.closed?
|
- if issue.closed?
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class AddBuildEventsToServices < ActiveRecord::Migration
|
class AddBuildEventsToServices < ActiveRecord::Migration
|
||||||
def up
|
def change
|
||||||
add_column :services, :build_events, :boolean, default: false, null: false
|
add_column :services, :build_events, :boolean, default: false, null: false
|
||||||
add_column :web_hooks, :build_events, :boolean, default: false, null: false
|
add_column :web_hooks, :build_events, :boolean, default: false, null: false
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,4 +10,7 @@ class MigrateCiWebHooks < ActiveRecord::Migration
|
||||||
'JOIN projects ON ci_projects.gitlab_id = projects.id'
|
'JOIN projects ON ci_projects.gitlab_id = projects.id'
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class AddCiToProject < ActiveRecord::Migration
|
class AddCiToProject < ActiveRecord::Migration
|
||||||
def up
|
def change
|
||||||
add_column :projects, :ci_id, :integer
|
add_column :projects, :ci_id, :integer
|
||||||
add_column :projects, :builds_enabled, :boolean, default: true, null: false
|
add_column :projects, :builds_enabled, :boolean, default: true, null: false
|
||||||
add_column :projects, :shared_runners_enabled, :boolean, default: true, null: false
|
add_column :projects, :shared_runners_enabled, :boolean, default: true, null: false
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class AddProjectIdToCi < ActiveRecord::Migration
|
class AddProjectIdToCi < ActiveRecord::Migration
|
||||||
def up
|
def change
|
||||||
add_column :ci_builds, :gl_project_id, :integer
|
add_column :ci_builds, :gl_project_id, :integer
|
||||||
add_column :ci_runner_projects, :gl_project_id, :integer
|
add_column :ci_runner_projects, :gl_project_id, :integer
|
||||||
add_column :ci_triggers, :gl_project_id, :integer
|
add_column :ci_triggers, :gl_project_id, :integer
|
||||||
|
|
|
@ -14,6 +14,10 @@ class MigrateCiToProject < ActiveRecord::Migration
|
||||||
migrate_ci_service
|
migrate_ci_service
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
# We can't reverse the data
|
||||||
|
end
|
||||||
|
|
||||||
def migrate_project_id_for_table(table)
|
def migrate_project_id_for_table(table)
|
||||||
subquery = "SELECT gitlab_id FROM ci_projects WHERE ci_projects.id = #{table}.project_id"
|
subquery = "SELECT gitlab_id FROM ci_projects WHERE ci_projects.id = #{table}.project_id"
|
||||||
execute("UPDATE #{table} SET gl_project_id=(#{subquery}) WHERE gl_project_id IS NULL")
|
execute("UPDATE #{table} SET gl_project_id=(#{subquery}) WHERE gl_project_id IS NULL")
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class AddIndexToCiTables < ActiveRecord::Migration
|
class AddIndexToCiTables < ActiveRecord::Migration
|
||||||
def up
|
def change
|
||||||
add_index :ci_builds, :gl_project_id
|
add_index :ci_builds, :gl_project_id
|
||||||
add_index :ci_runner_projects, :gl_project_id
|
add_index :ci_runner_projects, :gl_project_id
|
||||||
add_index :ci_triggers, :gl_project_id
|
add_index :ci_triggers, :gl_project_id
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class DropNullForCiTables < ActiveRecord::Migration
|
class DropNullForCiTables < ActiveRecord::Migration
|
||||||
def up
|
def change
|
||||||
remove_index :ci_variables, :project_id
|
remove_index :ci_variables, :project_id
|
||||||
remove_index :ci_runner_projects, :project_id
|
remove_index :ci_runner_projects, :project_id
|
||||||
change_column_null :ci_triggers, :project_id, true
|
change_column_null :ci_triggers, :project_id, true
|
||||||
|
|
Loading…
Reference in a new issue