Non-interactive AWS install by running a single script.
Merge branch 'master' into non-interactive-aws-install Conflicts: doc/installation.md Fix merge mess in installation.md
This commit is contained in:
parent
eae41ad1df
commit
b80dd3d242
215 changed files with 3829 additions and 3348 deletions
|
@ -35,11 +35,13 @@
|
|||
%h3 Latest projects
|
||||
%hr
|
||||
- @projects.each do |project|
|
||||
%h5
|
||||
%p
|
||||
= link_to project.name, [:admin, project]
|
||||
.span6
|
||||
%h3 Latest users
|
||||
%hr
|
||||
- @users.each do |user|
|
||||
%h5
|
||||
= link_to user.name, [:admin, user]
|
||||
%p
|
||||
= link_to [:admin, user] do
|
||||
= user.name
|
||||
%small= user.email
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
Read more about system hooks
|
||||
%strong #{link_to "here", help_system_hooks_path, class: "vlink"}
|
||||
|
||||
= form_for @hook, as: :hook, url: admin_hooks_path do |f|
|
||||
= form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f|
|
||||
-if @hook.errors.any?
|
||||
.alert-message.block-message.error
|
||||
- @hook.errors.full_messages.each do |msg|
|
||||
|
|
|
@ -10,19 +10,17 @@
|
|||
Project name is
|
||||
.input
|
||||
= f.text_field :name, placeholder: "Example Project", class: "xxlarge"
|
||||
= f.submit project.new_record? ? 'Create project' : 'Save Project', class: "btn primary"
|
||||
|
||||
%hr
|
||||
.alert.alert-info
|
||||
%h5 Advanced settings:
|
||||
.adv_settings
|
||||
%h6 Advanced settings:
|
||||
.clearfix
|
||||
= f.label :path do
|
||||
Git Clone
|
||||
Path
|
||||
.input
|
||||
.input-prepend
|
||||
%span.add-on= Gitlab.config.ssh_path
|
||||
= f.text_field :path, placeholder: "example_project", disabled: !!project.id
|
||||
%span.add-on= ".git"
|
||||
%strong
|
||||
= text_field_tag :ppath, @admin_project.path_to_repo, class: "xlarge", disabled: true
|
||||
.clearfix
|
||||
= f.label :code do
|
||||
URL
|
||||
|
@ -42,8 +40,9 @@
|
|||
.input= f.select(:default_branch, project.heads.map(&:name), {}, style: "width:210px;")
|
||||
|
||||
- unless project.new_record?
|
||||
.alert.alert-info
|
||||
%h5 Features:
|
||||
%hr
|
||||
.adv_settings
|
||||
%h6 Features:
|
||||
|
||||
.clearfix
|
||||
= f.label :issues_enabled, "Issues"
|
||||
|
@ -63,7 +62,8 @@
|
|||
|
||||
- unless project.new_record?
|
||||
.actions
|
||||
= f.submit 'Save Project', class: "btn primary"
|
||||
= f.submit 'Save Project', class: "btn save-btn"
|
||||
= link_to 'Cancel', admin_projects_path, class: "btn cancel-btn"
|
||||
|
||||
|
||||
|
||||
|
|
29
app/views/admin/projects/_new_form.html.haml
Normal file
29
app/views/admin/projects/_new_form.html.haml
Normal file
|
@ -0,0 +1,29 @@
|
|||
= form_for [:admin, @admin_project] do |f|
|
||||
- if @admin_project.errors.any?
|
||||
.alert-message.block-message.error
|
||||
%span= @admin_project.errors.full_messages.first
|
||||
.clearfix.project_name_holder
|
||||
= f.label :name do
|
||||
Project name is
|
||||
.input
|
||||
= f.text_field :name, placeholder: "Example Project", class: "xxlarge"
|
||||
= f.submit 'Create project', class: "btn primary project-submit"
|
||||
|
||||
%hr
|
||||
%div.adv_settings
|
||||
%h6 Advanced settings:
|
||||
.clearfix
|
||||
= f.label :path do
|
||||
Git Clone
|
||||
.input
|
||||
.input-prepend
|
||||
%span.add-on= Gitlab.config.ssh_path
|
||||
= f.text_field :path, placeholder: "example_project", disabled: !@admin_project.new_record?
|
||||
%span.add-on= ".git"
|
||||
.clearfix
|
||||
= f.label :code do
|
||||
URL
|
||||
.input
|
||||
.input-prepend
|
||||
%span.add-on= web_app_url
|
||||
= f.text_field :code, placeholder: "example"
|
|
@ -1,8 +1,8 @@
|
|||
%h3
|
||||
%h3.page_title
|
||||
Projects
|
||||
= link_to 'New Project', new_admin_project_path, class: "btn small right"
|
||||
%br
|
||||
= form_tag admin_projects_path, method: :get do
|
||||
= form_tag admin_projects_path, method: :get, class: 'form-inline' do
|
||||
= text_field_tag :name, params[:name], class: "xlarge"
|
||||
= submit_tag "Search", class: "btn submit primary"
|
||||
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
%h3.page_title New project
|
||||
%hr
|
||||
= render 'form', project: @admin_project
|
||||
.project_new_holder
|
||||
%h3.page_title
|
||||
New Project
|
||||
%hr
|
||||
= render 'new_form'
|
||||
%div.save-project-loader.hide
|
||||
%center
|
||||
= image_tag "ajax_loader.gif"
|
||||
%h3 Creating project & repository. Please wait a few minutes
|
||||
|
||||
:javascript
|
||||
$(function(){ new Projects(); });
|
||||
|
|
|
@ -2,71 +2,79 @@
|
|||
= form_for [:admin, @admin_user] do |f|
|
||||
-if @admin_user.errors.any?
|
||||
#error_explanation
|
||||
%ul
|
||||
%ul.unstyled.alert.alert-error
|
||||
- @admin_user.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.row
|
||||
.span6
|
||||
.clearfix
|
||||
= f.label :name
|
||||
.input
|
||||
= f.text_field :name
|
||||
%span.help-inline * required
|
||||
.clearfix
|
||||
= f.label :email
|
||||
.input
|
||||
= f.text_field :email
|
||||
%span.help-inline * required
|
||||
%hr
|
||||
.span7
|
||||
.ui-box
|
||||
%br
|
||||
.clearfix
|
||||
= f.label :name
|
||||
.input
|
||||
= f.text_field :name
|
||||
%span.help-inline * required
|
||||
.clearfix
|
||||
= f.label :email
|
||||
.input
|
||||
= f.text_field :email
|
||||
%span.help-inline * required
|
||||
%hr
|
||||
-if f.object.new_record?
|
||||
.clearfix
|
||||
= f.label :force_random_password do
|
||||
%span Generate random password
|
||||
.input= f.check_box :force_random_password, {}, true, nil
|
||||
|
||||
%div.password-fields
|
||||
.clearfix
|
||||
= f.label :password
|
||||
.input= f.password_field :password, disabled: f.object.force_random_password
|
||||
.clearfix
|
||||
= f.label :password_confirmation
|
||||
.input= f.password_field :password_confirmation, disabled: f.object.force_random_password
|
||||
%hr
|
||||
.clearfix
|
||||
= f.label :skype
|
||||
.input= f.text_field :skype
|
||||
.clearfix
|
||||
= f.label :linkedin
|
||||
.input= f.text_field :linkedin
|
||||
.clearfix
|
||||
= f.label :twitter
|
||||
.input= f.text_field :twitter
|
||||
.span5
|
||||
.ui-box
|
||||
%br
|
||||
.clearfix
|
||||
= f.label :projects_limit
|
||||
.input= f.number_field :projects_limit
|
||||
|
||||
-if f.object.new_record?
|
||||
.clearfix
|
||||
= f.label :admin, class: "checkbox" do
|
||||
= f.check_box :force_random_password, {}, true, nil
|
||||
%span Generate random password
|
||||
|
||||
%div.password-fields
|
||||
.clearfix
|
||||
= f.label :password
|
||||
.input= f.password_field :password, disabled: f.object.force_random_password
|
||||
.clearfix
|
||||
= f.label :password_confirmation
|
||||
.input= f.password_field :password_confirmation, disabled: f.object.force_random_password
|
||||
%hr
|
||||
.clearfix
|
||||
= f.label :skype
|
||||
.input= f.text_field :skype
|
||||
.clearfix
|
||||
= f.label :linkedin
|
||||
.input= f.text_field :linkedin
|
||||
.clearfix
|
||||
= f.label :twitter
|
||||
.input= f.text_field :twitter
|
||||
.span6
|
||||
.clearfix
|
||||
= f.label :projects_limit
|
||||
.input= f.text_field :projects_limit, class: "small_input"
|
||||
= f.label :admin do
|
||||
%strong.cred Administrator
|
||||
.input= f.check_box :admin
|
||||
- unless @admin_user.new_record?
|
||||
%hr
|
||||
.padded.cred
|
||||
- if @admin_user.blocked
|
||||
%span
|
||||
This user is blocked and is not able to login to GitLab
|
||||
.clearfix
|
||||
= link_to 'Unblock User', unblock_admin_user_path(@admin_user), method: :put, class: "btn small right"
|
||||
- else
|
||||
%span
|
||||
Blocked users will be removed from all projects & will not be able to login to GitLab.
|
||||
.clearfix
|
||||
= link_to 'Block User', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small right danger"
|
||||
|
||||
.alert
|
||||
.clearfix
|
||||
%p Make the user a GitLab administrator.
|
||||
= f.label :admin, class: "checkbox" do
|
||||
= f.check_box :admin
|
||||
%span Administrator
|
||||
- unless @admin_user.new_record?
|
||||
.alert.alert-error
|
||||
- if @admin_user.blocked
|
||||
%span
|
||||
= link_to 'Unblock', unblock_admin_user_path(@admin_user), method: :put, class: "btn small"
|
||||
This user is blocked and is not able to login to GitLab
|
||||
- else
|
||||
%span
|
||||
= link_to 'Block', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
|
||||
Blocked users will be removed from all projects & will not be able to login to GitLab.
|
||||
.row
|
||||
.span6
|
||||
.span6
|
||||
.actions
|
||||
= f.submit 'Save', class: "btn primary"
|
||||
= f.submit 'Save', class: "btn save-btn"
|
||||
- if @admin_user.new_record?
|
||||
= link_to 'Cancel', admin_users_path, class: "btn"
|
||||
= link_to 'Cancel', admin_users_path, class: "btn cancel-btn"
|
||||
- else
|
||||
= link_to 'Cancel', admin_user_path(@admin_user), class: "btn"
|
||||
= link_to 'Cancel', admin_user_path(@admin_user), class: "btn cancel-btn"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
%h3= @admin_user.name
|
||||
%h3.page_title #{@admin_user.name} → Edit user
|
||||
%hr
|
||||
= render 'form'
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
%h3
|
||||
%h3.page_title
|
||||
Users
|
||||
= link_to 'New User', new_admin_user_path, class: "btn small right"
|
||||
%br
|
||||
|
||||
= form_tag admin_users_path, method: :get do
|
||||
= form_tag admin_users_path, method: :get, class: 'form-inline' do
|
||||
= text_field_tag :name, params[:name], class: "xlarge"
|
||||
= submit_tag "Search", class: "btn submit primary"
|
||||
%ul.nav.nav-pills
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
%h2 New user
|
||||
%hr
|
||||
%h3.page_title New user
|
||||
%br
|
||||
= render 'form'
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
%strong= link_to "Browse Code »", tree_project_ref_path(@project, commit.id), class: "right"
|
||||
%p
|
||||
= link_to commit.short_id(8), project_commit_path(@project, id: commit.id), class: "commit_short_id"
|
||||
%strong.cgray= commit.author_name
|
||||
–
|
||||
%strong.commit-author-name= commit.author_name
|
||||
%span.dash –
|
||||
= image_tag gravatar_icon(commit.author_email), class: "avatar", width: 16
|
||||
= link_to_gfm truncate(commit.title, length: 50), project_commit_path(@project, id: commit.id), class: "row_title"
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
= "..."
|
||||
= text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
|
||||
.actions
|
||||
= submit_tag "Compare", class: "btn btn-primary"
|
||||
= submit_tag "Compare", class: "btn primary"
|
||||
|
||||
|
||||
- unless @commits.empty?
|
||||
|
|
|
@ -5,12 +5,6 @@
|
|||
|
||||
|
||||
:javascript
|
||||
$(document).ready(function(){
|
||||
$(".line_note_link, .line_note_reply_link").live("click", function(e) {
|
||||
var form = $(".per_line_form");
|
||||
$(this).parent().parent().after(form);
|
||||
form.find("#note_line_code").val($(this).attr("line_code"));
|
||||
form.show();
|
||||
return false;
|
||||
});
|
||||
$(function(){
|
||||
PerLineNotes.init();
|
||||
});
|
||||
|
|
|
@ -1,14 +1,7 @@
|
|||
- if @projects.any?
|
||||
.projects
|
||||
.activities.span8
|
||||
- if current_user.require_ssh_key?
|
||||
.alert.alert-error.padded
|
||||
%span
|
||||
You wont be able to pull/push project code unless you
|
||||
%strong
|
||||
= link_to new_key_path, class: "vlink" do
|
||||
add new key
|
||||
to your profile
|
||||
= render 'shared/no_ssh'
|
||||
- if @events.any?
|
||||
.content_list= render @events
|
||||
- else
|
||||
|
@ -26,13 +19,16 @@
|
|||
= link_to new_project_path, class: "btn very_small info" do
|
||||
%i.icon-plus
|
||||
New Project
|
||||
- @projects.each do |project|
|
||||
= link_to project_path(project), class: dom_class(project) do
|
||||
%h4
|
||||
%span.ico.project
|
||||
= truncate(project.name, length: 25)
|
||||
%span.right
|
||||
→
|
||||
%ul.unstyled
|
||||
- @projects.each do |project|
|
||||
%li.wll
|
||||
= link_to project_path(project), class: dom_class(project) do
|
||||
%strong.project_name= truncate(project.name, length: 25)
|
||||
%span.arrow
|
||||
→
|
||||
%span.last_activity
|
||||
%strong Last activity:
|
||||
%span= project_last_activity(project)
|
||||
.bottom= paginate @projects, theme: "gitlab"
|
||||
|
||||
%hr
|
||||
|
@ -57,5 +53,5 @@
|
|||
If you will be added to project - it will be displayed here
|
||||
|
||||
|
||||
:javascript
|
||||
:javascript
|
||||
$(function(){ Pager.init(20); });
|
||||
|
|
|
@ -21,7 +21,5 @@
|
|||
Permissions:
|
||||
%pre
|
||||
= preserve do
|
||||
sudo chmod -R 770 /home/git/repositories/
|
||||
sudo chown -R git:git /home/git/repositories/
|
||||
sudo chown gitlab:gitlab /home/git/repositories/**/hooks/post-receive
|
||||
|
||||
sudo chmod -R 770 #{Gitlab.config.git_base_path}
|
||||
sudo chown -R git:git #{Gitlab.config.git_base_path}
|
||||
|
|
3
app/views/errors/invalid_ssh_key.html.haml
Normal file
3
app/views/errors/invalid_ssh_key.html.haml
Normal file
|
@ -0,0 +1,3 @@
|
|||
%h1 Git Error
|
||||
%hr
|
||||
%p Seems like SSH Key you provided is not a valid SSH key.
|
|
@ -9,5 +9,5 @@
|
|||
at
|
||||
%strong= link_to event.project.name, event.project
|
||||
|
||||
= link_to new_mr_path_from_push_event(event), title: "New Merge Request", class: "btn very_small primary" do
|
||||
= link_to new_mr_path_from_push_event(event), title: "New Merge Request", class: "btn very_small" do
|
||||
Create Merge Request
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
%a{href: "#README"} README
|
||||
%li
|
||||
%a{href: "#projects"} Projects
|
||||
%li
|
||||
%a{href: "#snippets"} Snippets
|
||||
%li
|
||||
%a{href: "#users"} Users
|
||||
%li
|
||||
|
@ -34,6 +36,16 @@
|
|||
|
||||
%br
|
||||
|
||||
.file_holder#snippets
|
||||
.file_title
|
||||
%i.icon-file
|
||||
Projects Snippets
|
||||
.file_content.wiki
|
||||
= preserve do
|
||||
= markdown File.read(Rails.root.join("doc", "api", "snippets.md"))
|
||||
|
||||
%br
|
||||
|
||||
.file_holder#users
|
||||
.file_title
|
||||
%i.icon-file
|
||||
|
@ -51,3 +63,13 @@
|
|||
.file_content.wiki
|
||||
= preserve do
|
||||
= markdown File.read(Rails.root.join("doc", "api", "issues.md"))
|
||||
|
||||
%br
|
||||
|
||||
.file_holder#milestones
|
||||
.file_title
|
||||
%i.icon-file
|
||||
Milestones
|
||||
.file_content.wiki
|
||||
= preserve do
|
||||
= markdown File.read(Rails.root.join("doc", "api", "milestones.md"))
|
||||
|
|
|
@ -31,3 +31,6 @@
|
|||
|
||||
%li
|
||||
%h5= link_to "Gitlab Markdown", help_markdown_path
|
||||
|
||||
%li
|
||||
%h5= link_to "SSH keys", help_ssh_path
|
||||
|
|
|
@ -1,25 +1,105 @@
|
|||
- bash_lexer = Pygments::Lexer[:bash]
|
||||
%h3.page_title Gitlab Markdown
|
||||
%h3.page_title Gitlab Flavored Markdown
|
||||
.back_link
|
||||
= link_to help_path do
|
||||
← to index
|
||||
%hr
|
||||
|
||||
%p.slead We extend Markdown with some GITLAB specific syntax. It allows you to link to:
|
||||
.row
|
||||
.span8
|
||||
%p
|
||||
For Gitlab we developed something we call "Gitlab Flavored Markdown" (GFM).
|
||||
It extends the standard Markdown in a few significant ways adds some useful functionality.
|
||||
|
||||
%ul
|
||||
%li issues (#123)
|
||||
%li merge request (!123)
|
||||
%li commits (1234567)
|
||||
%li team members (@foo)
|
||||
%li snippets ($123)
|
||||
%p You can use GFM in:
|
||||
%ul
|
||||
%li commit messages
|
||||
%li comments
|
||||
%li wall posts
|
||||
%li issues
|
||||
%li merge requests
|
||||
%li milestones
|
||||
%li wiki pages
|
||||
|
||||
%p.slead in
|
||||
%h3 Differences from traditional Markdown
|
||||
|
||||
%ul
|
||||
%li commit messages
|
||||
%li notes/comments/wall posts
|
||||
%li issues
|
||||
%li merge requests
|
||||
%li milestones
|
||||
%li wiki pages
|
||||
%h4 Newlines
|
||||
|
||||
%p
|
||||
The biggest difference that GFM introduces is in the handling of linebreaks.
|
||||
With traditional Markdown you can hard wrap paragraphs of text and they will be combined into a single paragraph. We find this to be the cause of a huge number of unintentional formatting errors.
|
||||
GFM treats newlines in paragraph-like content as real line breaks, which is probably what you intended.
|
||||
|
||||
|
||||
%p The next paragraph contains two phrases separated by a single newline character:
|
||||
%pre= "Roses are red\nViolets are blue"
|
||||
%p becomes
|
||||
= markdown "Roses are red\nViolets are blue"
|
||||
|
||||
%h4 Multiple underscores in words
|
||||
|
||||
%p
|
||||
It is not reasonable to italicize just <em>part</em> of a word, especially when you're dealing with code and names often appear with multiple underscores.
|
||||
Therefore, GFM ignores multiple underscores in words.
|
||||
|
||||
%pre= "perform_complicated_task\ndo_this_and_do_that_and_another_thing"
|
||||
%p becomes
|
||||
= markdown "perform_complicated_task\ndo_this_and_do_that_and_another_thing"
|
||||
|
||||
%h4 URL autolinking
|
||||
|
||||
%p
|
||||
GFM will autolink standard URLs you copy and paste into your text.
|
||||
So if you want to link to a URL (instead of a textual link), you can simply put the URL in verbatim and it will be turned into a link to that URL.
|
||||
|
||||
%h4 Fenced code blocks
|
||||
|
||||
%p
|
||||
Markdown converts text with four spaces at the front of each line to code blocks.
|
||||
GFM supports that, but we also support fenced blocks.
|
||||
Just wrap your code blocks in <code>```</code> and you won't need to indent manually to trigger a code block.
|
||||
|
||||
%pre= %Q{```ruby\nrequire 'redcarpet'\nmarkdown = Redcarpet.new("Hello World!")\nputs markdown.to_html\n```}
|
||||
%p becomes
|
||||
= markdown %Q{```ruby\nrequire 'redcarpet'\nmarkdown = Redcarpet.new("Hello World!")\nputs markdown.to_html\n```}
|
||||
|
||||
%h4 Special Gitlab references
|
||||
|
||||
%p
|
||||
GFM recognizes special references.
|
||||
You can easily reference e.g. a team member, an issue or a commit within a project.
|
||||
GFM will turn that reference into a link so you can navigate between them easily.
|
||||
|
||||
%p GFM will recognize the following references:
|
||||
%ul
|
||||
%li
|
||||
%code @foo
|
||||
for team members
|
||||
%li
|
||||
%code #123
|
||||
for issues
|
||||
%li
|
||||
%code !123
|
||||
for merge request
|
||||
%li
|
||||
%code $123
|
||||
for snippets
|
||||
%li
|
||||
%code 1234567
|
||||
for commits
|
||||
|
||||
-# this example will only be shown if the user has a project with at least one issue
|
||||
- if @project = current_user.projects.first
|
||||
- if issue = @project.issues.first
|
||||
%p For example in your #{link_to @project.name, project_path(@project)} project something like
|
||||
%pre= "This is related to ##{issue.id}. @#{current_user.name} is working on solving it."
|
||||
%p becomes
|
||||
= markdown "This is related to ##{issue.id}. @#{current_user.name} is working on solving it."
|
||||
|
||||
|
||||
|
||||
.span4.right
|
||||
.alert.alert-info
|
||||
%p
|
||||
If you're not already familiar with Markdown, you should spend 15 minutes and go over the excellent
|
||||
%strong= link_to "Markdown Syntax Guide", "http://daringfireball.net/projects/markdown/syntax"
|
||||
at Daring Fireball.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%h3 Permissions
|
||||
%h3.page_title Permissions
|
||||
.back_link
|
||||
= link_to help_path do
|
||||
= link_to help_path do
|
||||
← to index
|
||||
%hr
|
||||
|
||||
|
|
25
app/views/help/ssh.html.haml
Normal file
25
app/views/help/ssh.html.haml
Normal file
|
@ -0,0 +1,25 @@
|
|||
%h3.page_title SSH Keys
|
||||
.back_link
|
||||
= link_to help_path do
|
||||
← to index
|
||||
%hr
|
||||
|
||||
%p.slead
|
||||
SSH key allows you to establish a secure connection between your computer and Gitlab
|
||||
|
||||
%p.slead
|
||||
To generate a new SSH key just open your terminal and use code below.
|
||||
|
||||
%pre.dark
|
||||
ssh-keygen -t rsa -C "#{current_user.email}"
|
||||
|
||||
\# Creates a new ssh key using the provided email
|
||||
\# Generating public/private rsa key pair...
|
||||
|
||||
%p.slead
|
||||
Next just use code below to dump your public key and add to GITLAB SSH Keys
|
||||
|
||||
%pre.dark
|
||||
cat ~/.ssh/id_rsa.pub
|
||||
|
||||
\# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
|
|
@ -1,10 +1,10 @@
|
|||
%h3 System hooks
|
||||
.back_link
|
||||
= link_to :back do
|
||||
= link_to :back do
|
||||
← back
|
||||
%hr
|
||||
|
||||
%p.slead
|
||||
%p.slead
|
||||
Your Gitlab instance can perform HTTP POST request on next event: create_project, delete_project, create_user, delete_user, change_team_member.
|
||||
%br
|
||||
System Hooks can be used for logging or change information in LDAP server.
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
%h3 Web hooks
|
||||
%h3.page_title Web hooks
|
||||
.back_link
|
||||
= link_to help_path do
|
||||
= link_to help_path do
|
||||
← to index
|
||||
%hr
|
||||
|
||||
%p.slead
|
||||
Every Gitlab project can trigger a web server whenever the repo is pushed to.
|
||||
%p.slead
|
||||
Every Gitlab project can trigger a web server whenever the repo is pushed to.
|
||||
%br
|
||||
Web Hooks can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server.
|
||||
%br
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- bash_lexer = Pygments::Lexer[:bash]
|
||||
%h3 Workflow
|
||||
%h3.page_title Workflow
|
||||
.back_link
|
||||
= link_to help_path do
|
||||
= link_to help_path do
|
||||
← to index
|
||||
%hr
|
||||
|
||||
|
@ -9,25 +8,25 @@
|
|||
%li
|
||||
%p Clone project
|
||||
.bash
|
||||
%pre
|
||||
%pre.dark
|
||||
git clone git@example.com:project-name.git
|
||||
|
||||
%li
|
||||
%p Create branch with your feature
|
||||
.bash
|
||||
%pre
|
||||
%pre.dark
|
||||
git checkout -b $feature_name
|
||||
|
||||
%li
|
||||
%p Write code. Commit changes
|
||||
.bash
|
||||
%pre
|
||||
%pre.dark
|
||||
git commit -am "My feature is ready"
|
||||
|
||||
%li
|
||||
%p Push your branch to gitlabhq
|
||||
.bash
|
||||
%pre
|
||||
%pre.dark
|
||||
git push origin $feature_name
|
||||
|
||||
%li
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
total_commits_count => 3
|
||||
total_commits_count => 4
|
||||
}
|
||||
eos
|
||||
%>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
Read more about web hooks
|
||||
%strong #{link_to "here", help_web_hooks_path, class: "vlink"}
|
||||
|
||||
= form_for [@project, @hook], as: :hook, url: project_hooks_path(@project) do |f|
|
||||
= form_for [@project, @hook], as: :hook, url: project_hooks_path(@project), html: { class: 'form-inline' } do |f|
|
||||
-if @hook.errors.any?
|
||||
.alert-message.block-message.error
|
||||
- @hook.errors.full_messages.each do |msg|
|
||||
|
|
|
@ -38,19 +38,20 @@
|
|||
= f.label :description, "Details"
|
||||
.input
|
||||
= f.text_area :description, maxlength: 2000, class: "xxlarge", rows: 14
|
||||
%p.hint Markdown is enabled.
|
||||
%p.hint Issues are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}.
|
||||
|
||||
|
||||
.actions
|
||||
- if @issue.new_record?
|
||||
= f.submit 'Submit new issue', class: "primary btn"
|
||||
= f.submit 'Submit new issue', class: "btn save-btn"
|
||||
-else
|
||||
= f.submit 'Save changes', class: "primary btn"
|
||||
= f.submit 'Save changes', class: "save-btn btn"
|
||||
|
||||
- cancel_class = 'btn cancel-btn'
|
||||
- if request.xhr?
|
||||
= link_to "Cancel", "#back", onclick: "backToIssues();", class: "btn"
|
||||
= link_to "Cancel", "#back", onclick: "backToIssues();", class: cancel_class
|
||||
- else
|
||||
- if @issue.new_record?
|
||||
= link_to "Cancel", project_issues_path(@project), class: "btn"
|
||||
= link_to "Cancel", project_issues_path(@project), class: cancel_class
|
||||
- else
|
||||
= link_to "Cancel", project_issue_path(@project, @issue), class: "btn"
|
||||
= link_to "Cancel", project_issue_path(@project, @issue), class: cancel_class
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
%li{class: "#{'active' if current_page?(project_milestones_path(@project))}"}
|
||||
= link_to project_milestones_path(@project), class: "tab" do
|
||||
Milestones
|
||||
%li{class: "#{'active' if current_page?(project_labels_path(@project))}"}
|
||||
= link_to project_labels_path(@project), class: "tab" do
|
||||
Labels
|
||||
%li.right
|
||||
%span.rss-icon
|
||||
= link_to project_issues_path(@project, :atom, { private_token: current_user.private_token }) do
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
.right
|
||||
.span5
|
||||
- if can? current_user, :write_issue, @project
|
||||
= link_to new_project_issue_path(@project), class: "right btn small", title: "New Issue", remote: true do
|
||||
= link_to new_project_issue_path(@project), class: "right btn", title: "New Issue", remote: true do
|
||||
%i.icon-plus
|
||||
New Issue
|
||||
= form_tag search_project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: :right do
|
||||
|
|
|
@ -11,8 +11,14 @@
|
|||
.input= f.text_field :title
|
||||
.clearfix
|
||||
= f.label :key
|
||||
.input= f.text_area :key, class: [:xxlarge, :thin_area]
|
||||
.actions
|
||||
= f.submit 'Save', class: "primary btn"
|
||||
= link_to "Cancel", keys_path, class: "btn"
|
||||
.input
|
||||
= f.text_area :key, class: [:xxlarge, :thin_area]
|
||||
%p.hint
|
||||
Paste your public key here. Read more about how generate it
|
||||
= link_to "here", help_ssh_path
|
||||
|
||||
|
||||
.actions
|
||||
= f.submit 'Save', class: "btn save-btn"
|
||||
= link_to "Cancel", keys_path, class: "btn cancel-btn"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%h3.page_title
|
||||
SSH Keys
|
||||
= link_to "Add new", new_key_path, class: "btn small right"
|
||||
= link_to "Add new", new_key_path, class: "btn right"
|
||||
|
||||
%hr
|
||||
%p.slead
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
%h3.page_title New key
|
||||
%h3.page_title Add an SSH Key
|
||||
%hr
|
||||
= render 'form'
|
||||
|
||||
|
|
4
app/views/labels/_label.html.haml
Normal file
4
app/views/labels/_label.html.haml
Normal file
|
@ -0,0 +1,4 @@
|
|||
%li.wll
|
||||
%strong= label.name
|
||||
.right
|
||||
%span= pluralize label.count, 'issue'
|
14
app/views/labels/index.html.haml
Normal file
14
app/views/labels/index.html.haml
Normal file
|
@ -0,0 +1,14 @@
|
|||
= render "issues/head"
|
||||
|
||||
%h3.page_title
|
||||
Labels
|
||||
%br
|
||||
%div.ui-box
|
||||
%ul.unstyled.labels-table
|
||||
- @labels.each do |label|
|
||||
= render 'label', label: label
|
||||
|
||||
- unless @labels.present?
|
||||
%li
|
||||
%h3.nothing_here_message Nothing to show here
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
%br
|
||||
|
||||
.row
|
||||
.span6
|
||||
.span5
|
||||
.mr_branch_box
|
||||
%h5 From (Head Branch)
|
||||
.body
|
||||
|
@ -17,10 +17,11 @@
|
|||
= f.label :source_branch, "From", class: "control-label"
|
||||
.controls
|
||||
= f.select(:source_branch, @project.heads.map(&:name), { include_blank: "Select branch" }, style: "width:250px")
|
||||
.bottom_commit
|
||||
.mr_source_commit
|
||||
.mr_source_commit
|
||||
|
||||
.span6
|
||||
.span2
|
||||
%center= image_tag "merge.png", class: 'mr_direction_tip'
|
||||
.span5
|
||||
.mr_branch_box
|
||||
%h5 To (Base Branch)
|
||||
.body
|
||||
|
@ -28,8 +29,7 @@
|
|||
= f.label :target_branch, "To", class: "control-label"
|
||||
.controls
|
||||
= f.select(:target_branch, @project.heads.map(&:name), { include_blank: "Select branch" }, style: "width:250px")
|
||||
.bottom_commit
|
||||
.mr_target_commit
|
||||
.mr_target_commit
|
||||
|
||||
%h4.cdark 2. Fill info
|
||||
|
||||
|
@ -48,18 +48,19 @@
|
|||
.control-group
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Save', class: "btn-primary btn"
|
||||
= f.submit 'Save', class: "btn save-btn"
|
||||
- if @merge_request.new_record?
|
||||
= link_to project_merge_requests_path(@project), class: "btn" do
|
||||
= link_to project_merge_requests_path(@project), class: "btn cancel-btn" do
|
||||
Cancel
|
||||
- else
|
||||
= link_to project_merge_request_path(@project, @merge_request), class: "btn" do
|
||||
= link_to project_merge_request_path(@project, @merge_request), class: "btn cancel-btn" do
|
||||
Cancel
|
||||
|
||||
|
||||
|
||||
:javascript
|
||||
$(function(){
|
||||
disableButtonIfEmtpyField("#merge_request_title", ".save-btn");
|
||||
$('select#merge_request_assignee_id').chosen();
|
||||
$('select#merge_request_source_branch').chosen();
|
||||
$('select#merge_request_target_branch').chosen();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
%h3.page_title
|
||||
Merge Requests
|
||||
- if can? current_user, :write_issue, @project
|
||||
= link_to new_project_merge_request_path(@project), class: "right btn small", title: "New Merge Request" do
|
||||
= link_to new_project_merge_request_path(@project), class: "right btn", title: "New Merge Request" do
|
||||
New Merge Request
|
||||
|
||||
%br
|
||||
|
@ -10,17 +10,17 @@
|
|||
.ui-box
|
||||
.title
|
||||
%ul.nav.nav-pills
|
||||
%li{class: ("active" if (params[:f] == "0" || !params[:f]))}
|
||||
= link_to project_merge_requests_path(@project, f: 0) do
|
||||
%li{class: ("active" if (params[:f] == 'open' || !params[:f]))}
|
||||
= link_to project_merge_requests_path(@project, f: 'open') do
|
||||
Open
|
||||
%li{class: ("active" if params[:f] == "2")}
|
||||
= link_to project_merge_requests_path(@project, f: 2) do
|
||||
%li{class: ("active" if params[:f] == "closed")}
|
||||
= link_to project_merge_requests_path(@project, f: "closed") do
|
||||
Closed
|
||||
%li{class: ("active" if params[:f] == "3")}
|
||||
= link_to project_merge_requests_path(@project, f: 3) do
|
||||
%li{class: ("active" if params[:f] == 'assigned-to-me')}
|
||||
= link_to project_merge_requests_path(@project, f: 'assigned-to-me') do
|
||||
To Me
|
||||
%li{class: ("active" if params[:f] == "1")}
|
||||
= link_to project_merge_requests_path(@project, f: 1) do
|
||||
%li{class: ("active" if params[:f] == 'all')}
|
||||
= link_to project_merge_requests_path(@project, f: 'all') do
|
||||
All
|
||||
|
||||
%ul.unstyled
|
||||
|
|
|
@ -3,13 +3,12 @@
|
|||
%a.close{href: "#"} ×
|
||||
%h3 How To Merge
|
||||
.modal-body
|
||||
%pre
|
||||
%pre.dark
|
||||
= preserve do
|
||||
:erb
|
||||
git checkout <%= @merge_request.target_branch %>
|
||||
git fetch origin
|
||||
git merge origin/<%= @merge_request.source_branch %>
|
||||
git push origin <%= @merge_request.target_branch %>
|
||||
git checkout #{@merge_request.target_branch}
|
||||
git fetch origin
|
||||
git merge origin/#{@merge_request.source_branch}
|
||||
git push origin #{@merge_request.target_branch}
|
||||
|
||||
|
||||
:javascript
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
%h3.page_title
|
||||
= "Merge Request ##{@merge_request.id}:"
|
||||
|
||||
%span.pretty_label.branch= @merge_request.source_branch
|
||||
%span.label_branch= @merge_request.source_branch
|
||||
→
|
||||
%span.pretty_label.branch= @merge_request.target_branch
|
||||
%span.label_branch= @merge_request.target_branch
|
||||
|
||||
%span.right
|
||||
- if @merge_request.merged?
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
= f.label :description, "Description", class: "control-label"
|
||||
.controls
|
||||
= f.text_area :description, maxlength: 2000, class: "input-xlarge", rows: 10
|
||||
%p.hint Markdown is enabled.
|
||||
%p.hint Milestones are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}.
|
||||
.span6
|
||||
.control-group
|
||||
= f.label :due_date, "Due Date", class: "control-label"
|
||||
|
@ -32,20 +32,16 @@
|
|||
|
||||
.form-actions
|
||||
- if @milestone.new_record?
|
||||
= f.submit 'Create milestone', class: "primary btn"
|
||||
= f.submit 'Create milestone', class: "save-btn btn"
|
||||
= link_to "Cancel", project_milestones_path(@project), class: "btn cancel-btn"
|
||||
-else
|
||||
= f.submit 'Save changes', class: "primary btn"
|
||||
= f.submit 'Save changes', class: "save-btn btn"
|
||||
= link_to "Cancel", project_milestone_path(@project, @milestone), class: "btn cancel-btn"
|
||||
|
||||
- if request.xhr?
|
||||
= link_to "Cancel", "#back", onclick: "backToIssues();", class: "btn"
|
||||
- else
|
||||
- if @milestone.new_record?
|
||||
= link_to "Cancel", project_milestones_path(@project), class: "btn"
|
||||
- else
|
||||
= link_to "Cancel", project_milestone_path(@project, @milestone), class: "btn"
|
||||
|
||||
:javascript
|
||||
$(function() {
|
||||
disableButtonIfEmtpyField("#milestone_title", ".save-btn");
|
||||
$( ".datepicker" ).datepicker({
|
||||
dateFormat: "yy-mm-dd",
|
||||
onSelect: function(dateText, inst) { $("#milestone_due_date").val(dateText) }
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
%div.ui-box
|
||||
.title
|
||||
%ul.nav.nav-pills
|
||||
%li{class: ("active" if (params[:f] == "0" || !params[:f]))}
|
||||
= link_to project_milestones_path(@project, f: 0) do
|
||||
%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] == "1")}
|
||||
= link_to project_milestones_path(@project, f: 1) do
|
||||
%li{class: ("active" if params[:f] == "all")}
|
||||
= link_to project_milestones_path(@project, f: "all") do
|
||||
All
|
||||
|
||||
%ul.unstyled
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
- if note.valid?
|
||||
:plain
|
||||
$("#new_note .errors").remove();
|
||||
$('#new_note textarea').val("");
|
||||
$(".note-form-holder .error").remove();
|
||||
$('.note-form-holder textarea').val("");
|
||||
$('.note-form-holder #preview-link').text('Preview');
|
||||
$('.note-form-holder #preview-note').hide();
|
||||
$('.note-form-holder').show();
|
||||
NoteList.prepend(#{note.id}, "#{escape_javascript(render partial: "notes/show", locals: {note: note})}");
|
||||
- else
|
||||
:plain
|
||||
$("#new_note").replaceWith("#{escape_javascript(render('form'))}");
|
||||
$(".note-form-holder").replaceWith("#{escape_javascript(render('form'))}");
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
- if note.valid?
|
||||
:plain
|
||||
$(".per_line_form").hide();
|
||||
$('#new_note textarea').val("");
|
||||
$('.line-note-form-holder textarea').val("");
|
||||
$("a.line_note_reply_link[line_code='#{note.line_code}']").closest("tr").remove();
|
||||
var trEl = $(".#{note.line_code}").parent();
|
||||
trEl.after("#{escape_javascript(render partial: "notes/per_line_show", locals: {note: note})}");
|
||||
|
|
|
@ -1,38 +1,39 @@
|
|||
= form_for [@project, @note], remote: "true", multipart: true do |f|
|
||||
%h3.page_title Leave a comment
|
||||
-if @note.errors.any?
|
||||
.alert-message.block-message.error
|
||||
- @note.errors.full_messages.each do |msg|
|
||||
%div= msg
|
||||
.note-form-holder
|
||||
= form_for [@project, @note], remote: "true", multipart: true do |f|
|
||||
%h3.page_title Leave a comment
|
||||
-if @note.errors.any?
|
||||
.alert-message.block-message.error
|
||||
- @note.errors.full_messages.each do |msg|
|
||||
%div= msg
|
||||
|
||||
= f.hidden_field :noteable_id
|
||||
= f.hidden_field :noteable_type
|
||||
= f.text_area :note, size: 255
|
||||
#preview-note.well.hide
|
||||
%p.hint
|
||||
= link_to "Gitlab Markdown", help_markdown_path, target: '_blank'
|
||||
is enabled.
|
||||
= link_to 'Preview', preview_project_notes_path(@project), id: 'preview-link'
|
||||
= f.hidden_field :noteable_id
|
||||
= f.hidden_field :noteable_type
|
||||
= f.text_area :note, size: 255, class: 'note-text'
|
||||
#preview-note.preview_note.hide
|
||||
.hint
|
||||
.right Comments are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}.
|
||||
.clearfix
|
||||
|
||||
.row.note_advanced_opts.hide
|
||||
.span2
|
||||
= f.submit 'Add Comment', class: "btn primary submit_note", id: "submit_note"
|
||||
.span4.notify_opts
|
||||
%h6.left Notify via email:
|
||||
= label_tag :notify do
|
||||
= check_box_tag :notify, 1, @note.noteable_type != "Commit"
|
||||
%span Project team
|
||||
.row.note_advanced_opts.hide
|
||||
.span3
|
||||
= f.submit 'Add Comment', class: "btn success submit_note grouped", id: "submit_note"
|
||||
= link_to 'Preview', preview_project_notes_path(@project), class: 'btn grouped', id: 'preview-link'
|
||||
.span4.notify_opts
|
||||
%h6.left Notify via email:
|
||||
= label_tag :notify do
|
||||
= check_box_tag :notify, 1, @note.noteable_type != "Commit"
|
||||
%span Project team
|
||||
|
||||
- if @note.notify_only_author?(current_user)
|
||||
= label_tag :notify_author do
|
||||
= check_box_tag :notify_author, 1 , @note.noteable_type == "Commit"
|
||||
%span Commit author
|
||||
.span6.attachments
|
||||
%h6.left Attachment:
|
||||
%span.file_name File name...
|
||||
|
||||
.input.input_file
|
||||
%a.file_upload.btn.small Upload File
|
||||
= f.file_field :attachment, class: "input-file"
|
||||
%span.hint Any file less than 10 MB
|
||||
- if @note.notify_only_author?(current_user)
|
||||
= label_tag :notify_author do
|
||||
= check_box_tag :notify_author, 1 , @note.noteable_type == "Commit"
|
||||
%span Commit author
|
||||
.span5.attachments
|
||||
%h6.left Attachment:
|
||||
%span.file_name File name...
|
||||
|
||||
.input.input_file
|
||||
%a.file_upload.btn.small Upload File
|
||||
= f.file_field :attachment, class: "input-file"
|
||||
%span.hint Any file less than 10 MB
|
||||
|
||||
|
|
|
@ -1,33 +1,34 @@
|
|||
%table{style: "display:none;"}
|
||||
%tr.per_line_form
|
||||
%td{colspan: 3 }
|
||||
= form_for [@project, @note], remote: "true", multipart: true do |f|
|
||||
%h3.page_title Leave a note
|
||||
%div.span10
|
||||
-if @note.errors.any?
|
||||
.alert-message.block-message.error
|
||||
- @note.errors.full_messages.each do |msg|
|
||||
%div= msg
|
||||
.line-note-form-holder
|
||||
= form_for [@project, @note], remote: "true", multipart: true do |f|
|
||||
%h3.page_title Leave a note
|
||||
%div.span10
|
||||
-if @note.errors.any?
|
||||
.alert-message.block-message.error
|
||||
- @note.errors.full_messages.each do |msg|
|
||||
%div= msg
|
||||
|
||||
= f.hidden_field :noteable_id
|
||||
= f.hidden_field :noteable_type
|
||||
= f.hidden_field :line_code
|
||||
= f.text_area :note, size: 255
|
||||
.note_actions
|
||||
.buttons
|
||||
= f.submit 'Add note', class: "btn primary submit_note", id: "submit_note"
|
||||
= link_to "Cancel", "#", class: "btn hide-button"
|
||||
.options
|
||||
%h6.left Notify via email:
|
||||
.labels
|
||||
= label_tag :notify do
|
||||
= check_box_tag :notify, 1, @note.noteable_type != "Commit"
|
||||
%span Project team
|
||||
= f.hidden_field :noteable_id
|
||||
= f.hidden_field :noteable_type
|
||||
= f.hidden_field :line_code
|
||||
= f.text_area :note, size: 255, class: 'line-note-text'
|
||||
.note_actions
|
||||
.buttons
|
||||
= f.submit 'Add note', class: "btn save-btn submit_note submit_inline_note", id: "submit_note"
|
||||
= link_to "Cancel", "#", class: "btn hide-button"
|
||||
.options
|
||||
%h6.left Notify via email:
|
||||
.labels
|
||||
= label_tag :notify do
|
||||
= check_box_tag :notify, 1, @note.noteable_type != "Commit"
|
||||
%span Project team
|
||||
|
||||
- if @note.notify_only_author?(current_user)
|
||||
= label_tag :notify_author do
|
||||
= check_box_tag :notify_author, 1 , @note.noteable_type == "Commit"
|
||||
%span Commit author
|
||||
- if @note.notify_only_author?(current_user)
|
||||
= label_tag :notify_author do
|
||||
= check_box_tag :notify_author, 1 , @note.noteable_type == "Commit"
|
||||
%span Commit author
|
||||
|
||||
:javascript
|
||||
$(function(){
|
||||
|
|
16
app/views/notify/issue_status_changed_email.html.haml
Normal file
16
app/views/notify/issue_status_changed_email.html.haml
Normal file
|
@ -0,0 +1,16 @@
|
|||
%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; "}
|
||||
= "Issue was #{@issue_status} by #{@updated_by.name}"
|
||||
%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; "}
|
||||
= "Issue ##{@issue.id}"
|
||||
= link_to_gfm truncate(@issue.title, length: 45), project_issue_url(@issue.project, @issue), title: @issue.title
|
||||
%br
|
||||
|
14
app/views/notify/project_access_granted_email.html.haml
Normal file
14
app/views/notify/project_access_granted_email.html.haml
Normal file
|
@ -0,0 +1,14 @@
|
|||
%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; "}
|
||||
= "You got 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
|
||||
%br
|
|
@ -16,4 +16,4 @@
|
|||
= f.label :password_confirmation
|
||||
.input= f.password_field :password_confirmation
|
||||
.actions
|
||||
= f.submit 'Save', class: "btn primary"
|
||||
= f.submit 'Save', class: "btn save-btn"
|
||||
|
|
|
@ -45,9 +45,10 @@
|
|||
%span.help-block Tell us about yourself in fewer than 250 characters.
|
||||
.span5.right
|
||||
|
||||
%p.alert.alert-info
|
||||
%strong Tip:
|
||||
You can change your avatar at gravatar.com
|
||||
-unless Gitlab.config.disable_gravatar?
|
||||
%p.alert.alert-info
|
||||
%strong Tip:
|
||||
You can change your avatar at gravatar.com
|
||||
|
||||
%h4
|
||||
Personal projects:
|
||||
|
@ -66,4 +67,4 @@
|
|||
= link_to "Add Public Key", new_key_path, class: "btn small right"
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Save', class: "btn-primary btn"
|
||||
= f.submit 'Save', class: "btn save-btn"
|
||||
|
|
21
app/views/projects/_clone_panel.html.haml
Normal file
21
app/views/projects/_clone_panel.html.haml
Normal file
|
@ -0,0 +1,21 @@
|
|||
.project_clone_panel
|
||||
.row
|
||||
.span7
|
||||
.form-horizontal
|
||||
.input-prepend.project_clone_holder
|
||||
= link_to "SSH", "#", class: "btn small active", :"data-clone" => @project.ssh_url_to_repo
|
||||
= link_to "HTTP", "#", class: "btn small", :"data-clone" => @project.http_url_to_repo
|
||||
= text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5"
|
||||
.span4.right
|
||||
.right
|
||||
- if can? current_user, :download_code, @project
|
||||
= link_to archive_project_repository_path(@project), class: "btn small grouped" do
|
||||
%i.icon-download-alt
|
||||
Download
|
||||
- if @project.merge_requests_enabled && can?(current_user, :write_merge_request, @project)
|
||||
= link_to new_project_merge_request_path(@project), title: "New Merge Request", class: "btn small grouped" do
|
||||
Merge Request
|
||||
- if @project.issues_enabled && can?(current_user, :write_issue, @project)
|
||||
= link_to new_project_issue_path(@project), title: "New Issue", class: "btn small grouped" do
|
||||
Issue
|
||||
|
|
@ -10,9 +10,9 @@
|
|||
.input
|
||||
= f.text_field :name, placeholder: "Example Project", class: "xxlarge"
|
||||
|
||||
%h5.page_title
|
||||
.alert.alert-info
|
||||
%h5 Advanced settings:
|
||||
%hr
|
||||
.adv_settings
|
||||
%h6 Advanced settings:
|
||||
.clearfix
|
||||
= f.label :path do
|
||||
Path
|
||||
|
@ -34,8 +34,9 @@
|
|||
.input= f.select(:default_branch, @project.heads.map(&:name), {}, style: "width:210px;")
|
||||
|
||||
- unless @project.new_record?
|
||||
.alert.alert-info
|
||||
%h5 Features:
|
||||
%hr
|
||||
.adv_settings
|
||||
%h6 Features:
|
||||
|
||||
.clearfix
|
||||
= f.label :issues_enabled, "Issues"
|
||||
|
@ -56,7 +57,7 @@
|
|||
%br
|
||||
|
||||
.actions
|
||||
= f.submit 'Save', class: "btn primary"
|
||||
= f.submit 'Save', class: "btn save-btn"
|
||||
= link_to 'Cancel', @project, class: "btn"
|
||||
- unless @project.new_record?
|
||||
.right
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
Project name is
|
||||
.input
|
||||
= f.text_field :name, placeholder: "Example Project", class: "xxlarge"
|
||||
= f.submit 'Create project', class: "btn primary"
|
||||
= f.submit 'Create project', class: "btn primary project-submit"
|
||||
|
||||
%hr
|
||||
.alert.alert-info
|
||||
%h5 Advanced settings:
|
||||
%div.adv_settings
|
||||
%h6 Advanced settings:
|
||||
.clearfix
|
||||
= f.label :path do
|
||||
Git Clone
|
||||
|
|
|
@ -1,47 +1,51 @@
|
|||
- if current_user.require_ssh_key?
|
||||
.alert-message.block-message.error
|
||||
%ul
|
||||
%li You have no ssh keys added to your profile.
|
||||
%li You wont be able to pull/push repository.
|
||||
%li Visit profile → keys and add public key of every machine you want to use for work with gitlabhq.
|
||||
|
||||
.alert-message.block-message.error
|
||||
%ul.unstyled.alert_holder
|
||||
%li You should push repository to proceed.
|
||||
%li After push you will be able to browse code, commits etc.
|
||||
|
||||
- bash_lexer = Pygments::Lexer[:bash]
|
||||
= render 'shared/no_ssh'
|
||||
.project_clone_panel
|
||||
.row
|
||||
.span7
|
||||
.form-horizontal
|
||||
.input-prepend.project_clone_holder
|
||||
= link_to "SSH", "#", class: "btn small active", :"data-clone" => @project.ssh_url_to_repo
|
||||
= link_to "HTTP", "#", class: "btn small", :"data-clone" => @project.http_url_to_repo
|
||||
= text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5"
|
||||
%div.git-empty
|
||||
%h3 Git global setup:
|
||||
- setup_str = ["git config --global user.name \"#{current_user.name}\"",
|
||||
"git config --global user.email \"#{current_user.email}\""].join("\n")
|
||||
= preserve do
|
||||
= raw bash_lexer.highlight(setup_str, lexer: 'bash', options: {encoding: 'utf-8'})
|
||||
%h4 Git global setup:
|
||||
%pre.dark
|
||||
= preserve do
|
||||
git config --global user.name "#{current_user.name}"
|
||||
git config --global user.email "#{current_user.email}"
|
||||
|
||||
%br
|
||||
%br
|
||||
%h3 Create Repository
|
||||
- repo_setup_str = ["mkdir #{@project.path}",
|
||||
"cd #{@project.path}",
|
||||
"git init",
|
||||
"touch README",
|
||||
"git add README",
|
||||
"git commit -m 'first commit'",
|
||||
"git remote add origin #{@project.url_to_repo}",
|
||||
"git push -u origin master"].join("\n")
|
||||
%h4.prepend-top-20 Create Repository
|
||||
%pre.dark
|
||||
= preserve do
|
||||
mkdir #{@project.path}
|
||||
cd #{@project.path}
|
||||
git init
|
||||
touch README
|
||||
git add README
|
||||
git commit -m 'first commit'
|
||||
git remote add origin #{@project.url_to_repo}
|
||||
git push -u origin master
|
||||
|
||||
= preserve do
|
||||
= raw bash_lexer.highlight(repo_setup_str)
|
||||
|
||||
%br
|
||||
%br
|
||||
%h3 Existing Git Repo?
|
||||
- exist_repo_setup_str = ["cd existing_git_repo",
|
||||
"git remote add origin #{@project.url_to_repo}",
|
||||
"git push -u origin master"].join("\n")
|
||||
= preserve do
|
||||
= raw bash_lexer.highlight(exist_repo_setup_str)
|
||||
%h4.prepend-top-20 Existing Git Repo?
|
||||
%pre.dark
|
||||
= preserve do
|
||||
cd existing_git_repo
|
||||
git remote add origin #{@project.url_to_repo}
|
||||
git push -u origin master
|
||||
|
||||
- if can? current_user, :admin_project, @project
|
||||
.alert-message.block-message.error.prepend-top-20
|
||||
= link_to 'Remove project', @project, confirm: 'Are you sure?', method: :delete, class: "btn danger"
|
||||
.prepend-top-20
|
||||
= link_to 'Remove project', @project, confirm: 'Are you sure?', method: :delete, class: "btn danger right"
|
||||
|
||||
|
||||
|
||||
:javascript
|
||||
$(function(){
|
||||
var link_sel = ".project_clone_holder a";
|
||||
$(link_sel).bind("click", function() {
|
||||
$(link_sel).removeClass("active");
|
||||
$(this).addClass("active");
|
||||
$("#project_clone").val($(this).attr("data-clone"));
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
New Project
|
||||
%hr
|
||||
= render 'new_form'
|
||||
%div.ajax_loader.hide
|
||||
%div.save-project-loader.hide
|
||||
%center
|
||||
%div.padded= image_tag "ajax_loader.gif"
|
||||
%h3.prepend-top Creating project & repository. Please wait a few minutes
|
||||
= image_tag "ajax_loader.gif"
|
||||
%h3 Creating project & repository. Please wait a few minutes
|
||||
|
||||
:javascript
|
||||
$(function(){ new Projects(); });
|
||||
|
|
|
@ -1,35 +1,12 @@
|
|||
= render "project_head"
|
||||
|
||||
.entry
|
||||
.row
|
||||
.span7
|
||||
.form-horizontal
|
||||
.input-prepend.project_clone_holder
|
||||
|
||||
%span.add-on git clone
|
||||
= link_to "SSH", "#", class: "btn small active", :"data-clone" => @project.ssh_url_to_repo
|
||||
= link_to "HTTP", "#", class: "btn small", :"data-clone" => @project.http_url_to_repo
|
||||
= text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5"
|
||||
.span4.right
|
||||
.right
|
||||
- if can? current_user, :download_code, @project
|
||||
= link_to archive_project_repository_path(@project), class: "btn small grouped" do
|
||||
%i.icon-download-alt
|
||||
Download
|
||||
- if @project.merge_requests_enabled && can?(current_user, :write_merge_request, @project)
|
||||
= link_to new_project_merge_request_path(@project), title: "New Merge Request", class: "btn small grouped" do
|
||||
Merge Request
|
||||
- if @project.issues_enabled && can?(current_user, :write_issue, @project)
|
||||
= link_to new_project_issue_path(@project), title: "New Issue", class: "btn small grouped" do
|
||||
Issue
|
||||
|
||||
= render 'clone_panel'
|
||||
= render "events/event_last_push", event: @last_push
|
||||
.content_list= render @events
|
||||
|
||||
:javascript
|
||||
:javascript
|
||||
$(function(){
|
||||
var link_sel = ".project_clone_holder a";
|
||||
$(link_sel).bind("click", function() {
|
||||
$(link_sel).bind("click", function() {
|
||||
$(link_sel).removeClass("active");
|
||||
$(this).addClass("active");
|
||||
$("#project_clone").val($(this).attr("data-clone"));
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
%tr{ class: "tree-item #{tree_hex_class(content)}", url: tree_file_project_ref_path(@project, @ref, file) }
|
||||
%td.tree-item-file-name
|
||||
= tree_icon(content)
|
||||
= link_to truncate(content.name, length: 40), tree_file_project_ref_path(@project, @ref || @commit.id, file), remote: :true
|
||||
%strong= link_to truncate(content.name, length: 40), tree_file_project_ref_path(@project, @ref || @commit.id, file), remote: :true
|
||||
%td.tree_time_ago.cgray
|
||||
- if index == 1
|
||||
%span.log_loading
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
= form_tag search_path, method: :get do |f|
|
||||
= form_tag search_path, method: :get, class: 'form-inline' do |f|
|
||||
.padded
|
||||
= label_tag :search do
|
||||
%strong Looking for
|
||||
.input
|
||||
= text_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge", id: "dashboard_search"
|
||||
= submit_tag 'Search', class: "btn btn-primary"
|
||||
= submit_tag 'Search', class: "btn primary"
|
||||
- if params[:search].present?
|
||||
%br
|
||||
%h3
|
||||
|
|
8
app/views/shared/_no_ssh.html.haml
Normal file
8
app/views/shared/_no_ssh.html.haml
Normal file
|
@ -0,0 +1,8 @@
|
|||
- if current_user.require_ssh_key?
|
||||
%h6.error_message
|
||||
%span
|
||||
You wont be able to pull/push project code unless you
|
||||
%strong
|
||||
= link_to new_key_path, class: "vlink" do
|
||||
add SSH key
|
||||
to your profile
|
|
@ -9,7 +9,7 @@
|
|||
%span.label Blocked
|
||||
|
||||
= link_to project_team_member_path(@project, member), title: user.name, class: "dark" do
|
||||
= image_tag gravatar_icon(user.email, 40), class: "avatar"
|
||||
= image_tag gravatar_icon(user.email, 40), class: "avatar s32"
|
||||
= link_to project_team_member_path(@project, member), title: user.name, class: "dark" do
|
||||
%strong= truncate(user.name, lenght: 40)
|
||||
%br
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
= form_for(@team_member, as: :team_member, url: project_team_member_path(@project, @team_member)) do |f|
|
||||
= f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, class: "project-access-select", disabled: !allow_admin
|
||||
%hr
|
||||
= render user.recent_events.limit(5)
|
||||
= render @events
|
||||
:javascript
|
||||
$(function(){
|
||||
$('.repo-access-select, .project-access-select').live("change", function() {
|
||||
|
|
|
@ -14,13 +14,14 @@
|
|||
.middle_box_content
|
||||
.input
|
||||
%span.cgray
|
||||
Wiki content is parsed with #{link_to "Markdown", "http://en.wikipedia.org/wiki/Markdown"}.
|
||||
To add link to new page you can just type
|
||||
Wiki content is parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}.
|
||||
To link to a (new) page you can just type
|
||||
%code [Link Title](page-slug)
|
||||
\.
|
||||
|
||||
.bottom_box_content
|
||||
= f.label :content
|
||||
.input= f.text_area :content, class: 'span8'
|
||||
.actions
|
||||
= f.submit 'Save', class: "primary btn"
|
||||
= link_to "Cancel", project_wiki_path(@project, :index), class: "btn"
|
||||
= f.submit 'Save', class: "save-btn btn"
|
||||
= link_to "Cancel", project_wiki_path(@project, :index), class: "btn cancel-btn"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue