Merge remote-tracking branch 'origin/master' into network_graph
Conflicts: app/assets/stylesheets/projects.css.scss lib/commit_ext.rb
This commit is contained in:
commit
762946995e
18 changed files with 213 additions and 312 deletions
|
@ -8,3 +8,34 @@
|
||||||
*= require_self
|
*= require_self
|
||||||
*= require_tree .
|
*= require_tree .
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** COLORS **/
|
||||||
|
.cgray { color:gray; }
|
||||||
|
.cred { color:#D12F19; }
|
||||||
|
.cgreen { color:#44aa22; }
|
||||||
|
|
||||||
|
/** COMMON STYLES **/
|
||||||
|
.left {
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
.width-50p{
|
||||||
|
width:50%;
|
||||||
|
}
|
||||||
|
.width-49p{
|
||||||
|
width:49%;
|
||||||
|
}
|
||||||
|
.width-30p{
|
||||||
|
width:30%;
|
||||||
|
}
|
||||||
|
.width-65p{
|
||||||
|
width:65%;
|
||||||
|
}
|
||||||
|
.append-bottom-10 {
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
.prepend-top-10 {
|
||||||
|
margin-top:10px;
|
||||||
|
}
|
||||||
|
|
|
@ -37,4 +37,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre.commit_message {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
|
@ -10,14 +10,13 @@
|
||||||
color: #444;
|
color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
#issues-table-holder .issue:hover .action-links { display:block; }
|
|
||||||
|
|
||||||
.issues_filter {
|
.issues_filter {
|
||||||
margin-top:10px;
|
margin-top:10px;
|
||||||
.left {
|
.left {
|
||||||
margin-right:15px;
|
margin-right:15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.top_panel_issues{
|
.top_panel_issues{
|
||||||
#issue_search_form {
|
#issue_search_form {
|
||||||
margin:5px 0;
|
margin:5px 0;
|
||||||
|
@ -36,3 +35,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** ISSUES LIST **/
|
||||||
|
.issue .action-links {
|
||||||
|
display:none;
|
||||||
|
a {
|
||||||
|
margin-left:10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.issue:hover .action-links { display:block; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
// Place all the styles related to the Projects controller here.
|
/** MIXINS **/
|
||||||
// They will automatically be included in application.css.
|
|
||||||
// You can use Sass (SCSS) here: http://sass-lang.com/
|
|
||||||
|
|
||||||
@mixin round-borders-bottom($radius) {
|
@mixin round-borders-bottom($radius) {
|
||||||
border-top: 1px solid #eaeaea;
|
border-top: 1px solid #eaeaea;
|
||||||
-moz-border-radius-bottomright: $radius;
|
-moz-border-radius-bottomright: $radius;
|
||||||
|
@ -29,18 +26,6 @@
|
||||||
border-radius: $radius;
|
border-radius: $radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin hover-color {
|
|
||||||
background-color:#FFFFCF;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin panel-color {
|
|
||||||
background: #111 !important;
|
|
||||||
background: -webkit-gradient(linear,left top,left bottom,from(#333),to(#111)) !important;
|
|
||||||
background: -moz-linear-gradient(top,#333,#111) !important;
|
|
||||||
background: transparent 9 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** File stat **/
|
/** File stat **/
|
||||||
.file_stats {
|
.file_stats {
|
||||||
margin-bottom:10px;
|
margin-bottom:10px;
|
||||||
|
@ -66,24 +51,16 @@
|
||||||
@include round-borders-all(4px);
|
@include round-borders-all(4px);
|
||||||
padding: 4px 0px;
|
padding: 4px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.round-borders {
|
table.round-borders {
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#content-container{
|
|
||||||
min-height:250px;
|
|
||||||
background: #fff;
|
|
||||||
@include round-borders-bottom(8px);
|
|
||||||
borders:2px solid #eaeaea;
|
|
||||||
border-top: none;
|
|
||||||
padding:20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #111;
|
color: #111;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** FILE CONTENT VIEW **/
|
||||||
.view_file_content{
|
.view_file_content{
|
||||||
.old_line, .new_line {
|
.old_line, .new_line {
|
||||||
background:#ECECEC;
|
background:#ECECEC;
|
||||||
|
@ -122,10 +99,34 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.back_small.button{
|
td.code {
|
||||||
|
width: 100%;
|
||||||
|
.highlight {
|
||||||
|
margin-left: 55px;
|
||||||
|
overflow:auto;
|
||||||
|
overflow-y:hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.highlight pre {
|
||||||
|
white-space: pre;
|
||||||
|
word-wrap:normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.highlighttable tr:hover {
|
||||||
|
background:white;
|
||||||
|
}
|
||||||
|
table.highlighttable pre{
|
||||||
|
line-height:16px !important;
|
||||||
|
font-size:12px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.highlighttable .linenodiv pre {
|
||||||
|
text-align: right;
|
||||||
|
padding-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** PROJECTS **/
|
||||||
input.ssh_project_url {
|
input.ssh_project_url {
|
||||||
padding:5px;
|
padding:5px;
|
||||||
margin:0px;
|
margin:0px;
|
||||||
|
@ -149,38 +150,7 @@ input.ssh_project_url {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top_project_menu {
|
|
||||||
a {
|
|
||||||
border-right: 1px solid #FFFFFF;
|
|
||||||
box-shadow: -1px 0 #DDDDDD inset;
|
|
||||||
color: #666;
|
|
||||||
display: block;
|
|
||||||
font-size: 16px;
|
|
||||||
text-decoration: none;
|
|
||||||
line-height: 20px;
|
|
||||||
padding: 11px 26px 12px 24px;
|
|
||||||
text-shadow: 0 1px 0 #FFFFFF;
|
|
||||||
float:left;
|
|
||||||
|
|
||||||
&.current {
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
color: #222222;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.top_bar {
|
|
||||||
margin-top:50px;
|
|
||||||
background-color: #F4F4F4;
|
|
||||||
@include round-borders-top(8px);
|
|
||||||
box-shadow: 0 1px #FFFFFF inset, 0 -1px #DDDDDD inset;
|
|
||||||
height: 43px;
|
|
||||||
overflow: hidden;
|
|
||||||
width:990px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** FORM INPUTS **/
|
/** FORM INPUTS **/
|
||||||
|
|
||||||
.user_new,
|
.user_new,
|
||||||
.new_key,
|
.new_key,
|
||||||
.new_issue,
|
.new_issue,
|
||||||
|
@ -202,7 +172,6 @@ input.ssh_project_url {
|
||||||
}
|
}
|
||||||
|
|
||||||
.input_button {
|
.input_button {
|
||||||
//@include round-borders-all(4px);
|
|
||||||
padding:8px;
|
padding:8px;
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
|
@ -214,7 +183,6 @@ input.ssh_project_url {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** FLASH **/
|
/** FLASH **/
|
||||||
|
|
||||||
#flash_container {
|
#flash_container {
|
||||||
height:40px;
|
height:40px;
|
||||||
position:fixed;
|
position:fixed;
|
||||||
|
@ -236,7 +204,6 @@ input.ssh_project_url {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Buttons **/
|
/** Buttons **/
|
||||||
|
|
||||||
.lbutton,
|
.lbutton,
|
||||||
.lite_button {
|
.lite_button {
|
||||||
display:block;
|
display:block;
|
||||||
|
@ -273,31 +240,82 @@ input.ssh_project_url {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project_thumb {
|
|
||||||
margin:20px 0;
|
|
||||||
width: 250px;
|
|
||||||
float:left;
|
|
||||||
padding:20px;
|
|
||||||
text-align:center;
|
|
||||||
p, h4 {
|
|
||||||
text-align:left;
|
|
||||||
}
|
|
||||||
.lbutton {
|
|
||||||
float:left;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.handle:hover{
|
.handle:hover{
|
||||||
cursor: move;
|
cursor: move;
|
||||||
}
|
}
|
||||||
|
|
||||||
.handle{
|
.project-refs-form {
|
||||||
width: 12px;
|
span {
|
||||||
height: 12px;
|
background: none !important;
|
||||||
padding: 10px;
|
position:static !important;
|
||||||
|
width:auto !important;
|
||||||
|
height: auto !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.project-refs-select {
|
||||||
|
width:200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter .left { margin-right:15px; }
|
||||||
|
|
||||||
|
body.project-page table .commit {
|
||||||
|
a.tree-commit-link {
|
||||||
|
color:gray;
|
||||||
|
&:hover {
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** NEW PROJECT **/
|
||||||
|
.new-project-hodler {
|
||||||
|
.icon span { background-position: -31px -70px; }
|
||||||
|
td { border-bottom: 1px solid #DEE2E3; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Feed entry **/
|
||||||
|
.commit,
|
||||||
|
.snippet,
|
||||||
|
.message {
|
||||||
|
.title {
|
||||||
|
color:#666;
|
||||||
|
a { color:#666 !important; }
|
||||||
|
p { margin-top:0px; }
|
||||||
|
}
|
||||||
|
.author { color: #999 }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** JQuery UI **/
|
||||||
|
.ui-autocomplete { @include round-borders-all(5px); }
|
||||||
|
.ui-menu-item { cursor: pointer }
|
||||||
|
.ui-selectmenu{
|
||||||
|
@include round-borders-all(4px);
|
||||||
|
margin-right:10px;
|
||||||
|
font-size:1.5em;
|
||||||
|
height:auto;
|
||||||
|
font-weight:bold;
|
||||||
|
.ui-selectmenu-status {
|
||||||
|
padding:3px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Snippets **/
|
||||||
|
.new_snippet textarea,
|
||||||
|
.edit_snippet textarea {
|
||||||
|
height:300px;
|
||||||
|
padding: 8px;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
.snippet .action-links {
|
||||||
|
display:none;
|
||||||
|
a {
|
||||||
|
margin-left:10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.snippet:hover .action-links { display:block; }
|
||||||
|
|
||||||
|
/** ISSUES TAGS **/
|
||||||
.tag {
|
.tag {
|
||||||
@include round-borders-all(4px);
|
@include round-borders-all(4px);
|
||||||
padding:2px 4px;
|
padding:2px 4px;
|
||||||
|
@ -326,152 +344,38 @@ input.ssh_project_url {
|
||||||
background: #2c5c66;
|
background: #2c5c66;
|
||||||
color:white;
|
color:white;
|
||||||
}
|
}
|
||||||
}
|
&.note {
|
||||||
|
background: #2c5c66;
|
||||||
|
color:white;
|
||||||
.left {
|
}
|
||||||
float:left;
|
&.issue {
|
||||||
}
|
background: #D12F19;
|
||||||
.right {
|
color:white;
|
||||||
float:right;
|
}
|
||||||
}
|
&.commit {
|
||||||
|
background: #44aacc;
|
||||||
.width-50p{
|
color:white;
|
||||||
width:50%;
|
|
||||||
}
|
|
||||||
.width-49p{
|
|
||||||
width:49%;
|
|
||||||
}
|
|
||||||
.width-30p{
|
|
||||||
width:30%;
|
|
||||||
}
|
|
||||||
.width-65p{
|
|
||||||
width:65%;
|
|
||||||
}
|
|
||||||
pre.commit_message {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
/* min-height:100%;*/
|
|
||||||
}
|
|
||||||
.ui-selectmenu{
|
|
||||||
@include round-borders-all(4px);
|
|
||||||
margin-right:10px;
|
|
||||||
font-size:1.5em;
|
|
||||||
height:auto;
|
|
||||||
font-weight:bold;
|
|
||||||
.ui-selectmenu-status {
|
|
||||||
padding:3px 10px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
td.code {
|
|
||||||
width: 100%;
|
|
||||||
.highlight {
|
|
||||||
margin-left: 55px;
|
|
||||||
overflow:auto;
|
|
||||||
overflow-y:hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.highlight pre {
|
|
||||||
white-space: pre;
|
|
||||||
word-wrap:normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlighttable tr:hover {
|
|
||||||
background:white;
|
|
||||||
}
|
|
||||||
table.highlighttable pre{
|
|
||||||
line-height:16px !important;
|
|
||||||
font-size:12px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
table.highlighttable .linenodiv pre {
|
|
||||||
text-align: right;
|
|
||||||
padding-right: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-refs-form {
|
|
||||||
span {
|
|
||||||
background: none !important;
|
|
||||||
position:static !important;
|
|
||||||
width:auto !important;
|
|
||||||
height: auto !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-refs-select {
|
|
||||||
width:200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filter .left { margin-right:15px; }
|
|
||||||
|
|
||||||
|
|
||||||
.cgray { color:gray; }
|
|
||||||
.cred { color:#D12F19; }
|
|
||||||
.cgreen { color:#44aa22; }
|
|
||||||
|
|
||||||
body.project-page table .commit {
|
|
||||||
a.tree-commit-link {
|
|
||||||
color:gray;
|
|
||||||
&:hover {
|
|
||||||
text-decoration:underline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.snippet .action-links,
|
|
||||||
#issues-table-holder .issue .action-links {
|
|
||||||
display:none;
|
|
||||||
a {
|
|
||||||
margin-left:10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.snippet:hover .action-links { display:block; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** NEW PROJECT **/
|
|
||||||
.new-project-hodler {
|
|
||||||
.icon span {
|
|
||||||
background-position: -31px -70px;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
border-bottom: 1px solid #DEE2E3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//.message .note-title p { margin-bottom:0px; }
|
|
||||||
|
|
||||||
.commit,
|
|
||||||
.snippet,
|
|
||||||
.message {
|
|
||||||
.title {
|
|
||||||
color:#666;
|
|
||||||
a {
|
|
||||||
color:#666 !important;
|
|
||||||
}
|
|
||||||
p {
|
|
||||||
margin-top:0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.author {
|
|
||||||
color: #999
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** UI autocomplete **/
|
|
||||||
.ui-autocomplete { @include round-borders-all(5px); }
|
|
||||||
.ui-menu-item { cursor: pointer }
|
|
||||||
|
|
||||||
#holder {
|
#holder {
|
||||||
border: solid 1px #999;
|
border: solid 1px #999;
|
||||||
cursor: move;
|
cursor: move;
|
||||||
height: 70%;
|
height: 70%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Project Dashboard Page */
|
||||||
|
html, body { height: 100%; }
|
||||||
|
|
||||||
|
body.dashboard.project-page .news-feed h2{float: left;}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates .data{ padding: 0}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates a.project-update:last-child{border-bottom: 0}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates a.project-update img{float: left; margin-right: 10px;}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}
|
||||||
|
body.dashboard.project-page .news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
|
||||||
|
/* eo Dashboard Page */
|
||||||
|
|
|
@ -66,21 +66,8 @@ class ProjectsController < ApplicationController
|
||||||
|
|
||||||
def show
|
def show
|
||||||
return render "projects/empty" unless @project.repo_exists?
|
return render "projects/empty" unless @project.repo_exists?
|
||||||
@date = case params[:view]
|
limit = (params[:limit] || 40).to_i
|
||||||
when "week" then Date.today - 7.days
|
@activities = @project.updates(limit)
|
||||||
when "day" then Date.today
|
|
||||||
else nil
|
|
||||||
end
|
|
||||||
|
|
||||||
if @date
|
|
||||||
@date = @date.at_beginning_of_day
|
|
||||||
|
|
||||||
@commits = @project.commits_since(@date)
|
|
||||||
@messages = project.notes.since(@date).order("created_at DESC")
|
|
||||||
else
|
|
||||||
@commits = @project.fresh_commits
|
|
||||||
@messages = project.notes.fresh.limit(10)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -73,7 +73,7 @@ class Repository
|
||||||
|
|
||||||
def fresh_commits(n = 10)
|
def fresh_commits(n = 10)
|
||||||
commits = heads.map do |h|
|
commits = heads.map do |h|
|
||||||
repo.commits(h.name, n)
|
repo.commits(h.name, n).each { |c| c.head = h }
|
||||||
end.flatten.uniq { |c| c.id }
|
end.flatten.uniq { |c| c.id }
|
||||||
|
|
||||||
commits.sort! do |x, y|
|
commits.sort! do |x, y|
|
||||||
|
@ -85,7 +85,7 @@ class Repository
|
||||||
|
|
||||||
def commits_since(date)
|
def commits_since(date)
|
||||||
commits = heads.map do |h|
|
commits = heads.map do |h|
|
||||||
repo.log(h.name, nil, :since => date)
|
repo.log(h.name, nil, :since => date).each { |c| c.head = h }
|
||||||
end.flatten.uniq { |c| c.id }
|
end.flatten.uniq { |c| c.id }
|
||||||
|
|
||||||
commits.sort! do |x, y|
|
commits.sort! do |x, y|
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
%a.project-update{:href => dashboard_feed_path(project, update)}
|
%a.project-update{:href => dashboard_feed_path(project, update)}
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
|
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
|
||||||
%span.update-title
|
%span.update-title
|
||||||
|
- if update.kind_of?(Grit::Commit)
|
||||||
|
%span.right.tag.commit= update.head.name
|
||||||
= dashboard_feed_title(update)
|
= dashboard_feed_title(update)
|
||||||
%span.update-author
|
%span.update-author
|
||||||
%strong= update.author_name
|
%strong= update.author_name
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
.git_url_wrapper
|
.git_url_wrapper
|
||||||
%input.git-url.text{:id => "", :name => "", :readonly => "", :type => "text", :value => @project.url_to_repo, :class => "one_click_select"}
|
%input.git-url.text{:id => "", :name => "", :readonly => "", :type => "text", :value => @project.url_to_repo, :class => "one_click_select"}
|
||||||
%aside
|
%aside
|
||||||
= link_to "History", project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil
|
= link_to "Activities", project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil
|
||||||
= link_to "Tree", tree_project_path(@project), :class => current_page?(:controller => "projects", :action => "tree", :id => @project) ? "current" : nil
|
= link_to "Tree", tree_project_path(@project), :class => current_page?(:controller => "projects", :action => "tree", :id => @project) ? "current" : nil
|
||||||
= link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil
|
= link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil
|
||||||
= link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
|
= link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
|
||||||
|
|
|
@ -28,4 +28,4 @@
|
||||||
|
|
||||||
.clear
|
.clear
|
||||||
%br
|
%br
|
||||||
= f.submit 'Add note', :class => "lbutton vm", :id => "submit_note"
|
= f.submit 'Add note', :class => "button", :id => "submit_note"
|
||||||
|
|
15
app/views/projects/_feed.html.haml
Normal file
15
app/views/projects/_feed.html.haml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
%a.project-update{:href => dashboard_feed_path(project, update)}
|
||||||
|
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
|
||||||
|
%span.update-title
|
||||||
|
= dashboard_feed_title(update)
|
||||||
|
%span.update-author
|
||||||
|
%strong= update.author_name
|
||||||
|
authored
|
||||||
|
= time_ago_in_words(update.created_at)
|
||||||
|
ago
|
||||||
|
.right
|
||||||
|
- klass = update.class.to_s.split("::").last.downcase
|
||||||
|
%span.tag{ :class => klass }= klass
|
||||||
|
- if update.kind_of?(Grit::Commit)
|
||||||
|
%span.tag.commit= update.head.name
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
%table
|
|
||||||
%thead
|
|
||||||
%th
|
|
||||||
Commits
|
|
||||||
.filter.right
|
|
||||||
= form_tag project_path(@project), :method => :get, :class => "right" do
|
|
||||||
.left
|
|
||||||
= radio_button_tag :view, "recent", (params[:view] || "recent") == "recent", :onclick => "this.form.submit()", :id => "recent_view"
|
|
||||||
= label_tag "recent_view","Recent"
|
|
||||||
.left
|
|
||||||
= radio_button_tag :view, "day", params[:view] == "day", :onclick => "this.form.submit()", :id => "day_view"
|
|
||||||
= label_tag "day_view","Today"
|
|
||||||
.left
|
|
||||||
= radio_button_tag :view, "week", params[:view] == "week", :onclick => "this.form.submit()", :id => "week_view"
|
|
||||||
= label_tag "week_view","Week"
|
|
||||||
- @commits.each do |commit|
|
|
||||||
%tr
|
|
||||||
%td
|
|
||||||
%div.commit
|
|
||||||
- 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;"
|
|
||||||
.title
|
|
||||||
%p= link_to truncate(commit.safe_message, :length => 40), project_commit_path(@project, :id => commit.id)
|
|
||||||
|
|
||||||
%span
|
|
||||||
%span.author
|
|
||||||
%strong= commit.author.name.force_encoding("UTF-8")
|
|
||||||
%cite.cgray
|
|
||||||
= time_ago_in_words(commit.committed_date)
|
|
||||||
ago
|
|
|
@ -1,27 +0,0 @@
|
||||||
- @messages.group_by{ |x| [x.noteable_id, x.noteable_type]}.each do |item, notes|
|
|
||||||
- id, type = item[0], item[1]
|
|
||||||
- parent = load_note_parent(id, type, @project)
|
|
||||||
- next unless parent
|
|
||||||
|
|
||||||
%table
|
|
||||||
%thead
|
|
||||||
%th
|
|
||||||
%div{ :class => "recent_message_parent"}
|
|
||||||
= link_to(truncate(dashboard_feed_title(parent), :length => 40 ), dashboard_feed_path(@project, parent))
|
|
||||||
- notes.sort {|x,y| y.updated_at <=> x.updated_at }.each do |note|
|
|
||||||
%tr
|
|
||||||
%td
|
|
||||||
%div.message
|
|
||||||
= image_tag gravatar_icon(note.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
|
|
||||||
%div.title
|
|
||||||
= link_to markdown(truncate(note.note, :length => 40)), dashboard_feed_path(@project, parent) + "#note_#{note.id}"
|
|
||||||
- if note.attachment.url
|
|
||||||
%br
|
|
||||||
Attachment:
|
|
||||||
= link_to note.attachment_identifier, note.attachment.url
|
|
||||||
%div.author
|
|
||||||
%strong= note.author_name
|
|
||||||
%cite.cgray
|
|
||||||
= time_ago_in_words(note.updated_at)
|
|
||||||
ago
|
|
||||||
%br
|
|
|
@ -1,8 +1,12 @@
|
||||||
.left.width-49p
|
- content_for(:body_class, "project-page dashboard")
|
||||||
=render "projects/recent_commits"
|
|
||||||
|
|
||||||
.right.width-49p
|
#news-feed.news-feed
|
||||||
=render "projects/recent_messages"
|
%h2.icon
|
||||||
|
%span>
|
||||||
|
Activities
|
||||||
|
.project-box.project-updates.ui-box.ui-box-small.ui-box-big
|
||||||
|
- @activities.each do |update|
|
||||||
|
= render "projects/feed", :update => update, :project => @project
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
function updateDashboard(){
|
function updateDashboard(){
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
%td{:colspan => 2}
|
%td{:colspan => 2}
|
||||||
= f.label :content, "Code"
|
= f.label :content, "Code"
|
||||||
%br
|
%br
|
||||||
= f.text_area :content, :style => "height:240px;width:932px;"
|
%br
|
||||||
|
= f.text_area :content
|
||||||
|
|
||||||
.actions.prepend-top
|
.actions.prepend-top
|
||||||
= f.submit 'Save', :class => "lbutton vm"
|
= f.submit 'Save', :class => "button"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
%div
|
%div
|
||||||
- if can? current_user, :write_snippet, @project
|
- if can? current_user, :write_snippet, @project
|
||||||
.left= link_to 'New Snippet', new_project_snippet_path(@project), :class => "lbutton vm"
|
= link_to 'New Snippet', new_project_snippet_path(@project), :class => "button append-bottom-10"
|
||||||
|
|
||||||
%table.round-borders#snippets-table
|
%table.round-borders#snippets-table
|
||||||
%thead
|
%thead
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
module CommitExt
|
module CommitExt
|
||||||
|
attr_accessor :head
|
||||||
attr_accessor :refs
|
attr_accessor :refs
|
||||||
|
|
||||||
def safe_message
|
def safe_message
|
||||||
|
|
|
@ -22,6 +22,7 @@ describe "Dashboard" do
|
||||||
|
|
||||||
it "should have news feed" do
|
it "should have news feed" do
|
||||||
within "#news-feed" do
|
within "#news-feed" do
|
||||||
|
page.should have_content("master")
|
||||||
page.should have_content(@project.commit.author.name)
|
page.should have_content(@project.commit.author.name)
|
||||||
page.should have_content(@project.commit.safe_message)
|
page.should have_content(@project.commit.safe_message)
|
||||||
end
|
end
|
||||||
|
|
|
@ -72,10 +72,13 @@ describe "Projects" do
|
||||||
current_path.should == project_path(@project)
|
current_path.should == project_path(@project)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should beahave like dashboard" do
|
it "should beahave like activities page" do
|
||||||
page.should have_content("History")
|
within ".project-update" do
|
||||||
|
page.should have_content("master")
|
||||||
|
page.should have_content(@project.commit.author.name)
|
||||||
|
page.should have_content(@project.commit.safe_message)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET /projects/team" do
|
describe "GET /projects/team" do
|
||||||
|
|
Loading…
Reference in a new issue