Merge branch 'master' into discussions
Conflicts: app/assets/stylesheets/main.scss app/models/project.rb app/views/notes/_common_form.html.haml app/views/notes/_per_line_form.html.haml lib/gitlab/markdown.rb spec/models/note_spec.rb
This commit is contained in:
commit
db2c15369c
276 changed files with 4466 additions and 2603 deletions
|
@ -1,12 +0,0 @@
|
|||
= form_for [:admin, @group] do |f|
|
||||
- if @group.errors.any?
|
||||
.alert-message.block-message.error
|
||||
%span= @group.errors.full_messages.first
|
||||
.clearfix.group_name_holder
|
||||
= f.label :name do
|
||||
Group name is
|
||||
.input
|
||||
= f.text_field :name, placeholder: "Example Group", class: "xxlarge"
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Save group', class: "btn save-btn"
|
|
@ -1,3 +1,28 @@
|
|||
%h3.page_title Edit Group
|
||||
%br
|
||||
= render 'form'
|
||||
%h3.page_title Rename Group
|
||||
%hr
|
||||
= form_for [:admin, @group] do |f|
|
||||
- if @group.errors.any?
|
||||
.alert-message.block-message.error
|
||||
%span= @group.errors.full_messages.first
|
||||
.clearfix.group_name_holder
|
||||
= f.label :name do
|
||||
Group name is
|
||||
.input
|
||||
= f.text_field :name, placeholder: "Example Group", class: "xxlarge"
|
||||
|
||||
|
||||
|
||||
.clearfix.group_name_holder
|
||||
= f.label :path do
|
||||
%span.cred Group path is
|
||||
.input
|
||||
= f.text_field :path, placeholder: "example-group", class: "xxlarge danger"
|
||||
%ul.cred
|
||||
%li Changing group path can have unintended side effects.
|
||||
%li Renaming group path will rename directory for all related projects
|
||||
%li It will change web url for access group and group projects.
|
||||
%li It will change the git path to repositories under this group.
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Rename group', class: "btn danger"
|
||||
= link_to 'Cancel', admin_groups_path, class: "btn cancel-btn"
|
||||
|
|
|
@ -12,17 +12,24 @@
|
|||
|
||||
%table
|
||||
%thead
|
||||
%th Name
|
||||
%th Path
|
||||
%th Projects
|
||||
%th Edit
|
||||
%th.cred Danger Zone!
|
||||
%tr
|
||||
%th
|
||||
Name
|
||||
%i.icon-sort-down
|
||||
%th Path
|
||||
%th Projects
|
||||
%th Owner
|
||||
%th.cred Danger Zone!
|
||||
|
||||
- @groups.each do |group|
|
||||
%tr
|
||||
%td= link_to group.name, [:admin, group]
|
||||
%td
|
||||
%strong= link_to group.name, [:admin, group]
|
||||
%td= group.path
|
||||
%td= group.projects.count
|
||||
%td= link_to 'Edit', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small"
|
||||
%td.bgred= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger"
|
||||
%td
|
||||
= link_to group.owner_name, admin_user_path(group.owner_id)
|
||||
%td.bgred
|
||||
= link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small"
|
||||
= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger"
|
||||
= paginate @groups, theme: "admin"
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
%h3.page_title
|
||||
Group: #{@group.name}
|
||||
= link_to edit_admin_group_path(@group), class: "btn right" do
|
||||
%i.icon-edit
|
||||
Edit
|
||||
|
||||
%br
|
||||
%table.zebra-striped
|
||||
|
@ -16,36 +13,64 @@
|
|||
Name:
|
||||
%td
|
||||
= @group.name
|
||||
|
||||
= link_to edit_admin_group_path(@group), class: "btn btn-small right" do
|
||||
%i.icon-edit
|
||||
Rename
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Path:
|
||||
%td
|
||||
%span.monospace= File.join(Gitlab.config.git_base_path, @group.path)
|
||||
%span.monospace= File.join(Gitlab.config.gitolite.repos_path, @group.path)
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Owner:
|
||||
%td
|
||||
= @group.owner_name
|
||||
.ui-box
|
||||
%h5
|
||||
Projects
|
||||
%small
|
||||
(#{@group.projects.count})
|
||||
%ul.unstyled
|
||||
.right
|
||||
= link_to "#", class: "btn btn-small change-owner-link" do
|
||||
%i.icon-edit
|
||||
Change owner
|
||||
|
||||
%tr.change-owner-holder.hide
|
||||
%td.bgred
|
||||
%b.cred
|
||||
New Owner:
|
||||
%td.bgred
|
||||
= form_for [:admin, @group] do |f|
|
||||
= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
|
||||
%div
|
||||
= f.submit 'Change Owner', class: "btn danger"
|
||||
= link_to "Cancel", "#", class: "btn change-owner-cancel-link"
|
||||
%fieldset
|
||||
%legend Projects (#{@group.projects.count})
|
||||
%table
|
||||
%thead
|
||||
%tr
|
||||
%th Project name
|
||||
%th Path
|
||||
%th Users
|
||||
%th.cred Danger Zone!
|
||||
- @group.projects.each do |project|
|
||||
%li.wll
|
||||
%strong
|
||||
= link_to project.name, [:admin, project]
|
||||
.right
|
||||
= link_to 'Remove from group', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Are you sure?', method: :delete, class: "btn danger small"
|
||||
.clearfix
|
||||
%tr
|
||||
%td
|
||||
= link_to project.name_with_namespace, [:admin, project]
|
||||
%td
|
||||
%span.monospace= project.path_with_namespace + ".git"
|
||||
%td= project.users.count
|
||||
%td.bgred
|
||||
= link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn danger small"
|
||||
|
||||
|
||||
= form_tag project_update_admin_group_path(@group), class: "bulk_import", method: :put do
|
||||
%fieldset
|
||||
%legend Move projects to group
|
||||
.alert
|
||||
You can move only projects with existing repos
|
||||
%br
|
||||
Group projects will be moved in group directory and will not be accessible by old path
|
||||
.clearfix
|
||||
= label_tag :project_ids do
|
||||
Projects
|
||||
|
@ -53,3 +78,17 @@
|
|||
= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
|
||||
.form-actions
|
||||
= submit_tag 'Add', class: "btn primary"
|
||||
|
||||
:javascript
|
||||
$(function(){
|
||||
var modal = $('.change-owner-holder');
|
||||
$('.change-owner-link').bind("click", function(){
|
||||
$(this).hide();
|
||||
modal.show();
|
||||
});
|
||||
$('.change-owner-cancel-link').bind("click", function(){
|
||||
modal.hide();
|
||||
$('.change-owner-link').show();
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
= link_to "githost.log", "#githost", 'data-toggle' => 'tab'
|
||||
%li
|
||||
= link_to "application.log", "#application", 'data-toggle' => 'tab'
|
||||
%li
|
||||
= link_to "production.log", "#production", 'data-toggle' => 'tab'
|
||||
|
||||
%p.light To prevent perfomance issues admin logs output the last 2000 lines
|
||||
.tab-content
|
||||
|
@ -34,3 +36,17 @@
|
|||
- Gitlab::AppLogger.read_latest.each do |line|
|
||||
%li
|
||||
%p= line
|
||||
.tab-pane#production
|
||||
.file_holder#README
|
||||
.file_title
|
||||
%i.icon-file
|
||||
production.log
|
||||
.right
|
||||
= link_to '#', class: 'log-bottom' do
|
||||
%i.icon-arrow-down
|
||||
Scroll down
|
||||
.file_content.logs
|
||||
%ol
|
||||
- Gitlab::Logger.read_latest_for('production.log').each do |line|
|
||||
%li
|
||||
%p= line
|
||||
|
|
|
@ -19,40 +19,47 @@
|
|||
.input
|
||||
= text_field_tag :ppath, @project.path_to_repo, class: "xlarge", disabled: true
|
||||
|
||||
- unless project.new_record?
|
||||
- if project.repo_exists?
|
||||
.clearfix
|
||||
= f.label :namespace_id
|
||||
.input= f.select :namespace_id, namespaces_options(@project.namespace_id), {}, {class: 'chosen'}
|
||||
= f.label :default_branch, "Default Branch"
|
||||
.input= f.select(:default_branch, project.heads.map(&:name), {}, style: "width:210px;")
|
||||
|
||||
- if project.repo_exists?
|
||||
.clearfix
|
||||
= f.label :default_branch, "Default Branch"
|
||||
.input= f.select(:default_branch, project.heads.map(&:name), {}, style: "width:210px;")
|
||||
%fieldset.adv_settings
|
||||
%legend Features:
|
||||
|
||||
- unless project.new_record?
|
||||
%fieldset.adv_settings
|
||||
%legend Features:
|
||||
.clearfix
|
||||
= f.label :issues_enabled, "Issues"
|
||||
.input= f.check_box :issues_enabled
|
||||
|
||||
.clearfix
|
||||
= f.label :issues_enabled, "Issues"
|
||||
.input= f.check_box :issues_enabled
|
||||
.clearfix
|
||||
= f.label :merge_requests_enabled, "Merge Requests"
|
||||
.input= f.check_box :merge_requests_enabled
|
||||
|
||||
.clearfix
|
||||
= f.label :merge_requests_enabled, "Merge Requests"
|
||||
.input= f.check_box :merge_requests_enabled
|
||||
.clearfix
|
||||
= f.label :wall_enabled, "Wall"
|
||||
.input= f.check_box :wall_enabled
|
||||
|
||||
.clearfix
|
||||
= f.label :wall_enabled, "Wall"
|
||||
.input= f.check_box :wall_enabled
|
||||
.clearfix
|
||||
= f.label :wiki_enabled, "Wiki"
|
||||
.input= f.check_box :wiki_enabled
|
||||
|
||||
.clearfix
|
||||
= f.label :wiki_enabled, "Wiki"
|
||||
.input= f.check_box :wiki_enabled
|
||||
%fieldset.features
|
||||
%legend Transfer:
|
||||
.control-group
|
||||
= f.label :namespace_id do
|
||||
%span Namespace
|
||||
.controls
|
||||
= f.select :namespace_id, namespaces_options(@project.namespace_id, :all), {}, {class: 'chosen'}
|
||||
%br
|
||||
%ul.prepend-top-10.cred
|
||||
%li Be careful. Changing project namespace can have unintended side effects
|
||||
%li You can transfer project only to namespaces you can manage
|
||||
%li You will need to update your local repositories to point to the new location.
|
||||
|
||||
- unless project.new_record?
|
||||
.actions
|
||||
= f.submit 'Save Project', class: "btn save-btn"
|
||||
= link_to 'Cancel', admin_projects_path, class: "btn cancel-btn"
|
||||
|
||||
.actions
|
||||
= f.submit 'Save Project', class: "btn save-btn"
|
||||
= link_to 'Cancel', admin_projects_path, class: "btn cancel-btn"
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%h3.page_title
|
||||
Projects
|
||||
Projects (#{@projects.count})
|
||||
= link_to 'New Project', new_project_path, class: "btn small right"
|
||||
%br
|
||||
= form_tag admin_projects_path, method: :get, class: 'form-inline' do
|
||||
|
@ -9,12 +9,15 @@
|
|||
|
||||
%table
|
||||
%thead
|
||||
%th Name
|
||||
%th Path
|
||||
%th Team Members
|
||||
%th Last Commit
|
||||
%th Edit
|
||||
%th.cred Danger Zone!
|
||||
%tr
|
||||
%th
|
||||
Name
|
||||
%i.icon-sort-down
|
||||
%th Path
|
||||
%th Team Members
|
||||
%th Last Commit
|
||||
%th Edit
|
||||
%th.cred Danger Zone!
|
||||
|
||||
- @projects.each do |project|
|
||||
%tr
|
||||
|
|
|
@ -4,14 +4,24 @@
|
|||
%i.icon-edit
|
||||
Edit
|
||||
|
||||
- if !@project.has_post_receive_file? && @project.has_commits?
|
||||
%br
|
||||
.alert.alert-error
|
||||
%span
|
||||
%strong Important!
|
||||
Project has commits but missing post-receive file.
|
||||
%br
|
||||
If you exported project manually - copy post-receive hook to bare repository
|
||||
- if @project.has_commits?
|
||||
- if !@project.has_post_receive_file?
|
||||
%br
|
||||
.alert.alert-error
|
||||
%span
|
||||
%strong Project has commits but missing post-receive file.
|
||||
%br
|
||||
If you exported project manually - make a link of post-receive hook file from gitolite to project repository
|
||||
- elsif !@project.valid_post_receive_file?
|
||||
%br
|
||||
.alert.alert-error
|
||||
%span
|
||||
%strong Project has invalid post-receive file.
|
||||
%br
|
||||
1. Make sure your gitolite instace has latest post-receive file.
|
||||
%br
|
||||
2. Make a link of post-receive hook file from gitolite to project repository
|
||||
|
||||
|
||||
%br
|
||||
%table.zebra-striped
|
||||
|
@ -37,23 +47,63 @@
|
|||
%tr
|
||||
%td
|
||||
%b
|
||||
Path:
|
||||
Owned by:
|
||||
%td
|
||||
%code= @project.path_to_repo
|
||||
- if @project.chief
|
||||
= link_to @project.chief.name, admin_user_path(@project.chief)
|
||||
- else
|
||||
(deleted)
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Created by:
|
||||
%td
|
||||
= @project.owner_name || '(deleted)'
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Created at:
|
||||
%td
|
||||
= @project.created_at.stamp("March 1, 1999")
|
||||
|
||||
%table.zebra-striped
|
||||
%thead
|
||||
%tr
|
||||
%th Repository
|
||||
%th
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
FS Path:
|
||||
%td
|
||||
%code= @project.path_to_repo
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Smart HTTP:
|
||||
%td
|
||||
= link_to @project.http_url_to_repo
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
SSH:
|
||||
%td
|
||||
= link_to @project.ssh_url_to_repo
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Last commit at:
|
||||
%td
|
||||
= last_commit(@project)
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Post Receive File:
|
||||
%td
|
||||
= check_box_tag :post_receive_file, 1, @project.has_post_receive_file?, disabled: true
|
||||
|
||||
%br
|
||||
%h3
|
||||
%h5
|
||||
Team
|
||||
%small
|
||||
(#{@project.users_projects.count})
|
||||
|
@ -75,7 +125,7 @@
|
|||
%td= link_to 'Remove from team', admin_team_member_path(tm), confirm: 'Are you sure?', method: :delete, class: "btn danger small"
|
||||
|
||||
%br
|
||||
%h3 Add new team member
|
||||
%h5 Add new team member
|
||||
%br
|
||||
= form_tag team_update_admin_project_path(@project), class: "bulk_import", method: :put do
|
||||
%table.zebra-striped
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%h3.page_title
|
||||
Users
|
||||
Users (#{@admin_users.count})
|
||||
= link_to 'New User', new_admin_user_path, class: "btn small right"
|
||||
%br
|
||||
|
||||
|
@ -21,13 +21,16 @@
|
|||
|
||||
%table
|
||||
%thead
|
||||
%th Admin
|
||||
%th Name
|
||||
%th Username
|
||||
%th Email
|
||||
%th Projects
|
||||
%th Edit
|
||||
%th.cred Danger Zone!
|
||||
%tr
|
||||
%th Admin
|
||||
%th
|
||||
Name
|
||||
%i.icon-sort-down
|
||||
%th Username
|
||||
%th Email
|
||||
%th Projects
|
||||
%th Edit
|
||||
%th.cred Danger Zone!
|
||||
|
||||
- @admin_users.each do |user|
|
||||
%tr
|
||||
|
@ -38,10 +41,13 @@
|
|||
%td= user.users_projects.count
|
||||
%td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn small"
|
||||
%td.bgred
|
||||
- if user.blocked
|
||||
= link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success"
|
||||
- if user == current_user
|
||||
%span.cred It's you!
|
||||
- else
|
||||
= link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
|
||||
= link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn small danger"
|
||||
- if user.blocked
|
||||
= link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success"
|
||||
- else
|
||||
= link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
|
||||
= link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn small danger"
|
||||
|
||||
= paginate @admin_users, theme: "admin"
|
||||
|
|
|
@ -37,6 +37,12 @@
|
|||
%b
|
||||
Blocked:
|
||||
%td= check_box_tag "blocked", 1, @admin_user.blocked, disabled: :disabled
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Created at:
|
||||
%td
|
||||
= @admin_user.created_at.stamp("March 1, 1999")
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
|
@ -66,7 +72,7 @@
|
|||
= @admin_user.twitter
|
||||
|
||||
%br
|
||||
%h3 Add User to Projects
|
||||
%h5 Add User to Projects
|
||||
%br
|
||||
= form_tag team_update_admin_user_path(@admin_user), class: "bulk_import", method: :put do
|
||||
%table
|
||||
|
@ -76,7 +82,7 @@
|
|||
%th Project Access:
|
||||
|
||||
%tr
|
||||
%td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
|
||||
%td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
|
||||
%td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3"
|
||||
|
||||
%tr
|
||||
|
@ -86,8 +92,22 @@
|
|||
%strong= link_to "here", help_permissions_path, class: "vlink"
|
||||
%br
|
||||
|
||||
- if @admin_user.groups.present?
|
||||
%h5 Owner of groups:
|
||||
%br
|
||||
|
||||
%table.zebra-striped
|
||||
%thead
|
||||
%tr
|
||||
%th Name
|
||||
|
||||
- @admin_user.groups.each do |group|
|
||||
%tr
|
||||
%td= link_to group.name, admin_group_path(group)
|
||||
|
||||
|
||||
- if @admin_user.projects.present?
|
||||
%h3 Projects
|
||||
%h5 Projects:
|
||||
%br
|
||||
|
||||
%table.zebra-striped
|
||||
|
@ -101,7 +121,7 @@
|
|||
- @admin_user.users_projects.each do |tm|
|
||||
- project = tm.project
|
||||
%tr
|
||||
%td= link_to project.name, admin_project_path(project)
|
||||
%td= link_to project.name_with_namespace, admin_project_path(project)
|
||||
%td= tm.project_access_human
|
||||
%td= link_to 'Edit Access', edit_admin_team_member_path(tm), class: "btn small"
|
||||
%td= link_to 'Remove from team', admin_team_member_path(tm), confirm: 'Are you sure?', method: :delete, class: "btn small danger"
|
||||
|
|
|
@ -3,4 +3,4 @@
|
|||
%h5.small
|
||||
%i.icon-calendar
|
||||
= day.stamp("28 Aug, 2010")
|
||||
%ul.unstyled= render commits
|
||||
%ul.well-list= render commits
|
||||
|
|
|
@ -1,23 +1,30 @@
|
|||
%div
|
||||
%p.slead
|
||||
Fill input field with commit id like
|
||||
%code.label_branch 4eedf23
|
||||
or branch/tag name like
|
||||
%code.label_branch master
|
||||
and press compare button for commits list, code diff.
|
||||
- unless params[:to]
|
||||
%p.slead
|
||||
Fill input field with commit id like
|
||||
%code.label_branch 4eedf23
|
||||
or branch/tag name like
|
||||
%code.label_branch master
|
||||
and press compare button for commits list, code diff.
|
||||
|
||||
%br
|
||||
%br
|
||||
|
||||
= form_tag project_compare_index_path(@project), method: :post do
|
||||
.clearfix
|
||||
= text_field_tag :from, params[:from], placeholder: "master", class: "xlarge"
|
||||
= "..."
|
||||
= text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
|
||||
.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 :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
|
||||
.pull-left
|
||||
|
||||
= submit_tag "Compare", class: "btn primary wide commits-compare-btn"
|
||||
- if @refs_are_same
|
||||
.alert
|
||||
%span Refs are the same
|
||||
.actions
|
||||
= submit_tag "Compare", class: "btn primary wide commits-compare-btn"
|
||||
|
||||
|
||||
|
||||
:javascript
|
||||
$(function() {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
- if @commits.present?
|
||||
%div.ui-box
|
||||
%h5.small Commits (#{@commits.count})
|
||||
%ul.unstyled= render @commits
|
||||
%ul.well-list= render @commits
|
||||
|
||||
- unless @diffs.empty?
|
||||
%h4 Diff
|
||||
|
|
13
app/views/dashboard/_activities.html.haml
Normal file
13
app/views/dashboard/_activities.html.haml
Normal file
|
@ -0,0 +1,13 @@
|
|||
= render "events/event_last_push", event: @last_push
|
||||
|
||||
.event_filter
|
||||
= event_filter_link EventFilter.push, 'Push events'
|
||||
= event_filter_link EventFilter.merged, 'Merge events'
|
||||
= event_filter_link EventFilter.comments, 'Comments'
|
||||
= event_filter_link EventFilter.team, 'Team'
|
||||
|
||||
- if @events.any?
|
||||
.content_list= render @events
|
||||
- else
|
||||
%p.nothing_here_message Projects activity will be displayed here
|
||||
.loading.hide
|
|
@ -8,11 +8,11 @@
|
|||
= link_to new_admin_group_path, class: "btn very_small info" do
|
||||
%i.icon-plus
|
||||
New Group
|
||||
%ul.unstyled
|
||||
%ul.well-list
|
||||
- groups.each do |group|
|
||||
%li.wll
|
||||
%li
|
||||
= link_to group_path(id: group.path), class: dom_class(group) do
|
||||
%strong.group_name= truncate(group.name, length: 25)
|
||||
%strong.well-title= truncate(group.name, length: 35)
|
||||
%span.arrow
|
||||
→
|
||||
%span.last_activity
|
||||
|
|
|
@ -16,18 +16,21 @@
|
|||
= nav_tab :scope, 'joined' do
|
||||
= link_to "Joined", dashboard_path(scope: 'joined')
|
||||
|
||||
%ul.unstyled
|
||||
%ul.well-list
|
||||
- projects.each do |project|
|
||||
%li.wll
|
||||
%li
|
||||
= link_to project_path(project), class: dom_class(project) do
|
||||
- if project.namespace
|
||||
= project.namespace.human_name
|
||||
\/
|
||||
%strong.project_name
|
||||
%strong.well-title
|
||||
= truncate(project.name, length: 25)
|
||||
%span.arrow
|
||||
→
|
||||
%span.last_activity
|
||||
%strong Last activity:
|
||||
%span= project_last_activity(project)
|
||||
- if projects.blank?
|
||||
%li
|
||||
%h3.nothing_here_message There are no projects here.
|
||||
.bottom= paginate projects, theme: "gitlab"
|
||||
|
|
14
app/views/dashboard/_sidebar.html.haml
Normal file
14
app/views/dashboard/_sidebar.html.haml
Normal file
|
@ -0,0 +1,14 @@
|
|||
- if @groups.present?
|
||||
= render "groups", groups: @groups
|
||||
= render "projects", projects: @projects
|
||||
%div
|
||||
%span.rss-icon
|
||||
= link_to dashboard_path(:atom, { private_token: current_user.private_token }) do
|
||||
= image_tag "rss_ui.png", title: "feed"
|
||||
%strong News Feed
|
||||
|
||||
%hr
|
||||
.gitlab-promo
|
||||
= link_to "Homepage", "http://gitlabhq.com"
|
||||
= link_to "Blog", "http://blog.gitlabhq.com"
|
||||
= link_to "@gitlabhq", "https://twitter.com/gitlabhq"
|
12
app/views/dashboard/_zero_authorized_projects.html.haml
Normal file
12
app/views/dashboard/_zero_authorized_projects.html.haml
Normal file
|
@ -0,0 +1,12 @@
|
|||
%h3.nothing_here_message
|
||||
There are no projects you have access to.
|
||||
%br
|
||||
- if current_user.can_create_project?
|
||||
You can create up to
|
||||
= current_user.projects_limit
|
||||
projects. Click on button below to add a new one
|
||||
.link_holder
|
||||
= link_to new_project_path, class: "btn primary" do
|
||||
New Project »
|
||||
- else
|
||||
If you will be added to project - it will be displayed here
|
|
@ -7,7 +7,7 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://sear
|
|||
xml.updated @events.maximum(:updated_at).strftime("%Y-%m-%dT%H:%M:%SZ") if @events.any?
|
||||
|
||||
@events.each do |event|
|
||||
if event.allowed?
|
||||
if event.proper?
|
||||
event = EventDecorator.decorate(event)
|
||||
xml.entry do
|
||||
event_link = event.feed_url
|
||||
|
|
|
@ -1,50 +1,11 @@
|
|||
- if @projects.any?
|
||||
- if @has_authorized_projects
|
||||
.projects
|
||||
.activities.span8
|
||||
= render "events/event_last_push", event: @last_push
|
||||
|
||||
.event_filter
|
||||
= event_filter_link EventFilter.push, 'Push events'
|
||||
= event_filter_link EventFilter.merged, 'Merge events'
|
||||
= event_filter_link EventFilter.comments, 'Comments'
|
||||
= event_filter_link EventFilter.team, 'Team'
|
||||
|
||||
- if @events.any?
|
||||
.content_list= render @events
|
||||
- else
|
||||
%p.nothing_here_message Projects activity will be displayed here
|
||||
.loading.hide
|
||||
.side
|
||||
- if @groups.present?
|
||||
= render "groups", groups: @groups
|
||||
= render "projects", projects: @projects
|
||||
%div
|
||||
%span.rss-icon
|
||||
= link_to dashboard_path(:atom, { private_token: current_user.private_token }) do
|
||||
= image_tag "rss_ui.png", title: "feed"
|
||||
%strong News Feed
|
||||
|
||||
%hr
|
||||
.gitlab-promo
|
||||
= link_to "Homepage", "http://gitlabhq.com"
|
||||
= link_to "Blog", "http://blog.gitlabhq.com"
|
||||
= link_to "@gitlabhq", "https://twitter.com/gitlabhq"
|
||||
|
||||
= render 'activities'
|
||||
.side.span4
|
||||
= render 'sidebar'
|
||||
|
||||
- else
|
||||
%h3.nothing_here_message There are no projects you have access to.
|
||||
%br
|
||||
%h4.nothing_here_message
|
||||
- if current_user.can_create_project?
|
||||
You can create up to
|
||||
= current_user.projects_limit
|
||||
projects. Click on button below to add a new one
|
||||
.link_holder
|
||||
= link_to new_project_path, class: "btn primary" do
|
||||
New Project »
|
||||
- else
|
||||
If you will be added to project - it will be displayed here
|
||||
|
||||
|
||||
= render "zero_authorized_projects"
|
||||
:javascript
|
||||
$(function(){ Pager.init(20); });
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
- @issues.group_by(&:project).each do |group|
|
||||
%div.ui-box
|
||||
- @project = group[0]
|
||||
%h5= link_to(@project.name, project_path(@project))
|
||||
%ul.unstyled.issues_table
|
||||
%h5= link_to_project @project
|
||||
%ul.well-list.issues_table
|
||||
- group[1].each do |issue|
|
||||
= render(partial: 'issues/show', locals: {issue: issue})
|
||||
%hr
|
||||
|
|
|
@ -10,11 +10,12 @@
|
|||
.span9
|
||||
- if @merge_requests.any?
|
||||
- @merge_requests.group_by(&:project).each do |group|
|
||||
%ul.unstyled.ui-box
|
||||
.ui-box
|
||||
- @project = group[0]
|
||||
%h5= @project.name
|
||||
- group[1].each do |merge_request|
|
||||
= render(partial: 'merge_requests/merge_request', locals: {merge_request: merge_request})
|
||||
%h5= link_to_project @project
|
||||
%ul.well-list
|
||||
- group[1].each do |merge_request|
|
||||
= render(partial: 'merge_requests/merge_request', locals: {merge_request: merge_request})
|
||||
%hr
|
||||
= paginate @merge_requests, theme: "gitlab"
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
- else
|
||||
= form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "login-box" }) do |f|
|
||||
= image_tag "login-logo.png", :width => "304", :height => "66", :class => "login-logo", :alt => "Login Logo"
|
||||
= f.text_field :email, :class => "text top", :placeholder => "Email"
|
||||
= f.email_field :email, :class => "text top", :placeholder => "Email", :autofocus => "autofocus"
|
||||
= f.password_field :password, :class => "text bottom", :placeholder => "Password"
|
||||
- if devise_mapping.rememberable?
|
||||
.clearfix.inputs-list
|
||||
|
|
|
@ -21,5 +21,5 @@
|
|||
Permissions:
|
||||
%pre
|
||||
= preserve do
|
||||
sudo chmod -R 770 #{Gitlab.config.git_base_path}
|
||||
sudo chown -R git:git #{Gitlab.config.git_base_path}
|
||||
sudo chown -R git:git #{Gitlab.config.gitolite.repos_path}
|
||||
sudo chmod -R ug+rwXs #{Gitlab.config.gitolite.repos_path}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
- if event.allowed?
|
||||
- if event.proper?
|
||||
%div.event-item
|
||||
= event_image(event)
|
||||
%span.cgray.right
|
||||
#{time_ago_in_words(event.created_at)} ago.
|
||||
|
||||
= image_tag gravatar_icon(event.author_email), class: "avatar s24"
|
||||
|
||||
- if event.push?
|
||||
= render "events/event/push", event: event
|
||||
.clearfix
|
||||
- elsif event.note?
|
||||
= render "events/event/note", event: event
|
||||
- else
|
||||
= render "events/event/common", event: event
|
||||
|
||||
.clearfix
|
||||
%span.cgray.right
|
||||
= time_ago_in_words(event.created_at)
|
||||
ago.
|
||||
.clearfix
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
= link_to project_commits_path(event.project, event.ref_name) do
|
||||
%strong= truncate(event.ref_name, length: 28)
|
||||
at
|
||||
%strong= link_to event.project.name, event.project
|
||||
%strong= link_to_project event.project
|
||||
%span
|
||||
= time_ago_in_words(event.created_at)
|
||||
ago.
|
||||
|
|
25
app/views/events/event/_note.html.haml
Normal file
25
app/views/events/event/_note.html.haml
Normal file
|
@ -0,0 +1,25 @@
|
|||
.event-title
|
||||
%span.author_name= link_to_author event
|
||||
%span.event_label commented on #{event.note_target_type}
|
||||
- if event.note_target
|
||||
- if event.note_commit?
|
||||
= link_to event.note_short_commit_id, project_commit_path(event.project, event.note_commit_id), class: "commit_short_id"
|
||||
- else
|
||||
= link_to [event.project, event.note_target] do
|
||||
%strong= truncate event.note_target_id
|
||||
|
||||
- elsif event.wall_note?
|
||||
-# nothing here
|
||||
- else
|
||||
%strong (deleted)
|
||||
at
|
||||
- if event.project
|
||||
= link_to_project event.project
|
||||
- else
|
||||
= event.project_name
|
||||
|
||||
.event-body
|
||||
%span.hint
|
||||
|
||||
%i.icon-comment
|
||||
= truncate event.target.note, length: 70
|
|
@ -7,12 +7,12 @@
|
|||
= link_to project_commits_path(event.project, event.ref_name) do
|
||||
%strong= event.ref_name
|
||||
at
|
||||
%strong= link_to event.project.name, event.project
|
||||
%strong= link_to_project event.project
|
||||
|
||||
- if event.push_with_commits?
|
||||
- project = event.project
|
||||
.event-body
|
||||
%ul.unstyled.event_commits
|
||||
%ul.well-list.event_commits
|
||||
- few_commits = event.commits[0...2]
|
||||
- few_commits.each do |commit|
|
||||
= render "events/commit", commit: commit, project: project
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
= link_to new_project_path(namespace_id: @group.id), class: "btn very_small info" do
|
||||
%i.icon-plus
|
||||
New Project
|
||||
%ul.unstyled
|
||||
%ul.well-list
|
||||
- if projects.blank?
|
||||
%p.nothing_here_message This groups has no projects yet
|
||||
- projects.each do |project|
|
||||
%li.wll
|
||||
%li
|
||||
= link_to project_path(project), class: dom_class(project) do
|
||||
%strong.project_name= truncate(project.name, length: 25)
|
||||
%strong.well-title= truncate(project.name, length: 25)
|
||||
%span.arrow
|
||||
→
|
||||
%span.last_activity
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
%div.ui-box
|
||||
- @project = group[0]
|
||||
%h5= @project.name
|
||||
%ul.unstyled.issues_table
|
||||
%ul.well-list.issues_table
|
||||
- group[1].each do |issue|
|
||||
= render(partial: 'issues/show', locals: {issue: issue})
|
||||
%hr
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%br
|
||||
- if @merge_requests.any?
|
||||
- @merge_requests.group_by(&:project).each do |group|
|
||||
%ul.unstyled.ui-box
|
||||
%ul.well-list.ui-box
|
||||
- @project = group[0]
|
||||
%h5= @project.name
|
||||
- group[1].each do |merge_request|
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
Team
|
||||
%small
|
||||
(#{@users.size})
|
||||
%ul.unstyled
|
||||
%ul.well-list
|
||||
- @users.each do |user|
|
||||
%li.wll
|
||||
%li
|
||||
= image_tag gravatar_icon(user.email, 16), class: "avatar s16"
|
||||
%strong= user.name
|
||||
%span.cgray= user.email
|
||||
|
|
|
@ -7,7 +7,7 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://sear
|
|||
xml.updated @events.maximum(:updated_at).strftime("%Y-%m-%dT%H:%M:%SZ") if @events.any?
|
||||
|
||||
@events.each do |event|
|
||||
if event.allowed?
|
||||
if event.proper?
|
||||
event = EventDecorator.decorate(event)
|
||||
xml.entry do
|
||||
event_link = event.feed_url
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
- else
|
||||
%p.nothing_here_message Projects activity will be displayed here
|
||||
.loading.hide
|
||||
.side
|
||||
.side.span4
|
||||
= render "projects", projects: @projects
|
||||
%div
|
||||
%span.rss-icon
|
||||
|
|
|
@ -4,61 +4,66 @@
|
|||
← to index
|
||||
%hr
|
||||
|
||||
.row
|
||||
.ui-box.span2
|
||||
%h5 Guest
|
||||
%ul.unstyled
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
%fieldset
|
||||
%legend Guest
|
||||
%ul
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
|
||||
.ui-box.span3
|
||||
%h5 Reporter
|
||||
%ul.unstyled
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
%li Pull project code
|
||||
%li Download project
|
||||
%li Create new merge request
|
||||
%li Create a code snippets
|
||||
%fieldset
|
||||
%legend Reporter
|
||||
%ul
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
%li Pull project code
|
||||
%li Download project
|
||||
%li Create new merge request
|
||||
%li Create a code snippets
|
||||
|
||||
|
||||
.ui-box.span3
|
||||
%h5 Developer
|
||||
%ul.unstyled
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
%li Pull project code
|
||||
%li Download project
|
||||
%li Create new merge request
|
||||
%li Create a code snippets
|
||||
%li Create new branches
|
||||
%li Push to non-protected branches
|
||||
%li Remove non-protected branches
|
||||
%li Add tags
|
||||
%li Write a wiki
|
||||
%fieldset
|
||||
%legend Developer
|
||||
%ul
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
%li Pull project code
|
||||
%li Download project
|
||||
%li Create new merge request
|
||||
%li Create a code snippets
|
||||
%li Create new branches
|
||||
%li Push to non-protected branches
|
||||
%li Remove non-protected branches
|
||||
%li Add tags
|
||||
%li Write a wiki
|
||||
|
||||
.ui-box.span3
|
||||
%h5 Master
|
||||
%ul.unstyled
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
%li Pull project code
|
||||
%li Download project
|
||||
%li Create new merge request
|
||||
%li Create a code snippets
|
||||
%li Create new branches
|
||||
%li Push to non-protected branches
|
||||
%li Remove non-protected branches
|
||||
%li Add tags
|
||||
%li Write a wiki
|
||||
%li Add new team members
|
||||
%li Push to protected branches
|
||||
%li Remove protected branches
|
||||
%li Push with force option
|
||||
%li Edit project
|
||||
%li Add Deploy Keys to project
|
||||
%li Configure Project Hooks
|
||||
%fieldset
|
||||
%legend Master
|
||||
%ul
|
||||
%li Create new issue
|
||||
%li Leave comments
|
||||
%li Write on project wall
|
||||
%li Pull project code
|
||||
%li Download project
|
||||
%li Create new merge request
|
||||
%li Create a code snippets
|
||||
%li Create new branches
|
||||
%li Push to non-protected branches
|
||||
%li Remove non-protected branches
|
||||
%li Add tags
|
||||
%li Write a wiki
|
||||
%li Add new team members
|
||||
%li Push to protected branches
|
||||
%li Remove protected branches
|
||||
%li Push with force option
|
||||
%li Edit project
|
||||
%li Add Deploy Keys to project
|
||||
%li Configure Project Hooks
|
||||
|
||||
%fieldset
|
||||
%legend Owner
|
||||
%ul
|
||||
%li Transfer project to another namespace
|
||||
%li Remove project
|
||||
|
|
|
@ -22,22 +22,21 @@
|
|||
%hr
|
||||
|
||||
-if @hooks.any?
|
||||
%h3
|
||||
Hooks
|
||||
%small (#{@hooks.count})
|
||||
%h3.page_title
|
||||
Hooks (#{@hooks.count})
|
||||
%br
|
||||
%table
|
||||
%thead
|
||||
%tr
|
||||
%th URL
|
||||
%th Method
|
||||
%th
|
||||
- @hooks.each do |hook|
|
||||
%tr
|
||||
%td
|
||||
%span.badge.badge-info POST
|
||||
= link_to project_hook_path(@project, hook) do
|
||||
%strong= hook.url
|
||||
= link_to 'Test Hook', test_project_hook_path(@project, hook), class: "btn small right"
|
||||
%td POST
|
||||
%td
|
||||
= link_to 'Remove', project_hook_path(@project, hook), confirm: 'Are you sure?', method: :delete, class: "danger btn small right"
|
||||
.right
|
||||
= link_to 'Test Hook', test_project_hook_path(@project, hook), class: "btn small grouped"
|
||||
= link_to 'Remove', project_hook_path(@project, hook), confirm: 'Are you sure?', method: :delete, class: "danger btn small grouped"
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
%div.issue-form-holder
|
||||
%h3.page_title= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}"
|
||||
= form_for [@project, @issue], remote: request.xhr? do |f|
|
||||
= form_for [@project, @issue] do |f|
|
||||
-if @issue.errors.any?
|
||||
.alert-message.block-message.error
|
||||
%ul
|
||||
- @issue.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
- @issue.errors.full_messages.each do |msg|
|
||||
%span= msg
|
||||
%br
|
||||
.issue_form_box
|
||||
.issue_title
|
||||
.clearfix
|
||||
= f.label :title do
|
||||
%strong= "Subject *"
|
||||
.input
|
||||
= f.text_field :title, maxlength: 255, class: "xxlarge js-gfm-input", autofocus: true
|
||||
= f.text_field :title, maxlength: 255, class: "xxlarge js-gfm-input", autofocus: true, required: true
|
||||
.issue_middle_block
|
||||
.issue_assignee
|
||||
= f.label :assignee_id do
|
||||
|
@ -47,11 +47,38 @@
|
|||
-else
|
||||
= f.submit 'Save changes', class: "save-btn btn"
|
||||
|
||||
- cancel_class = 'btn cancel-btn'
|
||||
- if request.xhr?
|
||||
= link_to "Cancel", "#back", onclick: "backToIssues();", class: cancel_class
|
||||
- else
|
||||
- if @issue.new_record?
|
||||
= link_to "Cancel", project_issues_path(@project), class: cancel_class
|
||||
- else
|
||||
= link_to "Cancel", project_issue_path(@project, @issue), class: cancel_class
|
||||
- cancel_path = @issue.new_record? ? project_issues_path(@project) : project_issue_path(@project, @issue)
|
||||
= link_to "Cancel", cancel_path, class: 'btn cancel-btn'
|
||||
|
||||
|
||||
|
||||
|
||||
:javascript
|
||||
$(function(){
|
||||
$("#issue_label_list")
|
||||
.bind( "keydown", function( event ) {
|
||||
if ( event.keyCode === $.ui.keyCode.TAB &&
|
||||
$( this ).data( "autocomplete" ).menu.active ) {
|
||||
event.preventDefault();
|
||||
}
|
||||
})
|
||||
.autocomplete({
|
||||
minLength: 0,
|
||||
source: function( request, response ) {
|
||||
response( $.ui.autocomplete.filter(
|
||||
#{raw labels_autocomplete_source}, extractLast( request.term ) ) );
|
||||
},
|
||||
focus: function() {
|
||||
return false;
|
||||
},
|
||||
select: function(event, ui) {
|
||||
var terms = split( this.value );
|
||||
terms.pop();
|
||||
terms.push( ui.item.value );
|
||||
terms.push( "" );
|
||||
this.value = terms.join( ", " );
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
.row
|
||||
.span7= paginate @issues, remote: true, theme: "gitlab"
|
||||
.span3.right
|
||||
%span.cgray.right
|
||||
%span.cgray.right
|
||||
%span.issue_counter #{@issues.total_count}
|
||||
issues for this filter
|
||||
- else
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
%li.wll{ id: dom_id(issue), class: issue_css_classes(issue), url: project_issue_path(issue.project, issue) }
|
||||
%li{ id: dom_id(issue), class: issue_css_classes(issue), url: project_issue_path(issue.project, issue) }
|
||||
- if controller.controller_name == 'issues'
|
||||
.issue_check
|
||||
= check_box_tag dom_id(issue,"selected"), nil, false, 'data-id' => issue.id, class: "selected_issue", disabled: !can?(current_user, :modify_issue, issue)
|
||||
|
@ -16,7 +16,7 @@
|
|||
= link_to 'Reopen', project_issue_path(issue.project, issue, issue: {closed: false }, status_only: true), method: :put, class: "btn small grouped reopen_issue", remote: true
|
||||
- else
|
||||
= link_to 'Close', project_issue_path(issue.project, issue, issue: {closed: true }, status_only: true), method: :put, class: "btn small grouped close_issue", remote: true
|
||||
= link_to edit_project_issue_path(issue.project, issue), class: "btn small edit-issue-link grouped", remote: true do
|
||||
= link_to edit_project_issue_path(issue.project, issue), class: "btn small edit-issue-link grouped" do
|
||||
%i.icon-edit
|
||||
Edit
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
%p= link_to_gfm truncate(issue.title, length: 100), project_issue_path(issue.project, issue), class: "row_title"
|
||||
|
||||
%span.update-author
|
||||
%small.cdark= "##{issue.id}"
|
||||
%span.cdark= "##{issue.id}"
|
||||
- if issue.assignee
|
||||
assigned to #{issue.assignee_name}
|
||||
- else
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
- if @issue.valid?
|
||||
:plain
|
||||
switchFromNewIssue();
|
||||
$("#issues-table").prepend("#{escape_javascript(render(partial: 'show', locals: {issue: @issue}))}");
|
||||
$.ajax({type: "GET", url: location.href, dataType: "script"});
|
||||
- else
|
||||
:plain
|
||||
$("#new_issue_dialog").empty();
|
||||
$("#new_issue_dialog").append("#{escape_javascript(render('form'))}");
|
||||
$('select#issue_assignee_id').chosen();
|
|
@ -1,4 +0,0 @@
|
|||
:plain
|
||||
$("#edit_issue_dialog").html("#{escape_javascript(render('form'))}");
|
||||
switchToEditIssue();
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
.right
|
||||
.span5
|
||||
- if can? current_user, :write_issue, @project
|
||||
= link_to new_project_issue_path(@project), class: "right btn", title: "New Issue", remote: true, id: "new_issue_link" do
|
||||
= link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "right btn", title: "New Issue", id: "new_issue_link" do
|
||||
%i.icon-plus
|
||||
New Issue
|
||||
= form_tag search_project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: :right do
|
||||
|
@ -27,7 +27,7 @@
|
|||
.left
|
||||
= select_tag('update[status]', options_for_select(['open', 'closed']), prompt: "Status")
|
||||
= select_tag('update[assignee_id]', options_from_collection_for_select(@project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee")
|
||||
= select_tag('update[milestone_id]', options_from_collection_for_select(@project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), prompt: "Milestone")
|
||||
= select_tag('update[milestone_id]', options_from_collection_for_select(issues_active_milestones, "id", "title", params[:milestone_id]), prompt: "Milestone")
|
||||
= hidden_field_tag 'update[issues_ids]', []
|
||||
= hidden_field_tag :f, params[:f]
|
||||
= button_tag "Save", class: "btn update_selected_issues"
|
||||
|
@ -51,16 +51,13 @@
|
|||
= form_tag project_issues_path(@project), method: :get, class: :right do
|
||||
= select_tag(:label_name, options_for_select(issue_tags, params[:label_name]), prompt: "Labels")
|
||||
= select_tag(:assignee_id, options_from_collection_for_select([unassigned_filter] + @project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee")
|
||||
= select_tag(:milestone_id, options_from_collection_for_select([unassigned_filter] + @project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), prompt: "Milestone")
|
||||
= select_tag(:milestone_id, options_from_collection_for_select([unassigned_filter] + issues_active_milestones, "id", "title", params[:milestone_id]), prompt: "Milestone")
|
||||
= hidden_field_tag :f, params[:f]
|
||||
.clearfix
|
||||
|
||||
%ul#issues-table.unstyled.issues_table
|
||||
%ul#issues-table.well-list.issues_table
|
||||
= render "issues"
|
||||
|
||||
#new_issue_dialog
|
||||
#edit_issue_dialog
|
||||
|
||||
:javascript
|
||||
$(function(){
|
||||
issuesPage();
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
:plain
|
||||
$("#new_issue_dialog").html("#{escape_javascript(render('form'))}");
|
||||
switchToNewIssue();
|
|
@ -26,22 +26,16 @@
|
|||
|
||||
.main_box
|
||||
.top_box_content
|
||||
%h4
|
||||
%h4.box-title
|
||||
- if @issue.closed
|
||||
.alert-message.error.status_info Closed
|
||||
- else
|
||||
.alert-message.success.status_info Open
|
||||
.error.status_info Closed
|
||||
= gfm escape_once(@issue.title)
|
||||
|
||||
.middle_box_content
|
||||
%cite.cgray Created by
|
||||
= image_tag gravatar_icon(@issue.author_email), width: 16, class: "lil_av"
|
||||
%strong.author= link_to_issue_author(@issue)
|
||||
|
||||
- if @issue.assignee
|
||||
%cite.cgray and currently assigned to
|
||||
= image_tag gravatar_icon(@issue.assignee_email), width: 16, class: "lil_av"
|
||||
%strong.author= link_to_issue_assignee(@issue)
|
||||
%cite.cgray
|
||||
Created by #{link_to_member(@project, @issue.author)}
|
||||
- if @issue.assignee
|
||||
\ and currently assigned to #{link_to_member(@project, @issue.assignee)}
|
||||
|
||||
- if @issue.milestone
|
||||
- milestone = @issue.milestone
|
||||
|
|
|
@ -2,13 +2,3 @@
|
|||
- if @issue.valid?
|
||||
:plain
|
||||
$("##{dom_id(@issue)}").fadeOut();
|
||||
- else
|
||||
- if @issue.valid?
|
||||
:plain
|
||||
updatePage();
|
||||
switchFromEditIssue();
|
||||
- else
|
||||
:plain
|
||||
$("#edit_issue_dialog").empty();
|
||||
$("#edit_issue_dialog").append("#{escape_javascript(render('form'))}");
|
||||
$('select#issue_assignee_id').chosen();
|
||||
|
|
|
@ -4,5 +4,6 @@
|
|||
-# num_pages: total number of pages
|
||||
-# per_page: number of items to fetch per page
|
||||
-# remote: data-remote
|
||||
%span.page.gap
|
||||
= raw(t 'views.pagination.truncate')
|
||||
%li{class: "page"}
|
||||
%span.page.gap
|
||||
= raw(t 'views.pagination.truncate')
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
%li.wll
|
||||
%li
|
||||
%strong
|
||||
%i.icon-tag
|
||||
= label.name
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Labels
|
||||
%br
|
||||
%div.ui-box
|
||||
%ul.unstyled.labels-table
|
||||
%ul.well-list.labels-table
|
||||
- @labels.each do |label|
|
||||
= render 'label', label: label
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
:javascript
|
||||
$(function() {
|
||||
GitLab.GfmAutoComplete.Members.url = "#{ "/api/v2/projects/#{@project.path}/members" if @project }";
|
||||
GitLab.GfmAutoComplete.Members.url = "#{ "/api/v3/projects/#{@project.id}/members" if @project }";
|
||||
GitLab.GfmAutoComplete.Members.params.private_token = "#{current_user.private_token}";
|
||||
|
||||
GitLab.GfmAutoComplete.Emoji.data = #{raw emoji_autocomplete_source};
|
||||
|
|
|
@ -3,14 +3,7 @@
|
|||
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
|
||||
%title
|
||||
GitLab
|
||||
:css
|
||||
.header h1 {color: #BBBBBB !important; font: bold 22px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 32px;}
|
||||
.header p {color: #c6c6c6; font: normal 12px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 18px;}
|
||||
.content h2 {color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; }
|
||||
.content p {color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif;}
|
||||
.content a {color: #0eb6ce; text-decoration: none;}
|
||||
.footer p {font-size: 11px; color:#7d7a7a; margin: 0; padding: 0; font-family: Helvetica, Arial, sans-serif;}
|
||||
.footer a {color: #0eb6ce; text-decoration: none;}
|
||||
|
||||
%body{bgcolor: "#EAEAEA", style: "margin: 0; padding: 0; background: #EAEAEA"}
|
||||
%table{align: "center", border: "0", cellpadding: "0", cellspacing: "0", style: "padding: 35px 0; background: #EAEAEA;", width: "100%"}
|
||||
%tr
|
||||
|
@ -19,11 +12,11 @@
|
|||
%tr
|
||||
%td{style: "font-size: 0px;", width: "20"}
|
||||
\
|
||||
%td{align: "left", style: "padding: 18px 0 10px;", width: "580"}
|
||||
%h1{style: "color: #BBBBBB; font: normal 22px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 32px;"}
|
||||
%td{align: "left", style: "padding: 10px 0", width: "580"}
|
||||
%h1{style: "font-size: 24px; color: #BBBBBB; font: normal 22px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 32px;"}
|
||||
GITLAB
|
||||
- if @project
|
||||
| #{@project.name}
|
||||
→ #{@project.name_with_namespace}
|
||||
%table{align: "center", bgcolor: "#fff", border: "0", cellpadding: "0", cellspacing: "0", style: "font-family: Helvetica, Arial, sans-serif; background: #fff;", width: "600"}
|
||||
%tr= yield
|
||||
%tr
|
||||
|
@ -35,5 +28,5 @@
|
|||
%p{style: "font-size: 11px; color:#7d7a7a; margin: 0; padding: 0; font-family: Helvetica, Arial, sans-serif;"}
|
||||
You're receiving this notification because you are a member of the
|
||||
- if @project
|
||||
#{@project.name}
|
||||
#{@project.name_with_namespace}
|
||||
project team.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
!!! 5
|
||||
%html{ lang: "en"}
|
||||
= render "layouts/head", title: @project.name
|
||||
= render "layouts/head", title: @project.name_with_namespace
|
||||
%body{class: "#{app_theme} project"}
|
||||
= render "layouts/flash"
|
||||
= render "layouts/head_panel", title: @project.name
|
||||
= render "layouts/head_panel", title: project_title(@project)
|
||||
- if can?(current_user, :download_code, @project)
|
||||
= render 'shared/no_ssh'
|
||||
.container
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
.top_box_content
|
||||
= f.label :title do
|
||||
%strong= "Title *"
|
||||
.input= f.text_field :title, class: "input-xxlarge pad js-gfm-input", maxlength: 255, rows: 5
|
||||
.input= f.text_field :title, class: "input-xxlarge pad js-gfm-input", maxlength: 255, rows: 5, required: true
|
||||
.merge_requests_middle_box
|
||||
.merge_requests_assignee
|
||||
= f.label :assignee_id do
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
%li.wll{ class: mr_css_classes(merge_request) }
|
||||
%li{ class: mr_css_classes(merge_request) }
|
||||
.right
|
||||
.left
|
||||
- if merge_request.merged?
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
= render "merge_requests/show/how_to_merge"
|
||||
= render "merge_requests/show/mr_box"
|
||||
= render "merge_requests/show/mr_accept"
|
||||
- if @project.gitlab_ci?
|
||||
= render "merge_requests/show/mr_ci"
|
||||
= render "merge_requests/show/commits"
|
||||
|
||||
- if @commits.present?
|
||||
|
@ -26,6 +28,8 @@
|
|||
MergeRequest.init({
|
||||
url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}",
|
||||
check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"},
|
||||
url_to_ci_check: "#{ci_status_project_merge_request_path(@project, @merge_request)}",
|
||||
ci_enable: #{@project.gitlab_ci? ? "true" : "false"},
|
||||
current_state: "#{@merge_request.human_state}",
|
||||
action: "#{controller.action_name}"
|
||||
});
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
= hidden_field_tag :f, params[:f]
|
||||
.clearfix
|
||||
|
||||
%ul.unstyled
|
||||
%ul.well-list
|
||||
= render @merge_requests
|
||||
- if @merge_requests.blank?
|
||||
%li
|
||||
|
|
|
@ -5,19 +5,19 @@
|
|||
Commits (#{@commits.count})
|
||||
.merge-request-commits
|
||||
- if @commits.count > 8
|
||||
%ul.first_mr_commits.unstyled
|
||||
%ul.first_mr_commits.well-list
|
||||
- @commits.first(8).each do |commit|
|
||||
= render "commits/commit", commit: commit
|
||||
%li.bottom
|
||||
8 of #{@commits.count} commits displayed.
|
||||
%strong
|
||||
%a.mr_show_all_commits Click here to show all
|
||||
%ul.all_mr_commits.hide.unstyled
|
||||
%ul.all_mr_commits.hide.well-list
|
||||
- @commits.each do |commit|
|
||||
= render "commits/commit", commit: commit
|
||||
|
||||
- else
|
||||
%ul.unstyled
|
||||
%ul.well-list
|
||||
- @commits.each do |commit|
|
||||
= render "commits/commit", commit: commit
|
||||
|
||||
|
|
|
@ -1,25 +1,20 @@
|
|||
.main_box
|
||||
.top_box_content
|
||||
%h4
|
||||
- if @merge_request.closed
|
||||
.alert-message.error.status_info Closed
|
||||
- else
|
||||
.alert-message.success.status_info Open
|
||||
%h4.box-title
|
||||
- if @merge_request.merged
|
||||
.error.status_info
|
||||
%i.icon-ok
|
||||
Merged
|
||||
- elsif @merge_request.closed
|
||||
.error.status_info Closed
|
||||
= gfm escape_once(@merge_request.title)
|
||||
- if @project.gitlab_ci?
|
||||
.right
|
||||
= image_tag ci_status_path, class: 'status-badge'
|
||||
|
||||
.middle_box_content
|
||||
%div
|
||||
%cite.cgray Created at #{@merge_request.created_at.stamp("Aug 21, 2011")} by
|
||||
= image_tag gravatar_icon(@merge_request.author_email), width: 16, class: "lil_av"
|
||||
%strong.author= link_to_merge_request_author(@merge_request)
|
||||
|
||||
- if @merge_request.assignee
|
||||
%cite.cgray , currently assigned to
|
||||
= image_tag gravatar_icon(@merge_request.assignee_email), width: 16, class: "lil_av"
|
||||
%strong.author= link_to_merge_request_assignee(@merge_request)
|
||||
%cite.cgray
|
||||
Created at #{@merge_request.created_at.stamp("Aug 21, 2011")} by #{link_to_member(@project, @merge_request.author)}
|
||||
- if @merge_request.assignee
|
||||
\, currently assigned to #{link_to_member(@project, @merge_request.assignee)}
|
||||
- if @merge_request.milestone
|
||||
- milestone = @merge_request.milestone
|
||||
%cite.cgray and attached to milestone
|
||||
|
@ -30,10 +25,10 @@
|
|||
.bottom_box_content
|
||||
- if @merge_request.merged?
|
||||
%span
|
||||
Merged by #{@merge_request.merge_event.author_name}
|
||||
Merged by #{link_to_member(@project, @merge_request.merge_event.author)}
|
||||
%small #{time_ago_in_words(@merge_request.merge_event.created_at)} ago.
|
||||
- elsif @merge_request.closed_event
|
||||
%span
|
||||
Closed by #{@merge_request.closed_event.author_name}
|
||||
Closed by #{link_to_member(@project, @merge_request.closed_event.author)}
|
||||
%small #{time_ago_in_words(@merge_request.closed_event.created_at)} ago.
|
||||
|
||||
|
|
35
app/views/merge_requests/show/_mr_ci.html.haml
Normal file
35
app/views/merge_requests/show/_mr_ci.html.haml
Normal file
|
@ -0,0 +1,35 @@
|
|||
- if @merge_request.open? && @commits.any?
|
||||
.ci_widget.ci-success{style: "display:none"}
|
||||
.alert.alert-success
|
||||
%i.icon-ok
|
||||
%strong CI build passed
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "Build page", ci_build_details_path(@merge_request)
|
||||
|
||||
|
||||
.ci_widget.ci-failed{style: "display:none"}
|
||||
.alert.alert-error
|
||||
%i.icon-remove
|
||||
%strong CI build failed
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "Build page", ci_build_details_path(@merge_request)
|
||||
|
||||
- [:running, :pending].each do |status|
|
||||
.ci_widget{class: "ci-#{status}", style: "display:none"}
|
||||
.alert
|
||||
%i.icon-time
|
||||
%strong CI build #{status}
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "Build page", ci_build_details_path(@merge_request)
|
||||
|
||||
.ci_widget
|
||||
.alert-message
|
||||
%strong
|
||||
%i.icon-refresh
|
||||
Checking for CI status for #{@merge_request.last_commit_short_sha}
|
||||
|
||||
.ci_widget.ci-error{style: "display:none"}
|
||||
.alert.alert-error
|
||||
%i.icon-remove
|
||||
%strong Cannot connect to CI server. Please check your setting
|
||||
|
|
@ -6,11 +6,6 @@
|
|||
%span.label_branch= @merge_request.target_branch
|
||||
|
||||
%span.right
|
||||
- if @merge_request.merged?
|
||||
%span.btn.small.disabled.grouped
|
||||
%strong
|
||||
%i.icon-ok
|
||||
= "MERGED"
|
||||
- if can?(current_user, :modify_merge_request, @merge_request)
|
||||
- if @merge_request.open?
|
||||
.left.btn-group
|
||||
|
|
|
@ -1,22 +1,27 @@
|
|||
%li{class: "milestone", id: dom_id(milestone) }
|
||||
%li{class: "milestone milestone-#{milestone.closed ? 'closed' : 'open'}", id: dom_id(milestone) }
|
||||
.right
|
||||
- if can? current_user, :admin_milestone, milestone.project
|
||||
- if can?(current_user, :admin_milestone, milestone.project) and milestone.open?
|
||||
= link_to edit_project_milestone_path(milestone.project, milestone), class: "btn small edit-milestone-link grouped" do
|
||||
%i.icon-edit
|
||||
Edit
|
||||
%h4
|
||||
= link_to_gfm truncate(milestone.title, length: 100), project_milestone_path(milestone.project, milestone)
|
||||
- if milestone.expired? and not milestone.closed
|
||||
%span.cred (Expired)
|
||||
%small
|
||||
= milestone.expires_at
|
||||
.row
|
||||
.span4
|
||||
.progress.progress-info
|
||||
.bar{style: "width: #{milestone.percent_complete}%;"}
|
||||
.span6
|
||||
= link_to project_issues_path(milestone.project, milestone_id: milestone.id) do
|
||||
= pluralize milestone.issues.count, 'Issue'
|
||||
|
||||
= link_to project_merge_requests_path(milestone.project, milestone_id: milestone.id) do
|
||||
= pluralize milestone.merge_requests.count, 'Merge Request'
|
||||
|
||||
%span.light #{milestone.percent_complete}% complete
|
||||
- if milestone.is_empty?
|
||||
%span.muted Empty
|
||||
- else
|
||||
.row
|
||||
.span4
|
||||
.progress.progress-info
|
||||
.bar{style: "width: #{milestone.percent_complete}%;"}
|
||||
.span6
|
||||
= link_to project_issues_path(milestone.project, milestone_id: milestone.id) do
|
||||
= pluralize milestone.issues.count, 'Issue'
|
||||
|
||||
= link_to project_merge_requests_path(milestone.project, milestone_id: milestone.id) do
|
||||
= pluralize milestone.merge_requests.count, 'Merge Request'
|
||||
|
||||
%span.light #{milestone.percent_complete}% complete
|
||||
|
|
|
@ -11,15 +11,18 @@
|
|||
%li{class: ("active" if (params[:f] == "active" || !params[:f]))}
|
||||
= link_to project_milestones_path(@project, f: "active") do
|
||||
Active
|
||||
%li{class: ("active" if params[:f] == "closed")}
|
||||
= link_to project_milestones_path(@project, f: "closed") do
|
||||
Closed
|
||||
%li{class: ("active" if params[:f] == "all")}
|
||||
= link_to project_milestones_path(@project, f: "all") do
|
||||
All
|
||||
|
||||
%ul.unstyled
|
||||
%ul.well-list
|
||||
= render @milestones
|
||||
|
||||
- if @milestones.present?
|
||||
%li.bottom= paginate @milestones, remote: true, theme: "gitlab"
|
||||
%li.bottom= paginate @milestones, theme: "gitlab"
|
||||
- else
|
||||
%li
|
||||
%h3.nothing_here_message Nothing to show here
|
||||
|
|
|
@ -1,31 +1,41 @@
|
|||
%h3.page_title
|
||||
Milestone ##{@milestone.id}
|
||||
%small
|
||||
= @milestone.expires_at
|
||||
.row
|
||||
.span6
|
||||
%h3.page_title
|
||||
Milestone ##{@milestone.id}
|
||||
%small
|
||||
= @milestone.expires_at
|
||||
.back_link
|
||||
= link_to project_milestones_path(@project) do
|
||||
← To milestones list
|
||||
.span6
|
||||
.right
|
||||
- unless @milestone.closed
|
||||
= link_to new_project_issue_path(@project, issue: { milestone_id: @milestone.id }), class: "btn small grouped", title: "New Issue" do
|
||||
%i.icon-plus
|
||||
New Issue
|
||||
= link_to 'Browse Issues', project_issues_path(@milestone.project, milestone_id: @milestone.id), class: "btn edit-milestone-link small grouped"
|
||||
- if can?(current_user, :admin_milestone, @project)
|
||||
= link_to edit_project_milestone_path(@project, @milestone), class: "btn small grouped" do
|
||||
%i.icon-edit
|
||||
Edit
|
||||
|
||||
%span.right
|
||||
= link_to new_project_issue_path(@project, issue: { milestone_id: @milestone.id }), class: "btn small grouped", title: "New Issue" do
|
||||
%i.icon-plus
|
||||
New Issue
|
||||
= link_to 'Browse Issues', project_issues_path(@milestone.project, milestone_id: @milestone.id), class: "btn edit-milestone-link small grouped"
|
||||
- if can?(current_user, :admin_milestone, @project)
|
||||
= link_to edit_project_milestone_path(@project, @milestone), class: "btn small grouped" do
|
||||
%i.icon-edit
|
||||
Edit
|
||||
|
||||
.back_link
|
||||
= link_to project_milestones_path(@project) do
|
||||
← 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: {closed: true }), method: :put, class: "btn small danger"
|
||||
|
||||
.main_box
|
||||
.top_box_content
|
||||
%h5
|
||||
%h4.box-title
|
||||
- if @milestone.closed
|
||||
.alert-message.error.status_info Closed
|
||||
- else
|
||||
.alert-message.success.status_info Open
|
||||
.error.status_info Closed
|
||||
- elsif @milestone.expired?
|
||||
.error.status_info Expired
|
||||
|
||||
= gfm escape_once(@milestone.title)
|
||||
%small.right= @milestone.expires_at
|
||||
|
||||
.middle_box_content
|
||||
%h5
|
||||
|
@ -34,6 +44,7 @@
|
|||
#{@milestone.closed_items_count} closed
|
||||
–
|
||||
#{@milestone.open_items_count} open
|
||||
%span.right= @milestone.expires_at
|
||||
.progress.progress-info
|
||||
.bar{style: "width: #{@milestone.percent_complete}%;"}
|
||||
|
||||
|
@ -43,14 +54,16 @@
|
|||
= preserve do
|
||||
= markdown @milestone.description
|
||||
|
||||
|
||||
.row
|
||||
.span6
|
||||
%table.milestone-issue-filter
|
||||
%thead
|
||||
%th
|
||||
%ul.nav.nav-pills
|
||||
%li.active= link_to('Open Issues', '#')
|
||||
%li=link_to('All Issues', '#')
|
||||
%tr
|
||||
%th
|
||||
%ul.nav.nav-pills
|
||||
%li.active= link_to('Open Issues', '#')
|
||||
%li=link_to('All Issues', '#')
|
||||
- @issues.each do |issue|
|
||||
%tr{data: {closed: issue.closed}}
|
||||
%td
|
||||
|
@ -62,10 +75,11 @@
|
|||
.span6
|
||||
%table.milestone-merge-requests-filter
|
||||
%thead
|
||||
%th
|
||||
%ul.nav.nav-pills
|
||||
%li.active= link_to('Open Merge Requests', '#')
|
||||
%li=link_to('All Merge Requests', '#')
|
||||
%tr
|
||||
%th
|
||||
%ul.nav.nav-pills
|
||||
%li.active= link_to('Open Merge Requests', '#')
|
||||
%li=link_to('All Merge Requests', '#')
|
||||
- @merge_requests.each do |merge_request|
|
||||
%tr{data: {closed: merge_request.closed}}
|
||||
%td
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
= form_for [@project, @note], remote: true, html: { multipart: true, id: nil, class: "new_note js-new-note-form" } do |f|
|
||||
|
||||
= note_target_fields
|
||||
= f.hidden_field :commit_id
|
||||
= f.hidden_field :line_code
|
||||
= f.hidden_field :noteable_id
|
||||
= f.hidden_field :noteable_type
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
%tr
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%td{align: "left", style: "padding: 20px 0 0;"}
|
||||
%h2{style: "color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
%p{style: "color:#646464 !important; line-height: 26px; font-size: 16px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
= "Issue ##{@issue.id}"
|
||||
= link_to_gfm truncate(@issue.title, length: 45), project_issue_url(@issue.project, @issue), title: @issue.title
|
||||
%br
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
%tr
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%td{align: "left", style: "padding: 20px 0 0;"}
|
||||
%h2{style: "color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
%p{style: "color:#646464 !important; line-height: 26px; font-size: 16px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
= "Issue ##{@issue.id}"
|
||||
= link_to_gfm truncate(@issue.title, length: 45), project_issue_url(@issue.project, @issue), title: @issue.title
|
||||
%br
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
%td{align: "left", style: "padding: 20px 0 0;"}
|
||||
%h2{style: "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
= "New Merge Request !#{@merge_request.id}"
|
||||
= link_to_gfm truncate(@merge_request.title, length: 16), project_merge_request_url(@merge_request.project, @merge_request)
|
||||
%p{style: "color:#646464 !important; line-height: 26px; font-size: 16px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
= link_to_gfm truncate(@merge_request.title, length: 40), project_merge_request_url(@merge_request.project, @merge_request)
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%tr
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
%td.content{align: "left", style: "font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;", valign: "top", width: "600"}
|
||||
%table{border: "0", cellpadding: "0", cellspacing: "0", style: "color: #717171; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;", width: "600"}
|
||||
%tr
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%td{align: "left", style: "padding: 20px 0 0;"}
|
||||
%h2{style: "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
%td{width: "21"}
|
||||
%td
|
||||
%h2{style: "color:#646464;" }
|
||||
= "You have been granted #{@users_project.project_access_human} access to project"
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%tr
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%td{align: "left", style: "padding: 20px 0 0;"}
|
||||
%h2{style: "color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
= link_to_gfm truncate(@project.name, length: 45), project_url(@project), title: @project.name
|
||||
%td{width: "21"}
|
||||
%td
|
||||
%h3
|
||||
= link_to project_url(@project) do
|
||||
= @project.name_with_namespace
|
||||
%br
|
||||
|
|
25
app/views/notify/project_was_moved_email.html.haml
Normal file
25
app/views/notify/project_was_moved_email.html.haml
Normal file
|
@ -0,0 +1,25 @@
|
|||
%td.content{align: "left", style: "font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;", valign: "top", width: "600"}
|
||||
%table{border: "0", cellpadding: "0", cellspacing: "0", style: "color: #555; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;", width: "600"}
|
||||
%tr
|
||||
%td{width: "21"}
|
||||
%td
|
||||
%h2
|
||||
= "Project was moved to another location"
|
||||
%td{width: "21"}
|
||||
%tr
|
||||
%td{width: "21"}
|
||||
%td
|
||||
%p
|
||||
The project is now located under
|
||||
= link_to project_url(@project) do
|
||||
= @project.name_with_namespace
|
||||
%p
|
||||
To update the remote url in your local repository run:
|
||||
%br
|
||||
%table{border: "0", cellpadding: "0", cellspacing: "0", width: "558"}
|
||||
%tr
|
||||
%td{valign: "top"}
|
||||
%p{ style: "background:#f5f5f5; padding:10px; border:1px solid #ddd" }
|
||||
git remote set-url origin #{@project.ssh_url_to_repo}
|
||||
%br
|
||||
%td{ width: "21"}
|
|
@ -5,7 +5,7 @@
|
|||
%td{align: "left", style: "padding: 20px 0 0;"}
|
||||
%h2{style: "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
= "Reassigned Issue ##{@issue.id}"
|
||||
= link_to_gfm truncate(@issue.title, length: 16), project_issue_url(@issue.project, @issue)
|
||||
= link_to_gfm truncate(@issue.title, length: 30), project_issue_url(@issue.project, @issue)
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%tr
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%td{align: "left", style: "padding: 20px 0 0;"}
|
||||
%h2{style: "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
= "Reassigned Merge Request !#{@merge_request.id}"
|
||||
= link_to_gfm truncate(@merge_request.title, length: 16), project_merge_request_url(@merge_request.project, @merge_request)
|
||||
= link_to_gfm truncate(@merge_request.title, length: 30), project_merge_request_url(@merge_request.project, @merge_request)
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
%tr
|
||||
%td{style: "font-size: 1px; line-height: 1px;", width: "21"}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
- if Gitlab.config.omniauth_enabled?
|
||||
- if Gitlab.config.omniauth.enabled
|
||||
%fieldset
|
||||
%legend Social Accounts
|
||||
.oauth_select_holder
|
||||
|
@ -71,6 +71,9 @@
|
|||
%span.update-failed.cred.hide
|
||||
%i.icon-ok
|
||||
Failed
|
||||
%ul.cred
|
||||
%li It will change web url for personal projects.
|
||||
%li It will change the git path to repositories for personal projects.
|
||||
.input
|
||||
= f.submit 'Save username', class: "btn save-btn"
|
||||
|
||||
|
|
|
@ -33,11 +33,11 @@
|
|||
%ul
|
||||
%li
|
||||
%p You can change your password on Account page
|
||||
-unless Gitlab.config.disable_gravatar?
|
||||
- if Gitlab.config.gravatar.enabled
|
||||
%li
|
||||
%p You can change your avatar at #{link_to "gravatar.com", "http://gravatar.com"}
|
||||
|
||||
- if Gitlab.config.omniauth_enabled? && @user.provider?
|
||||
- if Gitlab.config.omniauth.enabled && @user.provider?
|
||||
%li
|
||||
%p
|
||||
You can login through #{@user.provider.titleize}!
|
||||
|
|
|
@ -17,13 +17,6 @@
|
|||
.controls
|
||||
= text_field_tag :ppath, @project.path_to_repo, class: "xxlarge", readonly: true
|
||||
|
||||
.control-group
|
||||
= f.label :namespace_id do
|
||||
%span Namespace
|
||||
.controls
|
||||
= f.select :namespace_id, namespaces_options(@project.namespace_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
|
||||
|
||||
%span.cred Be careful. Changing project namespace can have unintended side effects
|
||||
|
||||
- unless @project.heads.empty?
|
||||
.clearfix
|
||||
|
@ -57,11 +50,28 @@
|
|||
= f.check_box :wiki_enabled
|
||||
%span.descr Pages for project documentation
|
||||
|
||||
|
||||
- if can? current_user, :change_namespace, @project
|
||||
%fieldset.features
|
||||
%legend Transfer:
|
||||
.control-group
|
||||
= f.label :namespace_id do
|
||||
%span Namespace
|
||||
.controls
|
||||
= f.select :namespace_id, namespaces_options(@project.namespace_id || Namespace::global_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
|
||||
%br
|
||||
%ul.prepend-top-10.cred
|
||||
%li Be careful. Changing project namespace can have unintended side effects
|
||||
%li You can transfer project only to namespaces you can manage
|
||||
%li You will need to update your local repositories to point to the new location.
|
||||
|
||||
|
||||
%br
|
||||
|
||||
.actions
|
||||
= f.submit 'Save', class: "btn save-btn"
|
||||
= link_to 'Cancel', @project, class: "btn"
|
||||
- unless @project.new_record?
|
||||
.right
|
||||
= link_to 'Remove', @project, confirm: 'Are you sure?', method: :delete, class: "btn danger"
|
||||
- if can?(current_user, :remove_project, @project)
|
||||
.right
|
||||
= link_to 'Remove', @project, confirm: 'Removed project can not be restored! Are you sure?', method: :delete, class: "btn danger"
|
||||
|
|
|
@ -9,3 +9,4 @@
|
|||
$('.project_new_holder').show();
|
||||
$("#new_project").replaceWith("#{escape_javascript(render('new_form'))}");
|
||||
$('.save-project-loader').hide();
|
||||
new Projects();
|
||||
|
|
|
@ -29,6 +29,6 @@
|
|||
git remote add origin #{@project.url_to_repo}
|
||||
git push -u origin master
|
||||
|
||||
- if can? current_user, :admin_project, @project
|
||||
- if can? current_user, :remove_project, @project
|
||||
.prepend-top-20
|
||||
= link_to 'Remove project', @project, confirm: 'Are you sure?', method: :delete, class: "btn danger right"
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
= time_ago_in_words(note.created_at)
|
||||
ago
|
||||
- else
|
||||
.alert-message.block-message
|
||||
%span All files attached to project wall, issues etc will be displayed here
|
||||
%p.slead All files attached to project wall, issues etc will be displayed here
|
||||
|
||||
|
||||
|
|
|
@ -2,13 +2,15 @@
|
|||
%br
|
||||
.graph_holder
|
||||
%h4
|
||||
%small You can move around the graph by using arrow keys.
|
||||
%small You can move around the graph by using the arrow keys.
|
||||
#holder.graph
|
||||
.loading.loading-gray
|
||||
|
||||
:javascript
|
||||
var chunk1={commits:#{@commits_json}};
|
||||
var days=#{@days_json};
|
||||
initGraph();
|
||||
var branch_graph;
|
||||
$(function(){
|
||||
branchGraph($("#holder")[0]);
|
||||
GraphNav.init();
|
||||
branch_graph = new BranchGraph($("#holder"), {
|
||||
url: '#{url_for controller: 'projects', action: 'graph', format: :json}',
|
||||
commit_url: '#{url_for controller: 'projects', action: 'show'}/commits/%s'
|
||||
});
|
||||
});
|
||||
|
|
2
app/views/projects/update_failed.js.haml
Normal file
2
app/views/projects/update_failed.js.haml
Normal file
|
@ -0,0 +1,2 @@
|
|||
:plain
|
||||
$(".save-project-loader").replaceWith(errorMessage('#{escape_javascript(@error.message)}'));
|
|
@ -1,16 +1,19 @@
|
|||
%h3.page_title
|
||||
Services → GitLab CI Integration
|
||||
|
||||
GitLab CI
|
||||
%small Continuous integration server from GitLab
|
||||
.right
|
||||
.thumbnail
|
||||
- if @service.active
|
||||
= image_tag 'service-gitlab-ci.png', class: 'small'
|
||||
- else
|
||||
= image_tag 'service-disabled-gitlab-ci.png', class: 'small'
|
||||
- if @service.active
|
||||
%small.cgreen Enabled
|
||||
- else
|
||||
%small.cgray Disabled
|
||||
|
||||
|
||||
|
||||
.back_link
|
||||
= link_to project_services_path(@project) do
|
||||
← to services
|
||||
|
||||
%hr
|
||||
|
||||
|
||||
= form_for(@service, :as => :service, :url => project_service_path(@project, :gitlab_ci), :method => :put) do |f|
|
||||
- if @service.errors.any?
|
||||
.alert-message.block-message.error
|
||||
|
|
|
@ -1,15 +1,31 @@
|
|||
= render "projects/project_head"
|
||||
%h3.page_title Services
|
||||
%hr
|
||||
|
||||
.row
|
||||
.span6
|
||||
.padded
|
||||
%p.slead Continuous integration server from GitLab
|
||||
.thumbnail.left
|
||||
= link_to edit_project_service_path(@project, :gitlab_ci) do
|
||||
- if @gitlab_ci_service.try :active
|
||||
= image_tag 'service-gitlab-ci.png'
|
||||
- else
|
||||
= image_tag 'service-disabled-gitlab-ci.png'
|
||||
%br
|
||||
|
||||
%ul.ui-box.well-list
|
||||
%li
|
||||
%h4.cgreen
|
||||
= link_to edit_project_service_path(@project, :gitlab_ci) do
|
||||
GitLab CI
|
||||
%small Continuous integration server from GitLab
|
||||
.right
|
||||
- if @gitlab_ci_service.try(:active)
|
||||
%small.cgreen
|
||||
%i.icon-ok
|
||||
Enabled
|
||||
- else
|
||||
%small.cgray
|
||||
%i.icon-off
|
||||
Disabled
|
||||
%li.disabled
|
||||
%h4
|
||||
Jenkins CI
|
||||
%small An extendable open source continuous integration server
|
||||
.right
|
||||
%small Not implemented yet
|
||||
%li.disabled
|
||||
%h4
|
||||
Campfire
|
||||
%small Web-based group chat tool
|
||||
.right
|
||||
%small Not implemented yet
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.input-prepend.project_clone_holder
|
||||
%button{class: "btn active", :"data-clone" => @project.ssh_url_to_repo} SSH
|
||||
%button{class: "btn", :"data-clone" => @project.http_url_to_repo}= Gitlab.config.web_protocol.upcase
|
||||
%button{class: "btn", :"data-clone" => @project.http_url_to_repo}= Gitlab.config.gitlab.protocol.upcase
|
||||
= text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select input-xxlarge"
|
||||
|
|
|
@ -1,28 +1,41 @@
|
|||
%h3.page_title
|
||||
= @snippet.new_record? ? "New Snippet" : "Edit Snippet ##{@snippet.id}"
|
||||
%hr
|
||||
= form_for [@project, @snippet] do |f|
|
||||
-if @snippet.errors.any?
|
||||
.alert-message.block-message.error
|
||||
%ul
|
||||
- @snippet.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
.snippet-form-holder
|
||||
= form_for [@project, @snippet] do |f|
|
||||
-if @snippet.errors.any?
|
||||
.alert-message.block-message.error
|
||||
%ul
|
||||
- @snippet.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.clearfix
|
||||
= f.label :title
|
||||
.input= f.text_field :title, placeholder: "Example Snippet"
|
||||
.clearfix
|
||||
= f.label :file_name
|
||||
.input= f.text_field :file_name, placeholder: "example.rb"
|
||||
.clearfix
|
||||
= f.label "Lifetime"
|
||||
.input= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'}
|
||||
.clearfix
|
||||
= f.label :content, "Code"
|
||||
.input= f.text_area :content, class: "span8"
|
||||
.clearfix
|
||||
= f.label :title
|
||||
.input= f.text_field :title, placeholder: "Example Snippet", class: 'input-xlarge', required: true
|
||||
.clearfix
|
||||
= f.label "Lifetime"
|
||||
.input= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'}
|
||||
.clearfix
|
||||
.file-editor
|
||||
= f.label :file_name, "File"
|
||||
.input
|
||||
.file_holder.snippet
|
||||
.file_title
|
||||
= f.text_field :file_name, placeholder: "example.rb", class: 'snippet-file-name', required: true
|
||||
.file_content.code
|
||||
%pre#editor= @snippet.content
|
||||
= f.hidden_field :content, class: 'snippet-file-content'
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Save', class: "save-btn btn"
|
||||
= link_to "Cancel", project_snippets_path(@project), class: " btn"
|
||||
- unless @snippet.new_record?
|
||||
.right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}"
|
||||
|
||||
|
||||
:javascript
|
||||
var editor = ace.edit("editor");
|
||||
$(".snippet-form-holder form").submit(function(){
|
||||
$(".snippet-file-content").val(editor.getValue());
|
||||
});
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Save', class: "primary btn"
|
||||
= link_to "Cancel", project_snippets_path(@project), class: " btn"
|
||||
- unless @snippet.new_record?
|
||||
.right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}"
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
%tr
|
||||
%td
|
||||
= image_tag gravatar_icon(snippet.author_email), class: "avatar s24"
|
||||
%a{href: project_snippet_path(snippet.project, snippet)}
|
||||
%strong= truncate(snippet.title, length: 60)
|
||||
%td
|
||||
= snippet.file_name
|
||||
%td
|
||||
%span.cgray
|
||||
- if snippet.expires_at
|
||||
- if snippet.expires_at
|
||||
= snippet.expires_at.to_date.to_s(:short)
|
||||
- else
|
||||
Never
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
= render "projects/project_head"
|
||||
|
||||
- if can? current_user, :write_snippet, @project
|
||||
.alert-message.block-message
|
||||
%h3.page_title
|
||||
Snippets
|
||||
%small share code pastes with others out of git repository
|
||||
|
||||
- if can? current_user, :write_snippet, @project
|
||||
= link_to new_project_snippet_path(@project), class: "btn small add_new right", title: "New Snippet" do
|
||||
Add new snippet
|
||||
Share code pastes with others if it can't be in a git repository
|
||||
%br
|
||||
To add new snippet - click on button.
|
||||
|
||||
%br
|
||||
%table
|
||||
%thead
|
||||
%tr
|
||||
%th Title
|
||||
%th File Name
|
||||
%th Expires At
|
||||
= render @snippets.fresh
|
||||
- if @snippets.fresh.empty?
|
||||
= render @snippets
|
||||
- if @snippets.empty?
|
||||
%tr
|
||||
%td{colspan: 3}
|
||||
%h3.nothing_here_message Nothing here.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
= render "projects/project_head"
|
||||
|
||||
%h3
|
||||
%h3.page_title
|
||||
= @snippet.title
|
||||
%small= @snippet.file_name
|
||||
- if can?(current_user, :admin_snippet, @project) || @snippet.author == current_user
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
%h6 1. Choose people you want in the team
|
||||
.clearfix
|
||||
= f.label :user_ids, "People"
|
||||
.input= select_tag(:user_ids, options_from_collection_for_select(User.not_in_project(@project).all, :id, :name), {data: {placeholder: "Select users"}, class: "chosen xxlarge", multiple: true})
|
||||
.input= select_tag(:user_ids, options_from_collection_for_select(User.active.not_in_project(@project).all, :id, :name), {data: {placeholder: "Select users"}, class: "chosen xxlarge", multiple: true})
|
||||
|
||||
%h6 2. Set access level for them
|
||||
.clearfix
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
- user = member.user
|
||||
- allow_admin = can? current_user, :admin_project, @project
|
||||
%li.wll{id: dom_id(member), class: "team_member_row user_#{user.id}"}
|
||||
%li{id: dom_id(member), class: "team_member_row user_#{user.id}"}
|
||||
.row
|
||||
.span6
|
||||
= link_to project_team_member_path(@project, member), title: user.name, class: "dark" do
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
- grouper_project_members(@project).each do |access, members|
|
||||
%fieldset
|
||||
%legend
|
||||
.ui-box
|
||||
%h5
|
||||
= Project.access_options.key(access).pluralize
|
||||
%small= members.size
|
||||
%ul.unstyled
|
||||
- members.each do |up|
|
||||
%ul.well-list
|
||||
- members.sort_by(&:user_name).each do |up|
|
||||
= render(partial: 'team_members/show', locals: {member: up})
|
||||
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
= link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "right btn danger"
|
||||
.profile_avatar_holder
|
||||
= image_tag gravatar_icon(user.email, 60), class: "borders"
|
||||
%h3
|
||||
%h3.page_title
|
||||
= user.name
|
||||
%small
|
||||
= user.email
|
||||
|
|
|
@ -16,10 +16,11 @@
|
|||
- else
|
||||
%table#tree-slider{class: "table_#{@hex_path} tree-table" }
|
||||
%thead
|
||||
%th Name
|
||||
%th Last Update
|
||||
%th Last Commit
|
||||
%th= link_to "history", project_commits_path(@project, @id), class: "btn very_small right"
|
||||
%tr
|
||||
%th Name
|
||||
%th Last Update
|
||||
%th Last Commit
|
||||
%th= link_to "history", project_commits_path(@project, @id), class: "btn very_small right"
|
||||
|
||||
- if tree.up_dir?
|
||||
%tr.tree-item
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue