v1.0
This commit is contained in:
parent
93efff9452
commit
0f6ebcb694
317 changed files with 11347 additions and 0 deletions
6
app/views/admin/_top_menu.html.haml
Normal file
6
app/views/admin/_top_menu.html.haml
Normal file
|
@ -0,0 +1,6 @@
|
|||
%div.top_project_menu
|
||||
%span= link_to "Users", admin_users_path, :style => "width:50px;", :class => controller.controller_name == "users" ? "current" : nil
|
||||
%span= link_to "Projects", admin_projects_path, :style => "width:50px;", :class => controller.controller_name == "projects" ? "current" : nil
|
||||
%span= link_to "Teams", admin_team_members_path, :style => "width:50px;", :class => controller.controller_name == "team_members" ? "current" : nil
|
||||
%span= link_to "Emails", admin_emails_path, :style => "width:50px;", :class => controller.controller_name == "mailer" ? "current" : nil
|
||||
|
29
app/views/admin/mailer/preview.html.haml
Normal file
29
app/views/admin/mailer/preview.html.haml
Normal file
|
@ -0,0 +1,29 @@
|
|||
%p This is page with preview for all system emails that are sent to user
|
||||
%p Email previews built based on existing Project/Commit/Issue base - so some preview maybe unavailable unless object appear in system
|
||||
|
||||
#accordion
|
||||
%h3
|
||||
%a New user
|
||||
%div
|
||||
%iframe{ :src=> admin_mailer_preview_user_new_path, :width=>"100%", :height=>"350"}
|
||||
%h3
|
||||
%a New issue
|
||||
%div
|
||||
%iframe{ :src=> admin_mailer_preview_issue_new_path, :width=>"100%", :height=>"350"}
|
||||
%h3
|
||||
%a Commit note
|
||||
%div
|
||||
%iframe{ :src=> admin_mailer_preview_note_path(:type => "Commit"), :width=>"100%", :height=>"350"}
|
||||
%h3
|
||||
%a Issue note
|
||||
%div
|
||||
%iframe{ :src=> admin_mailer_preview_note_path(:type => "Issue"), :width=>"100%", :height=>"350"}
|
||||
%h3
|
||||
%a Wall note
|
||||
%div
|
||||
%iframe{ :src=> admin_mailer_preview_note_path(:type => "Wall"), :width=>"100%", :height=>"350"}
|
||||
|
||||
|
||||
:javascript
|
||||
$(function() {
|
||||
$( "#accordion" ).accordion(); });
|
30
app/views/admin/projects/_form.html.haml
Normal file
30
app/views/admin/projects/_form.html.haml
Normal file
|
@ -0,0 +1,30 @@
|
|||
= form_for [:admin, @admin_project] do |f|
|
||||
-if @admin_project.errors.any?
|
||||
#error_explanation
|
||||
%h2= "#{pluralize(@admin_project.errors.count, "error")} prohibited this admin_project from being saved:"
|
||||
%ul
|
||||
- @admin_project.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.span-24
|
||||
.span-12
|
||||
.field
|
||||
= f.label :name
|
||||
%br
|
||||
= f.text_field :name
|
||||
.field
|
||||
= f.label :code
|
||||
%br
|
||||
= f.text_field :code
|
||||
.field
|
||||
= f.label :path
|
||||
%br
|
||||
= f.text_field :path
|
||||
.span-10
|
||||
.field
|
||||
= f.label :description
|
||||
%br
|
||||
= f.text_area :description
|
||||
.clear
|
||||
.actions
|
||||
= f.submit 'Save', :class => "lbutton"
|
5
app/views/admin/projects/edit.html.haml
Normal file
5
app/views/admin/projects/edit.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
|||
= render 'form'
|
||||
|
||||
= link_to 'Show', [:admin, @admin_project]
|
||||
\|
|
||||
= link_to 'Back', admin_projects_path
|
26
app/views/admin/projects/index.html.haml
Normal file
26
app/views/admin/projects/index.html.haml
Normal file
|
@ -0,0 +1,26 @@
|
|||
%table
|
||||
%tr
|
||||
%th Name
|
||||
%th Code
|
||||
%th Path
|
||||
%th Team Members
|
||||
%th Last Commit
|
||||
%th
|
||||
%th
|
||||
%th
|
||||
|
||||
- @admin_projects.each do |project|
|
||||
%tr
|
||||
%td= project.name
|
||||
%td= project.code
|
||||
%td= project.path
|
||||
%td= project.users_projects.count
|
||||
%td= last_commit(project)
|
||||
%td= link_to 'Show', [:admin, project]
|
||||
%td= link_to 'Edit', edit_admin_project_path(project), :id => "edit_#{dom_id(project)}"
|
||||
%td= link_to 'Destroy', [:admin, project], :confirm => 'Are you sure?', :method => :delete
|
||||
|
||||
%br
|
||||
|
||||
= paginate @admin_projects
|
||||
= link_to 'New Project', new_admin_project_path
|
5
app/views/admin/projects/new.html.haml
Normal file
5
app/views/admin/projects/new.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
|||
%h1 New project
|
||||
|
||||
= render 'form'
|
||||
|
||||
= link_to 'Back', admin_projects_path
|
45
app/views/admin/projects/show.html.haml
Normal file
45
app/views/admin/projects/show.html.haml
Normal file
|
@ -0,0 +1,45 @@
|
|||
%p#notice= notice
|
||||
|
||||
.span-8.colborder
|
||||
%h2= @admin_project.name
|
||||
|
||||
%p
|
||||
%b Name:
|
||||
= @admin_project.name
|
||||
%p
|
||||
%b Code:
|
||||
= @admin_project.code
|
||||
%p
|
||||
%b Path:
|
||||
= @admin_project.path
|
||||
%p
|
||||
%b Description:
|
||||
= @admin_project.description
|
||||
|
||||
= link_to 'Edit', edit_admin_project_path(@admin_project)
|
||||
\|
|
||||
= link_to 'Back', admin_projects_path
|
||||
|
||||
.span-14
|
||||
|
||||
%h2 Team
|
||||
|
||||
%table.round-borders
|
||||
%tr
|
||||
%th Name
|
||||
%th Added
|
||||
%th Web
|
||||
%th Git
|
||||
%th Admin
|
||||
%th
|
||||
|
||||
- @admin_project.users_projects.each do |tm|
|
||||
%tr
|
||||
%td= link_to tm.user_name, admin_team_member_path(tm)
|
||||
%td= time_ago_in_words(tm.updated_at) + " ago"
|
||||
%td= check_box_tag "read", 1, @admin_project.readers.include?(tm.user), :disabled => :disabled
|
||||
%td= check_box_tag "commit", 1, @admin_project.writers.include?(tm.user), :disabled => :disabled
|
||||
%td.span-2= check_box_tag "admin", 1, @admin_project.admins.include?(tm.user), :disabled => :disabled
|
||||
%td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete
|
||||
|
||||
= link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id})
|
34
app/views/admin/team_members/_form.html.haml
Normal file
34
app/views/admin/team_members/_form.html.haml
Normal file
|
@ -0,0 +1,34 @@
|
|||
= form_for @admin_team_member, :as => :team_member, :url => @admin_team_member.new_record? ? admin_team_members_path(@admin_team_member) : admin_team_member_path(@admin_team_member) do |f|
|
||||
-if @admin_team_member.errors.any?
|
||||
#error_explanation
|
||||
%h2= "#{pluralize(@admin_team_member.errors.count, "error")} prohibited this admin_project from being saved:"
|
||||
%ul
|
||||
- @admin_team_member.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.span-10
|
||||
- if @admin_team_member.new_record?
|
||||
.field
|
||||
= f.label :user_id
|
||||
%br
|
||||
= f.select :user_id, User.all.map { |user| [user.name, user.id] }
|
||||
.field
|
||||
= f.label :project_id
|
||||
%br
|
||||
= f.select :project_id, Project.all.map { |user| [user.name, user.id] }
|
||||
|
||||
.span-10
|
||||
.span-6
|
||||
%b Access:
|
||||
.span-8
|
||||
= f.check_box :read
|
||||
Web Access (Browse Repo)
|
||||
.span-8
|
||||
= f.check_box :write
|
||||
Git Access (User will be added to commiters list)
|
||||
.span-6.append-bottom
|
||||
= f.check_box :admin
|
||||
Admin (Can manage project)
|
||||
%hr
|
||||
.actions
|
||||
= f.submit 'Save'
|
5
app/views/admin/team_members/edit.html.haml
Normal file
5
app/views/admin/team_members/edit.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
|||
= render 'form'
|
||||
|
||||
= link_to 'Show', admin_team_member_path(@admin_team_member)
|
||||
\|
|
||||
= link_to 'Back', admin_team_members_path
|
30
app/views/admin/team_members/index.html.haml
Normal file
30
app/views/admin/team_members/index.html.haml
Normal file
|
@ -0,0 +1,30 @@
|
|||
- @admin_team_members.group_by(&:project).sort.each do |project, members|
|
||||
%h3= link_to project.name, [:admin, project]
|
||||
%table
|
||||
%tr
|
||||
%th Name
|
||||
%th Email
|
||||
%th Read
|
||||
%th Git
|
||||
%th Manage
|
||||
%th Added
|
||||
%th
|
||||
%th
|
||||
%th
|
||||
- members.each do |tm|
|
||||
- user = tm.user
|
||||
%tr
|
||||
%td.span-6= tm.user_name
|
||||
%td.span-6= tm.user_email
|
||||
%td.span-1= check_box_tag "read", 1, project.readers.include?(user), :disabled => :disabled
|
||||
%td.span-1= check_box_tag "commit", 1, project.writers.include?(user), :disabled => :disabled
|
||||
%td.span-2= check_box_tag "admin", 1, project.admins.include?(user), :disabled => :disabled
|
||||
%td.span-3= time_ago_in_words(tm.updated_at) + " ago"
|
||||
%td= link_to 'Show', admin_team_member_path(tm)
|
||||
%td= link_to 'Edit', edit_admin_team_member_path(tm), :id => "edit_#{dom_id(tm)}"
|
||||
%td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete
|
||||
|
||||
%br
|
||||
|
||||
= paginate @admin_team_members
|
||||
= link_to 'New Team Member', new_admin_team_member_path
|
5
app/views/admin/team_members/new.html.haml
Normal file
5
app/views/admin/team_members/new.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
|||
%h1 New team member
|
||||
|
||||
= render 'form'
|
||||
|
||||
= link_to 'Back', admin_team_members_path
|
32
app/views/admin/team_members/show.html.haml
Normal file
32
app/views/admin/team_members/show.html.haml
Normal file
|
@ -0,0 +1,32 @@
|
|||
%p#notice= notice
|
||||
|
||||
.span-10
|
||||
%p
|
||||
%b Name:
|
||||
= @admin_team_member.user_name
|
||||
%p
|
||||
%b Project:
|
||||
= @admin_team_member.project.name
|
||||
%p
|
||||
%b Since:
|
||||
= @admin_team_member.updated_at
|
||||
|
||||
|
||||
.span-10
|
||||
.span-6
|
||||
%b Access:
|
||||
.span-8
|
||||
= check_box_tag "read", 1, @admin_team_member.read, :disabled => :disabled
|
||||
Web Access (Browse Repo)
|
||||
.span-8
|
||||
= check_box_tag "commit", 1, @admin_team_member.write, :disabled => :disabled
|
||||
Git Access (User will be added to commiters list)
|
||||
.span-6.append-bottom
|
||||
= check_box_tag "admin", 1, @admin_team_member.admin, :disabled => :disabled
|
||||
Admin (Can manage project)
|
||||
|
||||
%hr
|
||||
|
||||
= link_to 'Edit', edit_admin_team_member_path(@admin_project)
|
||||
\|
|
||||
= link_to 'Back', admin_team_members_path
|
38
app/views/admin/users/_form.html.haml
Normal file
38
app/views/admin/users/_form.html.haml
Normal file
|
@ -0,0 +1,38 @@
|
|||
.user_new
|
||||
= form_for [:admin, @admin_user] do |f|
|
||||
-if @admin_user.errors.any?
|
||||
#error_explanation
|
||||
%h2= "#{pluralize(@admin_user.errors.count, "error")} prohibited this admin_user from being saved:"
|
||||
%ul
|
||||
- @admin_user.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.span-24
|
||||
.span-11.colborder
|
||||
.field
|
||||
= f.label :name
|
||||
%br
|
||||
= f.text_field :name
|
||||
.field
|
||||
= f.label :email
|
||||
%br
|
||||
= f.text_field :email
|
||||
.field
|
||||
= f.label :password
|
||||
%br
|
||||
= f.password_field :password
|
||||
.field
|
||||
= f.label :password_confirmation
|
||||
%br
|
||||
= f.password_field :password_confirmation
|
||||
.span-11
|
||||
.field.prepend-top.append-bottom
|
||||
= f.check_box :admin
|
||||
= f.label :admin
|
||||
.field.prepend-top
|
||||
= f.text_field :projects_limit, :class => "small_input"
|
||||
= f.label :projects_limit
|
||||
.clear
|
||||
%br
|
||||
.actions
|
||||
= f.submit 'Save', :class => "lbutton"
|
4
app/views/admin/users/edit.html.haml
Normal file
4
app/views/admin/users/edit.html.haml
Normal file
|
@ -0,0 +1,4 @@
|
|||
= render 'form'
|
||||
|
||||
= link_to 'Show', [:admin, @admin_user], :class => "right lbutton"
|
||||
= link_to 'Back', admin_users_path, :class => "right lbutton"
|
24
app/views/admin/users/index.html.haml
Normal file
24
app/views/admin/users/index.html.haml
Normal file
|
@ -0,0 +1,24 @@
|
|||
%table
|
||||
%tr
|
||||
%th Admin
|
||||
%th Name
|
||||
%th Email
|
||||
%th Projects
|
||||
%th
|
||||
%th
|
||||
%th
|
||||
|
||||
- @admin_users.each do |user|
|
||||
%tr
|
||||
%td= check_box_tag "admin", 1, user.admin, :disabled => :disabled
|
||||
%td= user.name
|
||||
%td= user.email
|
||||
%td= user.users_projects.count
|
||||
%td= link_to 'Show', [:admin, user]
|
||||
%td= link_to 'Edit', edit_admin_user_path(user), :id => "edit_#{dom_id(user)}"
|
||||
%td= link_to 'Destroy', [:admin, user], :confirm => 'Are you sure?', :method => :delete
|
||||
|
||||
%br
|
||||
|
||||
= paginate @admin_users
|
||||
= link_to 'New User', new_admin_user_path
|
6
app/views/admin/users/new.html.haml
Normal file
6
app/views/admin/users/new.html.haml
Normal file
|
@ -0,0 +1,6 @@
|
|||
%h1 New user
|
||||
|
||||
= render 'form'
|
||||
|
||||
|
||||
= link_to 'Back', admin_users_path, :class => "right lbutton"
|
45
app/views/admin/users/show.html.haml
Normal file
45
app/views/admin/users/show.html.haml
Normal file
|
@ -0,0 +1,45 @@
|
|||
%p#notice= notice
|
||||
|
||||
.span-8.colborder
|
||||
%p
|
||||
%b Name:
|
||||
= @admin_user.name
|
||||
%p
|
||||
%b Email:
|
||||
= @admin_user.email
|
||||
%p
|
||||
%b Admin:
|
||||
= @admin_user.admin
|
||||
%p
|
||||
%b Projects limit:
|
||||
= @admin_user.projects_limit
|
||||
|
||||
.clear
|
||||
= link_to 'Edit', edit_admin_user_path(@admin_user)
|
||||
\|
|
||||
= link_to 'Back', admin_users_path
|
||||
|
||||
.span-14
|
||||
%h2 Projects
|
||||
|
||||
%table.round-borders
|
||||
%tr
|
||||
%th Name
|
||||
%th Added
|
||||
%th Web
|
||||
%th Git
|
||||
%th Admin
|
||||
%th
|
||||
|
||||
- @admin_user.users_projects.each do |tm|
|
||||
- project = tm.project
|
||||
%tr
|
||||
%td= link_to project.name, admin_project_path(project)
|
||||
%td= time_ago_in_words(tm.updated_at) + " ago"
|
||||
%td= check_box_tag "read", 1, project.readers.include?(@admin_user), :disabled => :disabled
|
||||
%td= check_box_tag "commit", 1, project.writers.include?(@admin_usertm), :disabled => :disabled
|
||||
%td.span-2= check_box_tag "admin", 1, project.admins.include?(@admin_user), :disabled => :disabled
|
||||
%td= link_to 'Edit', edit_admin_team_member_path(tm)
|
||||
%td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete
|
||||
|
||||
= link_to 'Add To Another Project', new_admin_team_member_path(:team_member => {:user_id => @admin_user.id})
|
22
app/views/commits/_commits.html.haml
Normal file
22
app/views/commits/_commits.html.haml
Normal file
|
@ -0,0 +1,22 @@
|
|||
- @commits.group_by { |c| c.committed_date.to_date }.each do |day, commits|
|
||||
.day-commits-table
|
||||
.day-header
|
||||
%h3= day.stamp("28 Aug, 2010")
|
||||
%ul
|
||||
- commits.each do |commit|
|
||||
%li{ :class => "commit", :url => project_commit_path(@project, :id => commit.id) }
|
||||
- if commit.author.email
|
||||
= image_tag gravatar_icon(commit.author.email), :class => "left", :width => 40, :style => "padding-right:5px;"
|
||||
- else
|
||||
= image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;"
|
||||
%p
|
||||
%strong
|
||||
= commit.message.length > 60 ? (commit.message[0..59] + "...") : commit.message
|
||||
= link_to "Browse Code", tree_project_path(@project, :commit_id => commit.id), :class => "lite_button", :style => "float:right"
|
||||
= link_to truncate(commit.id.to_s, :length => 16), project_commit_path(@project, :id => commit.id), :class => "lite_button", :style => "width:120px;float:right"
|
||||
%span
|
||||
%span
|
||||
[ #{commit.author} ]
|
||||
= time_ago_in_words(commit.committed_date)
|
||||
ago
|
||||
= more_commits_link if @commits.size > 99
|
58
app/views/commits/_diff.html.haml
Normal file
58
app/views/commits/_diff.html.haml
Normal file
|
@ -0,0 +1,58 @@
|
|||
- require "utils"
|
||||
.file_stats
|
||||
- @commit.diffs.each do |diff|
|
||||
- if diff.deleted_file
|
||||
%span.removed_file
|
||||
%a{:href => "##{diff.a_path}"}
|
||||
= diff.a_path
|
||||
= image_tag "blueprint_delete.png"
|
||||
- elsif diff.renamed_file
|
||||
%span.moved_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.a_path
|
||||
= "->"
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_notice.png"
|
||||
- elsif diff.new_file
|
||||
%span.new_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_add.png"
|
||||
- else
|
||||
%span.edit_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_info.png"
|
||||
- @commit.diffs.each do |diff|
|
||||
- next if diff.diff.empty?
|
||||
- file = (@commit.tree / diff.b_path)
|
||||
- next unless file
|
||||
.diff_file
|
||||
.diff_file_header
|
||||
- if diff.deleted_file
|
||||
%strong{:id => "#{diff.b_path}"}= diff.a_path
|
||||
- else
|
||||
%strong{:id => "#{diff.b_path}"}= diff.b_path
|
||||
%br/
|
||||
.diff_file_content
|
||||
- if file.mime_type =~ /application|text/ && !Utils.binary?(file.data)
|
||||
- lines_arr = diff.diff.lines.to_a
|
||||
- line_old = lines_arr[2].match(/-(\d)/)[0].to_i.abs rescue 0
|
||||
- line_new = lines_arr[2].match(/\+(\d)/)[0].to_i.abs rescue 0
|
||||
- lines = lines_arr[3..-1].join
|
||||
- lines.each_line do |line|
|
||||
= diff_line(line, line_new, line_old)
|
||||
- if line[0] == "+"
|
||||
- line_new += 1
|
||||
- elsif
|
||||
- line[0] == "-"
|
||||
- line_old += 1
|
||||
- else
|
||||
- line_new += 1
|
||||
- line_old += 1
|
||||
- elsif file.mime_type =~ /image/
|
||||
.diff_file_content_image
|
||||
%img{:src => "data:image/jpeg;base64,#{Base64.encode64(file.data)}"}
|
||||
- else
|
||||
%p
|
||||
%center No preview for this file type
|
9
app/views/commits/_index.html.haml
Normal file
9
app/views/commits/_index.html.haml
Normal file
|
@ -0,0 +1,9 @@
|
|||
= form_tag project_commits_path(@project), :method => :get do
|
||||
%h3
|
||||
= @project.name
|
||||
[ #{select_tag "branch", options_for_select(@repo.heads.map(&:name), @branch), :onchange => "this.form.submit();", :class => "small"} ]
|
||||
= link_to 'Back', project_path(@project), :class => "button"
|
||||
%h1 Listing commits
|
||||
%div{:id => dom_id(@project)}
|
||||
= render "commits"
|
||||
%br/
|
13
app/views/commits/index.html.haml
Normal file
13
app/views/commits/index.html.haml
Normal file
|
@ -0,0 +1,13 @@
|
|||
%div
|
||||
%h3
|
||||
.left
|
||||
= form_tag project_commits_path(@project), :method => :get do
|
||||
= select_tag "branch", options_for_select(@repo.heads.map(&:name), @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Branches"
|
||||
|
||||
.left.prepend-1
|
||||
= form_tag project_commits_path(@project), :method => :get do
|
||||
= select_tag "tag", options_for_select(@project.tags, @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Tags"
|
||||
= text_field_tag "ssh", @project.url_to_repo, :class => ["ssh_project_url", "one_click_select"]
|
||||
.clear
|
||||
%div{:id => dom_id(@project)}
|
||||
= render "commits"
|
2
app/views/commits/index.js.erb
Normal file
2
app/views/commits/index.js.erb
Normal file
|
@ -0,0 +1,2 @@
|
|||
$("#more-commits-link").remove();
|
||||
$('#<%= dom_id(@project)%>').append('<%= escape_javascript(render("commits")) %>');
|
39
app/views/commits/show.html.haml
Normal file
39
app/views/commits/show.html.haml
Normal file
|
@ -0,0 +1,39 @@
|
|||
%h3
|
||||
= "[ #{@commit.committer} ] #{truncate @commit.message, :length => 80}"
|
||||
-#= link_to 'Back', project_commits_path(@project), :class => "button"
|
||||
%table.round-borders
|
||||
%tr
|
||||
%td ID
|
||||
%td= @commit.id
|
||||
%tr
|
||||
%td Author
|
||||
%td= @commit.author
|
||||
%tr
|
||||
%td Commiter
|
||||
%td= @commit.committer
|
||||
%tr
|
||||
%td Commited Date
|
||||
%td= @commit.committed_date
|
||||
%tr
|
||||
%td Message
|
||||
%td= @commit.message
|
||||
%tr
|
||||
%td Tree
|
||||
%td= link_to 'Browse Code', tree_project_path(@project, :commit_id => @commit.id)
|
||||
.clear
|
||||
|
||||
#tabs
|
||||
%ul
|
||||
%li
|
||||
%a{ :href => "#tabs-1" } Diff
|
||||
%li
|
||||
%a{ :href => "#tabs-2" } Comments
|
||||
%span{ :class => "notes_count" }= @notes.count
|
||||
%hr
|
||||
#tabs-1
|
||||
= render "commits/diff"
|
||||
#tabs-2
|
||||
= render "notes/notes"
|
||||
|
||||
:javascript
|
||||
$(function() { $( "#tabs" ).tabs(); });
|
6
app/views/commits/show.js.haml
Normal file
6
app/views/commits/show.js.haml
Normal file
|
@ -0,0 +1,6 @@
|
|||
:plain
|
||||
$("#side-commit-preview").remove();
|
||||
var side = $("<div id='side-commit-preview'></div>");
|
||||
side.html("#{escape_javascript(render "commits/show")}");
|
||||
$("##{dom_id(@project)}").parent().append(side);
|
||||
$("##{dom_id(@project)}").addClass("span-14");
|
1
app/views/dashboard/index.html.haml
Normal file
1
app/views/dashboard/index.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
timeline
|
12
app/views/devise/confirmations/new.html.erb
Normal file
12
app/views/devise/confirmations/new.html.erb
Normal file
|
@ -0,0 +1,12 @@
|
|||
<h2>Resend confirmation instructions</h2>
|
||||
|
||||
<%= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div><%= f.label :email %><br />
|
||||
<%= f.email_field :email %></div>
|
||||
|
||||
<div><%= f.submit "Resend confirmation instructions" %></div>
|
||||
<% end %>
|
||||
|
||||
<%= render :partial => "devise/shared/links" %>
|
|
@ -0,0 +1,5 @@
|
|||
<p>Welcome <%= @resource.email %>!</p>
|
||||
|
||||
<p>You can confirm your account through the link below:</p>
|
||||
|
||||
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
|
|
@ -0,0 +1,8 @@
|
|||
<p>Hello <%= @resource.email %>!</p>
|
||||
|
||||
<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
|
||||
|
||||
<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
|
||||
|
||||
<p>If you didn't request this, please ignore this email.</p>
|
||||
<p>Your password won't change until you access the link above and create a new one.</p>
|
7
app/views/devise/mailer/unlock_instructions.html.erb
Normal file
7
app/views/devise/mailer/unlock_instructions.html.erb
Normal file
|
@ -0,0 +1,7 @@
|
|||
<p>Hello <%= @resource.email %>!</p>
|
||||
|
||||
<p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
|
||||
|
||||
<p>Click the link below to unlock your account:</p>
|
||||
|
||||
<p><%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %></p>
|
16
app/views/devise/passwords/edit.html.erb
Normal file
16
app/views/devise/passwords/edit.html.erb
Normal file
|
@ -0,0 +1,16 @@
|
|||
<h2>Change your password</h2>
|
||||
|
||||
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
<%= f.hidden_field :reset_password_token %>
|
||||
|
||||
<div><%= f.label :password, "New password" %><br />
|
||||
<%= f.password_field :password %></div>
|
||||
|
||||
<div><%= f.label :password_confirmation, "Confirm new password" %><br />
|
||||
<%= f.password_field :password_confirmation %></div>
|
||||
|
||||
<div><%= f.submit "Change my password" %></div>
|
||||
<% end %>
|
||||
|
||||
<%= render :partial => "devise/shared/links" %>
|
15
app/views/devise/passwords/new.html.erb
Normal file
15
app/views/devise/passwords/new.html.erb
Normal file
|
@ -0,0 +1,15 @@
|
|||
<h2>Forgot your password?</h2>
|
||||
|
||||
<div class="span-12 colborder">
|
||||
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div><%= f.label :email %><br />
|
||||
<%= f.email_field :email %></div>
|
||||
|
||||
<div><%= f.submit "Send me reset password instructions", :class => "lbutton vm" %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div>
|
||||
<%= render :partial => "devise/shared/links" %>
|
||||
</div>
|
28
app/views/devise/registrations/edit.html.erb
Normal file
28
app/views/devise/registrations/edit.html.erb
Normal file
|
@ -0,0 +1,28 @@
|
|||
<h2>Edit <%= resource_name.to_s.humanize %></h2>
|
||||
|
||||
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div><%= f.label :email %><br />
|
||||
<%= f.email_field :email %></div>
|
||||
|
||||
<div><%= f.label :name %><br />
|
||||
<%= f.text_field :name %></div>
|
||||
|
||||
<div><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
|
||||
<%= f.password_field :password %></div>
|
||||
|
||||
<div><%= f.label :password_confirmation %><br />
|
||||
<%= f.password_field :password_confirmation %></div>
|
||||
|
||||
<div><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
|
||||
<%= f.password_field :current_password %></div>
|
||||
|
||||
<div><%= f.submit "Update", :class => "input_button" %></div>
|
||||
<% end %>
|
||||
|
||||
<h3>Cancel my account</h3>
|
||||
|
||||
<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p>
|
||||
|
||||
<%= link_to "Back", :back %>
|
18
app/views/devise/registrations/new.html.erb
Normal file
18
app/views/devise/registrations/new.html.erb
Normal file
|
@ -0,0 +1,18 @@
|
|||
<h2>Sign up</h2>
|
||||
|
||||
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div><%= f.label :email %><br />
|
||||
<%= f.email_field :email %></div>
|
||||
|
||||
<div><%= f.label :password %><br />
|
||||
<%= f.password_field :password %></div>
|
||||
|
||||
<div><%= f.label :password_confirmation %><br />
|
||||
<%= f.password_field :password_confirmation %></div>
|
||||
|
||||
<div><%= f.submit "Sign up", :class => "input_button" %></div>
|
||||
<% end %>
|
||||
|
||||
<%= render :partial => "devise/shared/links" %>
|
20
app/views/devise/sessions/new.html.erb
Normal file
20
app/views/devise/sessions/new.html.erb
Normal file
|
@ -0,0 +1,20 @@
|
|||
<h2>Sign in</h2>
|
||||
|
||||
<div class="span-12 colborder">
|
||||
<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
|
||||
<div><%= f.label :email %><br />
|
||||
<%= f.text_field :email %></div>
|
||||
|
||||
<div><%= f.label :password %><br />
|
||||
<%= f.password_field :password %></div>
|
||||
|
||||
<% if devise_mapping.rememberable? -%>
|
||||
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
|
||||
<% end -%>
|
||||
<br/>
|
||||
<div><%= f.submit "Sign in", :class => "lbutton vm" %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div>
|
||||
<%= render :partial => "devise/shared/links" %>
|
||||
</div>
|
25
app/views/devise/shared/_links.erb
Normal file
25
app/views/devise/shared/_links.erb
Normal file
|
@ -0,0 +1,25 @@
|
|||
<%- if controller_name != 'sessions' %>
|
||||
<%= link_to "Sign in", new_session_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
|
||||
<%= link_to "Sign up", new_registration_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
|
||||
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
|
||||
<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
|
||||
<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.omniauthable? %>
|
||||
<%- resource_class.omniauth_providers.each do |provider| %>
|
||||
<%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %><br />
|
||||
<% end -%>
|
||||
<% end -%>
|
12
app/views/devise/unlocks/new.html.erb
Normal file
12
app/views/devise/unlocks/new.html.erb
Normal file
|
@ -0,0 +1,12 @@
|
|||
<h2>Resend unlock instructions</h2>
|
||||
|
||||
<%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div><%= f.label :email %><br />
|
||||
<%= f.email_field :email %></div>
|
||||
|
||||
<div><%= f.submit "Resend unlock instructions" %></div>
|
||||
<% end %>
|
||||
|
||||
<%= render :partial => "devise/shared/links" %>
|
24
app/views/issues/_form.html.haml
Normal file
24
app/views/issues/_form.html.haml
Normal file
|
@ -0,0 +1,24 @@
|
|||
%div
|
||||
= form_for [@project, @issue], :remote => "true" do |f|
|
||||
-if @issue.errors.any?
|
||||
%ul
|
||||
- @issue.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.span-6
|
||||
= f.label :title
|
||||
= f.text_field :title, :style => "width:450px"
|
||||
.span-6
|
||||
= f.label :content
|
||||
= f.text_area :content, :style => "width:450px; height:130px"
|
||||
.span-6.append-bottom
|
||||
= f.label :assignee_id
|
||||
= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
|
||||
- unless @issue.new_record?
|
||||
.span-3.right
|
||||
= f.label :closed
|
||||
%br
|
||||
= f.check_box :closed
|
||||
%hr
|
||||
.span-6
|
||||
= f.submit 'Save', :class => "lbutton vm"
|
10
app/views/issues/_issues.html.haml
Normal file
10
app/views/issues/_issues.html.haml
Normal file
|
@ -0,0 +1,10 @@
|
|||
%table.round-borders#issues-table
|
||||
%tr
|
||||
%th Assignee
|
||||
%th ID
|
||||
%th Title
|
||||
%th Closed?
|
||||
%th
|
||||
|
||||
- @issues.each do |issue|
|
||||
= render(:partial => 'show', :locals => {:issue => issue})
|
18
app/views/issues/_show.html.haml
Normal file
18
app/views/issues/_show.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
%tr{ :id => dom_id(issue), :class => "issue", :url => project_issue_path(@project, issue) }
|
||||
%td
|
||||
= image_tag gravatar_icon(issue.assignee.email), :class => "left", :width => 40, :style => "padding:0 5px;"
|
||||
= truncate issue.assignee.name, :lenght => 20
|
||||
%td ##{issue.id}
|
||||
%td= html_escape issue.title
|
||||
%td
|
||||
- if can? current_user, :write_issue, @project
|
||||
= form_for([@project, issue], :remote => true) do |f|
|
||||
= f.check_box :closed, :onclick => "$(this).parent().submit();"
|
||||
= hidden_field_tag :status_only, true
|
||||
- else
|
||||
= check_box_tag "closed", 1, issue.closed, :disabled => true
|
||||
%td
|
||||
- if can?(current_user, :admin_issue, @project) || issue.author == current_user
|
||||
= link_to 'Edit', edit_project_issue_path(@project, issue), :class => "lbutton positive", :remote => true
|
||||
- if can?(current_user, :admin_issue, @project) || issue.author == current_user
|
||||
= link_to 'Destroy', [@project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "lbutton delete-issue negative", :id => "destroy_issue_#{issue.id}"
|
9
app/views/issues/create.js.haml
Normal file
9
app/views/issues/create.js.haml
Normal file
|
@ -0,0 +1,9 @@
|
|||
- if @issue.valid?
|
||||
:plain
|
||||
$("#new_issue_dialog").dialog("close");
|
||||
$.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').selectmenu({width:300});
|
12
app/views/issues/edit.js.haml
Normal file
12
app/views/issues/edit.js.haml
Normal file
|
@ -0,0 +1,12 @@
|
|||
:plain
|
||||
var edit_issue_dialog = $("<div id='edit_issue_dialog'></div>");
|
||||
edit_issue_dialog.html("#{escape_javascript(render('form'))}");
|
||||
$(edit_issue_dialog).dialog({
|
||||
width: 500,
|
||||
resizable: false,
|
||||
draggable: false,
|
||||
title: "Issue ##{@issue.id} #{"[CLOSED]" if @issue.closed}",
|
||||
close: function(event, ui) { $("#edit_issue_dialog").remove();},
|
||||
modal: true
|
||||
});
|
||||
$('select#issue_assignee_id').selectmenu({width:300});
|
24
app/views/issues/index.html.haml
Normal file
24
app/views/issues/index.html.haml
Normal file
|
@ -0,0 +1,24 @@
|
|||
%div
|
||||
- if can? current_user, :write_issue, @project
|
||||
.left= link_to 'New Issue', new_project_issue_path(@project), :remote => true, :class => "lbutton vm"
|
||||
.right
|
||||
= form_tag project_issues_path(@project), :method => :get do
|
||||
.span-2
|
||||
= radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "this.form.submit()", :id => "open_issues"
|
||||
= label_tag "open_issues","Open"
|
||||
.span-2
|
||||
= radio_button_tag :f, 2, params[:f] == "2", :onclick => "this.form.submit()", :id => "closed_issues"
|
||||
= label_tag "closed_issues","Closed"
|
||||
.span-2
|
||||
= radio_button_tag :f, 3, params[:f] == "3", :onclick => "this.form.submit()", :id => "my_issues"
|
||||
= label_tag "my_issues","To Me"
|
||||
|
||||
.span-2
|
||||
= radio_button_tag :f, 1, params[:f] == "1", :onclick => "this.form.submit()", :id => "all_issues"
|
||||
= label_tag "all_issues","All"
|
||||
|
||||
#issues-table-holder= render "issues"
|
||||
%br
|
||||
:javascript
|
||||
$('.delete-issue').live('ajax:success', function() {
|
||||
$(this).closest('tr').fadeOut(); });
|
2
app/views/issues/index.js.haml
Normal file
2
app/views/issues/index.js.haml
Normal file
|
@ -0,0 +1,2 @@
|
|||
:plain
|
||||
$('#issues-table-holder').html("#{escape_javascript(render('issues'))}");
|
12
app/views/issues/new.js.haml
Normal file
12
app/views/issues/new.js.haml
Normal file
|
@ -0,0 +1,12 @@
|
|||
:plain
|
||||
var new_issue_dialog = $("<div id='new_issue_dialog'></div>");
|
||||
new_issue_dialog.html("#{escape_javascript(render('form'))}");
|
||||
$(new_issue_dialog).dialog({
|
||||
width: 500,
|
||||
resizable: false,
|
||||
draggable: false,
|
||||
title: "Add new issue",
|
||||
modala: true,
|
||||
close: function(event, ui) { $("#new_issue_dialog").remove();}
|
||||
});
|
||||
$('select#issue_assignee_id').selectmenu({width:300});
|
44
app/views/issues/show.html.haml
Normal file
44
app/views/issues/show.html.haml
Normal file
|
@ -0,0 +1,44 @@
|
|||
%h2
|
||||
= "Issue ##{@issue.id} - #{@issue.title}"
|
||||
|
||||
.span-15
|
||||
= simple_format html_escape(@issue.content)
|
||||
.issue_notes= render "notes/notes"
|
||||
.span-8.right
|
||||
.span-8
|
||||
- if @issue.closed
|
||||
%center.success Closed
|
||||
- else
|
||||
%center.error Open
|
||||
%table.round-borders
|
||||
%tr
|
||||
%td Title:
|
||||
%td
|
||||
= truncate html_escape(@issue.title)
|
||||
%tr
|
||||
%td Project
|
||||
%td
|
||||
%strong= @issue.project.name
|
||||
%tr
|
||||
%td Author:
|
||||
%td
|
||||
= image_tag gravatar_icon(@issue.author.email), :class => "left", :width => 40, :style => "padding:0 5px;"
|
||||
= @issue.author.name
|
||||
%tr
|
||||
%td Assignee:
|
||||
%td
|
||||
= image_tag gravatar_icon(@issue.assignee.email), :class => "left", :width => 40, :style => "padding:0 5px;"
|
||||
= @issue.assignee.name
|
||||
%tr
|
||||
%td Closed?
|
||||
%td
|
||||
- if can? current_user, :write_issue, @project
|
||||
= form_for([@project, @issue]) do |f|
|
||||
= f.check_box :closed, :onclick => "$(this).parent().submit();"
|
||||
= hidden_field_tag :status_only, true
|
||||
- else
|
||||
= check_box_tag "closed", 1, @issue.closed, :disabled => true
|
||||
|
||||
|
||||
.clear
|
||||
|
14
app/views/issues/update.js.haml
Normal file
14
app/views/issues/update.js.haml
Normal file
|
@ -0,0 +1,14 @@
|
|||
- if params[:status_only]
|
||||
- if @issue.valid?
|
||||
:plain
|
||||
$("##{dom_id(@issue)}").fadeOut();
|
||||
- else
|
||||
- if @issue.valid?
|
||||
:plain
|
||||
$("#edit_issue_dialog").dialog("close");
|
||||
$.ajax({type: "GET", url: location.href, dataType: "script"});
|
||||
- else
|
||||
:plain
|
||||
$("#edit_issue_dialog").empty();
|
||||
$("#edit_issue_dialog").append("#{escape_javascript(render('form'))}");
|
||||
$('select#issue_assignee_id').selectmenu({width:300});
|
16
app/views/keys/_form.html.haml
Normal file
16
app/views/keys/_form.html.haml
Normal file
|
@ -0,0 +1,16 @@
|
|||
%div
|
||||
= form_for @key, :remote => true do |f|
|
||||
-if @key.errors.any?
|
||||
%ul
|
||||
- @key.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.span-6
|
||||
= f.label :title
|
||||
= f.text_field :title, :style => "width:300px"
|
||||
.span-6
|
||||
= f.label :key
|
||||
= f.text_area :key, :style => "width:300px; height:130px"
|
||||
.span-6
|
||||
= f.submit 'Save', :class => "lbutton vm"
|
||||
|
4
app/views/keys/_show.html.haml
Normal file
4
app/views/keys/_show.html.haml
Normal file
|
@ -0,0 +1,4 @@
|
|||
%tr
|
||||
%td= truncate key.title, :lenght => 12
|
||||
%td= truncate key.key, :lenght => 1114
|
||||
%td= link_to 'Cancel', key, :confirm => 'Are you sure?', :method => :delete, :class => "lbutton negative delete-key", :id => "destroy_key_#{key.id}", :remote => true
|
8
app/views/keys/create.js.haml
Normal file
8
app/views/keys/create.js.haml
Normal file
|
@ -0,0 +1,8 @@
|
|||
- if @key.valid?
|
||||
:plain
|
||||
$("#new_key_dialog").dialog("close");
|
||||
$("#keys-table").append("#{escape_javascript(render(:partial => 'show', :locals => {:key => @key} ))}");
|
||||
- else
|
||||
:plain
|
||||
$("#new_key_dialog").empty();
|
||||
$("#new_key_dialog").append("#{escape_javascript(render('form'))}");
|
7
app/views/keys/edit.html.haml
Normal file
7
app/views/keys/edit.html.haml
Normal file
|
@ -0,0 +1,7 @@
|
|||
%h1 Editing key
|
||||
|
||||
= render 'form'
|
||||
|
||||
= link_to 'Show', @key
|
||||
\|
|
||||
= link_to 'Back', keys_path
|
15
app/views/keys/index.html.haml
Normal file
15
app/views/keys/index.html.haml
Normal file
|
@ -0,0 +1,15 @@
|
|||
%div#new-key-holder
|
||||
= link_to "Add new", new_key_path, :remote => true, :class => "lbutton vm"
|
||||
|
||||
%table.round-borders#keys-table
|
||||
%tr
|
||||
%th title
|
||||
%th key
|
||||
%th Actions
|
||||
- @keys.each do |key|
|
||||
= render(:partial => 'show', :locals => {:key => key})
|
||||
|
||||
:javascript
|
||||
$('.delete-key').live('ajax:success', function() {
|
||||
$(this).closest('tr').fadeOut(); });
|
||||
|
5
app/views/keys/new.html.haml
Normal file
5
app/views/keys/new.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
|||
%h1 New key
|
||||
|
||||
= render 'form'
|
||||
|
||||
= link_to 'Back', keys_path
|
11
app/views/keys/new.js.haml
Normal file
11
app/views/keys/new.js.haml
Normal file
|
@ -0,0 +1,11 @@
|
|||
:plain
|
||||
var new_key_dialog = $("<div id='new_key_dialog'></div>");
|
||||
new_key_dialog.html("#{escape_javascript(render('form'))}");
|
||||
$(new_key_dialog).dialog({
|
||||
width: 350,
|
||||
resizable: false,
|
||||
draggable: false,
|
||||
title: "Add new public key",
|
||||
close: function(event, ui) { $("#new_key_dialog").remove();},
|
||||
modal: true
|
||||
});
|
18
app/views/layouts/_flash.html.haml
Normal file
18
app/views/layouts/_flash.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
- if alert || notice
|
||||
- text = alert || notice
|
||||
%div{:style => "display:none", :id => "flash_container"}
|
||||
.container
|
||||
%center
|
||||
%h4= text
|
||||
:javascript
|
||||
$(function(){
|
||||
$("#flash_container").slideDown("slow");
|
||||
$("#flash_container").click(function(){
|
||||
$(this).slideUp("slow");
|
||||
});
|
||||
setTimeout("hideFlash()",2000);
|
||||
});
|
||||
|
||||
function hideFlash(){
|
||||
$("#flash_container").slideUp("slow");
|
||||
}
|
34
app/views/layouts/_head_panel.html.erb
Normal file
34
app/views/layouts/_head_panel.html.erb
Normal file
|
@ -0,0 +1,34 @@
|
|||
<div id="header-panel">
|
||||
<div class="container">
|
||||
<div class="span-24">
|
||||
<div class="span-10">
|
||||
<%#= image_tag "git.png", :height => 40, :class => "left" %>
|
||||
<%#= link_to "gitlab", root_path, :id => "logo" %>
|
||||
<span class="search-holder">
|
||||
<%= text_field_tag "search", nil, :placeholder => "Search" %>
|
||||
</span>
|
||||
</div>
|
||||
<div class="right">
|
||||
<%= link_to truncate(@project.name, :length => 20), project_path(@project), :class => "current button" if @project && !@project.new_record? %>
|
||||
<%= link_to 'Home', root_path, :class => current_page?(root_url) ? "current button" : "button" %>
|
||||
<%= link_to 'Projects', projects_path, :class => current_page?(projects_path) ? "current button" : "button" %>
|
||||
<%= link_to 'Profile', profile_path, :class => (controller.controller_name == "keys") ? "current button" : "button" %>
|
||||
<%= link_to('Admin', admin_root_path, :class => admin_namespace? ? "current button" : "button" ) if current_user.is_admin? %>
|
||||
<%#= link_to 'Profile', edit_user_registration_path, :class => "button" %>
|
||||
<%= link_to 'Logout', destroy_user_session_path, :class => "button", :method => :delete %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<% if current_user %>
|
||||
<%= javascript_tag do %>
|
||||
$(function() {
|
||||
$("#search" ).autocomplete({
|
||||
source: <%= raw search_autocomplete_source %>,
|
||||
select: function(event, ui) { location.href = ui.item.url }
|
||||
});
|
||||
});
|
||||
<% end %>
|
||||
<% end %>
|
29
app/views/layouts/application.html.haml
Normal file
29
app/views/layouts/application.html.haml
Normal file
|
@ -0,0 +1,29 @@
|
|||
!!!
|
||||
%html
|
||||
%head
|
||||
%title
|
||||
GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
|
||||
= stylesheet_link_tag 'blueprint/screen', :media => "screen, projection"
|
||||
= stylesheet_link_tag 'blueprint/print', :media => "print"
|
||||
= stylesheet_link_tag 'blueprint/plugins/buttons/screen', :media => "screen, projection"
|
||||
= stylesheet_link_tag 'blueprint/plugins/link-icons/screen', :media => "screen, projection"
|
||||
= stylesheet_link_tag 'jquery_ui/jquery-ui-1.8.16.custom', :media => "screen, projection"
|
||||
= stylesheet_link_tag "application"
|
||||
= javascript_include_tag "application"
|
||||
= csrf_meta_tags
|
||||
%link{:href => "/assets/favicon.png", :rel => "icon", :type => "image/png"}/
|
||||
= javascript_tag do
|
||||
REQ_URI = "#{request.env["REQUEST_URI"]}";
|
||||
REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
|
||||
%body#thebody
|
||||
= render :partial => "layouts/flash"
|
||||
- if user_signed_in?
|
||||
= render :partial => "layouts/head_panel"
|
||||
.top_bar.container
|
||||
= render :partial => "projects/top_menu" if @project && !@project.new_record?
|
||||
= render :partial => "projects/projects_top_menu" if (controller.controller_name == "projects" && ["index", "new", "create"].include?(controller.action_name)) && !admin_namespace?
|
||||
= render :partial => "profile/top_menu" if ["keys", "profile"].include?(controller.controller_name)
|
||||
= render :partial => "admin/top_menu" if admin_namespace?
|
||||
#content-container.container
|
||||
.span-24
|
||||
= yield
|
36
app/views/layouts/notify.html.haml
Normal file
36
app/views/layouts/notify.html.haml
Normal file
|
@ -0,0 +1,36 @@
|
|||
%html{:lang => "en"}
|
||||
%head
|
||||
%meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
|
||||
%title
|
||||
gitlabhq
|
||||
:css
|
||||
.header h1 {color: #BBBBBB !important; font: bold 32px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 40px;}
|
||||
.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
|
||||
%td{:align => "center", :style => "margin: 0; padding: 0; background: #EAEAEA;"}
|
||||
%table.header{:align => "center", :border => "0", :cellpadding => "0", :cellspacing => "0", :style => "font-family: Helvetica, Arial, sans-serif; background:#333", :width => "600"}
|
||||
%tr
|
||||
%td{:style => "font-size: 0px;", :width => "20"}
|
||||
\
|
||||
%td{:align => "left", :style => "padding: 18px 0 10px;", :width => "580"}
|
||||
%h1{:style => "color: #BBBBBB; font: normal 32px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 40px;"}
|
||||
gitlab
|
||||
- if @project
|
||||
| #{@project.name}
|
||||
%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
|
||||
%td{:align => "left", :colspan => "2", :height => "3", :style => "padding: font-size: 0; line-height: 0; height: 3px;", :width => "600"}
|
||||
%table.footer{:align => "center", :border => "0", :cellpadding => "0", :cellspacing => "0", :style => "font-family: Helvetica, Arial, sans-serif; line-height: 10px;", :width => "600"}
|
||||
%tr
|
||||
%td{:align => "center", :style => "padding: 5px 0 10px; font-size: 11px; color:#7d7a7a; margin: 0; line-height: 1.2;font-family: Helvetica, Arial, sans-serif;", :valign => "top"}
|
||||
%br
|
||||
%p{:style => "font-size: 11px; color:#7d7a7a; margin: 0; padding: 0; font-family: Helvetica, Arial, sans-serif;"}
|
||||
You're receiving this newsletter because you are in project team.
|
28
app/views/notes/_form.html.haml
Normal file
28
app/views/notes/_form.html.haml
Normal file
|
@ -0,0 +1,28 @@
|
|||
%div
|
||||
= form_for [@project, @note], :remote => "true", :multipart => true do |f|
|
||||
-if @note.errors.any?
|
||||
.errors.error
|
||||
- @note.errors.full_messages.each do |msg|
|
||||
%div= msg
|
||||
|
||||
= f.hidden_field :noteable_id
|
||||
= f.hidden_field :noteable_type
|
||||
|
||||
%div
|
||||
= f.label :note
|
||||
%cite (255 symbols only)
|
||||
%br
|
||||
= f.text_area :note, :style => "width:97%;height:100px", :size => 255
|
||||
|
||||
%div
|
||||
= f.label :attachment
|
||||
%cite (less than 10 MB)
|
||||
%br
|
||||
= f.file_field :attachment
|
||||
|
||||
= check_box_tag :notify, 1, true
|
||||
= label_tag :notify, "Notify project team about your note"
|
||||
|
||||
.clear
|
||||
%br
|
||||
= f.submit 'Add note', :class => "lbutton vm"
|
14
app/views/notes/_notes.html.haml
Normal file
14
app/views/notes/_notes.html.haml
Normal file
|
@ -0,0 +1,14 @@
|
|||
%ul#notes-list
|
||||
- @notes.each do |note|
|
||||
= render :partial => "notes/show", :locals => {:note => note}
|
||||
|
||||
%br
|
||||
%br
|
||||
- if can? current_user, :write_note, @project
|
||||
= render "notes/form"
|
||||
|
||||
:javascript
|
||||
$('.delete-note').live('ajax:success', function() {
|
||||
$(this).closest('li').fadeOut(); });
|
||||
|
||||
|
19
app/views/notes/_show.html.haml
Normal file
19
app/views/notes/_show.html.haml
Normal file
|
@ -0,0 +1,19 @@
|
|||
%li{:id => dom_id(note)}
|
||||
%div.note_author
|
||||
= image_tag gravatar_icon(note.author.email), :class => "left", :width => 40, :style => "padding-right:5px;"
|
||||
%div.note_content
|
||||
= simple_format(html_escape(note.note))
|
||||
- if note.attachment.url
|
||||
Attachment:
|
||||
= link_to note.attachment_identifier, note.attachment.url
|
||||
%br
|
||||
%span
|
||||
%span
|
||||
[ #{note.author.name} ]
|
||||
|
||||
= time_ago_in_words(note.updated_at)
|
||||
ago
|
||||
%br
|
||||
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
|
||||
= link_to 'Remove', [@project, note], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "lbutton delete-note right negative"
|
||||
.clear
|
8
app/views/notes/create.js.haml
Normal file
8
app/views/notes/create.js.haml
Normal file
|
@ -0,0 +1,8 @@
|
|||
- if @note.valid?
|
||||
:plain
|
||||
$("#new_note .errors").remove();
|
||||
$("#notes-list").append("#{escape_javascript(render(:partial => 'show', :locals => {:note => @note} ))}");
|
||||
$('#note_note').val("");
|
||||
- else
|
||||
:plain
|
||||
$("#new_note").replaceWith("#{escape_javascript(render('form'))}");
|
18
app/views/notify/new_issue_email.html.haml
Normal file
18
app/views/notify/new_issue_email.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
%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; "}
|
||||
Hi #{@user.name}! New Issue was created and assigned to you.
|
||||
%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 project_issue_url(@project, @issue) do
|
||||
= "Issue ##{@issue.id.to_s}"
|
||||
= truncate(@issue.title, :length => 45)
|
||||
%br
|
||||
%cite{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
= @issue.content
|
23
app/views/notify/new_user_email.html.haml
Normal file
23
app/views/notify/new_user_email.html.haml
Normal file
|
@ -0,0 +1,23 @@
|
|||
%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; "}
|
||||
Hi #{@user.name}!
|
||||
%p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
Administrator created account for you. Now you are a member of company gitlab application.
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%tr
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%td{:style => "padding: 15px 0 15px;", :valign => "top"}
|
||||
%p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 28px; font-size: 16px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
login..........................................
|
||||
%code= @user.email
|
||||
%p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 28px; font-size: 16px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
password..................................
|
||||
%code= @password
|
||||
%p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 28px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
= link_to "Click here to login", root_url
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
|
23
app/views/notify/note_commit_email.html.haml
Normal file
23
app/views/notify/note_commit_email.html.haml
Normal file
|
@ -0,0 +1,23 @@
|
|||
%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; "}
|
||||
New comment for commmit
|
||||
= link_to truncate(@commit.id.to_s, :length => 16), project_commit_url(@project, :id => @commit.id)
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%tr
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%td{:style => "padding: 15px 0 15px;", :valign => "top"}
|
||||
%p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
%a{:href => "#", :style => "color: #0eb6ce; text-decoration: none;"} #{@note.author.name}
|
||||
left next message:
|
||||
%br
|
||||
%table{:border => "0", :cellpadding => "0", :cellspacing => "0", :width => "558"}
|
||||
%tr
|
||||
%td{:valign => "top"}
|
||||
%cite{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
= @note.note
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
|
25
app/views/notify/note_issue_email.html.haml
Normal file
25
app/views/notify/note_issue_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: #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 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||
New comment -
|
||||
= link_to project_issue_url(@project, @issue) do
|
||||
= "Issue ##{@issue.id.to_s}"
|
||||
= truncate(@issue.title, :length => 35)
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%tr
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%td{:style => "padding: 15px 0 15px;", :valign => "top"}
|
||||
%p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
%a{:href => "#", :style => "color: #0eb6ce; text-decoration: none;"} #{@note.author.name}
|
||||
left next message:
|
||||
%br
|
||||
%table{:border => "0", :cellpadding => "0", :cellspacing => "0", :width => "558"}
|
||||
%tr
|
||||
%td{:valign => "top"}
|
||||
%cite{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
= @note.note
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
|
22
app/views/notify/note_wall_email.html.haml
Normal file
22
app/views/notify/note_wall_email.html.haml
Normal file
|
@ -0,0 +1,22 @@
|
|||
%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; "}
|
||||
New message on
|
||||
= link_to "Project Wall", wall_project_url(@project)
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%tr
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||
%td{:style => "padding: 15px 0 15px;", :valign => "top"}
|
||||
%p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
%a{:href => "#", :style => "color: #0eb6ce; text-decoration: none;"} #{@note.author.name}
|
||||
left next message:
|
||||
%br
|
||||
%table{:border => "0", :cellpadding => "0", :cellspacing => "0", :width => "558"}
|
||||
%tr
|
||||
%td{:valign => "top"}
|
||||
%cite{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
||||
= @note.note
|
||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
5
app/views/profile/_top_menu.html.haml
Normal file
5
app/views/profile/_top_menu.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
|||
%div.top_project_menu
|
||||
%span= link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil
|
||||
%span= link_to "Password", profile_password_path, :style => "width:70px;", :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil
|
||||
%span= link_to "Keys", keys_path, :class => controller.controller_name == "keys" ? "current" : nil
|
||||
|
1
app/views/profile/index.html.haml
Normal file
1
app/views/profile/index.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
%h1 Profile
|
20
app/views/profile/password.html.haml
Normal file
20
app/views/profile/password.html.haml
Normal file
|
@ -0,0 +1,20 @@
|
|||
%p Note: after success password update you will be redirected to login page where you should login with new password
|
||||
= form_for @user, :url => profile_password_path, :method => :put do |f|
|
||||
-if @user.errors.any?
|
||||
#error_explanation
|
||||
%h2= "#{pluralize(@user.errors.count, "error")} prohibited this password from being saved:"
|
||||
%ul
|
||||
- @user.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.div
|
||||
= f.label :password
|
||||
%br
|
||||
= f.password_field :password
|
||||
.div
|
||||
= f.label :password_confirmation
|
||||
%br
|
||||
= f.password_field :password_confirmation
|
||||
.actions
|
||||
= f.submit 'Save', :class => "lbutton vm"
|
||||
|
8
app/views/profile/show.html.haml
Normal file
8
app/views/profile/show.html.haml
Normal file
|
@ -0,0 +1,8 @@
|
|||
.span-2
|
||||
= image_tag gravatar_icon(@user.email), :class => "left", :width => 60, :style => "padding-right:5px;"
|
||||
%p
|
||||
%b Name:
|
||||
= @user.name
|
||||
%p
|
||||
%b Email:
|
||||
= @user.email
|
50
app/views/projects/_form.html.haml
Normal file
50
app/views/projects/_form.html.haml
Normal file
|
@ -0,0 +1,50 @@
|
|||
= form_for(@project, :remote => true) do |f|
|
||||
%div.form_content
|
||||
- if @project.new_record?
|
||||
%h1 New Project
|
||||
- else
|
||||
%h1 Edit Project
|
||||
- if @project.errors.any?
|
||||
#error_explanation
|
||||
%h2
|
||||
= pluralize(@project.errors.count, "error")
|
||||
prohibited this project from being saved:
|
||||
%ul
|
||||
- @project.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
%table.round-borders
|
||||
%tr
|
||||
%td= f.label :name
|
||||
%td= f.text_field :name, :placeholder => "Example Project"
|
||||
%tr
|
||||
%td
|
||||
.left= f.label :path
|
||||
%cite.right git@yourserver:
|
||||
%td
|
||||
= f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record?
|
||||
%tr
|
||||
%td
|
||||
.left= f.label :code
|
||||
%cite.right http://yourserver/
|
||||
%td= f.text_field :code, :placeholder => "example (3..12 symbols only)"
|
||||
.field
|
||||
= f.label :description
|
||||
%br/
|
||||
= f.text_area :description, :style => "height:140px;width:932px;"
|
||||
.clear
|
||||
%hr.prepend-top
|
||||
.actions
|
||||
= f.submit :class => "lbutton vm"
|
||||
|
||||
%div{ :class => "ajax_loader", :style => "display:none;height:200px;"}
|
||||
%center
|
||||
= image_tag "ajax-loader.gif", :class => "append-bottom"
|
||||
- if @project.new_record?
|
||||
%h3.prepend-top Creating project & repository. Please wait for few minutes
|
||||
- else
|
||||
%h3.prepend-top Updating project & repository. Please wait for few minutes
|
||||
:javascript
|
||||
$('.new_project, .edit_project').bind('ajax:before', function() {
|
||||
$(this).find(".form_content").hide();
|
||||
$('.ajax_loader').show();
|
||||
});
|
26
app/views/projects/_list.html.haml
Normal file
26
app/views/projects/_list.html.haml
Normal file
|
@ -0,0 +1,26 @@
|
|||
-#- if current_user.can_create_project?
|
||||
= link_to 'New Project', new_project_path, :class => "lbutton vm"
|
||||
|
||||
%table.round-borders#projects-list
|
||||
%tr
|
||||
%th Name
|
||||
%th Path
|
||||
%th Code
|
||||
%th Web
|
||||
%th Git
|
||||
%th Admin
|
||||
%th Actions
|
||||
|
||||
- @projects.each do |project|
|
||||
%tr{ :class => "project", :url => project_path(project) }
|
||||
%td= project.name
|
||||
%td= truncate project.url_to_repo
|
||||
%td= project.code
|
||||
%td= check_box_tag "read", 1, project.readers.include?(current_user), :disabled => :disabled
|
||||
%td= check_box_tag "commit", 1, project.writers.include?(current_user), :disabled => :disabled
|
||||
%td= check_box_tag "admin", 1, project.admins.include?(current_user), :disabled => :disabled
|
||||
%td
|
||||
-if can? current_user, :admin_project, project
|
||||
= link_to 'Edit', edit_project_path(project), :class => "lbutton positive"
|
||||
%br
|
||||
|
16
app/views/projects/_projects_top_menu.html.haml
Normal file
16
app/views/projects/_projects_top_menu.html.haml
Normal file
|
@ -0,0 +1,16 @@
|
|||
%div.top_project_menu
|
||||
%span= link_to 'All', projects_path, :class => current_page?(projects_path) ? "current" : nil
|
||||
%span= link_to "New Project", new_project_path, :class => current_page?(:controller => "projects", :action => "new") ? "current" : nil
|
||||
%span.right
|
||||
= link_to_function(image_tag("list_view_icon.jpg"), "switchProjectView()", :style => "border:none;box-shadow:none;")
|
||||
|
||||
:javascript
|
||||
function switchProjectView(){
|
||||
$(".tile").toggle();
|
||||
$(".list").toggle();
|
||||
if($(".tile").is(":visible")){
|
||||
$.cookie('project_view', 'tile', { expires: 14 });
|
||||
} else {
|
||||
$.cookie('project_view', 'list', { expires: 14 });
|
||||
}
|
||||
}
|
14
app/views/projects/_side_panel.html.haml
Normal file
14
app/views/projects/_side_panel.html.haml
Normal file
|
@ -0,0 +1,14 @@
|
|||
%h3.notice{:style => "width:235px;"}
|
||||
= @project.name
|
||||
%p
|
||||
%b Path:
|
||||
= @project.path
|
||||
%p
|
||||
%b Description:
|
||||
= truncate @project.description
|
||||
.left.append-bottom
|
||||
= link_to "Tree", tree_project_path(@project), :class => "button"
|
||||
= link_to "Commits", project_commits_path(@project), :class => "button"
|
||||
= link_to 'Team', team_project_path(@project), :class => "button"
|
||||
- if can? current_user, :admin_project, @project
|
||||
= link_to 'Edit', edit_project_path(@project), :class => "button positive"
|
18
app/views/projects/_team.html.haml
Normal file
18
app/views/projects/_team.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
- if can? current_user, :admin_team_member, @project
|
||||
%div#new-member-holder
|
||||
= link_to "Add new", new_project_team_member_path(@project), :remote => true, :class => "lbutton vm"
|
||||
%table.round-borders#team-table
|
||||
%tr
|
||||
%th Name
|
||||
%th Email
|
||||
%th Web
|
||||
%th Git
|
||||
%th Admin
|
||||
- if can? current_user, :admin_team_member, @project
|
||||
%th Actions
|
||||
- @project.users_projects.each do |up|
|
||||
= render(:partial => 'team_members/show', :locals => {:member => up})
|
||||
|
||||
:javascript
|
||||
$('.delete-team-member').live('ajax:success', function() {
|
||||
$(this).closest('tr').fadeOut(); });
|
16
app/views/projects/_tile.html.haml
Normal file
16
app/views/projects/_tile.html.haml
Normal file
|
@ -0,0 +1,16 @@
|
|||
- @projects.in_groups_of(3, false) do |projects|
|
||||
- projects.each_with_index do |project, i|
|
||||
%div{ :class => "project_thumb round-borders", :style => i == 2 ? "" : "margin-right:30px;" }
|
||||
%div{ :class => "project", :url => project_path(project) }
|
||||
%h2
|
||||
= image_tag gravatar_icon(project.name), :class => "left", :width => 40, :style => "padding-right:5px;"
|
||||
= "/" + project.code
|
||||
%p= project.name
|
||||
%p= project.url_to_repo
|
||||
-#%p
|
||||
Commit –
|
||||
= last_commit(project)
|
||||
%hr
|
||||
= link_to "Browse Code", tree_project_path(project), :class => "lbutton"
|
||||
= link_to "Commits", project_commits_path(project), :class => "lbutton", :style => "float:right;width:80px;"
|
||||
.clear
|
24
app/views/projects/_top_menu.html.haml
Normal file
24
app/views/projects/_top_menu.html.haml
Normal file
|
@ -0,0 +1,24 @@
|
|||
%div.top_project_menu
|
||||
-#%span= link_to @project.code.capitalize, @project, :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil
|
||||
- if @project.repo_exists?
|
||||
%span= link_to "Tree", tree_project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) || current_page?(:controller => "projects", :action => "tree", :id => @project) ? "current" : nil
|
||||
%span= link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil
|
||||
%span
|
||||
= link_to team_project_path(@project), :class => current_page?(:controller => "projects", :action => "team", :id => @project) ? "current" : nil do
|
||||
Team
|
||||
- if @project.users_projects.count > 0
|
||||
%span{ :class => "top_menu_count" }= @project.users_projects.count
|
||||
%span
|
||||
= link_to project_issues_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do
|
||||
Issues
|
||||
- if @project.issues.opened.count > 0
|
||||
%span{ :class => "top_menu_count" }= @project.issues.opened.count
|
||||
%span
|
||||
= link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
|
||||
Wall
|
||||
- if @project.common_notes.count > 0
|
||||
%span{ :class => "top_menu_count" }= @project.common_notes.count
|
||||
|
||||
- if @commit
|
||||
%span= link_to truncate(commit_name(@project,@commit), :length => 15), project_commit_path(@project, :id => @commit.id), :class => current_page?(:controller => "commits", :action => "show", :project_id => @project, :id => @commit.id) ? "current" : nil
|
||||
|
60
app/views/projects/_tree.html.haml
Normal file
60
app/views/projects/_tree.html.haml
Normal file
|
@ -0,0 +1,60 @@
|
|||
%h3
|
||||
.left
|
||||
= form_tag tree_project_path(@project), :method => :get do
|
||||
= select_tag "branch", options_for_select(@repo.heads.map(&:name), @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Branches"
|
||||
|
||||
.left.prepend-1
|
||||
= form_tag tree_project_path(@project), :method => :get do
|
||||
= select_tag "tag", options_for_select(@project.tags, @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Tags"
|
||||
= text_field_tag "ssh", @project.url_to_repo, :class => ["ssh_project_url","one_click_select"]
|
||||
.clear
|
||||
|
||||
%h3#tree-breadcrumbs
|
||||
= link_to @project.name, tree_project_path(@project, :path => nil, :commit_id => @commit.try(:id)), :remote => true
|
||||
- if params[:path]
|
||||
- part_path = ""
|
||||
- params[:path].split("\/").each do |part|
|
||||
- part_path = File.join(part_path, part) unless part_path.empty?
|
||||
- if part_path.empty?
|
||||
- part_path = part
|
||||
\/
|
||||
= link_to truncate(part, :length => 40), tree_file_project_path(@project, :path => part_path, :commit_id => @commit.try(:id)), :remote => :true
|
||||
#tree-content-holder
|
||||
- if tree.is_a?(Grit::Blob)
|
||||
= render :partial => "projects/tree_file", :locals => { :name => tree.name, :content => tree.data, :file => tree }
|
||||
- else
|
||||
- contents = tree.contents
|
||||
%table#tree-slider.round-borders
|
||||
%tr
|
||||
%th Name
|
||||
%th Last Update
|
||||
%th
|
||||
Last commit
|
||||
= link_to "history", project_commits_path(@project, :path => params[:path]), :class => "right"
|
||||
- if params[:path]
|
||||
- file = File.join(params[:path], "..")
|
||||
%tr{ :class => "tree-item", :url => tree_file_project_path(@project, @commit.id, file) }
|
||||
%td.tree-item-file-name
|
||||
= image_tag "dir.png"
|
||||
= link_to "..", tree_file_project_path(@project, @commit.id, file), :remote => :true
|
||||
%td
|
||||
%td
|
||||
|
||||
- contents.select{ |i| i.is_a?(Grit::Tree)}.each do |content|
|
||||
= render :partial => "projects/tree_item", :locals => { :content => content }
|
||||
- contents.select{ |i| i.is_a?(Grit::Blob)}.each do |content|
|
||||
= render :partial => "projects/tree_item", :locals => { :content => content }
|
||||
|
||||
:javascript
|
||||
$(function(){
|
||||
$('select#branch').selectmenu({style:'popup', width:200});
|
||||
$('select#tag').selectmenu({style:'popup', width:200});
|
||||
});
|
||||
|
||||
- if params[:path] && request.xhr?
|
||||
:javascript
|
||||
$(window).unbind('popstate');
|
||||
$(window).bind('popstate', function() {
|
||||
if(location.pathname.search("tree") != -1) {
|
||||
$.ajax({type: "GET", url: location.pathname, dataType: "script"})}
|
||||
else { location.href = location.pathname;}});
|
21
app/views/projects/_tree_file.html.haml
Normal file
21
app/views/projects/_tree_file.html.haml
Normal file
|
@ -0,0 +1,21 @@
|
|||
- require "utils"
|
||||
.view_file
|
||||
.view_file_header
|
||||
%strong
|
||||
= name
|
||||
-#= file.mime_type
|
||||
= link_to "raw", blob_project_path(@project, :commit_id => @commit.id, :path => params[:path] ), :class => "right", :target => "_blank"
|
||||
= link_to "history", project_commits_path(@project, :path => params[:path]), :class => "right", :style => "margin-right:10px;"
|
||||
%br/
|
||||
- if file.mime_type =~ /application|text/ && !Utils.binary?(file.data)
|
||||
.view_file_content
|
||||
- ft = handle_file_type(file.name, file.mime_type)
|
||||
:erb
|
||||
<%= raw Albino.colorize(content, ft, :html, 'utf-8', "linenos=True") %>
|
||||
- elsif file.mime_type =~ /image/
|
||||
.view_file_content_image
|
||||
%img{ :src => "data:image/jpeg;base64,#{Base64.encode64(file.data)}"}
|
||||
- else
|
||||
%p
|
||||
%center No preview for this file type
|
||||
|
15
app/views/projects/_tree_item.html.haml
Normal file
15
app/views/projects/_tree_item.html.haml
Normal file
|
@ -0,0 +1,15 @@
|
|||
- file = params[:path] ? File.join(params[:path], content.name) : content.name
|
||||
- content_commit = @project.repo.log(@branch, file, :max_count => 1).last
|
||||
- return unless content_commit
|
||||
%tr{ :class => "tree-item", :url => tree_file_project_path(@project, @commit.id, file) }
|
||||
%td.tree-item-file-name
|
||||
- if content.is_a?(Grit::Blob)
|
||||
= image_tag "txt.png"
|
||||
- else
|
||||
= image_tag "dir.png"
|
||||
= link_to truncate(content.name, :length => 40), tree_file_project_path(@project, @commit.id, file), :remote => :true
|
||||
%td
|
||||
= time_ago_in_words(content_commit.committed_date)
|
||||
ago
|
||||
%td
|
||||
= link_to truncate(content_commit.message, :length => 40), project_commit_path(@project, content_commit)
|
6
app/views/projects/create.js.haml
Normal file
6
app/views/projects/create.js.haml
Normal file
|
@ -0,0 +1,6 @@
|
|||
- if @project.valid?
|
||||
:plain
|
||||
location.href = "#{project_path(@project, :notice => 'Project was successfully created.')}";
|
||||
- else
|
||||
:plain
|
||||
$("#new_project").replaceWith("#{escape_javascript(render('form'))}");
|
1
app/views/projects/edit.html.erb
Normal file
1
app/views/projects/edit.html.erb
Normal file
|
@ -0,0 +1 @@
|
|||
<%= render 'form' %>
|
49
app/views/projects/empty.html.erb
Normal file
49
app/views/projects/empty.html.erb
Normal file
|
@ -0,0 +1,49 @@
|
|||
<div class="">
|
||||
<div class="git-empty">
|
||||
<h2>Git global setup:</h2>
|
||||
<% setup_str = <<eos
|
||||
git config --global user.name "#{current_user.name}"
|
||||
git config --global user.email "#{current_user.email}"
|
||||
eos
|
||||
%>
|
||||
<%= raw Albino.colorize(setup_str, :bash) %>
|
||||
<br />
|
||||
<br />
|
||||
<h2>Next steps:</h2>
|
||||
<% repo_setup_str = <<eos
|
||||
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
|
||||
eos
|
||||
%>
|
||||
<%= raw Albino.colorize(repo_setup_str, :bash) %>
|
||||
|
||||
<br /><br />
|
||||
<h2>Existing Git Repo?</h2>
|
||||
<% exist_repo_setup_str = <<eos
|
||||
cd existing_git_repo
|
||||
git remote add origin #{@project.url_to_repo}
|
||||
git push -u origin master
|
||||
eos
|
||||
%>
|
||||
<%= raw Albino.colorize(exist_repo_setup_str, :bash) %>
|
||||
|
||||
<br /><br />
|
||||
<h2>Remove this project?</h2>
|
||||
<div class="error">
|
||||
<p>
|
||||
Be careful! <br/>
|
||||
Project cant be recovered after destroy.</p>
|
||||
<%= link_to 'Destroy', @project,
|
||||
:confirm => 'Are you sure?', :method => :delete,
|
||||
:class => "left button negative span-6", :style => "text-align:center" %>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
4
app/views/projects/index.html.haml
Normal file
4
app/views/projects/index.html.haml
Normal file
|
@ -0,0 +1,4 @@
|
|||
%div{:class => "tile", :style => view_mode_style("tile")}
|
||||
= render "tile"
|
||||
%div{:class => "list", :style => view_mode_style("list")}
|
||||
= render "list"
|
1
app/views/projects/new.html.erb
Normal file
1
app/views/projects/new.html.erb
Normal file
|
@ -0,0 +1 @@
|
|||
<%= render 'form' %>
|
3
app/views/projects/show.html.haml
Normal file
3
app/views/projects/show.html.haml
Normal file
|
@ -0,0 +1,3 @@
|
|||
%div
|
||||
%div#tree-holder
|
||||
= render :partial => "tree", :locals => {:repo => @repo, :commit => @commit, :tree => @commit.tree}
|
3
app/views/projects/team.html.haml
Normal file
3
app/views/projects/team.html.haml
Normal file
|
@ -0,0 +1,3 @@
|
|||
%div
|
||||
= render :partial => "team", :locals => {:project => @project}
|
||||
|
5
app/views/projects/tree.html.erb
Normal file
5
app/views/projects/tree.html.erb
Normal file
|
@ -0,0 +1,5 @@
|
|||
<div>
|
||||
<div id="tree-holder">
|
||||
<%= render :partial => "tree", :locals => {:repo => @repo, :commit => @commit, :tree => @tree} %>
|
||||
</div>
|
||||
</div>
|
5
app/views/projects/tree.js.haml
Normal file
5
app/views/projects/tree.js.haml
Normal file
|
@ -0,0 +1,5 @@
|
|||
:plain
|
||||
$("#tree-holder table").hide("slide", { direction: "left" }, 150, function(){
|
||||
$("#tree-holder").html("#{escape_javascript(render(:partial => "tree", :locals => {:repo => @repo, :commit => @commit, :tree => @tree}))}");
|
||||
$("#tree-holder table").show("slide", { direction: "right" }, 150);
|
||||
});
|
6
app/views/projects/update.js.haml
Normal file
6
app/views/projects/update.js.haml
Normal file
|
@ -0,0 +1,6 @@
|
|||
- if @project.valid?
|
||||
:plain
|
||||
location.href = "#{project_path(@project, :notice => 'Project was successfully updated.')}";
|
||||
- else
|
||||
:plain
|
||||
$(".edit_project").replaceWith("#{escape_javascript(render('form'))}");
|
1
app/views/projects/wall.html.haml
Normal file
1
app/views/projects/wall.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
= render "notes/notes"
|
25
app/views/team_members/_form.html.haml
Normal file
25
app/views/team_members/_form.html.haml
Normal file
|
@ -0,0 +1,25 @@
|
|||
%div
|
||||
= form_for @team_member, :as => :team_member, :url => project_team_members_path(@project, @team_member), :remote => "true" do |f|
|
||||
-if @team_member.errors.any?
|
||||
%ul
|
||||
- @team_member.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
.span-6.append-bottom
|
||||
%b Name
|
||||
%br
|
||||
= f.select(:user_id, User.not_in_project(@project).all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
|
||||
.span-6
|
||||
%b Access:
|
||||
.span-6
|
||||
= f.check_box :read
|
||||
Web Access
|
||||
.span-6
|
||||
= f.check_box :write
|
||||
Git Access
|
||||
.span-6.append-bottom
|
||||
= f.check_box :admin
|
||||
Admin
|
||||
%hr
|
||||
.span-6
|
||||
= f.submit 'Save', :class => "lbutton vm"
|
18
app/views/team_members/_show.html.haml
Normal file
18
app/views/team_members/_show.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
- user = member.user
|
||||
%tr{:id => dom_id(member)}
|
||||
%td
|
||||
= image_tag gravatar_icon(user.email), :class => "left", :width => 40, :style => "padding:0 5px;"
|
||||
= truncate user.name, :lenght => 16
|
||||
%td= truncate user.email, :lenght => 16
|
||||
- if can? current_user, :admin_project, @project
|
||||
= form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f|
|
||||
%td= f.check_box :read, :onclick => "$(this.form).submit();"
|
||||
%td= f.check_box :write, :onclick => "$(this.form).submit();"
|
||||
%td= f.check_box :admin, :onclick => "$(this.form).submit();"
|
||||
- else
|
||||
%td= check_box_tag "read", 1, member.read, :disabled => :disabled
|
||||
%td= check_box_tag "commit", 1, member.write, :disabled => :disabled
|
||||
%td= check_box_tag "admin", 1, member.admin, :disabled => :disabled
|
||||
- if can? current_user, :admin_team_member, @project
|
||||
%td
|
||||
= link_to 'Cancel', project_team_member_path(:project_id => @project, :id => member.id), :confirm => 'Are you sure?', :method => :delete, :class => "lbutton negative delete-team-member", :remote => true
|
9
app/views/team_members/create.js.haml
Normal file
9
app/views/team_members/create.js.haml
Normal file
|
@ -0,0 +1,9 @@
|
|||
- if @team_member.valid?
|
||||
:plain
|
||||
$("#new_tm_dialog").dialog("close");
|
||||
$("#team-table").append("#{escape_javascript(render(:partial => 'show', :locals => {:member => @team_member} ))}");
|
||||
- else
|
||||
:plain
|
||||
$("#new_tm_dialog").empty();
|
||||
$("#new_tm_dialog").append("#{escape_javascript(render('form'))}");
|
||||
$('select#team_member_user_id').selectmenu({width:300});
|
15
app/views/team_members/new.js.haml
Normal file
15
app/views/team_members/new.js.haml
Normal file
|
@ -0,0 +1,15 @@
|
|||
-#$("#new-member-holder").empty();
|
||||
-#$("#new-member-holder").append("#{escape_javascript(render('form'))}");
|
||||
:plain
|
||||
var new_tm_dialog = $("<div id='new_tm_dialog'></div>");
|
||||
new_tm_dialog.html("#{escape_javascript(render('form'))}");
|
||||
$(new_tm_dialog).dialog({
|
||||
width: 350,
|
||||
resizable: false,
|
||||
draggable: false,
|
||||
title: "Add new member to project team",
|
||||
close: function(event, ui) { $("#new_tm_dialog").remove();},
|
||||
modal: true
|
||||
|
||||
});
|
||||
$('select#team_member_user_id').selectmenu({width:300});
|
6
app/views/team_members/update.js.haml
Normal file
6
app/views/team_members/update.js.haml
Normal file
|
@ -0,0 +1,6 @@
|
|||
- if @team_member.valid?
|
||||
:plain
|
||||
$("##{dom_id(@team_member)}").effect("highlight", {color: "#529214"}, 1000);;
|
||||
- else
|
||||
:plain
|
||||
$("##{dom_id(@team_member)}").effect("highlight", {color: "#D12F19"}, 1000);;
|
Loading…
Add table
Add a link
Reference in a new issue