Bootstrap: Activities
This commit is contained in:
parent
15b06b0164
commit
0a4222fb98
26 changed files with 324 additions and 365 deletions
|
@ -133,9 +133,12 @@ aside.project-side
|
||||||
}
|
}
|
||||||
|
|
||||||
img.avatar {
|
img.avatar {
|
||||||
width:32px;
|
|
||||||
float:left;
|
float:left;
|
||||||
padding-right:5px;
|
margin-right:15px;
|
||||||
|
width:40px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-grid {
|
.media-grid {
|
||||||
|
@ -147,6 +150,18 @@ img.avatar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.wll {
|
||||||
|
background-color: #FFF;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 5px;
|
||||||
|
min-height: 20px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
.author { color: #999; }
|
||||||
|
&:last-child { border:none }
|
||||||
|
p { padding-top:5px;}
|
||||||
|
}
|
||||||
|
|
||||||
@import "reset_bootstrap.scss";
|
@import "reset_bootstrap.scss";
|
||||||
@import "top_panel.scss";
|
@import "top_panel.scss";
|
||||||
@import "projects.css.scss";
|
@import "projects.css.scss";
|
||||||
|
|
|
@ -1,4 +1,12 @@
|
||||||
a {
|
a {
|
||||||
color: $link_color;
|
color: $link_color;
|
||||||
&:hover { text-decoration:none; }
|
&:hover {
|
||||||
|
text-decoration:none;
|
||||||
|
color: $active_link_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-message.entry {
|
||||||
|
background:#F1F1F1;
|
||||||
|
border-color:#ccc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,60 @@
|
||||||
|
body header {
|
||||||
|
position:absolute;
|
||||||
|
width:100%;
|
||||||
|
padding:0;
|
||||||
|
margin:0;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
background: #F1F1F1; /* for non-css3 browsers */
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
box-shadow: 0 -1px 0 white inset;
|
||||||
|
-moz-box-shadow: 0 -1px 0 white inset;
|
||||||
|
-webkit-box-shadow: 0 -1px 0 white inset;
|
||||||
|
|
||||||
|
height:50px;
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
margin:auto;
|
||||||
|
min-width:$min_app_width;
|
||||||
|
max-width:$max_app_width;
|
||||||
|
position:relative;
|
||||||
|
padding:10px $app_padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project_name {
|
||||||
|
float:left;
|
||||||
|
width:235px;
|
||||||
|
margin-right:30px;
|
||||||
|
font-size:16px;
|
||||||
|
font-weight:bold;
|
||||||
|
padding:8px;
|
||||||
|
color:#333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git_url_wrapper {
|
||||||
|
padding:0px;
|
||||||
|
margin:0px;
|
||||||
|
float:left;
|
||||||
|
|
||||||
|
.git-url {
|
||||||
|
padding:0px;
|
||||||
|
margin:0px;
|
||||||
|
font-size: 12px;
|
||||||
|
|
||||||
|
margin-right:10px;
|
||||||
|
border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
|
||||||
|
|
||||||
|
color: #666;
|
||||||
|
border: 1px solid #AAA;
|
||||||
|
padding: 0 10px 0 30px;
|
||||||
|
background: transparent url('images.png') no-repeat 8px -42px;
|
||||||
|
width: 160px;
|
||||||
|
height:26px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.main_links {
|
.main_links {
|
||||||
width:155px;
|
width:155px;
|
||||||
float:left;
|
float:left;
|
||||||
|
@ -47,64 +104,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
body header {
|
|
||||||
position:absolute;
|
|
||||||
width:100%;
|
|
||||||
padding:0;
|
|
||||||
margin:0;
|
|
||||||
top:0;
|
|
||||||
left:0;
|
|
||||||
background: #999; /* for non-css3 browsers */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#EAEAEA'); /* for IE */
|
|
||||||
background: -webkit-gradient(linear, left top, left bottom, from(#FFFFFF), to(#EAEAEA)); /* for webkit browsers */
|
|
||||||
background: -moz-linear-gradient(top, #FFFFFF, #EAEAEA); /* for firefox 3.6+ */
|
|
||||||
background: -o-linear-gradient(top, #FFFFFF, #EAEAEA); /* for firefox 3.6+ */
|
|
||||||
border-bottom: 1px solid #ccc;
|
|
||||||
|
|
||||||
height:50px;
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
margin:auto;
|
|
||||||
min-width:$min_app_width;
|
|
||||||
max-width:$max_app_width;
|
|
||||||
position:relative;
|
|
||||||
padding:10px $app_padding;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project_name {
|
|
||||||
float:left;
|
|
||||||
width:235px;
|
|
||||||
margin-right:30px;
|
|
||||||
font-size:16px;
|
|
||||||
font-weight:bold;
|
|
||||||
padding:8px;
|
|
||||||
color:#333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.git_url_wrapper {
|
|
||||||
padding:0px;
|
|
||||||
margin:0px;
|
|
||||||
float:left;
|
|
||||||
|
|
||||||
.git-url {
|
|
||||||
padding:0px;
|
|
||||||
margin:0px;
|
|
||||||
font-size: 12px;
|
|
||||||
|
|
||||||
margin-right:10px;
|
|
||||||
border-radius: 4px;
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
|
|
||||||
|
|
||||||
color: #666;
|
|
||||||
border: 1px solid #AAA;
|
|
||||||
padding: 0 10px 0 30px;
|
|
||||||
background: transparent url('images.png') no-repeat 8px -42px;
|
|
||||||
width: 160px;
|
|
||||||
height:26px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.top_panel_holder .chzn-container {
|
.top_panel_holder .chzn-container {
|
||||||
position:relative;
|
position:relative;
|
||||||
|
@ -138,7 +137,6 @@ body header {
|
||||||
.rss-icon {
|
.rss-icon {
|
||||||
margin:0 15px;
|
margin:0 15px;
|
||||||
padding:3px;
|
padding:3px;
|
||||||
border:1px solid #AAA;
|
|
||||||
border-radius:3px;
|
border-radius:3px;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,8 @@ class MergeRequestsController < ApplicationController
|
||||||
@notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20)
|
@notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20)
|
||||||
@note = @project.notes.new(:noteable => @merge_request)
|
@note = @project.notes.new(:noteable => @merge_request)
|
||||||
|
|
||||||
|
render_full_content
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.js { respond_with_notes }
|
format.js { respond_with_notes }
|
||||||
|
|
|
@ -68,7 +68,8 @@ class ProjectsController < ApplicationController
|
||||||
|
|
||||||
def show
|
def show
|
||||||
return render "projects/empty" unless @project.repo_exists? && @project.has_commits?
|
return render "projects/empty" unless @project.repo_exists? && @project.has_commits?
|
||||||
limit = (params[:limit] || 20).to_i
|
limit = (params[:limit] || 10).to_i
|
||||||
|
|
||||||
@activities = @project.activities(limit)#updates_wo_repo(limit)
|
@activities = @project.activities(limit)#updates_wo_repo(limit)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ module DashboardHelper
|
||||||
case object.class.name.to_s
|
case object.class.name.to_s
|
||||||
when "Issue" then project_issue_path(project, project.issues.find(object.id))
|
when "Issue" then project_issue_path(project, project.issues.find(object.id))
|
||||||
when "Commit" then project_commit_path(project, project.repo.commits(object.id).first)
|
when "Commit" then project_commit_path(project, project.repo.commits(object.id).first)
|
||||||
|
when "MergeRequest" then project_merge_request_path(project, object.id)
|
||||||
when "Note"
|
when "Note"
|
||||||
then
|
then
|
||||||
note = object
|
note = object
|
||||||
|
@ -26,6 +27,7 @@ module DashboardHelper
|
||||||
when "Note" then markdown(object.note)
|
when "Note" then markdown(object.note)
|
||||||
when "Issue" then object.title
|
when "Issue" then object.title
|
||||||
when "Commit" then object.safe_message
|
when "Commit" then object.safe_message
|
||||||
|
when "MergeRequest" then object.title
|
||||||
else return "Project Wall"
|
else return "Project Wall"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
class Commit
|
class Commit
|
||||||
|
include ActiveModel::Conversion
|
||||||
|
extend ActiveModel::Naming
|
||||||
|
|
||||||
attr_accessor :commit
|
attr_accessor :commit
|
||||||
attr_accessor :head
|
attr_accessor :head
|
||||||
|
@ -16,6 +18,10 @@ class Commit
|
||||||
:id,
|
:id,
|
||||||
:to => :commit
|
:to => :commit
|
||||||
|
|
||||||
|
def persisted?
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
def initialize(raw_commit, head = nil)
|
def initialize(raw_commit, head = nil)
|
||||||
@commit = raw_commit
|
@commit = raw_commit
|
||||||
@head = head
|
@head = head
|
||||||
|
|
|
@ -4,16 +4,17 @@
|
||||||
%h5.underlined= day.stamp("28 Aug, 2010")
|
%h5.underlined= day.stamp("28 Aug, 2010")
|
||||||
%ul.unstyled
|
%ul.unstyled
|
||||||
- commits.each do |commit|
|
- commits.each do |commit|
|
||||||
%li
|
%li.wll
|
||||||
%a{ :class => "update-item", :href => project_commit_path(@project, :id => commit.id) }
|
%a{ :class => "update-item", :href => project_commit_path(@project, :id => commit.id) }
|
||||||
.right.btn
|
.right.btn
|
||||||
= truncate(commit.id.to_s, :length => 10)
|
= truncate(commit.id.to_s, :length => 10)
|
||||||
»
|
»
|
||||||
= image_tag gravatar_icon(commit.author_email), :class => "avatar", :width => 32
|
= image_tag gravatar_icon(commit.author_email), :class => "avatar", :width => 32
|
||||||
%div
|
|
||||||
%strong
|
|
||||||
= truncate(commit.safe_message, :length => 50)
|
|
||||||
%span.update-author
|
%span.update-author
|
||||||
%strong= commit.author_name
|
%strong= commit.author_name
|
||||||
|
–
|
||||||
= time_ago_in_words(commit.committed_date)
|
= time_ago_in_words(commit.committed_date)
|
||||||
ago
|
ago
|
||||||
|
%p
|
||||||
|
%strong
|
||||||
|
= truncate(commit.safe_message, :length => 50)
|
||||||
|
|
|
@ -1,26 +1,10 @@
|
||||||
#feeds_content_holder
|
- @issues.each do |issue|
|
||||||
- unless @issues.empty?
|
.alert-message.entry
|
||||||
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
|
= link_to [issue.project, issue] do
|
||||||
.data
|
%p
|
||||||
- @issues.each do |update|
|
%strong
|
||||||
%a.project-update{:href => dashboard_feed_path(update.project, update)}
|
= issue.project.name
|
||||||
.avatar= image_tag gravatar_icon(update.assignee_email), :class => "avatar", :width => 32
|
–
|
||||||
%div
|
Issue #
|
||||||
= truncate update.title, :length => 35
|
= issue.id
|
||||||
.right= truncate update.project.name
|
= truncate issue.title, :length => 50
|
||||||
%span.update-author
|
|
||||||
%strong= update.author_name
|
|
||||||
authored
|
|
||||||
= time_ago_in_words(update.created_at)
|
|
||||||
ago
|
|
||||||
.right
|
|
||||||
- if update.critical
|
|
||||||
%span.label.important critical
|
|
||||||
- if update.today?
|
|
||||||
%span.label.new today
|
|
||||||
|
|
||||||
- else
|
|
||||||
%h2
|
|
||||||
No assigned
|
|
||||||
%span.tag.open open
|
|
||||||
issues
|
|
||||||
|
|
|
@ -1,24 +1,10 @@
|
||||||
#feeds_content_holder
|
- @merge_requests.each do |merge_request|
|
||||||
- unless @merge_requests.empty?
|
.alert-message.entry
|
||||||
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
|
= link_to [merge_request.project, merge_request] do
|
||||||
.data
|
%p
|
||||||
- @merge_requests.each do |update|
|
%strong
|
||||||
%a.project-update{:href => project_merge_request_path(update.project, update)}
|
= merge_request.project.name
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
|
–
|
||||||
%span.update-title
|
Issue #
|
||||||
= truncate update.title, :length => 35
|
= merge_request.id
|
||||||
.right= truncate update.project.name
|
= truncate merge_request.title, :length => 50
|
||||||
%span.update-author
|
|
||||||
%strong= update.author_name
|
|
||||||
authored
|
|
||||||
= time_ago_in_words(update.created_at)
|
|
||||||
ago
|
|
||||||
.right
|
|
||||||
%span.tag.commit= update.source_branch
|
|
||||||
→
|
|
||||||
%span.tag.commit= update.target_branch
|
|
||||||
- else
|
|
||||||
%h2
|
|
||||||
No authored or assigned
|
|
||||||
%span.tag.open open
|
|
||||||
merge requests
|
|
||||||
|
|
|
@ -1,19 +1,17 @@
|
||||||
#feeds_content_holder
|
- @active_projects.first(3).each do |project|
|
||||||
- @active_projects.first(3).each do |project|
|
= link_to project do
|
||||||
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
|
%h4= project.name
|
||||||
= link_to project do
|
- project.updates(3).each do |update|
|
||||||
%h4= project.name
|
%a.project-update{:href => dashboard_feed_path(project, update)}
|
||||||
- project.updates(3).each do |update|
|
= image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32
|
||||||
%a.project-update{:href => dashboard_feed_path(project, update)}
|
%div
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32
|
= dashboard_feed_title(update)
|
||||||
%div
|
%span.update-author
|
||||||
= dashboard_feed_title(update)
|
%strong= update.author_name
|
||||||
%span.update-author
|
authored
|
||||||
%strong= update.author_name
|
= time_ago_in_words(update.created_at)
|
||||||
authored
|
ago
|
||||||
= time_ago_in_words(update.created_at)
|
.right
|
||||||
ago
|
- klass = update.class.to_s.split("::").last.downcase
|
||||||
.right
|
%span.tag{ :class => klass }= klass
|
||||||
- klass = update.class.to_s.split("::").last.downcase
|
|
||||||
%span.tag{ :class => klass }= klass
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
%h3
|
%h3
|
||||||
Issues
|
Issues
|
||||||
%small ( authored or assigned to you )
|
%small ( assigned to you )
|
||||||
|
|
||||||
%hr
|
%hr
|
||||||
.news-feed= render "dashboard/issues_feed"
|
= render "dashboard/issues_feed"
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
%h3 Merge Requests
|
%h3
|
||||||
|
Merge Requests
|
||||||
|
%small ( authored or assigned to you )
|
||||||
|
|
||||||
%hr
|
%hr
|
||||||
.news-feed= render "dashboard/merge_requests_feed"
|
= render "dashboard/merge_requests_feed"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.fixed
|
.fixed
|
||||||
%aside
|
%aside
|
||||||
= link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }"
|
-#= link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }"
|
||||||
= link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}"
|
= link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}"
|
||||||
= link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide"
|
= link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide"
|
||||||
= link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide"
|
= link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide"
|
||||||
|
|
|
@ -1,32 +1,33 @@
|
||||||
|
%h3
|
||||||
|
= "Merge Request ##{@merge_request.id}:"
|
||||||
|
|
||||||
|
%span.label= @merge_request.source_branch
|
||||||
|
→
|
||||||
|
%span.label= @merge_request.target_branch
|
||||||
|
|
||||||
|
%span.right
|
||||||
|
- if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
|
||||||
|
= link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small" do
|
||||||
|
Edit Merge Request
|
||||||
|
%hr
|
||||||
|
|
||||||
%div
|
%div
|
||||||
%span.entity-info
|
%span.entity-info
|
||||||
- if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
|
|
||||||
= link_to edit_project_merge_request_path(@project, @merge_request) do
|
|
||||||
.entity-button
|
|
||||||
Edit Merge Request
|
|
||||||
%i
|
|
||||||
= image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
|
= image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
|
||||||
%span.commit-title
|
%span.commit-title
|
||||||
%strong
|
%strong
|
||||||
= "Merge Request ##{@merge_request.id}:"
|
%span.commit-author
|
||||||
|
|
||||||
.tag.commit.inline= @merge_request.source_branch
|
|
||||||
→
|
|
||||||
.tag.commit.inline= @merge_request.target_branch
|
|
||||||
%span.commit-author
|
|
||||||
%strong
|
%strong
|
||||||
= link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do
|
= link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do
|
||||||
%span.author= @merge_request.author_name
|
%span.author= @merge_request.author_name
|
||||||
→
|
→
|
||||||
= link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do
|
= link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do
|
||||||
%span.author= @merge_request.assignee_name
|
%span.author= @merge_request.assignee_name
|
||||||
|
%br
|
||||||
|
|
||||||
|
|
||||||
= @merge_request.created_at.stamp("Aug 21, 2011 9:23pm")
|
= @merge_request.created_at.stamp("Aug 21, 2011 9:23pm")
|
||||||
|
%hr
|
||||||
%hr
|
.clearfix
|
||||||
%div.well= simple_format @merge_request.title
|
%div.well= simple_format @merge_request.title
|
||||||
|
|
||||||
|
|
||||||
.tabs
|
.tabs
|
||||||
|
|
|
@ -1,79 +1,29 @@
|
||||||
- if update.kind_of?(Note)
|
%li.wll
|
||||||
%a.project-update.titled{:href => dashboard_feed_path(project, update)}
|
.row
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32
|
.span9
|
||||||
%div
|
= image_tag gravatar_icon(update.author_email), :class => "avatar thumb"
|
||||||
= dashboard_feed_title(update)
|
%p
|
||||||
%span.update-author
|
%strong.author= update.author_name
|
||||||
%strong= update.author_name
|
%span
|
||||||
= time_ago_in_words(update.created_at)
|
–
|
||||||
ago
|
authored
|
||||||
- noteable = update.target
|
= time_ago_in_words(update.created_at)
|
||||||
- if noteable.kind_of?(MergeRequest)
|
ago
|
||||||
.title-block
|
- if update.kind_of? MergeRequest
|
||||||
%div
|
= link_to project_merge_request_path(@project, update) do
|
||||||
%span.commit.tag
|
= "Opened merge request ##{update.id}."
|
||||||
Merge Request #
|
%span.label= update.source_branch
|
||||||
= noteable.id
|
|
||||||
%span.update-author
|
|
||||||
%span= noteable.source_branch
|
|
||||||
→
|
→
|
||||||
%span= noteable.target_branch
|
%span.label= update.target_branch
|
||||||
|
- elsif update.kind_of? Issue
|
||||||
- elsif noteable.kind_of?(Issue)
|
= link_to project_issue_path(@project, update) do
|
||||||
.title-block
|
Opened new
|
||||||
%div
|
%span.label.important= "issue ##{update.id}"
|
||||||
%span.commit.tag
|
= truncate update.title
|
||||||
Issue #
|
- else
|
||||||
= noteable.id
|
= link_to [@project, update.target] do
|
||||||
%span.update-author
|
%p
|
||||||
.left= truncate noteable.title
|
= update.target.class.name.titleize
|
||||||
|
= truncate(update.target.id.to_s, :length => 10)
|
||||||
- elsif noteable.kind_of?(Commit)
|
|
||||||
.title-block
|
= dashboard_feed_title(update)
|
||||||
%div
|
|
||||||
%span.commit.tag
|
|
||||||
commit
|
|
||||||
%span.update-author
|
|
||||||
.left= truncate noteable.id
|
|
||||||
- else
|
|
||||||
.title-block
|
|
||||||
%div
|
|
||||||
%span.commit.tag
|
|
||||||
Project Wall
|
|
||||||
|
|
||||||
|
|
||||||
- elsif update.kind_of?(MergeRequest)
|
|
||||||
%a.project-update.titled{:href => project_merge_request_path(project, update)}
|
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32
|
|
||||||
%div
|
|
||||||
Opened merge request
|
|
||||||
%span.update-author
|
|
||||||
%strong= update.author_name
|
|
||||||
= time_ago_in_words(update.created_at)
|
|
||||||
ago
|
|
||||||
.title-block
|
|
||||||
%div
|
|
||||||
%span.commit.tag
|
|
||||||
Merge Request #
|
|
||||||
= update.id
|
|
||||||
%span.update-author
|
|
||||||
%span= update.source_branch
|
|
||||||
→
|
|
||||||
%span= update.target_branch
|
|
||||||
|
|
||||||
- elsif update.kind_of?(Issue)
|
|
||||||
%a.project-update.titled{:href => dashboard_feed_path(project, update)}
|
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32
|
|
||||||
%div
|
|
||||||
Created new Issue
|
|
||||||
%span.update-author
|
|
||||||
%strong= update.author_name
|
|
||||||
= time_ago_in_words(update.created_at)
|
|
||||||
ago
|
|
||||||
.title-block
|
|
||||||
%div
|
|
||||||
%span.commit.tag
|
|
||||||
Issue #
|
|
||||||
= update.id
|
|
||||||
%span.update-author
|
|
||||||
.left= truncate update.title
|
|
||||||
|
|
|
@ -18,10 +18,10 @@
|
||||||
%cite= "http://#{GIT_HOST["host"]}/"
|
%cite= "http://#{GIT_HOST["host"]}/"
|
||||||
.input= f.text_field :code, :placeholder => "example"
|
.input= f.text_field :code, :placeholder => "example"
|
||||||
|
|
||||||
- unless @project.new_record? || @project.heads.empty?
|
- unless @project.new_record? || @project.heads.empty?
|
||||||
.clearfix
|
.clearfix
|
||||||
= f.label :default_branch, "Default Branch"
|
= f.label :default_branch, "Default Branch"
|
||||||
.input= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;")
|
.input= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:210px;")
|
||||||
|
|
||||||
|
|
||||||
.clearfix
|
.clearfix
|
||||||
|
@ -30,9 +30,9 @@
|
||||||
|
|
||||||
%br
|
%br
|
||||||
|
|
||||||
.merge-tabs
|
.actions
|
||||||
= f.submit 'Save', :class => "btn primary"
|
= f.submit 'Save', :class => "btn primary"
|
||||||
|
= link_to 'Cancel', @project, :class => "btn"
|
||||||
- unless @project.new_record?
|
- unless @project.new_record?
|
||||||
.right
|
.right
|
||||||
= link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "btn"
|
= link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "btn danger"
|
||||||
|
|
|
@ -1,69 +1,29 @@
|
||||||
= render "project_head"
|
= render "project_head"
|
||||||
|
%h3 Edit Project
|
||||||
= form_for(@project, :remote => true) do |f|
|
%hr
|
||||||
%div
|
= render "projects/form"
|
||||||
%span.entity-info
|
|
||||||
= link_to info_project_path(@project) do
|
|
||||||
.entity-button
|
|
||||||
Info
|
|
||||||
%i
|
|
||||||
%h2= @project.name
|
|
||||||
%hr
|
|
||||||
%table.no-borders
|
|
||||||
-if @project.errors.any?
|
|
||||||
%tr
|
|
||||||
%td{:colspan => 2}
|
|
||||||
#error_explanation
|
|
||||||
- @project.errors.full_messages.each do |msg|
|
|
||||||
%span= msg
|
|
||||||
%br
|
|
||||||
|
|
||||||
%tr
|
|
||||||
%td= f.label :name
|
|
||||||
%td= f.text_field :name, :placeholder => "Example Project"
|
|
||||||
%tr
|
|
||||||
%td
|
|
||||||
.left= f.label :path
|
|
||||||
%cite.right= "git@#{GIT_HOST["host"]}:"
|
|
||||||
%td
|
|
||||||
= f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record?
|
|
||||||
%tr
|
|
||||||
%td
|
|
||||||
.left= f.label :code
|
|
||||||
%cite.right= "http://#{GIT_HOST["host"]}/"
|
|
||||||
%td= f.text_field :code, :placeholder => "example"
|
|
||||||
|
|
||||||
- unless @project.new_record? || @project.heads.empty?
|
|
||||||
%tr
|
|
||||||
%td= f.label :default_branch, "Default Branch"
|
|
||||||
%td= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;")
|
|
||||||
|
|
||||||
%tr
|
|
||||||
%td= f.label :description
|
|
||||||
%td= f.text_area :description, :placeholder => "project description", :style => "height:50px"
|
|
||||||
|
|
||||||
%br
|
|
||||||
|
|
||||||
.merge-tabs
|
|
||||||
= f.submit 'Save', :class => "grey-button"
|
|
||||||
|
|
||||||
- unless @project.new_record?
|
|
||||||
.right
|
|
||||||
= link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "red-button"
|
|
||||||
|
|
||||||
%div{ :class => "ajax_loader", :style => "display:none;height:200px;"}
|
%div{ :class => "ajax_loader", :style => "display:none;height:200px;"}
|
||||||
%center
|
%center
|
||||||
= image_tag "ajax-loader.gif", :class => "append-bottom"
|
= image_tag "ajax-loader.gif", :class => "append-bottom"
|
||||||
%h3.prepend-top Updating project & repository. Please wait for few minutes
|
%h3.prepend-top Saving project & repository. Please wait...
|
||||||
|
|
||||||
:javascript
|
|
||||||
$('.edit_project').bind('ajax:before', function() {
|
|
||||||
$(".edit_project").hide();
|
|
||||||
$('.ajax_loader').show();
|
|
||||||
});
|
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
$(function(){
|
$(function(){
|
||||||
$('#project_default_branch').chosen();
|
$("#project_name").live("change", function(){
|
||||||
})
|
var slug = slugify($(this).val());
|
||||||
|
$("#project_code").val(slug);
|
||||||
|
$("#project_path").val(slug);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function slugify(text) {
|
||||||
|
return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
$('.edit_project').live('ajax:before', function() {
|
||||||
|
$(this).hide();
|
||||||
|
$('.ajax_loader').show();
|
||||||
|
});
|
||||||
|
$('form #project_default_branch').chosen();
|
||||||
|
})
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
- if current_user.require_ssh_key?
|
- if current_user.require_ssh_key?
|
||||||
%ul.errors_holder
|
.alert-message.block-message.error
|
||||||
%li You have no ssh keys added yo tour profile.
|
%ul
|
||||||
%li You wont be able to pull/push repository.
|
%li You have no ssh keys added yo tour profile.
|
||||||
%li Visit profile → keys and add public key of every machine you want to use for work with gitlabhq.
|
%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.alert_holder
|
%ul.alert_holder
|
||||||
%li You should push repository to proceed.
|
%li You should push repository to proceed.
|
||||||
%li After push you will be able to browse code, commits etc.
|
%li After push you will be able to browse code, commits etc.
|
||||||
|
|
||||||
- bash_lexer = Pygments::Lexer[:bash]
|
- bash_lexer = Pygments::Lexer[:bash]
|
||||||
%div.git-empty
|
%div.git-empty
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
%h3 Projects
|
%h3
|
||||||
|
Projects
|
||||||
|
%small= "( #{current_user.projects.count} )"
|
||||||
%hr
|
%hr
|
||||||
- unless @projects.empty?
|
- unless @projects.empty?
|
||||||
%div.tile= render "tile"
|
%div.tile= render "tile"
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
= render "project_head"
|
= render "project_head"
|
||||||
|
%h3= @project.name
|
||||||
|
%br
|
||||||
|
|
||||||
%div
|
|
||||||
%span.entity-info
|
|
||||||
= link_to edit_project_path(@project) do
|
|
||||||
.entity-button
|
|
||||||
Edit
|
|
||||||
%i
|
|
||||||
%h2= @project.name
|
|
||||||
%hr
|
|
||||||
|
|
||||||
%table.no-borders
|
%pre
|
||||||
|
= "git clone #{@project.url_to_repo}"
|
||||||
|
|
||||||
|
|
||||||
|
%table
|
||||||
%tr
|
%tr
|
||||||
%td Name
|
%td Name
|
||||||
%td= @project.name
|
%td= @project.name
|
||||||
|
@ -17,6 +16,36 @@
|
||||||
%tr
|
%tr
|
||||||
%td Slug
|
%td Slug
|
||||||
%td= @project.code
|
%td= @project.code
|
||||||
|
|
||||||
|
%tr
|
||||||
|
%td Path
|
||||||
|
%td= @project.path
|
||||||
|
|
||||||
|
%tr
|
||||||
|
%td Owner
|
||||||
|
%td= link_to @project.owner.name, project_team_member_path(@project, @project.team_member_by_id(@project.owner))
|
||||||
|
|
||||||
|
%tr
|
||||||
|
%td Last commit
|
||||||
|
%td
|
||||||
|
= time_ago_in_words(@project.commit.committed_date)
|
||||||
|
ago
|
||||||
|
|
||||||
|
%tr
|
||||||
|
%td Team
|
||||||
|
%td
|
||||||
|
= @project.users_projects.count
|
||||||
|
users
|
||||||
|
|
||||||
|
%tr
|
||||||
|
%td Open Issues
|
||||||
|
%td
|
||||||
|
= @project.issues.opened.count
|
||||||
|
|
||||||
|
%tr
|
||||||
|
%td Merge Requests
|
||||||
|
%td
|
||||||
|
= @project.merge_requests.opened.count
|
||||||
|
|
||||||
%tr
|
%tr
|
||||||
%td Created
|
%td Created
|
||||||
|
@ -25,4 +54,6 @@
|
||||||
%tr
|
%tr
|
||||||
%td{:colspan => 2}= simple_format @project.description
|
%td{:colspan => 2}= simple_format @project.description
|
||||||
|
|
||||||
|
.actions
|
||||||
|
= link_to "Edit", edit_project_path(@project), :class => "btn"
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,21 @@
|
||||||
- content_for(:body_class, "project-page dashboard")
|
|
||||||
|
|
||||||
= render "project_head"
|
= render "project_head"
|
||||||
#news-feed.news-feed
|
- @activities.each do |update|
|
||||||
.project-box.project-updates
|
.alert-message.entry
|
||||||
- @activities.each do |update|
|
= link_to dashboard_feed_path(@project, update) do
|
||||||
= render "projects/feed", :update => update, :project => @project
|
- if update.kind_of? Note
|
||||||
|
%p
|
||||||
:javascript
|
%strong
|
||||||
function updateDashboard(){
|
= update.target.class.name.titleize
|
||||||
$('.project-content').load("#{escape_javascript(project_path(@project))} .project-content>*");
|
= truncate update.target.id.to_s, :length => 10
|
||||||
}
|
commented
|
||||||
setInterval("updateDashboard()", 300000);
|
–
|
||||||
|
= image_tag gravatar_icon(update.author_email), :class => "", :width => 16
|
||||||
|
= truncate dashboard_feed_title(update), :length => 50
|
||||||
|
- else
|
||||||
|
%p
|
||||||
|
%strong
|
||||||
|
= update.class.name.titleize
|
||||||
|
= truncate update.id.to_s
|
||||||
|
–
|
||||||
|
= image_tag gravatar_icon(update.author_email), :class => "", :width => 16
|
||||||
|
= truncate dashboard_feed_title(update), :length => 50
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
%a.project-update.titled{:href => project_commits_path(project, :ref => update.head.name)}
|
- commit = update
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
|
.alert-message.entry
|
||||||
%span.update-title
|
= link_to project_commits_path(@project, :ref => commit.head.name) do
|
||||||
= dashboard_feed_title(update)
|
%p
|
||||||
%span.update-author
|
%strong
|
||||||
%strong= update.author_name
|
= commit.head.name
|
||||||
authored
|
–
|
||||||
= time_ago_in_words(update.created_at)
|
= truncate(commit.id.to_s, :length => 10)
|
||||||
ago
|
= image_tag gravatar_icon(commit.author_email), :class => "", :width => 16
|
||||||
.title-block
|
= truncate(commit.safe_message, :length => 40)
|
||||||
%span.update-title
|
%span.right
|
||||||
%span.commit.tag= update.head.name
|
= time_ago_in_words(commit.committed_date)
|
||||||
%span.update-author
|
ago
|
||||||
.left= truncate update.commit.id
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
= render "head"
|
= render "head"
|
||||||
- unless @branches.empty?
|
- unless @branches.empty?
|
||||||
%div.update-data.ui-box.ui-box-small
|
%table
|
||||||
.data
|
%thead
|
||||||
|
%tr
|
||||||
|
%th Name
|
||||||
|
%th Last commit
|
||||||
|
%tbody
|
||||||
- @branches.each do |branch|
|
- @branches.each do |branch|
|
||||||
%a.update-item{:href => project_commits_path(@project, :ref => branch.name)}
|
%tr
|
||||||
%span.update-title{:style => "margin-bottom:0px;"}
|
%td
|
||||||
= branch.name
|
= link_to project_commits_path(@project, :ref => branch.name) do
|
||||||
%span.update-author.right
|
%strong= branch.name
|
||||||
= time_ago_in_words(branch.commit.committed_date)
|
- if branch.name == @project.root_ref
|
||||||
ago
|
%span.label default
|
||||||
- else
|
%td
|
||||||
%h3 No brances
|
= link_to project_commits_path(@project, branch.commit.id) do
|
||||||
|
= truncate branch.commit.id.to_s, :length => 10
|
||||||
|
= time_ago_in_words(branch.commit.committed_date)
|
||||||
|
ago
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
- content_for(:body_class, "project-page dashboard")
|
|
||||||
= render "head"
|
= render "head"
|
||||||
|
%ul.unstyled
|
||||||
#news-feed.news-feed
|
- @activities.each do |update|
|
||||||
.project-box.project-updates
|
= render "repositories/feed", :update => update, :project => @project
|
||||||
- @activities.each do |update|
|
|
||||||
= render "repositories/feed", :update => update, :project => @project
|
|
||||||
|
|
||||||
|
|
|
@ -106,5 +106,5 @@ Gitlab::Application.routes.draw do
|
||||||
end
|
end
|
||||||
resources :notes, :only => [:create, :destroy]
|
resources :notes, :only => [:create, :destroy]
|
||||||
end
|
end
|
||||||
root :to => "dashboard#index"
|
root :to => "projects#index"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue