summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-07-08 21:29:59 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-07-08 21:29:59 +0000
commitc8e9246ef65da784d6b9d48fb77e66989cea2534 (patch)
tree7c1b4aa32c794ca70dcc68938112c251aa650901 /app
parentd991e3e41a83c9479d0f5d95732f998cf352c57d (diff)
parenta0b9fe12886f55875bc4bce49f2566be3bff79cd (diff)
downloadgitlab-ce-c8e9246ef65da784d6b9d48fb77e66989cea2534.tar.gz
Merge branch 'project-home-page' into 'master'
New project home page ## Why? Because current project page is overloaded with information ## Changes * move activity to separate tab * make project show page cleaner by removing redundant information * render README as main content of project page cc @sytses @JobV See merge request !938
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/dispatcher.js.coffee4
-rw-r--r--app/assets/javascripts/project_show.js.coffee14
-rw-r--r--app/assets/javascripts/shortcuts_navigation.coffee1
-rw-r--r--app/assets/stylesheets/generic/mobile.scss24
-rw-r--r--app/assets/stylesheets/pages/projects.scss73
-rw-r--r--app/controllers/projects_controller.rb26
-rw-r--r--app/helpers/gitlab_routing_helper.rb4
-rw-r--r--app/helpers/projects_helper.rb54
-rw-r--r--app/views/help/_shortcuts.html.haml6
-rw-r--r--app/views/layouts/nav/_project.html.haml7
-rw-r--r--app/views/projects/_aside.html.haml106
-rw-r--r--app/views/projects/_home_panel.html.haml57
-rw-r--r--app/views/projects/_section.html.haml36
-rw-r--r--app/views/projects/activity.html.haml13
-rw-r--r--app/views/projects/buttons/_fork.html.haml13
-rw-r--r--app/views/projects/buttons/_star.html.haml21
-rw-r--r--app/views/projects/empty.html.haml34
-rw-r--r--app/views/projects/show.html.haml73
-rw-r--r--app/views/shared/_clone_panel.html.haml2
19 files changed, 244 insertions, 324 deletions
diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
index a8ec0abc264..8ceaef81a07 100644
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ b/app/assets/javascripts/dispatcher.js.coffee
@@ -62,9 +62,11 @@ class Dispatcher
shortcut_handler = new ShortcutsNavigation()
when 'projects:commits:show'
shortcut_handler = new ShortcutsNavigation()
- when 'projects:show'
+ when 'projects:activity'
new Activities()
shortcut_handler = new ShortcutsNavigation()
+ when 'projects:show'
+ shortcut_handler = new ShortcutsNavigation()
when 'groups:show'
new Activities()
shortcut_handler = new ShortcutsNavigation()
diff --git a/app/assets/javascripts/project_show.js.coffee b/app/assets/javascripts/project_show.js.coffee
index 6828ae471e5..1fdf28f2528 100644
--- a/app/assets/javascripts/project_show.js.coffee
+++ b/app/assets/javascripts/project_show.js.coffee
@@ -1,15 +1,3 @@
class @ProjectShow
constructor: ->
- $('.project-home-panel .star').on 'ajax:success', (e, data, status, xhr) ->
- $(@).toggleClass('on').find('.count').html(data.star_count)
- .on 'ajax:error', (e, xhr, status, error) ->
- new Flash('Star toggle failed. Try again later.', 'alert')
-
- $("a[data-toggle='tab']").on "shown.bs.tab", (e) ->
- $.cookie "default_view", $(e.target).attr("href"), { expires: 30, path: '/' }
-
- defaultView = $.cookie("default_view")
- if defaultView
- $("a[href=" + defaultView + "]").tab "show"
- else
- $("a[data-toggle='tab']:first").tab "show"
+ # I kept class for future
diff --git a/app/assets/javascripts/shortcuts_navigation.coffee b/app/assets/javascripts/shortcuts_navigation.coffee
index 31895fbf2bc..5b6f9e7e3f2 100644
--- a/app/assets/javascripts/shortcuts_navigation.coffee
+++ b/app/assets/javascripts/shortcuts_navigation.coffee
@@ -4,6 +4,7 @@ class @ShortcutsNavigation extends Shortcuts
constructor: ->
super()
Mousetrap.bind('g p', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-project'))
+ Mousetrap.bind('g e', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-project-activity'))
Mousetrap.bind('g f', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-tree'))
Mousetrap.bind('g c', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-commits'))
Mousetrap.bind('g n', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-network'))
diff --git a/app/assets/stylesheets/generic/mobile.scss b/app/assets/stylesheets/generic/mobile.scss
index a49775daf8b..24c828e0d97 100644
--- a/app/assets/stylesheets/generic/mobile.scss
+++ b/app/assets/stylesheets/generic/mobile.scss
@@ -44,20 +44,18 @@
.project-home-panel {
padding-left: 0 !important;
- .project-home-row {
- .project-home-desc {
- margin-right: 0 !important;
- float: none !important;
- }
-
- .project-repo-buttons {
- position: static;
- margin-top: 15px;
- width: 100%;
- float: none;
- text-align: left;
- }
+ .project-avatar {
+ display: block;
}
+
+ .project-repo-buttons,
+ .git-clone-holder {
+ display: none;
+ }
+ }
+
+ .project-stats {
+ display: none;
}
.container .title {
diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss
index e19b2eafa43..5f415f2d78f 100644
--- a/app/assets/stylesheets/pages/projects.scss
+++ b/app/assets/stylesheets/pages/projects.scss
@@ -15,48 +15,31 @@
}
.project-home-panel {
- margin-top: 10px;
- margin-bottom: 15px;
- position: relative;
- padding-left: 65px;
- min-height: 50px;
+ text-align: center;
+ margin-bottom: 20px;
.project-identicon-holder {
- position: absolute;
- left: 0;
- top: -14px;
+ margin-bottom: 15px;
- .avatar {
- width: 50px;
- height: 50px;
+ .avatar, .identicon {
+ margin: 0 auto;
+ float: none;
}
.identicon {
- font-size: 26px;
- line-height: 50px;
+ @include border-radius(50%);
}
}
- .project-home-row {
- @extend .clearfix;
- margin-bottom: 15px;
-
- &.project-home-row-top {
- margin-bottom: 15px;
+ .lead {
+ p {
+ display: inline;
}
+ }
- .project-home-desc {
- color: $gray;
- float: left;
- font-size: 16px;
- line-height: 1.3;
- margin-right: 250px;
-
- // Render Markdown-generated HTML inline for this block
- p {
- display: inline;
- }
- }
+ .git-clone-holder {
+ max-width: 600px;
+ margin: 0 auto;
}
.visibility-level-label {
@@ -67,22 +50,22 @@
}
.project-repo-buttons {
- margin-top: -3px;
- position: absolute;
- right: 0;
- width: 265px;
- text-align: right;
+ margin-top: 25px;
+ margin-bottom: 25px;
.btn {
+ @extend .btn-info;
+
+ margin-left: 10px;
font-weight: bold;
font-size: 14px;
line-height: 16px;
+ padding: 8px 12px;
.count {
- padding-left: 10px;
- border-left: 1px solid #ccc;
+ padding-left: 7px;
display: inline-block;
- margin-left: 10px;
+ margin-left: 7px;
}
}
}
@@ -307,3 +290,15 @@ table.table.protected-branches-list tr.no-border {
float: left;
margin-right: 10px;
}
+
+.project-stats {
+ text-align: center;
+
+ ul.nav-pills { display:inline-block; }
+ li { display:inline; }
+ a { float:left; }
+}
+
+pre.light-well {
+ border-color: #f1f1f1;
+}
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index be5968cd7b0..be85521ffa5 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -6,7 +6,7 @@ class ProjectsController < ApplicationController
# Authorize
before_action :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer, :archive, :unarchive]
- before_action :event_filter, only: :show
+ before_action :event_filter, only: [:show, :activity]
layout :determine_layout
@@ -59,14 +59,22 @@ class ProjectsController < ApplicationController
end
end
+ def activity
+ respond_to do |format|
+ format.html
+ format.json do
+ load_events
+ pager_json('events/_events', @events.count)
+ end
+ end
+ end
+
def show
if @project.import_in_progress?
redirect_to namespace_project_import_path(@project.namespace, @project)
return
end
- @show_star = !(current_user && current_user.starred?(@project))
-
respond_to do |format|
format.html do
if @project.repository_exists?
@@ -81,11 +89,6 @@ class ProjectsController < ApplicationController
end
end
- format.json do
- load_events
- pager_json('events/_events', @events.count)
- end
-
format.atom do
load_events
render layout: false
@@ -147,11 +150,14 @@ class ProjectsController < ApplicationController
def toggle_star
current_user.toggle_star(@project)
@project.reload
- render json: { star_count: @project.star_count }
+
+ render json: {
+ html: view_to_html_string("projects/buttons/_star")
+ }
end
def markdown_preview
- text = params[:text]
+ text = params[:text]
ext = Gitlab::ReferenceExtractor.new(@project, current_user)
ext.analyze(text)
diff --git a/app/helpers/gitlab_routing_helper.rb b/app/helpers/gitlab_routing_helper.rb
index 9d072f81092..d0fae255a04 100644
--- a/app/helpers/gitlab_routing_helper.rb
+++ b/app/helpers/gitlab_routing_helper.rb
@@ -17,6 +17,10 @@ module GitlabRoutingHelper
namespace_project_path(project.namespace, project, *args)
end
+ def activity_project_path(project, *args)
+ activity_namespace_project_path(project.namespace, project, *args)
+ end
+
def edit_project_path(project, *args)
edit_namespace_project_path(project.namespace, project, *args)
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index ec65e473919..1bcd9a49527 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -84,53 +84,6 @@ module ProjectsHelper
@project.milestones.active.order("due_date, title ASC")
end
- def link_to_toggle_star(title, starred)
- cls = 'star-btn btn btn-sm btn-default'
-
- toggle_text =
- if starred
- ' Unstar'
- else
- ' Star'
- end
-
- toggle_html = content_tag('span', class: 'toggle') do
- icon('star') + toggle_text
- end
-
- count_html = content_tag('span', class: 'count') do
- @project.star_count.to_s
- end
-
- link_opts = {
- title: title,
- class: cls,
- method: :post,
- remote: true,
- data: { type: 'json' }
- }
-
- path = toggle_star_namespace_project_path(@project.namespace, @project)
-
- content_tag 'span', class: starred ? 'turn-on' : 'turn-off' do
- link_to(path, link_opts) do
- toggle_html + ' ' + count_html
- end
- end
- end
-
- def link_to_toggle_fork
- html = content_tag('span') do
- icon('code-fork') + ' Fork'
- end
-
- count_html = content_tag(:span, class: 'count') do
- @project.forks_count.to_s
- end
-
- html + count_html
- end
-
def project_for_deploy_key(deploy_key)
if deploy_key.projects.include?(@project)
@project
@@ -306,4 +259,11 @@ module ProjectsHelper
def leave_project_message(project)
"Are you sure you want to leave \"#{project.name}\" project?"
end
+
+ def new_readme_path
+ ref = @repository.root_ref if @repository
+ ref ||= 'master'
+
+ namespace_project_new_blob_path(@project.namespace, @project, tree_join(ref), file_name: 'README.md')
+ end
end
diff --git a/app/views/help/_shortcuts.html.haml b/app/views/help/_shortcuts.html.haml
index 825acb0ae3e..e809d99ba71 100644
--- a/app/views/help/_shortcuts.html.haml
+++ b/app/views/help/_shortcuts.html.haml
@@ -80,6 +80,12 @@
.key g
.key p
%td
+ Go to the project's home page
+ %tr
+ %td.shortcut
+ .key g
+ .key e
+ %td
Go to the project's activity feed
%tr
%td.shortcut
diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml
index 6de97302dc1..2012478eba9 100644
--- a/app/views/layouts/nav/_project.html.haml
+++ b/app/views/layouts/nav/_project.html.haml
@@ -1,9 +1,14 @@
%ul.nav.nav-sidebar
= nav_link(path: 'projects#show', html_options: {class: 'home'}) do
= link_to project_path(@project), title: 'Project', class: 'shortcuts-project', data: {placement: 'right'} do
- = icon('dashboard fw')
+ = icon('home fw')
%span
Project
+ = nav_link(path: 'projects#activity') do
+ = link_to activity_project_path(@project), title: 'Project Activity', class: 'shortcuts-project-activity', data: {placement: 'right'} do
+ = icon('dashboard fw')
+ %span
+ Activity
- if project_nav_tab? :files
= nav_link(controller: %w(tree blob blame edit_tree new_tree)) do
= link_to namespace_project_tree_path(@project.namespace, @project, @ref || @repository.root_ref), title: 'Files', class: 'shortcuts-tree', data: {placement: 'right'} do
diff --git a/app/views/projects/_aside.html.haml b/app/views/projects/_aside.html.haml
deleted file mode 100644
index 72aea8814f5..00000000000
--- a/app/views/projects/_aside.html.haml
+++ /dev/null
@@ -1,106 +0,0 @@
-.clearfix
- - unless @project.empty_repo?
- .panel.panel-default
- .panel-heading
- = visibility_level_icon(@project.visibility_level)
- = "#{visibility_level_label(@project.visibility_level).capitalize} project"
-
- .panel-body
- - if @repository.changelog || @repository.license || @repository.contribution_guide
- %ul.nav.nav-pills
- - if @repository.changelog
- %li.hidden-xs
- = link_to changelog_url(@project) do
- Changelog
- - if @repository.license
- %li
- = link_to license_url(@project) do
- License
- - if @repository.contribution_guide
- %li
- = link_to contribution_guide_url(@project) do
- Contribution guide
-
- .actions
- - if can? current_user, :create_issue, @project
- = link_to url_for_new_issue(@project, only_path: true), title: "New Issue", class: 'btn btn-sm append-right-10' do
- New Issue
-
- - if can? current_user, :create_merge_request, @project
- = link_to new_namespace_project_merge_request_path(@project.namespace, @project), class: "btn btn-sm", title: "New Merge Request" do
- New Merge Request
-
- - if forked_from_project = @project.forked_from_project
- .panel-footer
- = icon("code-fork fw")
- Forked from
- .pull-right
- = link_to forked_from_project.namespace.try(:name), project_path(forked_from_project)
-
-
- - @project.ci_services.each do |ci_service|
- - if ci_service.active? && ci_service.respond_to?(:builds_path)
- .panel-footer
- = icon("check fw")
- = ci_service.title
- .pull-right
- - if ci_service.respond_to?(:status_img_path)
- = link_to ci_service.builds_path, :'data-no-turbolink' => 'data-no-turbolink' do
- = image_tag ci_service.status_img_path, alt: "build status", class: 'ci-status-image'
- - else
- = link_to 'view builds', ci_service.builds_path, :'data-no-turbolink' => 'data-no-turbolink'
-
-
- - unless @project.empty_repo?
- .panel.panel-default
- .panel-heading
- = icon("folder-o fw")
- Repository
- .panel-body
- %ul.nav.nav-pills
- %li
- = link_to namespace_project_commits_path(@project.namespace, @project, @ref || @repository.root_ref) do
- = pluralize(number_with_delimiter(@repository.commit_count), 'commit')
- %li
- = link_to namespace_project_branches_path(@project.namespace, @project) do
- = pluralize(number_with_delimiter(@repository.branch_names.count), 'branch')
- %li
- = link_to namespace_project_tags_path(@project.namespace, @project) do
- = pluralize(number_with_delimiter(@repository.tag_names.count), 'tag')
-
- .actions
- = link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: @ref || @repository.root_ref), class: 'btn btn-sm append-right-10' do
- %i.fa.fa-exchange
- Compare code
-
- - if can?(current_user, :download_code, @project)
- = render 'projects/repositories/download_archive', split_button: true, btn_class: 'btn-group-sm'
- - if version = @repository.version
- .panel-footer
- = icon("clock-o fw")
- Version
- .pull-right
- = link_to version_url(@project) do
- = @repository.blob_by_oid(version.id).data
-
- = render "shared/clone_panel"
-
- - if @project.archived?
- %br
- .alert.alert-warning
- %h4
- = icon("exclamation-triangle fw")
- Archived project!
- %p Repository is read-only
-
- - if current_user
- - access = user_max_access_in_project(current_user, @project)
- - if access
- .light-well.light.prepend-top-20
- %small
- You have #{access} access to this project.
- - if @project.project_member_by_id(current_user)
- %br
- = link_to leave_namespace_project_project_members_path(@project.namespace, @project),
- data: { confirm: leave_project_message(@project) }, method: :delete, title: 'Leave project' do
- Leave this project
diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml
index 076afb11a9d..95c84c96c41 100644
--- a/app/views/projects/_home_panel.html.haml
+++ b/app/views/projects/_home_panel.html.haml
@@ -1,37 +1,26 @@
- empty_repo = @project.empty_repo?
.project-home-panel.clearfix{:class => ("empty-project" if empty_repo)}
.project-identicon-holder
- = project_icon(@project, alt: '', class: 'avatar project-avatar')
- .project-home-row.project-home-row-top
- .project-home-desc
- - if @project.description.present?
- = markdown(@project.description, pipeline: :description)
- - if can?(current_user, :admin_project, @project)
- &ndash;
- = link_to 'Edit', edit_namespace_project_path
- - elsif !empty_repo && @repository.readme
- - readme = @repository.readme
- &ndash;
- = link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@repository.root_ref, readme.name)) do
- = readme.name
- .project-repo-buttons
- .inline.star.js-toggler-container{class: @show_star ? 'on' : ''}
- - if current_user
- = link_to_toggle_star('Star this project.', false)
- = link_to_toggle_star('Unstar this project.', true)
- - else
- = link_to new_user_session_path, class: 'btn star-btn has_tooltip', title: 'You must sign in to star a project' do
- %span
- = icon('star')
- Star
- %span.count
- = @project.star_count
- - unless empty_repo
- - if current_user && can?(current_user, :fork_project, @project) && @project.namespace != current_user.namespace
- .inline.fork-buttons.prepend-left-10
- - if current_user.already_forked?(@project) && current_user.manageable_namespaces.size < 2
- = link_to namespace_project_path(current_user, current_user.fork_of(@project)), title: 'Go to your fork', class: 'btn btn-sm btn-default' do
- = link_to_toggle_fork
- - else
- = link_to new_namespace_project_fork_path(@project.namespace, @project), title: "Fork project", class: 'btn btn-sm btn-default' do
- = link_to_toggle_fork
+ = project_icon(@project, alt: '', class: 'project-avatar avatar s90')
+ .project-home-desc.lead
+ - if @project.description.present?
+ = markdown(@project.description, pipeline: :description)
+
+
+ .project-repo-buttons
+ = render 'projects/buttons/star'
+
+ - unless empty_repo
+ = render 'projects/buttons/fork'
+
+ - if forked_from_project = @project.forked_from_project
+ = link_to project_path(forked_from_project), class: 'btn' do
+ = icon("code-fork fw")
+ Forked from
+ = forked_from_project.namespace.try(:name)
+
+ - if can? current_user, :download_code, @project
+ = link_to archive_namespace_project_repository_path(@project.namespace, @project, ref: @ref, format: 'zip'), class: 'btn', rel: 'nofollow' do
+ %i.fa.fa-download
+
+ = render "shared/clone_panel"
diff --git a/app/views/projects/_section.html.haml b/app/views/projects/_section.html.haml
deleted file mode 100644
index d7b06197f67..00000000000
--- a/app/views/projects/_section.html.haml
+++ /dev/null
@@ -1,36 +0,0 @@
-%ul.nav.nav-tabs
- %li.active
- = link_to '#tab-activity', 'data-toggle' => 'tab' do
- = icon("tachometer")
- Activity
- - if @repository.readme
- %li
- = link_to '#tab-readme', 'data-toggle' => 'tab' do
- = icon("file-text-o")
- Readme
-.tab-content
- .tab-pane.active#tab-activity
- .hidden-xs
- = render "events/event_last_push", event: @last_push
-
- - if current_user
- %ul.nav.nav-pills.event_filter.pull-right
- %li
- = link_to namespace_project_path(@project.namespace, @project, format: :atom, private_token: current_user.private_token), title: "Feed", class: 'rss-btn' do
- %i.fa.fa-rss
-
- = render 'shared/event_filter'
- %hr
- .content_list
- = spinner
-
- - if readme = @repository.readme
- .tab-pane#tab-readme
- %article.readme-holder#README
- .clearfix
- %small.pull-right
- = link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@repository.root_ref, readme.name)), class: 'light' do
- %i.fa.fa-file
- = readme.name
- .wiki
- = render_readme(readme)
diff --git a/app/views/projects/activity.html.haml b/app/views/projects/activity.html.haml
new file mode 100644
index 00000000000..25bd93cae87
--- /dev/null
+++ b/app/views/projects/activity.html.haml
@@ -0,0 +1,13 @@
+.hidden-xs
+ = render "events/event_last_push", event: @last_push
+
+ - if current_user
+ %ul.nav.nav-pills.event_filter.pull-right
+ %li
+ = link_to namespace_project_path(@project.namespace, @project, format: :atom, private_token: current_user.private_token), title: "Feed", class: 'rss-btn' do
+ %i.fa.fa-rss
+
+ = render 'shared/event_filter'
+ %hr
+.content_list
+= spinner
diff --git a/app/views/projects/buttons/_fork.html.haml b/app/views/projects/buttons/_fork.html.haml
new file mode 100644
index 00000000000..f0483c79edc
--- /dev/null
+++ b/app/views/projects/buttons/_fork.html.haml
@@ -0,0 +1,13 @@
+- if current_user && can?(current_user, :fork_project, @project)
+ - if current_user.already_forked?(@project) && current_user.manageable_namespaces.size < 2
+ = link_to namespace_project_path(current_user, current_user.fork_of(@project)), title: 'Go to your fork', class: 'btn' do
+ = icon('code-fork')
+ Fork
+ %span.count
+ = @project.forks_count
+ - else
+ = link_to new_namespace_project_fork_path(@project.namespace, @project), title: "Fork project", class: 'btn' do
+ = icon('code-fork')
+ Fork
+ %span.count
+ = @project.forks_count
diff --git a/app/views/projects/buttons/_star.html.haml b/app/views/projects/buttons/_star.html.haml
new file mode 100644
index 00000000000..664ebd18295
--- /dev/null
+++ b/app/views/projects/buttons/_star.html.haml
@@ -0,0 +1,21 @@
+- if current_user
+ = link_to toggle_star_namespace_project_path(@project.namespace, @project), class: 'btn star-btn toggle-star', method: :post, remote: true do
+ - if current_user.starred?(@project)
+ Unstar
+ - else
+ Star
+ %span.count
+ = @project.star_count
+
+ :coffeescript
+ $('.project-home-panel .toggle-star').on 'ajax:success', (e, data, status, xhr) ->
+ $(@).replaceWith(data.html)
+ .on 'ajax:error', (e, xhr, status, error) ->
+ new Flash('Star toggle failed. Try again later.', 'alert')
+
+- else
+ = link_to new_user_session_path, class: 'btn has_tooltip star-btn', title: 'You must sign in to star a project' do
+ = icon('star')
+ Star
+ %span.count
+ = @project.star_count
diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml
index 8080a904978..dfe45a3802d 100644
--- a/app/views/projects/empty.html.haml
+++ b/app/views/projects/empty.html.haml
@@ -4,30 +4,30 @@
= render "home_panel"
-.center.well
- %h3
+.center.light-well
+ %h3.page-title
The repository for this project is empty
- %h4
- You can
- = link_to namespace_project_new_blob_path(@project.namespace, @project, 'master'), class: 'btn btn-new btn-lg' do
- add a file
- &nbsp;or do a push via the command line.
+ %p
+ If you already have files you can push them using command line instructions below.
+ %br
+ Otherwise you can start with
+ = link_to "adding README", new_readme_path, class: 'underlined-link'
+ file to this project.
-.well
- = render "shared/clone_panel"
-%h4
- %strong Command line instructions
+.prepend-top-20
+%h3.page-title
+ Command line instructions
%div.git-empty
%fieldset
- %legend Git global setup
- %pre.dark
+ %h5 Git global setup
+ %pre.light-well
:preserve
git config --global user.name "#{git_user_name}"
git config --global user.email "#{git_user_email}"
%fieldset
- %legend Create a new repository
- %pre.dark
+ %h5 Create a new repository
+ %pre.light-well
:preserve
git clone #{ content_tag(:span, default_url_to_repo, class: 'clone')}
cd #{@project.path}
@@ -37,8 +37,8 @@
git push -u origin master
%fieldset
- %legend Existing folder or Git repository
- %pre.dark
+ %h5 Existing folder or Git repository
+ %pre.light-well
:preserve
cd existing_folder
git init
diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml
index 2259dea0865..17907a42e3c 100644
--- a/app/views/projects/show.html.haml
+++ b/app/views/projects/show.html.haml
@@ -7,10 +7,71 @@
= render 'shared/no_password'
= render "home_panel"
-= render 'shared/show_aside'
-.row
- %section.col-md-8
- = render 'section'
- %aside.col-md-4.project-side
- = render 'aside'
+.project-stats
+ %ul.nav.nav-pills
+ %li
+ = link_to namespace_project_commits_path(@project.namespace, @project, @ref || @repository.root_ref) do
+ = pluralize(number_with_delimiter(@repository.commit_count), 'commit')
+ %li
+ = link_to namespace_project_branches_path(@project.namespace, @project) do
+ = pluralize(number_with_delimiter(@repository.branch_names.count), 'branch')
+ %li
+ = link_to namespace_project_tags_path(@project.namespace, @project) do
+ = pluralize(number_with_delimiter(@repository.tag_names.count), 'tag')
+ - if @repository.changelog
+ %li
+ = link_to changelog_url(@project) do
+ Changelog
+ - if @repository.license
+ %li
+ = link_to license_url(@project) do
+ License
+ - if @repository.contribution_guide
+ %li
+ = link_to contribution_guide_url(@project) do
+ Contribution guide
+
+- if @project.archived?
+ .text-warning.center.prepend-top-20
+ %p
+ = icon("exclamation-triangle fw")
+ Archived project! Repository is read-only
+
+%hr
+%section
+ - if readme = @repository.readme
+ %article.readme-holder#README
+ .clearfix
+ %small.pull-right
+ = link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@repository.root_ref, readme.name)), class: 'light' do
+ %i.fa.fa-file
+ = readme.name
+ .wiki
+ = render_readme(readme)
+ - else
+ %h3.page-title
+ This project does not have README yet
+ - if can?(current_user, :push_code, @project)
+ %p.slead
+ A
+ %code README
+ file contains information about other files in a repository and is commonly
+ distributed with computer software, forming part of its documentation.
+ %br
+ We recommend you to
+ = link_to "add README", new_readme_path, class: 'underlined-link'
+ file to the repository and GitLab will render it here instead of this message.
+
+
+
+- if current_user
+ - access = user_max_access_in_project(current_user, @project)
+ - if access
+ %hr
+ %p.light
+ You have #{access} access to this project.
+ - if @project.project_member_by_id(current_user)
+ = link_to leave_namespace_project_project_members_path(@project.namespace, @project),
+ data: { confirm: leave_project_message(@project) }, method: :delete, title: 'Leave project', class: 'cred' do
+ Leave this project
diff --git a/app/views/shared/_clone_panel.html.haml b/app/views/shared/_clone_panel.html.haml
index 6de2aed29ed..07672359dba 100644
--- a/app/views/shared/_clone_panel.html.haml
+++ b/app/views/shared/_clone_panel.html.haml
@@ -20,7 +20,7 @@
:"data-container" => "body"}
= gitlab_config.protocol.upcase
= text_field_tag :project_clone, default_url_to_repo(project), class: "js-select-on-focus form-control input-sm", readonly: true
- - if project.kind_of?(Project) && project.empty_repo?
+ - if project.kind_of?(Project)
.input-group-addon
.visibility-level-label.has_tooltip{'data-title' => "#{visibility_level_label(project.visibility_level)} project" }
= visibility_level_icon(project.visibility_level)