You can manage projects, users and other GitLab data from here.
%hr
.admin_dash.row
- .span4
+ .col-md-4
.light-well
%h4 Projects
.data
%h1= Project.count
%hr
= link_to 'New Project', new_project_path, class: "btn btn-new"
- .span4
+ .col-md-4
.light-well
%h4 Users
.data
%h1= User.count
%hr
= link_to 'New User', new_admin_user_path, class: "btn btn-new"
- .span4
+ .col-md-4
.light-well
%h4 Groups
.data
= link_to 'New Group', new_admin_group_path, class: "btn btn-new"
.row.prepend-top-10
- .span4
+ .col-md-4
%h4 Latest projects
%hr
- @projects.each do |project|
%span.light.pull-right
#{time_ago_with_tooltip(project.created_at)}
- .span4
+ .col-md-4
%h4 Latest users
%hr
- @users.each do |user|
%span.light.pull-right
#{time_ago_with_tooltip(user.created_at)}
- .span4
+ .col-md-4
%h4 Latest groups
%hr
- @groups.each do |group|
%br
.row
- .span4
+ .col-md-4
%h4 Stats
%hr
%p
Milestones
%span.light.pull-right
= Milestone.count
- .span4
+ .col-md-4
%h4
Features
%hr
OmniAuth
%span.light.pull-right
= boolean_to_icon Gitlab.config.omniauth.enabled
- .span4
+ .col-md-4
%h4 Components
%hr
%p
Edit
%hr
.row
- .span6
+ .col-md-6
.ui-box
.title
Group info:
%span.pull-right.light
%span.monospace= project.path_with_namespace + ".git"
- .span6
+ .col-md-6
.ui-box
.title
Add user(s) to the group:
.row
- .span4
+ .col-md-4
.admin-filter
= form_tag admin_projects_path, method: :get, class: 'form-inline' do
.control-group
.form-actions
= submit_tag "Search", class: "btn submit btn-primary"
= link_to "Reset", admin_projects_path, class: "btn"
- .span8
+ .col-md-8
.ui-box
.title
Projects (#{@projects.total_count})
Edit
%hr
.row
- .span6
+ .col-md-6
.ui-box
.title
Project info:
.controls
= f.submit 'Transfer', class: 'btn btn-primary'
- .span6
+ .col-md-6
- if @group
.ui-box
.title
%fieldset
%legend Access
.row
- .span8
+ .col-md-8
.control-group
= f.label :projects_limit
.controls= f.number_field :projects_limit
= f.label :admin do
%strong.cred Administrator
.controls= f.check_box :admin
- .span4
+ .col-md-4
- unless @user.new_record?
.alert.alert-error
- if @user.blocked?
.row
- .span3
+ .col-md-3
.admin-filter
= form_tag admin_users_path, method: :get, class: 'form-inline' do
= search_field_tag :name, params[:name], placeholder: 'Name, email or username', class: 'input-xpadding span2'
%hr
= link_to 'Reset', admin_users_path, class: "btn btn-cancel"
- .span9
+ .col-md-9
.ui-box
.title
Users (#{@users.total_count})
%hr
.row
- .span6
+ .col-md-6
.ui-box
.title
Account:
%strong #{@user.solo_owned_groups.map(&:name).join(', ')}
= link_to 'Remove user', [:admin, @user], data: { confirm: "USER #{@user.name} WILL BE REMOVED! Are you sure?" }, method: :delete, class: "btn btn-remove"
- .span6
+ .col-md-6
- if @user.users_groups.present?
.ui-box
.title Groups:
%hr
.row
- .span3
+ .col-md-3
= render 'shared/filter', entity: 'issue'
- .span9
+ .col-md-9
= render 'shared/issues'
List all merge requests from all project's you have access to.
%hr
.row
- .span3
+ .col-md-3
= render 'shared/filter', entity: 'merge_request'
- .span9
+ .col-md-9
= render 'shared/merge_requests'
All projects you have access to are listed here. Public projects are not included here unless you are a member
%hr
.row
- .span3
+ .col-md-3
%ul.nav.nav-pills.nav-stacked
= nav_tab :scope, nil do
= link_to projects_dashboard_filter_path(scope: nil) do
%i.icon-tag
= label.name
- .span9
+ .col-md-9
%ul.bordered-list.my-projects.top-list
- @projects.each do |project|
%li.my-project-row
- if @has_authorized_projects
.dashboard
- .activities.span8
+ .activities.col-md-8
= render 'activities'
- .side.span4
+ .side.col-md-4
= render 'sidebar'
- else
.row
- .span2
+ .col-md-2
%ul.nav.nav-pills.nav-stacked.nav-stacked-menu
%li.active
= link_to '#tab-edit', 'data-toggle' => 'tab' do
%li
= link_to 'Remove', '#tab-remove', 'data-toggle' => 'tab'
- .span10
+ .col-md-10
.tab-content
.tab-pane.active#tab-edit
.ui-box
%hr
.row
- .span3
+ .col-md-3
= render 'shared/filter', entity: 'issue'
- .span9
+ .col-md-9
= render 'shared/issues'
group. To see all merge requests you should visit #{link_to 'dashboard', merge_requests_dashboard_path} page.
%hr
.row
- .span3
+ .col-md-3
= render 'shared/filter', entity: 'merge_request'
- .span9
+ .col-md-9
= render 'shared/merge_requests'
.dashboard
- .activities.span8
+ .activities.col-md-8
= render "events/event_last_push", event: @last_push
= link_to dashboard_path, class: 'btn btn-tiny' do
← To dashboard
- else
%p.nothing_here_message Project activity will be displayed here
.loading.hide
- .side.span4
+ .side.col-md-4
- if @group.description.present?
.description-block
= @group.description
.row
- .span3
+ .col-md-3
.append-bottom-20
= link_to help_path, class: 'btn btn-small' do
%i.icon-angle-left
%li{class: file == @category ? 'active' : nil}
= link_to file.titleize, help_api_file_path(file)
- .span9.pull-right
+ .col-md-9.pull-right
= yield
.row
- .span3{:"data-spy" => 'affix'}
+ .col-md-3{:"data-spy" => 'affix'}
%h3.page-title Help
%ul.nav.nav-pills.nav-stacked
- links = {:"Workflow" => help_workflow_path, :"SSH Keys" => help_ssh_path, :"GitLab Markdown" => help_markdown_path, :"Permissions" => help_permissions_path, :"API" => help_api_path, :"Web Hooks" => help_web_hooks_path, :"Rake Tasks" => help_raketasks_path, :"System Hooks" => help_system_hooks_path, :"Public Access" => help_public_access_path, :"Security" => help_security_path}
%li{class: current_page?(path) ? 'active' : nil}
= link_to title, path
- .span9.pull-right
+ .col-md-9.pull-right
= yield
Read more about GitLab at #{link_to "gitlab.org", "http://gitlab.org/", target: "_blank"}.
.row
- .span4
+ .col-md-4
.ui-box
.title
Quick help
Browse our
= link_to "issue tracker", "https://github.com/gitlabhq/gitlabhq/issues"
- .span4
+ .col-md-4
.ui-box
.title
User documentation
%strong= link_to "Web Hooks", help_web_hooks_path
%p Let GitLab notify you when new code has been pushed to your project.
- .span4
+ .col-md-4
.ui-box
.title
Admin documentation
.container
.content
.row
- .span2
+ .col-md-2
= render "projects/settings_nav"
- .span10
+ .col-md-10
= yield
.row
- .span4
+ .col-md-4
.ui-box
.title
SSH Key
%span.light Created on:
%strong= @key.created_at.stamp("Aug 21, 2011")
- .span8
+ .col-md-8
%p
%span.light Fingerprint:
%strong= @key.fingerprint
%li
.row
- .span4
+ .col-md-4
%span
= notification_icon(notification)
= link_to membership.group.name, membership.group
- else
= link_to_project(membership.project)
- .span7
+ .col-md-7
= form_tag profile_notifications_path, method: :put, remote: true, class: 'update-notifications' do
= hidden_field_tag :notification_type, type, id: dom_id(membership, 'notification_type')
= hidden_field_tag :notification_id, membership.id, id: dom_id(membership, 'notification_id')
– You will receive all notifications from projects in which you participate
.row
- .span4
+ .col-md-4
%h4
= notification_icon(@notification)
Global setting
- .span7
+ .col-md-7
= form_tag profile_notifications_path, method: :put, remote: true, class: 'update-notifications' do
= hidden_field_tag :notification_type, 'global'
- @user.errors.full_messages.each do |msg|
%li= msg
.row
- .span7
+ .col-md-7
.control-group
= f.label :name, class: "control-label"
.controls
= f.text_area :bio, rows: 6, class: "input-xlarge", maxlength: 250
%span.help-block Tell us about yourself in fewer than 250 characters.
- .span5.pull-right
+ .col-md-5.pull-right
.light-well
= image_tag avatar_icon(@user.email, 160), alt: '', class: 'avatar s160'
- empty_repo = @project.empty_repo?
.project-home-panel{:class => ("empty-project" if empty_repo)}
.row
- .span6
+ .col-md-6
%h4.project-home-title
= @project.name_with_namespace
%span.visibility-level-label
= visibility_level_icon(@project.visibility_level)
= visibility_level_label(@project.visibility_level)
- .span6
+ .col-md-6
- unless empty_repo
.project-home-dropdown
= render "dropdown"
= render "shared/clone_panel"
.project-home-extra.clearfix.row
- .project-home-desc.span8
+ .project-home-desc.col-md-8
- if @project.description.present?
= @project.description
- if can?(current_user, :admin_project, @project)
= render "projects/commits/head"
.row
- .span3
+ .col-md-3
= render "filter"
- .span9
+ .col-md-9
- unless @branches.empty?
%ul.bordered-list.top-list
- @branches.each do |branch|
= render "projects/branches/branch", branch: branch
- = paginate @branches, theme: 'gitlab'
\ No newline at end of file
+ = paginate @branches, theme: 'gitlab'
= render "projects/commits/head"
.row
- .span3
+ .col-md-3
= render "filter"
- .span9
+ .col-md-9
%ul.bordered-list.top-list
- @branches.each do |branch|
- = render "projects/branches/branch", branch: branch
\ No newline at end of file
+ = render "projects/branches/branch", branch: branch
- @commits.group_by { |c| c.committed_date.to_date }.sort.reverse.each do |day, commits|
.row.commits-row
- .span2
+ .col-md-2
%h4
%i.icon-calendar
%span= day.stamp("28 Aug, 2010")
%p= pluralize(commits.count, 'commit')
- .span10
+ .col-md-10
%ul.well-list
= render commits, project: @project
%hr.lists-separator
%hr.clearfix
.row
- .span5.enabled-keys
+ .col-md-5.enabled-keys
%h5
%strong.cgreen Enabled deploy keys
for this project
- if @enabled_keys.blank?
.light-well
%p.nothing_here_message Create a #{link_to 'new deploy key', new_project_deploy_key_path(@project)} or add an existing one
- .span5.available-keys
+ .col-md-5.available-keys
%h5
%strong Deploy keys
from projects available to you
= render "head"
.row
- .span3
+ .col-md-3
= render 'shared/project_filter', project_entities_path: project_issues_path(@project)
- .span9.issues-holder
+ .col-md-9.issues-holder
= render "issues"
Edit
.pull-right
- .span3#votes= render 'votes/votes_block', votable: @issue
+ .col-md-3#votes= render 'votes/votes_block', votable: @issue
.back-link
= link_to project_issues_path(@project) do
.merge-request-branches
.row
- .span5
+ .col-md-5
.clearfix
.pull-left
= f.select(:source_project_id, [[@merge_request.source_project_path,@merge_request.source_project.id]] , {}, { class: 'source_project chosen span3', disabled: @merge_request.persisted? })
= f.select(:source_branch, @merge_request.source_project.repository.branch_names, { include_blank: "Select branch" }, {class: 'source_branch chosen span2'})
.mr_source_commit.prepend-top-10
- .span2
+ .col-md-2
%h2.merge-request-angle.light
%i.icon-long-arrow-right
- .span5
+ .col-md-5
.clearfix
.pull-left
- projects = @project.forked_from_project.nil? ? [@project] : [ @project,@project.forked_from_project]
.row
- .span3
+ .col-md-3
= render 'shared/project_filter', project_entities_path: project_merge_requests_path(@project)
- .span9
+ .col-md-9
.ui-box
.title
.mr-filters
Edit
.pull-right
- .span3#votes= render 'votes/votes_block', votable: @merge_request
+ .col-md-3#votes= render 'votes/votes_block', votable: @merge_request
.back-link
= link_to project_merge_requests_path(@project) do
- @milestone.errors.full_messages.each do |msg|
%li= msg
.row
- .span6
+ .col-md-6
.control-group
= f.label :title, "Title", class: "control-label"
.controls
.controls
= f.text_area :description, maxlength: 2000, class: "input-xlarge", rows: 10
%p.hint Milestones are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
- .span6
+ .col-md-6
.control-group
= f.label :due_date, "Due Date", class: "control-label"
.controls= f.hidden_field :due_date
New Milestone
.row
- .span3
+ .col-md-3
%ul.nav.nav-pills.nav-stacked
%li{class: ("active" if (params[:f] == "active" || !params[:f]))}
= link_to project_milestones_path(@project, f: "active") do
%li{class: ("active" if params[:f] == "all")}
= link_to project_milestones_path(@project, f: "all") do
All
- .span9
+ .col-md-9
.ui-box
%ul.well-list
= render @milestones
.tab-content
.tab-pane.active#tab-issues
.row
- .span4
+ .col-md-4
= render('issues', title: 'Unstarted Issues (open and unassigned)', issues: @issues.opened.unassigned)
- .span4
+ .col-md-4
= render('issues', title: 'Ongoing Issues (open and assigned)', issues: @issues.opened.assigned)
- .span4
+ .col-md-4
= render('issues', title: 'Completed Issues (closed)', issues: @issues.closed)
.tab-pane#tab-merge-requests
.row
- .span6
+ .col-md-6
.ui-box
.title Open
%ul.well-list
- @merge_requests.opened.each do |merge_request|
= render 'merge_request', merge_request: merge_request
- .span6
+ .col-md-6
.ui-box
.title Closed
%ul.well-list
= render "projects/commits/head"
.row
- .span3
+ .col-md-3
= render "projects/branches/filter"
- .span9
+ .col-md-9
.alert.alert-info
%p Protected branches designed to prevent push for all except #{link_to "masters", help_permissions_path, class: "vlink"}.
%p This ability allows:
.entry.clearfix
= f.label :name, "Branch"
- .span3
+ .col-md-3
= f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "chosen span3"})
= f.submit 'Protect', class: "btn-create btn"
= render "projects/commits/head"
.row
- .span6
+ .col-md-6
%div#activity-chart.chart
%hr
%p
%span= @stats.authors_count
- .span6
+ .col-md-6
%h4 Top 50 Committers:
%ol.styled
- @stats.authors[0...50].each do |author|
= render "home_panel"
.row
- .span9
+ .col-md-9
= render "events/event_last_push", event: @last_push
= render 'shared/event_filter'
.content_list
.loading.hide
- .span3.project-side
+ .col-md-3.project-side
.clearfix
- if @project.archived?
.alert
%hr
.row
- .span3
+ .col-md-3
%ul.nav.nav-pills.nav-stacked
= nav_tab :scope, nil do
= link_to user_snippets_path(@user) do
%span.pull-right
= @user.snippets.public.count
- .span9.my-snippets
+ .col-md-9.my-snippets
= render 'snippets'
.row
- .span8
+ .col-md-8
%h3.page-title
= image_tag avatar_icon(@user.email, 90), class: "avatar s90", alt: ''
= @user.name
%hr
%h4 User Activity:
= render @events
- .span4
+ .col-md-4
= render 'profile', user: @user
= render 'projects', user: @user