Commit 8ebfae9a authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'bootstrap'

Conflicts:
	Gemfile
	app/views/commits/_commits.html.haml
	app/views/projects/empty.html.haml
parents 6572d96b b51252e6
...@@ -29,6 +29,7 @@ gem "httparty" ...@@ -29,6 +29,7 @@ gem "httparty"
gem "charlock_holmes" gem "charlock_holmes"
gem "foreman" gem "foreman"
gem "omniauth-ldap" gem "omniauth-ldap"
gem 'bootstrap-sass'
group :assets do group :assets do
gem "sass-rails", "~> 3.1.0" gem "sass-rails", "~> 3.1.0"
......
...@@ -67,6 +67,8 @@ GEM ...@@ -67,6 +67,8 @@ GEM
awesome_print (0.4.0) awesome_print (0.4.0)
bcrypt-ruby (3.0.1) bcrypt-ruby (3.0.1)
blankslate (2.1.2.4) blankslate (2.1.2.4)
bootstrap-sass (1.4.4)
sass-rails (~> 3.1)
builder (3.0.0) builder (3.0.0)
capybara (1.1.2) capybara (1.1.2)
mime-types (>= 1.16) mime-types (>= 1.16)
...@@ -226,12 +228,11 @@ GEM ...@@ -226,12 +228,11 @@ GEM
blankslate (>= 2.1.2.3) blankslate (>= 2.1.2.3)
ffi (~> 1.0.7) ffi (~> 1.0.7)
rubyzip (0.9.4) rubyzip (0.9.4)
sass (3.1.10) sass (3.1.12)
sass-rails (3.1.4) sass-rails (3.1.5)
actionpack (~> 3.1.0) actionpack (~> 3.1.0)
railties (~> 3.1.0) railties (~> 3.1.0)
sass (>= 3.1.4) sass (~> 3.1.10)
sprockets (~> 2.0.0)
tilt (~> 1.3.2) tilt (~> 1.3.2)
seed-fu (2.1.0) seed-fu (2.1.0)
activerecord (~> 3.1.0) activerecord (~> 3.1.0)
...@@ -299,6 +300,7 @@ DEPENDENCIES ...@@ -299,6 +300,7 @@ DEPENDENCIES
autotest autotest
autotest-rails autotest-rails
awesome_print awesome_print
bootstrap-sass
capybara capybara
carrierwave carrierwave
charlock_holmes charlock_holmes
......
function switchToNewIssue(form){ function switchToNewIssue(form){
$("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){ $(".issues_content").hide("fade", { direction: "left" }, 150, function(){
$(".project-content").append(form); $(".issues_content").after(form);
$('select#issue_assignee_id').chosen(); $('select#issue_assignee_id').chosen();
$("#new_issue_dialog").show("slide", { direction: "right" }, 150); $("#new_issue_dialog").show("fade", { direction: "right" }, 150);
$('.top-tabs .add_new').hide(); $('.top-tabs .add_new').hide();
}); });
} }
function switchToEditIssue(form){ function switchToEditIssue(form){
$("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){ $(".issues_content").hide("fade", { direction: "left" }, 150, function(){
$(".project-content").append(form); $(".issues_content").after(form);
$('select#issue_assignee_id').chosen(); $('select#issue_assignee_id').chosen();
$("#edit_issue_dialog").show("slide", { direction: "right" }, 150); $("#edit_issue_dialog").show("fade", { direction: "right" }, 150);
$('.top-tabs .add_new').hide(); $('.add_new').hide();
}); });
} }
...@@ -25,11 +25,11 @@ function switchFromEditIssue(){ ...@@ -25,11 +25,11 @@ function switchFromEditIssue(){
} }
function backToIssues(){ function backToIssues(){
$("#edit_issue_dialog, #new_issue_dialog").hide("slide", { direction: "right" }, 150, function(){ $("#edit_issue_dialog, #new_issue_dialog").hide("fade", { direction: "right" }, 150, function(){
$("#issues-table-holder").show("slide", { direction: "left" }, 150, function() { $(".issues_content").show("fade", { direction: "left" }, 150, function() {
$("#edit_issue_dialog").remove(); $("#edit_issue_dialog").remove();
$("#new_issue_dialog").remove(); $("#new_issue_dialog").remove();
$('.top-tabs .add_new').show(); $('.add_new').show();
}); });
}); });
} }
...@@ -4,17 +4,17 @@ var MergeRequest = { ...@@ -4,17 +4,17 @@ var MergeRequest = {
init: init:
function() { function() {
$(".merge-tabs a").live("click", function() { $(".tabs a").live("click", function() {
$(".merge-tabs a").removeClass("active"); $(".tabs a").parent().removeClass("active");
$(this).addClass("active"); $(this).parent().addClass("active");
}); });
$(".merge-tabs a.merge-notes-tab").live("click", function() { $(".tabs a.merge-notes-tab").live("click", function() {
$(".merge-request-commits, .merge-request-diffs").hide(); $(".merge-request-commits, .merge-request-diffs").hide();
$(".merge-request-notes").show(); $(".merge-request-notes").show();
}); });
$(".merge-tabs a.merge-commits-tab").live("click", function() { $(".tabs a.merge-commits-tab").live("click", function() {
if(!MergeRequest.commits_loaded) { if(!MergeRequest.commits_loaded) {
MergeRequest.loadCommits(); MergeRequest.loadCommits();
} }
...@@ -22,7 +22,7 @@ var MergeRequest = { ...@@ -22,7 +22,7 @@ var MergeRequest = {
$(".merge-request-commits").show(); $(".merge-request-commits").show();
}); });
$(".merge-tabs a.merge-diffs-tab").live("click", function() { $(".tabs a.merge-diffs-tab").live("click", function() {
if(!MergeRequest.diffs_loaded) { if(!MergeRequest.diffs_loaded) {
MergeRequest.loadDiff(); MergeRequest.loadDiff();
} }
......
...@@ -5,21 +5,24 @@ ...@@ -5,21 +5,24 @@
var Tree = { var Tree = {
init: init:
function() { function() {
(new Image).src = "ajax-loader-facebook.gif"; $('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live("click", function() {
$('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live("click", function() {
history.pushState({ path: this.path }, '', this.href)
$("#tree-content-holder").hide("slide", { direction: "left" }, 150) $("#tree-content-holder").hide("slide", { direction: "left" }, 150)
}) })
$("#tree-slider tr.tree-item").live('click', function(e){ $('.project-refs-form').live({
"ajax:beforeSend": function() {
$("#tree-content-holder").hide("slide", { direction: "left" }, 150);
}
})
$("#tree-slider .tree-item").live('click', function(e){
if(e.target.nodeName != "A") { if(e.target.nodeName != "A") {
link = $(this).find("td.tree-item-file-name a"); link = $(this).find(".tree-item-file-name a");
link.trigger("click"); link.trigger("click");
} }
}); });
$('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live({ $('#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form').live({
"ajax:beforeSend": function() { $('.tree_progress').addClass("loading"); }, "ajax:beforeSend": function() { $('.tree_progress').addClass("loading"); },
"ajax:complete": function() { $('.tree_progress').removeClass("loading"); } "ajax:complete": function() { $('.tree_progress').removeClass("loading"); }
}); });
......
/* Commit Page */ /**
body.project-page.commits-page .commit-info{float: right;} *
body.project-page.commits-page .commit-info data{ * COMMIT SHOw
padding: 4px 10px; *
font-size: 11px; */
}
body.project-page.commits-page .commit-info data.commit-button{
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
box-shadow: 0 -1px 0 white inset;
display: block;
border: 1px solid #eee;
border-radius: 5px;
margin-bottom: 2px;
position: relative;
padding-right: 20px;
}
body.project-page.commits-page .commit-button i{
background: url('images.png') no-repeat -138px -27px;
width: 6px;
height: 9px;
float: right;
position: absolute;
top: 6px;
right: 5px;
}
body.project-page.commits-page .commits-date {display: block; width: 100%; margin-bottom: 20px}
body.project-page.commits-page .commits-date .data {padding: 0}
body.project-page.commits-page a.commit{padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
body.project-page.commits-page .commits-date a.commit {padding: 10px; border-bottom: none; overflow: hidden; display: block;}
body.project-page.commits-page .commits-date a.commit:last-child{border-bottom: 0}
body.project-page.commits-page .commits-date a.commit img{float: left; margin-right: 10px;}
body.project-page.commits-page .commits-date a.commit span.commit-title{display: block;}
body.project-page.commits-page .commits-date a.commit span.commit-title{margin-bottom: 10px}
body.project-page.commits-page .commits-date a.commit span.commit-author{color: #999; font-weight: normal; font-style: italic;}
body.project-page.commits-page .commits-date a.commit span.commit-author strong{font-weight: bold; font-style: normal;}
/* eo Commit Page */
/** Commit diff view **/
.diff_file { .diff_file {
border:1px solid #CCC; border:1px solid #CCC;
margin-bottom:1em; margin-bottom:1em;
...@@ -72,6 +37,11 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{ ...@@ -72,6 +37,11 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{
border:none; border:none;
margin:0px; margin:0px;
padding:0px; padding:0px;
tr {
td {
font-size:12px;
}
}
} }
.old_line, .new_line { .old_line, .new_line {
margin:0px; margin:0px;
...@@ -110,14 +80,6 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{ ...@@ -110,14 +80,6 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{
} }
} }
pre.commit_message {
white-space: pre-wrap;
font-family: "Helvetica", sans-serif;
color: #555;
font-weight:bold;
font-size:15px;
}
/** COMMIT BLOCK **/ /** COMMIT BLOCK **/
.commit-title{display: block;} .commit-title{display: block;}
.commit-title{margin-bottom: 10px} .commit-title{margin-bottom: 10px}
...@@ -147,45 +109,28 @@ ul.bordered-list li:last-child { border:none } ...@@ -147,45 +109,28 @@ ul.bordered-list li:last-child { border:none }
} }
} }
.per_line_form {
font-family: "Helvetica", sans-serif;
background: #2FA0BB;
td {
padding:0;
}
form {
margin:5px;
width: 756px;
border: 1px solid #CCC;
padding: 20px;
background: white;
}
}
tr.line_notes_row { tr.line_notes_row {
font-family: "Helvetica", sans-serif; border-bottom:1px solid #DDD;
&:hover { }
background:none;
}
td {
margin:0px;
padding:0px;
border-bottom:1px solid #DEE2E3;
ul {
display:block;
list-style:none;
margin:0px;
padding:0px;
li { /** FLASH **/
border-top:1px solid #DEE2E3; #flash_container {
padding:10px; height:45px;
} position:fixed;
} z-index:10001;
top:0px;
width:100%;
margin-bottom:15px;
overflow:hidden;
background:white;
cursor:pointer;
border-bottom:1px solid #777;
h4 {
color:#444;
font-size:22px;
padding-top:5px;
margin:2px;
} }
} }
@import "bootstrap";
/** GITLAB colors **/
$text_color:#222; $text_color:#222;
$lite_text_color: #666; $lite_text_color: #666;
$link_color:#111; $link_color:#111;
...@@ -6,10 +9,13 @@ $active_bg_color:#79C3E0; ...@@ -6,10 +9,13 @@ $active_bg_color:#79C3E0;
$active_bd_color: #2FA0BB; $active_bd_color: #2FA0BB;
$border_color:#CCC; $border_color:#CCC;
$lite_border_color:#EEE; $lite_border_color:#EEE;
$app_width:980px; $min_app_width:980px;
$max_app_width:980px;
$app_padding:20px; $app_padding:20px;
$bg_color: #FFF; $bg_color: #FFF;
$styled_border_color: #2FA0BB; $styled_border_color: #2FA0BB;
$color: "#4BB8D2";
$blue_link: "#2fa0bb";
/** MIXINS **/ /** MIXINS **/
@mixin round-borders-bottom($radius) { @mixin round-borders-bottom($radius) {
...@@ -81,36 +87,103 @@ $styled_border_color: #2FA0BB; ...@@ -81,36 +87,103 @@ $styled_border_color: #2FA0BB;
.no-padding { .no-padding {
padding:0 !important; padding:0 !important;
} }
.underlined {
border-bottom: 1px solid $border_color;
}
/** LAYOUT **/
.container-fluid {
min-width:$min_app_width;
max-width:$max_app_width;
margin:auto;
margin-top:51px;
}
.container-fluid > .sidebar {
width: 140px;
border-right: 1px solid $border_color;
height:100%;
min-height:450px;
.fixed {
position:fixed;
}
aside a {
display:block;
position:relative;
padding:15px 10px;
margin:10px 0 0 0;
font-size:13px;
font-weight:bold;
color:#444;
}
}
.container-fluid > .content {
margin-left: 160px;
margin-top:20px;
}
aside.projects,
aside.project-side
{
margin-left: 0;
padding-left: 20px;
}
/* General */ img.avatar {
float:left;
margin-right:15px;
width:40px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
body.collapsed { img.lil_av {
background-color: $bg_color; padding-left: 5px;
position: relative;
top: 3px;
}
#container{ .media-grid {
margin: auto; h3, h2 , h4 {
margin-top:51px; &.media_h {
width: $app_width; padding-left:10px;
border-top: 0; float:left;
background-color: $bg_color; }
} }
} }
a { .wll {
color: $link_color; 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;}
}
.author_link {
color: $active_link_color;
} }
@import "style.scss"; @import "reset_bootstrap.scss";
@import "top_panel.scss";
@import "projects.css.scss"; @import "projects.css.scss";
@import "commits.css.scss"; @import "commits.css.scss";
@import "notes.css.scss"; @import "tree.scss";
@import "issues.css.scss";
@import "merge_requests.css.scss"; @import "merge_requests.css.scss";
@import "notes.css.scss";
@import "login.scss";
/** CODE HIGHTLIGHT **/
@import "highlight.css.scss"; @import "highlight.css.scss";
@import "highlight.black.css.scss"; @import "highlight.black.css.scss";
@import "issues.css.scss";
@import "commits.css.scss";
@import "top_panel.scss";
@import "dashboard.scss";
@import "tree.scss";
@import "tags.scss";
body.dashboard-page h2.icon span{ background-position: 9px -69px; }
body.dashboard-page header{margin-bottom: 0}
body.dashboard-page .news-feed{margin-left: 285px; min-height: 600px; margin-top: 20px; margin-right:2px; padding:20px;}
body.dashboard-page .dashboard-content{ position: relative; float: left; width: 100%; height: 100%; }
body.dashboard-page .news-feed h2{float: left;}
body.dashboard-page aside{
min-height: 820px; position: relative; top: 0; bottom: 0; right: 0; width: 260px; float: left; border-right: 1px solid $border_color; padding:20px; padding-right:0;
h4{margin: 0; border-bottom: 1px solid #ccc; padding: 20px 20px 20px 0px; font-size: 11px; font-weight: bold; text-transform: uppercase;}
h4 a.button-small{float: right; text-transform: none; border-radius: 4px; margin-right: 2%; margin-top: -4px; display: block;}
.project-list {list-style: none; margin: 0; padding: 0;}
.project-list li a {background: white; color: #{$blue_link}; display: block; border-bottom: 1px solid $lite_border_color; padding: 14px 6% 14px 0px;}
.project-list li a span.project-name{font-size: 14px; display: block; margin-bottom: 8px}
.project-list li a span.time{color: #666; font-weight: normal; font-size: 11px}
.project-list li a span.arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999}
}
body.dashboard-page .news-feed .project-updates {
margin-bottom: 20px; display: block; width: 100%;
.data{ padding: 0}
a.project-update {padding: 10px; overflow: hidden; display: block;}
a.project-update:last-child{border-bottom: 0}
a.project-update img{float: left; margin-right: 10px;}
a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
a.project-update span.update-title{margin-bottom: 10px}
a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}
a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
}
/* eo Dashboard Page */
.black .highlighttable { .black .highlighttable {
background: #333; background: #333;
td.linenos { border:none; }
pre { color: #eee } pre { color: #eee }
.highlight { background: #333; border-left:1px solid #555; } .highlight { background: #333; border-left:1px solid #555; }
......
...@@ -25,7 +25,13 @@ td.linenos{ ...@@ -25,7 +25,13 @@ td.linenos{
padding:10px 0px 0px 10px; padding:10px 0px 0px 10px;
margin-left:0px; margin-left:0px;
} }
.linenodiv pre,
.highlight pre{ .highlight pre{
margin:0;
padding:0;
background:none;
border:none;
} }
.linenodiv pre { .linenodiv pre {
......
.issue-number {
float: left;
border-radius: 5px;
text-shadow: none;
background: rgba(0, 0, 0, 0.12);
text-align: center;
padding: 14px 8px;
width: 40px;
margin-right: 10px;
color: #444;
}
.issues_filter {
margin:10px 0;
.left {
margin-right:15px;
}
}
.top_panel_issues{
#issue_search_form {
margin:5px 0;
input {
border:1px solid #D3D3D3;
padding: 3px;
height: 28px;
width: 250px;
-webkit-appearance:none;
box-sizing: border-box;
-moz-box-sizing: border-box;
&:focus {
border-color:#c2e1ef;
}
}
}
}
/** ISSUES LIST **/
.issue .action-links {
display:none;
a {
margin-left:10px;
}
}
.issue:hover .action-links { display:block; }
.issue-show-holder {
width:100%;
.data p { font-size:16px }
}
#issue_assignee_id { #issue_assignee_id {
width:300px; width:300px;
} }
.issue-form-holder .ui-box .data {
margin: 0;
padding: 0;
}
body.project-page .merge-request-form-holder table.no-borders tr,
body.project-page .merge-request-form-holder table.no-borders td,
body.project-page .issue-form-holder table.no-borders tr,
body.project-page .issue-form-holder table.no-borders td,
body.project-page .new_snippet table tr,
body.project-page .new_snippet table td,
body.project-page .edit_snippet table tr,
body.project-page .edit_snippet table td
{
&:hover {
background:none;
}
}
#issues-table {
tr {
border-top: 1px solid $lite_border_color;
&:first-child {
border:none;
}
}
}
/* Login Page */
body.login-page{ padding-top: 10%}
.login-box{
width: 304px;
position: relative;
border-radius: 5px;
margin: auto;
padding: 20px;
background: white;
}
.login-box .login-logo{
margin: 10px 0 30px 0;
display: block;
}
.login-box input.text{background-color: #f1f1f1; font-size: 16px; border-radius: 0; padding: 14px 10px; width: 280px}
.login-box input.text.top{
-webkit-border-top-left-radius: 5px;
-webkit-border-top-right-radius: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.login-box input.text.bottom{
-webkit-border-bottom-right-radius: 5px;
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius-bottomright: 5px;
-moz-border-radius-bottomleft: 5px;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
border-top: 0;
margin-bottom: 20px;
}
.login-box a.forgot{float: right; padding-top: 6px}
// Place all the styles related to the MergeRequests controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
.merge-request-form-holder { .merge-request-form-holder {
select { select {
width:300px; width:300px;
......
...@@ -32,13 +32,12 @@ ...@@ -32,13 +32,12 @@
#notes-list .note .delete-note { display:none; } #notes-list .note .delete-note { display:none; }
#notes-list .note:hover .delete-note { display:block; } #notes-list .note:hover .delete-note { display:block; }
#notes-list .note {padding: 10px 0; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
body.project-page #notes-list .note {padding: 10px 0; border-bottom: 1px solid #eee; overflow: hidden; display: block;} #notes-list .note img{float: left; margin-right: 10px;}
body.project-page #notes-list .note img{float: left; margin-right: 10px;} #notes-list .note span.note-title{display: block;}
body.project-page #notes-list .note span.note-title{display: block;} #notes-list .note span.note-title{margin-bottom: 10px}
body.project-page #notes-list .note span.note-title{margin-bottom: 10px} #notes-list .note span.note-author{color: #999; font-weight: normal; font-style: italic;}
body.project-page #notes-list .note span.note-author{color: #999; font-weight: normal; font-style: italic;} #notes-list .note span.note-author strong{font-weight: bold; font-style: normal;}
body.project-page #notes-list .note span.note-author strong{font-weight: bold; font-style: normal;}
.note .note-title { margin-left:55px; } .note .note-title { margin-left:55px; }
......
This diff is collapsed.
.git_url_wrapper { margin-right:50px }
.sidebar aside a{
display: block;
position: relative;
padding: 15px 10px;
margin: 10px 0 0 0;
span.number{
float: right; border-radius: 5px; text-shadow: none; background: rgba(0,0,0,.12); text-align: center; padding: 5px 8px; position: absolute; top: 10px; right: 10px;
}
&.current {
color: white;
background: $active_bg_color;
border: 1px solid $active_bd_color;
border-radius:5px;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-right-radius: 0;
-moz-border-radius-topright: 0px;
-moz-border-radius-bottomright: 0px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin-right: -1px;
}
}
body table .commit a{color: #{$blue_link}}
body table th, body table td{ border-bottom: 1px solid #DEE2E3;}
body .fixed{position: fixed; }
/** File stat **/
.file_stats {
span {
img {
width:14px;
float:left;
margin-right: 6px;
padding:2px 0;
}
}
}
.round-borders {
@include round-borders-all(4px);
padding: 4px 0px;
}
table.round-borders {
float:left;
text-align: left;
}
/** PROJECTS **/
input.ssh_project_url {
padding:5px;
margin:0px;
float:right;
width:400px;
text-align:center;
}
#projects-list .project {
height:50px;
}
#tree-slider .tree-item,
#projects-list .project,
#snippets-table .snippet,
#issues-table .issue{
cursor:pointer;
}
.clear {
clear: both;
}
#user_projects_limit{
width: 60px;
}
.handle:hover{
cursor: move;
}
.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; }
body table .commit {
a.tree-commit-link {
color:#444;
&: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;
}
}
#holder {
background:#FAFAFA;
border: 1px solid #EEE;
cursor: move;
height: 70%;
overflow: hidden;
}
/* Project Dashboard Page */
html, body { height: 100%; }
.news-feed h2{float: left;}
.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;}
.news-feed .project-updates .data{ padding: 0}
.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
.news-feed .project-updates a.project-update:last-child{border-bottom: 0}
.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;}
.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px}
.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}
.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
/* eo Dashboard Page */
/** Update entry **/
.update-data { padding: 0 }
.update-data { width:100%; }
.update-data.ui-box .data { padding:0; }
a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
a.update-item:last-child{border-bottom: 0}
a.update-item img{float: left; margin-right: 10px;}
a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
a.update-item span.update-title{margin-bottom: 10px}
a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;}
a.update-item span.update-author strong{font-weight: bold; font-style: normal;}
body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; }
body.projects-page input.text.git-url.project_list_url { width:165px; }
body table.no-borders th {
background:none;
border-bottom:1px solid #CCC;
color:#333;
}
body table.no-borders tr,
body table.no-borders td{
border:none;
}
.ajax-tab-loading {
padding:40px;
display:none;
}
#tree-content-holder { float:left; width:100%; }
#tree-readme-holder {
float:left;
width:100%;
.readme {
@include round-borders-all(4px);
padding: 4px 15px;
background:#F7F7F7;
}
}
/* Commit Page */
.entity-info {float: right;}
.entity-button{
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
box-shadow: 0 -1px 0 white inset;
display: block;
border: 1px solid #eee;
border-radius: 5px;
margin-bottom: 2px;
position: relative;
padding: 4px 10px;
font-size: 11px;
padding-right: 20px;
}
.entity-button i{
background: url('images.png') no-repeat -138px -27px;
width: 6px;
height: 9px;
float: right;
position: absolute;
top: 6px;
right: 5px;
}
.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;}
h4.dash-tabs {
margin: 0;
border-bottom: 1px solid #ccc;
padding: 10px 10px;
font-size: 11px;
padding-left:20px;
font-weight: bold; text-transform: uppercase;
background: #F7F7F7;
margin-bottom:20px;
height:13px;
}
.dash-button {
border-right: 1px solid #ddd;
background:none;
padding: 10px 15px;
float:left;
position:relative;
top:-10px;
left:0px;
height:13px;
&:first-child {
border-left: 1px solid #ddd;
}
&.active {
background: #eaeaea;
}
}
.dashboard-loader {
float:right;
margin-right:30px;
display:none;
}
.merge-tabs {
margin: 0;
border: 1px solid #ccc;
padding: 5px;
font-size: 12px;
background: #F7F7F7;
margin-bottom:20px;
height:26px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
.tab {
font-weight: bold;
border-right: 1px solid #ddd;
background:none;
padding: 10px;
min-width:60px;
float:left;
position:relative;
top:-5px;
left:-5px;
height:16px;
padding-left:34px;
span {
width: 20px;
height: 20px;
display: inline-block;
position: absolute;
left: 8px;
top: 8px;
}
&.active {
background: #eaeaea;
}
}
}
.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; }
.activities-tab span { background: url("images.png") no-repeat -161px -1px; }
.stat-tab span,
.team-tab span,
.snippets-tab span { background: url("images.png") no-repeat -38px -77px; }
.files-tab span { background: url("images.png") no-repeat -112px -23px; }
.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; }
.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; }
.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; }
.merge-tabs .dashboard-loader { padding:8px; }
.user-mention {
color: #2FA0BB;
font-weight: bold;
}
.author {
color: #999;
}
.dark_scheme_box {
padding:20px 0;
label {
float:left;
box-shadow: 0 0px 5px rgba(0,0,0,.3);
img {
}
}
}
a.project-update.titled {
position: relative;
padding-left: 235px !important;
.title-block {
padding: 10px;
width: 205px;
position: absolute;
left: 0;
top: 0;
}
}
.add_new {
float: right;
background: #A6B807;
color: white;
padding: 4px 10px;
@include round-borders-all(4px);
font-size:11px;
margin: 10px 0;
}
.git_url_wrapper { margin-right:50px }
.sidebar aside a{
display: block;
position: relative;
padding: 15px 10px;
margin: 10px 0 0 0;
font-size:13px;
font-weight:bold;
color:#333;
&.current {
color: white;
background: $active_bg_color;
border: 1px solid $active_bd_color;
border-radius:5px;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-right-radius: 0;
-moz-border-radius-topright: 0px;
-moz-border-radius-bottomright: 0px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin-right: -1px;
}
}
body table .commit a{color: #{$blue_link}}
body table th, body table td{ border-bottom: 1px solid #DEE2E3;}
body .fixed{position: fixed; }
/** File stat **/
.file_stats {
span {
img {
width:14px;
float:left;
margin-right: 6px;
padding:2px 0;
}
}
}
.round-borders {
@include round-borders-all(4px);
padding: 4px 0px;
}
table.round-borders {
float:left;
text-align: left;
}
/** PROJECTS **/
input.ssh_project_url {
padding:5px;
margin:0px;
float:right;
width:400px;
text-align:center;
}
#projects-list .project {
height:50px;
}
#tree-slider .tree-item,
#projects-list .project,
#snippets-table .snippet,
#issues-table .issue{
cursor:pointer;
}
.clear {
clear: both;
}
#user_projects_limit{
width: 60px;
}
.handle:hover{
cursor: move;
}
.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; }
body table .commit {
a.tree-commit-link {
color:#444;
&: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;
}
}
#holder {
background:#FAFAFA;
border: 1px solid #EEE;
cursor: move;
height: 70%;
overflow: hidden;
}
/* Project Dashboard Page */
html, body { height: 100%; }
.news-feed h2{float: left;}
.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;}
.news-feed .project-updates .data{ padding: 0}
.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
.news-feed .project-updates a.project-update:last-child{border-bottom: 0}
.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;}
.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px}
.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}
.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
/* eo Dashboard Page */
/** Update entry **/
.update-data { padding: 0 }
.update-data { width:100%; }
.update-data.ui-box .data { padding:0; }
a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
a.update-item:last-child{border-bottom: 0}
a.update-item img{float: left; margin-right: 10px;}
a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
a.update-item span.update-title{margin-bottom: 10px}
a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;}
a.update-item span.update-author strong{font-weight: bold; font-style: normal;}
body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; }
body.projects-page input.text.git-url.project_list_url { width:165px; }
body table.no-borders th {
background:none;
border-bottom:1px solid #CCC;
color:#333;
}
body table.no-borders tr,
body table.no-borders td{
border:none;
}
.ajax-tab-loading {
padding:40px;
display:none;
}
#tree-content-holder { float:left; width:100%; }
#tree-readme-holder {
float:left;
width:100%;
.readme {
@include round-borders-all(4px);
padding: 4px 15px;
background:#F7F7F7;
}
}
/* Commit Page */
.entity-info {float: right;}
.entity-button{
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
box-shadow: 0 -1px 0 white inset;
display: block;
border: 1px solid #eee;
border-radius: 5px;
margin-bottom: 2px;
position: relative;
padding: 4px 10px;
font-size: 11px;
padding-right: 20px;
}
.entity-button i{
background: url('images.png') no-repeat -138px -27px;
width: 6px;
height: 9px;
float: right;
position: absolute;
top: 6px;
right: 5px;
}
.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;}
h4.dash-tabs {
margin: 0;
border-bottom: 1px solid #ccc;
padding: 10px 10px;
font-size: 11px;
padding-left:20px;
font-weight: bold; text-transform: uppercase;
background: #F7F7F7;
margin-bottom:20px;
height:13px;
}
.dash-button {
border-right: 1px solid #ddd;
background:none;
padding: 10px 15px;
float:left;
position:relative;
top:-10px;
left:0px;
height:13px;
&:first-child {
border-left: 1px solid #ddd;
}
&.active {
background: #eaeaea;
}
}
.dashboard-loader {
float:right;
margin-right:30px;
display:none;
}
.merge-tabs {
margin: 0;
border: 1px solid #ccc;
padding: 5px;
font-size: 12px;
background: #F7F7F7;
margin-bottom:20px;
height:26px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
.tab {
font-weight: bold;
border-right: 1px solid #ddd;
background:none;
padding: 10px;
min-width:60px;
float:left;
position:relative;
top:-5px;
left:-5px;
height:16px;
padding-left:34px;
span {
width: 20px;
height: 20px;
display: inline-block;
position: absolute;
left: 8px;
top: 8px;
}
&.active {
background: #eaeaea;
}
}
}
.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; }
.activities-tab span { background: url("images.png") no-repeat -161px -1px; }
.stat-tab span,
.team-tab span,
.snippets-tab span { background: url("images.png") no-repeat -38px -77px; }
.files-tab span { background: url("images.png") no-repeat -112px -23px; }
.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; }
.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; }
.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; }
.merge-tabs .dashboard-loader { padding:8px; }
.user-mention {
color: #2FA0BB;
font-weight: bold;
}
.author {
color: #999;
}
.dark_scheme_box {
padding:20px 0;
label {
float:left;
box-shadow: 0 0px 5px rgba(0,0,0,.3);
img {
}
}
}
a.project-update.titled {
position: relative;
padding-left: 235px !important;
.title-block {
padding: 10px;
width: 205px;
position: absolute;
left: 0;
top: 0;
}
}
.add_new {
float: right;
background: #A6B807;
color: white;
padding: 4px 10px;
@include round-borders-all(4px);
font-size:11px;
margin: 10px 0;
}
a {
color: $link_color;
&:hover {
text-decoration:none;
color: $active_link_color;
}
}
.entry {
position: relative;
padding: 7px 15px;
margin-bottom: 18px;
color: #404040;
background-color: #eedc94;
background-repeat: repeat-x;
background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
background-image: -o-linear-gradient(top, #fceec1, #eedc94);
background-image: linear-gradient(top, #fceec1, #eedc94);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCEEC1', endColorstr='#FFEEDC94', GradientType=0);
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
border-color: #eedc94 #eedc94 #e4c652;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) fadein(rgba(0, 0, 0, 0.1), 15%);
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
border-width: 1px;
border-style: solid;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
background:#F1F1F1;
border-color:#ccc;
}
This diff is collapsed.
.tag {
@include round-borders-all(4px);
padding:2px 4px;
border:none;
text-shadow:none;
&.inline {
display:inline;
}
&.high, &.closed {
background: #D12F19;
color:white;
}
&.today, &.open {
background: #44aa22;
color:white;
}
&.yours {
background: #4466cc;
color:white;
}
&.normal {
background: #2c5ca6;
color:white;
}
&.notes {
background: #2c5c66;
color:white;
}
&.note {
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));
background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);
background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);
color: #777;
border: 1px solid #DEDFE1;
}
&.issue {
background: #D12F19;
color:white;
}
&.commit {
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));
background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);
background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);
color: #777;
border: 1px solid #DEDFE1;
}
}
.main_links {
width:130px;
float:left;
a {
float:left;
}
}
.dashboard_links {
padding:7px;
float:left;
a {
margin: 0 14px;
float: left;
font-size: 14px;
&.active {
color:$active_link_color;
}
&:hover {
color:$active_link_color;
}
}
}
.top-tabs {
margin: 0;
padding: 5px;
font-size: 14px;
padding-bottom:10px;
margin-bottom:20px;
height:26px;
border-bottom:1px solid #ccc;
.tab {
font-weight: bold;
background:none;
padding: 10px;
float:left;
padding-left:0px;
padding-right:40px;
&.active {
color: $active_link_color;
}
}
}
body header { body header {
position:absolute; position:absolute;
width:100%; width:100%;
...@@ -54,23 +5,20 @@ body header { ...@@ -54,23 +5,20 @@ body header {
margin:0; margin:0;
top:0; top:0;
left:0; left:0;
background: #999; /* for non-css3 browsers */ background: #F1F1F1; /* 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; 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; height:50px;
.wrapper { .wrapper {
margin:auto; margin:auto;
width:$app_width; min-width:$min_app_width;
max-width:$max_app_width;
position:relative; position:relative;
padding:10px $app_padding;
.top_panel_content {
padding:10px $app_padding;
}
} }
.project_name { .project_name {
...@@ -102,45 +50,157 @@ body header { ...@@ -102,45 +50,157 @@ body header {
border: 1px solid #AAA; border: 1px solid #AAA;
padding: 0 10px 0 30px; padding: 0 10px 0 30px;
background: transparent url('images.png') no-repeat 8px -42px; background: transparent url('images.png') no-repeat 8px -42px;
width: 160px; width: 260px;
height:26px; height:26px;
} }
} }
} }
.main_links {
width:155px;
float:left;
.top_panel_holder .chzn-container { a {
position:relative; float:left;
}
}
.chzn-drop { .dashboard_links {
margin:7px 0; padding:7px;
border: 1px solid #CCC; float:left;
min-width: 300px; a {
margin: 0 14px;
float: left;
font-size: 14px;
.chzn-results { &.active {
max-height:300px; color:$active_link_color;
}
&:hover {
color:$active_link_color;
} }
} }
}
.chzn-single { .top-tabs {
background:transparent; margin: 0;
-moz-border-radius: 4px; padding: 5px;
border-radius: 4px; font-size: 14px;
padding-bottom:10px;
margin-bottom:20px;
height:26px;
border-bottom:1px solid #ccc;
div { .tab {
background:transparent; font-weight: bold;
border-left:none; background:none;
} padding: 10px;
float:left;
padding-left:0px;
padding-right:40px;
span { &.active {
font-weight: normal; color: $active_link_color;
} }
} }
} }
.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; }
/* Account box */
header .account-box{
position: absolute;
right: 0;
top: 8px;
z-index: 10000;
width: 128px;
font-size: 11px;
float: right;
display: block;
cursor: pointer;}
header .account-box img{
border-radius: 4px;
right: 20px;
position: absolute;
width: 33px; height: 33px;
display: block; top:0;}
header .account-box img:after{
content: " ";
display: block;
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
float: right;
border-radius: 5px;
border: 1px solid rgba(255, 255, 255, .1);
border-bottom: 0;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, .15)), to(rgba(0, 0, 0, .25))), -webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, .1)), color-stop(0.501, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0)));
background: -moz-linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), -moz-linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
background: linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
-webkit-background-origin: border-box;
-moz-background-origin: border;
background-origin: border-box;
}
.account-box.hover{height: 138px;}
.account-box:hover > .account-links{display: block;}
header .account-links{ background: #79C3E0; display: none; border-radius: 5px; width: 100px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); position:relative;}
header .account-links:before {
content: ".";
width:0;
height:0;
position:absolute;
border:5px solid transparent;
border-color:rgba(255,255,255,0);
border-bottom-color:#333;
text-indent:-9999px;
top:-10px;
line-height:0;
right:10px;
z-index:10;
}
header .account-links{
background: #333;
display: none;
z-index: 100000;
border-radius: 5px;
width: 100px;
position: absolute;
right: 20px;
top: 46px;
margin-top: 0;
float: right;
box-shadow: 0 1px 1px rgba(0,0,0,.2);
}
header .account-links a{color: #EEE; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #555}
header .account-links a:hover{ background: #444;}
.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute}
header .account-links a:first-child{
-webkit-border-top-left-radius: 5px;
-webkit-border-top-right-radius: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
header .account-links a:last-child{
-webkit-border-bottom-right-radius: 5px;
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius-bottomright: 5px;
-moz-border-radius-bottomleft: 5px;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
border-bottom: 0;
} }
...@@ -8,13 +8,10 @@ ...@@ -8,13 +8,10 @@
} }
.tree_progress { .tree_progress {
float:left; display:none;
width:16px; margin:20px;
height:16px;
margin:2px 6px;
&.loading { &.loading {
background-position: 0px 0px; display:block;
background: url("ajax-loader-facebook.gif") no-repeat;
} }
} }
...@@ -117,5 +114,15 @@ table.highlighttable .linenodiv pre { ...@@ -117,5 +114,15 @@ table.highlighttable .linenodiv pre {
.tree-item { .tree-item {
&:hover { &:hover {
background: #FFFFCF; background: #FFFFCF;
cursor:pointer;
}
.tree-item-file-name {
font-weight:bold;
img {
position: relative;
top: 2px;
}
} }
} }
...@@ -52,6 +52,12 @@ class Admin::ProjectsController < ApplicationController ...@@ -52,6 +52,12 @@ class Admin::ProjectsController < ApplicationController
def update def update
@admin_project = Project.find_by_code(params[:id]) @admin_project = Project.find_by_code(params[:id])
owner_id = params[:project][:owner_id]
if owner_id
@admin_project.owner = User.find(owner_id)
end
if @admin_project.update_attributes(params[:project]) if @admin_project.update_attributes(params[:project])
redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.'
else else
......
...@@ -95,4 +95,8 @@ class ApplicationController < ActionController::Base ...@@ -95,4 +95,8 @@ class ApplicationController < ActionController::Base
response.headers["Pragma"] = "no-cache" response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT" response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end end
def render_full_content
@full_content = true
end
end end
...@@ -29,6 +29,8 @@ class CommitsController < ApplicationController ...@@ -29,6 +29,8 @@ class CommitsController < ApplicationController
@line_notes = project.commit_line_notes(@commit) @line_notes = project.commit_line_notes(@commit)
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 }
......
class KeysController < ApplicationController class KeysController < ApplicationController
layout "profile" layout "profile"
respond_to :js respond_to :js, :html
def index def index
@keys = current_user.keys.all @keys = current_user.keys.all
......
...@@ -39,6 +39,8 @@ class MergeRequestsController < ApplicationController ...@@ -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 ...@@ -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
......
...@@ -8,16 +8,27 @@ class RefsController < ApplicationController ...@@ -8,16 +8,27 @@ class RefsController < ApplicationController
before_filter :ref before_filter :ref
before_filter :define_tree_vars, :only => [:tree, :blob] before_filter :define_tree_vars, :only => [:tree, :blob]
before_filter :render_full_content
layout "project" layout "project"
def switch def switch
new_path = if params[:destination] == "tree" respond_to do |format|
tree_project_ref_path(@project, params[:ref]) format.html do
else new_path = if params[:destination] == "tree"
project_commits_path(@project, :ref => params[:ref]) tree_project_ref_path(@project, params[:ref])
end else
project_commits_path(@project, :ref => params[:ref])
end
redirect_to new_path redirect_to new_path
end
format.js do
@ref = params[:ref]
define_tree_vars
render "tree"
end
end
end end
# #
......
...@@ -40,7 +40,7 @@ class TeamMembersController < ApplicationController ...@@ -40,7 +40,7 @@ class TeamMembersController < ApplicationController
@team_member.destroy @team_member.destroy
respond_to do |format| respond_to do |format|
format.html { redirect_to root_path } format.html { redirect_to team_project_path(@project) }
format.js { render :nothing => true } format.js { render :nothing => true }
end end
end end
......
...@@ -3,6 +3,7 @@ module DashboardHelper ...@@ -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 ...@@ -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
......
class Commit class Commit
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :commit attr_accessor :commit
attr_accessor :head attr_accessor :head
...@@ -18,6 +20,10 @@ class Commit ...@@ -18,6 +20,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
......
...@@ -6,34 +6,31 @@ ...@@ -6,34 +6,31 @@
- @admin_project.errors.full_messages.each do |msg| - @admin_project.errors.full_messages.each do |msg|
%li= msg %li= msg
.form-row .clearfix
= f.label :name = f.label :name
%br .input= f.text_field :name
= f.text_field :name .clearfix
.form-row
= f.label :code = f.label :code
%br .input= f.text_field :code
= f.text_field :code .clearfix
.form-row
= f.label :path = f.label :path
%br .input= f.text_field :path
= f.text_field :path
.form-row - unless @admin_project.new_record?
= f.label :tag_list .clearfix
%br = f.label :owner_id
= f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] }
.form-row .clearfix
= f.label :description = f.label :description
%br .input= f.text_area :description
= f.text_area :description
.clear .clear
%br %br
.actions .actions
= f.submit 'Save', :class => "grey-button" = f.submit 'Save', :class => "btn"
:javascript :javascript
$(function(){ $(function(){
taggifyForm(); taggifyForm();
$('#project_owner_id').chosen();
}) })
...@@ -19,4 +19,4 @@ ...@@ -19,4 +19,4 @@
%td= link_to 'Destroy', [:admin, project], :confirm => 'Are you sure?', :method => :delete %td= link_to 'Destroy', [:admin, project], :confirm => 'Are you sure?', :method => :delete
= paginate @admin_projects = paginate @admin_projects
= link_to 'New Project', new_admin_project_path, :class => "grey-button" = link_to 'New Project', new_admin_project_path, :class => "btn"
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
= @admin_project.description = @admin_project.description
%tr %tr
%td{:colspan => 2} %td{:colspan => 2}
= link_to 'Edit', edit_admin_project_path(@admin_project), :class => "grey-button" = link_to 'Edit', edit_admin_project_path(@admin_project), :class => "btn"
.span-14 .span-14
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
%tr %tr
%td{ :colspan => 3 } %td{ :colspan => 3 }
= submit_tag 'Add', :class => "positive-button" = submit_tag 'Add', :class => "btn primary"
%table.round-borders %table.round-borders
%thead %thead
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
= f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select" = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select"
%br %br
.actions .actions
= f.submit 'Save', :class => "grey-button" = f.submit 'Save', :class => "btn"
:css :css
form select { form select {
......
...@@ -25,4 +25,4 @@ ...@@ -25,4 +25,4 @@
%br %br
= paginate @admin_team_members = paginate @admin_team_members
= link_to 'New Team Member', new_admin_team_member_path, :class => "grey-button" = link_to 'New Team Member', new_admin_team_member_path, :class => "btn"
...@@ -2,48 +2,41 @@ ...@@ -2,48 +2,41 @@
= form_for [:admin, @admin_user] do |f| = form_for [:admin, @admin_user] do |f|
-if @admin_user.errors.any? -if @admin_user.errors.any?
#error_explanation #error_explanation
%h2= "#{pluralize(@admin_user.errors.count, "error")} prohibited this admin_user from being saved:"
%ul %ul
- @admin_user.errors.full_messages.each do |msg| - @admin_user.errors.full_messages.each do |msg|
%li= msg %li= msg
.form-row .clearfix
= f.label :name = f.label :name
%br .input= f.text_field :name
= f.text_field :name .clearfix
.form-row
= f.label :email = f.label :email
%br .input= f.text_field :email
= f.text_field :email .clearfix
.form-row
= f.label :password = f.label :password
%br .input= f.password_field :password
= f.password_field :password .clearfix
.form-row
= f.label :password_confirmation = f.label :password_confirmation
%br .input= f.password_field :password_confirmation
= f.password_field :password_confirmation .clearfix
.form-row
= f.check_box :admin = f.check_box :admin
= f.label :admin = f.label :admin
.form-row .clearfix
= f.text_field :projects_limit, :class => "small_input"
= f.label :projects_limit = f.label :projects_limit
.input= f.text_field :projects_limit, :class => "small_input"
.form-row .clearfix
= f.label :skype = f.label :skype
%br .input= f.text_field :skype
= f.text_field :skype .clearfix
.form-row
= f.label :linkedin = f.label :linkedin
%br .input= f.text_field :linkedin
= f.text_field :linkedin .clearfix
.form-row
= f.label :twitter = f.label :twitter
%br .input= f.text_field :twitter
= f.text_field :twitter
.clear .clear
%br %br
.actions .actions
= f.submit 'Save', :class => "grey-button" = f.submit 'Save', :class => "btn primary"
= link_to 'Cancel', admin_users_path, :class => "btn"
...@@ -18,4 +18,4 @@ ...@@ -18,4 +18,4 @@
= paginate @admin_users = paginate @admin_users
%br %br
= link_to 'New User', new_admin_user_path, :class => "grey-button" = link_to 'New User', new_admin_user_path, :class => "btn"
%h1 New user %h2 New user
%hr
= render 'form' = render 'form'
%br
= link_to 'Back', admin_users_path, :class => ""
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
= @admin_user.twitter = @admin_user.twitter
%tr %tr
%td{:colspan => 2} %td{:colspan => 2}
= link_to 'Edit', edit_admin_user_path(@admin_user), :class => "grey-button" = link_to 'Edit', edit_admin_user_path(@admin_user), :class => "btn"
.span-14 .span-14
%h2 Projects %h2 Projects
...@@ -66,4 +66,4 @@ ...@@ -66,4 +66,4 @@
%td= link_to 'Edit', edit_admin_team_member_path(tm) %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 %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}), :class => "grey-button" = link_to 'Add To Another Project', new_admin_team_member_path(:team_member => {:user_id => @admin_user.id}), :class => "btn"
- @commits.group_by { |c| c.committed_date.to_date }.each do |day, commits| - @commits.group_by { |c| c.committed_date.to_date }.each do |day, commits|
%div{ :class => "commits-date ui-box ui-box-small ui-box-big" } %div{ :class => "commits-date ui-box ui-box-small ui-box-big" }
.day-commits-table .day-commits-table
%h3= day.stamp("28 Aug, 2010") %h5.underlined= day.stamp("28 Aug, 2010")
.data %br
%ul.unstyled
- commits.each do |commit| - commits.each do |commit|
%a{ :class => "commit", :href => project_commit_path(@project, :id => commit.id) } %li.entry
%span.commit-info = link_to project_commit_path(@project, :id => commit.id) do
%data.commit-button %div
= truncate(commit.id.to_s, :length => 16) %strong
%i = truncate commit.id.to_s, :length => 10
%data.commit-browse{ :onclick => "location.href='#{tree_project_ref_path(@project, commit.id)}';return false;"} &ndash;
Browse Code = image_tag gravatar_icon(commit.author_email), :class => "", :width => 16
- if commit.author_email = truncate(commit.safe_message, :length => 50)
= image_tag gravatar_icon(commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
- else %span.right.cgray
= image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;" = time_ago_in_words(commit.committed_date)
%span.commit-title ago
%strong
= truncate(commit.safe_message, :length => 70)
%span.commit-author
Authored by
&nbsp;
%strong= commit.author_name
= time_ago_in_words(commit.authored_date)
ago
- if commit.author_name != commit.committer_name or commit.author_email != commit.committer_email or commit.authored_date != commit.committed_date
%span.commit-committer
Committed by
&nbsp;
%strong= commit.committer_name
= time_ago_in_words(commit.committed_date)
ago
- content_for(:body_class, "project-page commits-page") %h3
- if current_user.private_token Commits
= content_for :rss_icon do - if current_user.private_token
.rss-icon %span.rss-icon
= link_to project_commits_path(@project, :atom, { :private_token => current_user.private_token, :ref => @ref }) do = link_to project_commits_path(@project, :atom, { :private_token => current_user.private_token, :ref => @ref }) do
= image_tag "Rss-UI.PNG", :width => 22, :title => "feed" = image_tag "Rss-UI.PNG", :width => 22, :title => "feed"
= form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form right" do
= select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select"
= hidden_field_tag :destination, "commits"
%hr
- if params[:path] - if params[:path]
%h2 %ul.breadcrumb
= link_to project_commits_path(@project) do %li
= @project.code = link_to project_commits_path(@project) do
\/ = @project.code
%a{:href => "#"}= params[:path].split("/").join(" / ") %span.divider
\/
%li
%a{:href => "#"}= params[:path].split("/").join(" / ")
%div{:id => dom_id(@project)} %div{:id => dom_id(@project)}
#commits_list= render "commits" #commits_list= render "commits"
...@@ -23,3 +30,8 @@ ...@@ -23,3 +30,8 @@
$(function(){ $(function(){
CommitsList.init("#{@ref}", 20); CommitsList.init("#{@ref}", 20);
}); });
:javascript
$(function(){
$('.project-refs-select').chosen();
});
- content_for(:body_class, "project-page commits-page")
.commit .commit
%span.commit-info %span.commit-info
= link_to tree_project_ref_path(@project, @commit.id) do = link_to tree_project_ref_path(@project, @commit.id), :class => "btn right" do
%data.commit-button Browse Code »
Browse Code
%i
- if @commit.author_email - if @commit.author_email
= image_tag gravatar_icon(@commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" = image_tag gravatar_icon(@commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
- else - else
......
#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
%strong.issue-number= "##{update.id}" &ndash;
%span.update-title 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.tag.high critical
- if update.today?
%span.tag.today today
- else
%h2
No assigned
%span.tag.open open
issues
#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 &ndash;
%span.update-title Merge Request #
= 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
&rarr;
%span.tag.commit= update.target_branch
- else
%h2
No authored or assigned
%span.tag.open open
merge requests
#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|
%h3= project.name %a.project-update{:href => dashboard_feed_path(project, update)}
.data = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32
- project.updates(3).each do |update| %div
%a.project-update{:href => dashboard_feed_path(project, update)} = dashboard_feed_title(update)
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 %span.update-author
%span.update-title %strong= update.author_name
= dashboard_feed_title(update) authored
%span.update-author = time_ago_in_words(update.created_at)
%strong= update.author_name ago
authored .right
= time_ago_in_words(update.created_at) - klass = update.class.to_s.split("::").last.downcase
ago %span.tag{ :class => klass }= klass
.right
- klass = update.class.to_s.split("::").last.downcase
%span.tag{ :class => klass }= klass
%aside
%h4
- if current_user.can_create_project?
%a.button-small.button-green{:href => new_project_path} New Project
Your Projects
%ol.project-list
- @projects.each do |project|
%li
%a{:href => project_path(project)}
-#%span.arrow →
%span.project-name= project.name
%span.time
%strong Last activity:
= project.last_activity_date_cached ? time_ago_in_words(project.last_activity_date_cached) + " ago" : "Never"
- content_for(:body_class, "dashboard-page") %h3 Activities
%hr
#dashboard-content.dashboard-content.content .news-feed= render "dashboard/projects_feed"
= render "dashboard/sidebar"
#news-feed.news-feed= render "dashboard/projects_feed"
- content_for(:body_class, "dashboard-page") %h3
Issues
%small ( assigned to you )
#dashboard-content.dashboard-content.content %hr
= render "dashboard/sidebar" = render "dashboard/issues_feed"
#news-feed.news-feed= render "dashboard/issues_feed"
- content_for(:body_class, "dashboard-page") %h3
Merge Requests
%small ( authored or assigned to you )
#dashboard-content.dashboard-content.content %hr
= render "dashboard/sidebar" = render "dashboard/merge_requests_feed"
#news-feed.news-feed= render "dashboard/merge_requests_feed"
%div %div
= form_for [@project, @key], :url => project_deploy_keys_path do |f| = form_for [@project, @key], :url => project_deploy_keys_path do |f|
-if @key.errors.any? -if @key.errors.any?
%ul.errors_holder .alert-message.block-message.error
- @key.errors.full_messages.each do |msg| %ul
%li= msg - @key.errors.full_messages.each do |msg|
%li= msg
%table.no-borders
%tr .clearfix
%td= f.label :title = f.label :title
%td= f.text_field :title, :style => "width:300px" .input= f.text_field :title
%tr .clearfix
%td= f.label :key = f.label :key
%td= f.text_area :key, :style => "width:300px; height:130px" .input= f.text_area :key, :class => "xlarge"
%br .actions
.merge-tabs = f.submit 'Save', :class => "primary btn"
= f.submit 'Save', :class => "positive-button" = link_to "Cancel", project_deploy_keys_path(@project), :class => "btn"
= render "repositories/head" = render "repositories/head"
- if can? current_user, :admin_project, @project
%div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" } .alert-message.block-message.info
.data Deploy keys allow read-only access to repository.
- @keys.each do |key| = link_to new_project_deploy_key_path(@project), :class => "btn small", :title => "New Deploy Key" do
= render(:partial => 'show', :locals => {:key => key}) Add Deploy Key
- if @keys.blank? %ul.unstyled
.notice_holder - @keys.each do |key|
%li Deploy Keys do not exist yet. %li= render(:partial => 'show', :locals => {:key => key})
- if can? current_user, :admin_project, @project
%li You can add a new one by clicking on "Add New" button
:javascript
$('.delete-key').live('ajax:success', function() {
$(this).closest('.update-item').fadeOut(); });
.ui-box.width-100p = render "repositories/head"
%h3= @key.title %h3= @key.title
.data %hr
%pre= @key.key %pre= @key.key
.clear .actions
.buttons = link_to 'Remove', project_deploy_key_path(@key.project, @key), :confirm => 'Are you sure?', :method => :delete, :class => "danger btn delete-key"
= link_to 'Remove', project_deploy_key_path(@key.project, @key), :confirm => 'Are you sure?', :method => :delete, :class => "red-button delete-key right" .clear
.clear
...@@ -3,6 +3,6 @@ ...@@ -3,6 +3,6 @@
<%= devise_error_messages! %> <%= devise_error_messages! %>
<%= f.email_field :email, :placeholder => "Email", :class => "text top" %> <%= f.email_field :email, :placeholder => "Email", :class => "text top" %>
<br/> <br/>
<%= f.submit "Reset password", :class => "grey-button" %> <%= f.submit "Reset password", :class => "primary btn" %>
<div class="right"> <%= render :partial => "devise/shared/links" %></div> <div class="right"> <%= render :partial => "devise/shared/links" %></div>
<% end %> <% end %>
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
<%= f.password_field :password, :class => "text bottom", :placeholder => "Password" %> <%= f.password_field :password, :class => "text bottom", :placeholder => "Password" %>
<% if devise_mapping.rememberable? -%> <% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> <div class="clearfix"> <%= f.label :remember_me %><%= f.check_box :remember_me %></div>
<% end -%> <% end -%>
<br/> <br/>
<%= f.submit "Sign in", :class => "grey-button" %> <%= f.submit "Sign in", :class => "primary btn" %>
<div class="right"> <%= render :partial => "devise/shared/links" %></div> <div class="right"> <%= render :partial => "devise/shared/links" %></div>
<% if ldap_enable? -%> <% if ldap_enable? -%>
<p><%= link_to "via LDAP", user_omniauth_authorize_path(:ldap)%></p> <p><%= link_to "via LDAP", user_omniauth_authorize_path(:ldap)%></p>
......
<%- if controller_name != 'sessions' %> <%- if controller_name != 'sessions' %>
<%= link_to "Sign in", new_session_path(resource_name) %><br /> <%= link_to "Sign in", new_session_path(resource_name), :class => "btn" %><br />
<% end -%> <% end -%>
<%- if devise_mapping.registerable? && controller_name != 'registrations' %> <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<% end -%> <% end -%>
<%- if devise_mapping.recoverable? && controller_name != 'passwords' %> <%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br /> <%= link_to "Forgot your password?", new_password_path(resource_name), :class => "btn" %><br />
<% end -%> <% end -%>
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
......
= render "repositories/head" = render "repositories/head"
- unless @hooks.empty?
%div.update-data.ui-box.ui-box-small
.data
- @hooks.each do |hook|
%a.update-item{:href => project_hook_path(@project, hook)}
%span.update-title{:style => "margin-bottom:0px;"}
= hook.url
%span.update-author.right
Added
= time_ago_in_words(hook.created_at)
ago
- else
%h3 No hooks
.clear - if can? current_user, :admin_project, @project
%hr .alert-message.block-message.info
%p Post receive hooks for binding events when someone push to repository.
Post receive hooks. For now only POST request allowed. We send some data with request. Example below = link_to new_project_hook_path(@project), :class => "btn small", :title => "New Web Hook" do
Add Post Receive Hook
.view_file %ul.unstyled
.view_file_header - @hooks.each do |hook|
%strong POST data passed %li
.data.no-padding %a.update-item{:href => project_hook_path(@project, hook)}
= render "data_ex" = hook.url
.alert-message.block-message.info
We send some data with POST request when someone makes git push
.well= render "data_ex"
= render "repositories/head" = render "repositories/head"
%h3 %pre= @hook.url
%span.commit.tag POST
= @hook.url
- if can? current_user, :admin_project, @project - if can? current_user, :admin_project, @project
.merge-tabs .actions
= link_to 'Test Hook', test_project_hook_path(@project, @hook), :class => "grey-button" = link_to 'Test Hook', test_project_hook_path(@project, @hook), :class => "btn"
.right = link_to 'Remove', project_hook_path(@project, @hook), :confirm => 'Are you sure?', :method => :delete, :class => "danger btn"
= link_to 'Remove', project_hook_path(@project, @hook), :confirm => 'Are you sure?', :method => :delete, :class => "red-button"
%div.issue-form-holder %div.issue-form-holder
= form_for [@project, @issue], :remote => request.xhr? do |f| = form_for [@project, @issue], :remote => request.xhr? do |f|
%div %h3= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}"
%span.entity-info %hr
- if request.xhr?
= link_to "#back", :onclick => "backToIssues();" do
.entity-button
Issues
%i
- else
- if @issue.new_record?
= link_to project_issues_path(@project) do
.entity-button
Issues
%i
- else
= link_to project_issue_path(@project, @issue) do
.entity-button
Show Issue
%i
%h2= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}"
%hr
-if @issue.errors.any? -if @issue.errors.any?
%ul.errors_holder .alert-message.block-message.error
- @issue.errors.full_messages.each do |msg| %ul
%li= msg - @issue.errors.full_messages.each do |msg|
%li= msg
%table.no-borders .clearfix
%tr = f.label :assignee_id
%td= f.label :assignee_id .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
%td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
%tr .clearfix
%td= f.label :critical, "Critical" = f.label :critical, "Critical"
%td= f.check_box :critical .input= f.check_box :critical
- unless @issue.new_record?
%tr
%td= f.label :closed
%td= f.check_box :closed
= f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255 - unless @issue.new_record?
%br .clearfix
%br = f.label :closed
.merge-tabs .input= f.check_box :closed
= f.submit 'Save', :class => "positive-button"
&nbsp; .clearfix
= f.label :title
.input= f.text_area :title, :maxlength => 255, :class => "xlarge"
.actions
= f.submit 'Save', :class => "primary btn"
- if request.xhr?
= link_to "Cancel", "#back", :onclick => "backToIssues();", :class => "btn"
- else
- if @issue.new_record?
= link_to "Cancel", project_issues_path(@project), :class => "btn"
- else
= link_to "Cancel", project_issue_path(@project, @issue), :class => "btn"
- unless @issue.new_record? - unless @issue.new_record?
.right .right
= link_to 'Remove', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" = link_to 'Remove', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "danger btn"
.top-tabs .tabs
= link_to project_issues_path(@project), :class => "tab #{'active' if current_page?(project_issues_path(@project)) }" do %li{:class => "#{'active' if current_page?(project_issues_path(@project))}"}
%span = link_to project_issues_path(@project), :class => "tab" do
Issues Issues
-#= link_to project_issues_path(@project), :class => "tab" do
%span
Milestones
- if current_page?(project_issues_path(@project))
- if can? current_user, :write_issue, @project
= link_to new_project_issue_path(@project), :class => "add_new", :title => "New Issue", :remote => true do
Add new
%tr{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(issue.project, issue) } %li.wll{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(issue.project, issue) }
%td = image_tag gravatar_icon(issue.assignee_email), :class => "avatar"
%strong.issue-number{:class => sort_class}= "##{issue.id}" %span.update-author
%span assigned to
= truncate(html_escape(issue.title), :length => 100) %strong
%br = link_to project_team_member_path(@project, @project.team_member_by_id(issue.author_id)), :class => "author_link" do
%br = issue.assignee_name
%div.note-author - if issue.critical
%strong= issue.assignee.name %span.label.important critical
%cite.cgray - if issue.today?
= time_ago_in_words(issue.created_at) %span.label.success today
ago
- if issue.critical .right
%span.tag.high critical - if can? current_user, :write_issue, issue
- if issue.today? - if issue.closed
%span.tag.today today = link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "btn small", :remote => true
.right.action-links - else
- if can? current_user, :write_issue, issue = link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "success btn small", :remote => true
- if issue.closed - if can? current_user, :write_issue, issue
= link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "cgray", :remote => true = link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "btn small edit-issue-link", :remote => true
- else -#- if can?(current_user, :admin_issue, @project) || issue.author == current_user
= link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "cgray", :remote => true = link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "danger btn small delete-issue", :id => "destroy_issue_#{issue.id}"
- if can? current_user, :write_issue, issue
= link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "cgray edit-issue-link", :remote => true
- if can?(current_user, :admin_issue, @project) || issue.author == current_user = link_to project_issue_path(issue.project, issue) do
= link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-issue negative", :id => "destroy_issue_#{issue.id}" %p
Issue ##{issue.id}:
= truncate(issue.title, :length => 50)
= render "issues/head" .issues_content
- if current_user.private_token %h3
= content_for :rss_icon do Issues
.rss-icon %span.rss-icon
= link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do = link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do
= image_tag "Rss-UI.PNG", :width => 22, :title => "feed" = image_tag "Rss-UI.PNG", :width => 22, :title => "feed"
%div#issues-table-holder - if can? current_user, :write_issue, @project
.top_panel_issues = link_to new_project_issue_path(@project), :class => "right btn small", :title => "New Issue", :remote => true do
= form_tag search_project_issues_path(@project), :method => :get, :remote => true, :class => :right, :id => "issue_search_form" do New Issue
= hidden_field_tag :project_id, @project.id, { :id => 'project_id' } %hr
= search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } %div#issues-table-holder
.row
.span8
%ul.pills.left
%li{:class => ("active" if (params[:f] == "0" || !params[:f]))}
= link_to project_issues_path(@project, :f => 0) do
Open
%li{:class => ("active" if params[:f] == "2")}
= link_to project_issues_path(@project, :f => 2) do
Closed
%li{:class => ("active" if params[:f] == "3")}
= link_to project_issues_path(@project, :f => 3) do
To Me
%li{:class => ("active" if params[:f] == "1")}
= link_to project_issues_path(@project, :f => 1) do
All
.left.issues_filter .span2.right
= form_tag project_issues_path(@project), :method => :get do = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :id => "issue_search_form", :class => :right do
.left = hidden_field_tag :project_id, @project.id, { :id => 'project_id' }
= radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "setIssueFilter(this.form, 0)", :id => "open_issues", :class => "status" = hidden_field_tag :status, params[:f]
= label_tag "open_issues" do = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' }
%span.tag.open Open
.left %hr
= radio_button_tag :f, 2, params[:f] == "2", :onclick => "setIssueFilter(this.form, 2)", :id => "closed_issues", :class => "status" %ul#issues-table.unstyled= render "issues"
= label_tag "closed_issues" do
%span.tag.closed Closed
.left
= radio_button_tag :f, 3, params[:f] == "3", :onclick => "setIssueFilter(this.form, 3)", :id => "my_issues", :class => "status"
= label_tag "my_issues","To Me"
.left
= radio_button_tag :f, 1, params[:f] == "1", :onclick => "setIssueFilter(this.form, 1)", :id => "all_issues", :class => "status"
= label_tag "all_issues","All"
.clear
%hr
%table.no-borders#issues-table
= render "issues"
%br
:javascript :javascript
var href = $('.issue_search').parent().attr('action'); var href = $('.issue_search').parent().attr('action');
var last_terms = ''; var last_terms = '';
var setIssueFilter = function(form, value){
$.cookie('issue_filter', value, { expires: 140 });
form.submit();
}
$('.issue_search').keyup(function() { $('.issue_search').keyup(function() {
var terms = $(this).val(); var terms = $(this).val();
var project_id = $('#project_id').val(); var project_id = $('#project_id').val();
var status = $('.status:checked').val(); var status = $('#status').val();
if (terms != last_terms) { if (terms != last_terms) {
last_terms = terms; last_terms = terms;
if (terms.length >= 2 || terms.length == 0) { if (terms.length >= 2 || terms.length == 0) {
$.get(href, { 'status': status, 'terms': terms, project: project_id }, function(response) { $.get(href, { 'status': status, 'terms': terms, project: project_id }, function(response) {
$('#issues-table tbody').html(response); $('#issues-table').html(response);
setSortable(); setSortable();
}); });
} }
...@@ -62,7 +59,7 @@ ...@@ -62,7 +59,7 @@
$(this).closest('tr').fadeOut(); updatePage();}); $(this).closest('tr').fadeOut(); updatePage();});
function setSortable(){ function setSortable(){
$('#issues-table>tbody').sortable({ $('#issues-table').sortable({
axis: 'y', axis: 'y',
dropOnEmpty: false, dropOnEmpty: false,
handle: '.handle', handle: '.handle',
...@@ -73,10 +70,10 @@ ...@@ -73,10 +70,10 @@
update: function(){ update: function(){
$.ajax({ $.ajax({
type: 'post', type: 'post',
data: $('#issues-table>tbody').sortable('serialize'), data: $('#issues-table').sortable('serialize'),
dataType: 'script', dataType: 'script',
complete: function(request){ complete: function(request){
$('#issues-table>tbody').effect('highlight'); $('#issues-table').effect('highlight');
}, },
url: "#{sort_project_issues_path(@project)}"}) url: "#{sort_project_issues_path(@project)}"})
} }
......
:plain :plain
$('#issues-table tbody').html("#{escape_javascript(render('issues'))}"); $('#issues-table').html("#{escape_javascript(render('issues'))}");
setSortable(); setSortable();
%div %h3
%span.entity-info Issue ##{@issue.id}
%small
created at
= @issue.created_at.stamp("Aug 21, 2011")
%span.right
- if can?(current_user, :admin_project, @project) || @issue.author == current_user
- if @issue.closed
= link_to 'Reopen', project_issue_path(@project, @issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "btn"
- else
= link_to 'Close', project_issue_path(@project, @issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close merge request"
- if can?(current_user, :admin_project, @project) || @issue.author == current_user - if can?(current_user, :admin_project, @project) || @issue.author == current_user
= link_to edit_project_issue_path(@project, @issue) do = link_to edit_project_issue_path(@project, @issue), :class => "btn small" do
.entity-button Edit
Edit Issue
%i %hr
= image_tag gravatar_icon(@issue.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" - if @issue.closed
%span.commit-title .alert-message.error Closed
%strong - else
= "Issue ##{@issue.id}:" .alert-message.success Open
%span.commit-author
%strong
= link_to project_team_member_path(@project, @project.team_member_by_id(@issue.author.id)) do %div.well
%span.author= @issue.author_name %div
- if @issue.author != @issue.assignee %cite.cgray Created by
&rarr; = image_tag gravatar_icon(@issue.author_email), :width => 16, :class => "lil_av"
= link_to project_team_member_path(@project, @project.team_member_by_id(@issue.assignee.id)) do = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.author.id)) do
%span.author= @issue.assignee_name %strong.author= @issue.author_name
&nbsp;
%cite.cgray and currently assigned to
&nbsp; = image_tag gravatar_icon(@issue.assignee_email), :width => 16, :class => "lil_av"
= @issue.created_at.stamp("Aug 21, 2011 9:23pm") = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.assignee.id)) do
%strong.author= @issue.assignee_name
%hr
%br %hr
%h3
= simple_format @issue.title %div= simple_format @issue.title
.clear
%br .issue_notes= render "notes/notes"
%br
.merge-tabs
= link_to "#notes", :class => "merge-notes-tab active tab" do
%span
Notes
.right
- if @issue.closed
= link_to 'Reopen', project_issue_path(@project, @issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "red-button"
- else
= link_to 'Close', project_issue_path(@project, @issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button"
.merge-request-notes
.issue_notes= render "notes/notes"
.loading{ :style => "display:none;"}
%center= image_tag "ajax-loader.gif"
.clear
%div %div
= form_for @key, :remote => true do |f| = form_for @key do |f|
-if @key.errors.any? -if @key.errors.any?
%ul .alert-message.block-message.error
- @key.errors.full_messages.each do |msg| %ul
%li= msg - @key.errors.full_messages.each do |msg|
%li= msg
.form-row .clearfix
= f.label :title = f.label :title
= f.text_field :title, :style => "width:300px" .input= f.text_field :title
.form-row .clearfix
= f.label :key = f.label :key
= f.text_area :key, :style => "width:300px; height:130px" .input= f.text_area :key, :class => "xlarge"
.form-row .actions
= f.submit 'Save', :class => "grey-button" = f.submit 'Save', :class => "primary btn"
= link_to "Cancel", keys_path, :class => "btn"
%a.update-item{:href => key_path(key)} %li.entry
%span.update-title = link_to key_path(key) do
= key.title %strong= key.title
%span.update-author %span.right.cgray
Added Added
= time_ago_in_words(key.created_at) = time_ago_in_words(key.created_at)
ago ago
%h2.icon %h3
%span>
SSH Keys SSH Keys
%div#new-key-holder.right = link_to "Add new", new_key_path, :class => "btn small right"
= link_to "Add new", new_key_path, :remote => true, :class => "grey-button"
%br %hr
%div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" } %div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" }
.data %ul.unstyled
- @keys.each do |key| - @keys.each do |key|
= render(:partial => 'show', :locals => {:key => key}) = render(:partial => 'show', :locals => {:key => key})
:javascript
$('.delete-key').live('ajax:success', function() {
$(this).closest('.update-item').fadeOut(); });
%h1 New key %h3 New key
%hr
= render 'form' = render 'form'
= link_to 'Back', keys_path
.ui-box.width-100p %h3= @key.title
%h3= @key.title %hr
.data %pre= @key.key
%pre= @key.key .actions
.clear = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => "btn danger delete-key"
.buttons
= link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => "red-button delete-key right"
.clear
.fixed
%aside
-#= 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 "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"
- if current_user.is_admin?
= link_to admin_root_path, :class => "admin", :title => "Admin" do
Admin
= link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}"
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
$("#flash_container").click(function(){ $("#flash_container").click(function(){
$(this).slideUp("slow"); $(this).slideUp("slow");
}); });
setTimeout("hideFlash()",2000); setTimeout("hideFlash()",3000);
}); });
function hideFlash(){ function hideFlash(){
......
...@@ -11,23 +11,7 @@ ...@@ -11,23 +11,7 @@
= truncate @project.name, :length => 28 = truncate @project.name, :length => 28
.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"}
- if @project.repo_exists?
.left{:style => "margin-left:5px;"}
= render :partial => "projects/refs", :locals => { :destination => controller.controller_name == "commits" ? "commits" : "tree" }
= yield :rss_icon
- else
.dashboard_links
= 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 "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"
- if current_user.is_admin?
= link_to admin_root_path, :class => "admin", :title => "Admin" do
Admin
= link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}"
.search
= text_field_tag "search", nil, :placeholder => "Search", :class => "search-input"
.account-box .account-box
= link_to profile_path, :class => "pic" do = link_to profile_path, :class => "pic" do
...@@ -36,16 +20,3 @@ ...@@ -36,16 +20,3 @@
= link_to profile_path, :class => "username" do = link_to profile_path, :class => "username" do
My profile My profile
= link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete = link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete
- if current_user
= javascript_tag do
$(function(){
$("#search").autocomplete({
source: #{raw search_autocomplete_source},
select: function(event, ui) { location.href = ui.item.url }
});
});
-#- if current_user.require_ssh_key?
#no_ssh_key_defined.big-message.error
%p
No SSH Key is defined. You won't be able to use any Git command!. Click #{link_to( 'here', keys_path )} to add one!
...@@ -6,14 +6,14 @@ ...@@ -6,14 +6,14 @@
- if @project.repo_exists? - if @project.repo_exists?
= link_to "Repository", project_repository_path(@project), :class => repository_tab_class = link_to "Repository", project_repository_path(@project), :class => repository_tab_class
= link_to "Tree", tree_project_ref_path(@project, @ref || @project.root_ref), :class => tree_tab_class = link_to "Code", tree_project_ref_path(@project, @project.root_ref), :class => tree_tab_class
= link_to "Commits", project_commits_path(@project, :ref => (@ref || @project.root_ref)), :class => (controller.controller_name == "commits") ? "current" : nil = link_to "Commits", project_commits_path(@project), :class => (controller.controller_name == "commits") ? "current" : nil
= link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
= link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do
Issues Issues
= link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
Merge Requests
= link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
Wall @Wall
- if @project.common_notes.today.count > 0 - if @project.common_notes.today.count > 0
%span{ :class => "number" }= @project.common_notes.today.count %span.label= @project.common_notes.today.count
= link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
Requests
%aside.project-right
- if content_for? :sidebar_all
= render :sidebar_all
- else
- if content_for? :sidebar_top_block
= yield :sidebar_top_block
- else
- if can? current_user, :write_project, @project
.alert-message.block-message.info
You have access to create new issue or merge request.
%div
= link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do
New Issue »
%div
= link_to new_project_merge_request_path(@project), :title => "New Merge Request", :class => "btn small" do
New Merge Request »
- if current_user.projects.count > 0
%div.entry
%h5
Recent Projects:
%ul
- current_user.projects.order("id DESC").limit(5).each do |project|
%li
= link_to project_path(project) do
= project.name
= link_to "More » ", projects_path
-#%h4
-#Recent Issues:
-#%ul
-#- current_user.assigned_issues.order("id DESC").limit(5).each do |issue|
-#%li
-#= link_to project_issue_path(issue.project, issue) do
-#= truncate issue.title
-#%h4
-#Recent Requests:
-#%ul
-#- current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue|
-#%li
-#= link_to project_merge_request_path(issue.project, issue) do
-#= truncate issue.title
%aside.projects
- if current_user.can_create_project?
.alert-message.block-message.info
You can create at least
= current_user.projects_limit
projects. Click on button to add a new one
= link_to new_project_path, :class => "btn small" do
New Project
- if current_user.projects.count > 0
%div.entry
%h5
Recent Projects:
%ul
- current_user.projects.order("id DESC").limit(5).each do |project|
%li
= link_to project_path(project) do
= project.name
= link_to "More » ", projects_path
-#%h5
-#Your Issues:
-#%ul
-#- current_user.assigned_issues.order("id DESC").limit(5).each do |issue|
-#%li
-#= link_to project_issue_path(issue.project, issue) do
-#= truncate issue.title
-#%h5
-#Your Merge Requests:
-#%ul
-#- current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue|
-#%li
-#= link_to project_merge_request_path(issue.project, issue) do
-#= truncate issue.title
!!! !!!
%html %html
%head %head
%meta{:charset => "utf-8"}
%title %title
GitLab #{" - #{@project.name}" if @project && !@project.new_record?} GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
= favicon_link_tag 'favicon.ico' = favicon_link_tag 'favicon.ico'
...@@ -10,19 +11,17 @@ ...@@ -10,19 +11,17 @@
= javascript_tag do = javascript_tag do
REQ_URI = "#{request.env["REQUEST_URI"]}"; REQ_URI = "#{request.env["REQUEST_URI"]}";
REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
%body{ :class => body_class('project-page'), :id => yield(:boyd_id)} %body.admin
= render :partial => "layouts/flash" = render :partial => "layouts/flash"
#container = render :partial => "layouts/head_panel"
= render :partial => "layouts/head_panel" .container-fluid
.project-container .sidebar
.project-sidebar .fixed
.fixed %aside
%aside = link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil
= link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil = link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil
= link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil = link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil
= link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil = link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil
= link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil = link_to "Resque", "/info/resque"
= link_to "Resque", "/info/resque"
.project-content .content= yield
= yield
!!! !!!
%html %html
%head %head
%meta{:charset => "utf-8"}
%title %title
GitLab GitLab
= favicon_link_tag 'favicon.ico' = favicon_link_tag 'favicon.ico'
= stylesheet_link_tag "application" = stylesheet_link_tag "application"
= javascript_include_tag "application" = javascript_include_tag "application"
= csrf_meta_tags = csrf_meta_tags
= javascript_tag do %body.application
REQ_URI = "#{request.env["REQUEST_URI"]}";
REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
%body{ :class => body_class, :id => yield(:boyd_id)}
= render :partial => "layouts/flash" = render :partial => "layouts/flash"
#container = render :partial => "layouts/head_panel"
= render :partial => "layouts/head_panel" .container-fluid
= render :partial => "layouts/page_title" .sidebar
= yield = render :partial => "layouts/app_side"
.content
.row
.span10= yield
.span4= render "layouts/projects_side"
!!! !!!
%html %html
%head %head
%meta{:charset => "utf-8"}
%title %title
GitLab #{" - #{@project.name}" if @project && !@project.new_record?} GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
= favicon_link_tag 'favicon.ico' = favicon_link_tag 'favicon.ico'
...@@ -12,4 +13,4 @@ ...@@ -12,4 +13,4 @@
REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
%body.login-page %body.login-page
= render :partial => "layouts/flash" = render :partial => "layouts/flash"
= yield .container-fluid= yield
!!! !!!
%html %html
%head %head
%meta{:charset => "utf-8"}
%title %title
GitLab #{" - #{@project.name}" if @project && !@project.new_record?} GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
= favicon_link_tag 'favicon.ico' = favicon_link_tag 'favicon.ico'
= stylesheet_link_tag "application" = stylesheet_link_tag "application"
= javascript_include_tag "application" = javascript_include_tag "application"
= csrf_meta_tags = csrf_meta_tags
= javascript_tag do %body.profile
REQ_URI = "#{request.env["REQUEST_URI"]}";
REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
%body{ :class => body_class('project-page'), :id => yield(:boyd_id)}
= render :partial => "layouts/flash" = render :partial => "layouts/flash"
#container = render :partial => "layouts/head_panel"
= render :partial => "layouts/head_panel" .container-fluid
.project-container .sidebar
.project-sidebar %aside
.fixed = link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil
%aside = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil
= link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil
= link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do
= link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil Keys
= link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do - unless current_user.keys.empty?
Keys %span.label= current_user.keys.count
- unless current_user.keys.empty? .content
%span{ :class => "number" }= current_user.keys.count .row
.span10= yield
.project-content .span4= render "layouts/projects_side"
= yield
!!! !!!
%html %html
%head %head
%meta{:charset => "utf-8"}
%title %title
GitLab #{" - #{@project.name}" if @project && !@project.new_record?} GitLab
= " - #{@project.name}" if @project && !@project.new_record?
= favicon_link_tag 'favicon.ico' = favicon_link_tag 'favicon.ico'
= stylesheet_link_tag "application" = stylesheet_link_tag "application"
= javascript_include_tag "application" = javascript_include_tag "application"
...@@ -11,14 +13,16 @@ ...@@ -11,14 +13,16 @@
- if request.path == project_issues_path(@project) - if request.path == project_issues_path(@project)
= auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, :private_token => current_user.private_token), :title => "#{@project.name} issues") = auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, :private_token => current_user.private_token), :title => "#{@project.name} issues")
= csrf_meta_tags = csrf_meta_tags
= javascript_tag do %body.project
REQ_URI = "#{request.env["REQUEST_URI"]}";
REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
%body{ :class => body_class('project-page'), :id => yield(:boyd_id)}
= render :partial => "layouts/flash" = render :partial => "layouts/flash"
#container = render :partial => "layouts/head_panel"
= render :partial => "layouts/head_panel" .container-fluid
.project-container .sidebar= render :partial => "layouts/project_side"
= render :partial => "layouts/project_side" .content
.project-content - if @full_content
= yield = yield
- else
.row
.span10= yield
.span4= render "layouts/project_side_right"
- if @commits.size > 0 - if @commits.size > 0
.merge-request-commits.ui-box.width-100p .merge-request-commits
- @commits.each do |commit| - @commits.each do |commit|
%a{ :class => "commit", :href => project_commit_path(@project, :id => commit.id) } .entry
- if commit.author_email = link_to project_commit_path(@project, :id => commit.id) do
= image_tag gravatar_icon(commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" %strong
- else = truncate(commit.id.to_s, :length => 10)
= image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;" = image_tag gravatar_icon(commit.author_email), :class => "", :width => 16
%span.update-title %span= truncate(commit.safe_message, :length => 40)
= truncate commit.safe_message, :length => 60 %span.right
%span.update-author = time_ago_in_words(commit.committed_date)
%strong= commit.author_name ago
authored
= time_ago_in_words(commit.created_at)
ago
.clear
- if @commits.empty? - if @commits.empty?
%p.cgray Nothing to merge %p.cgray Nothing to merge
= form_for [@project, @merge_request] do |f| = form_for [@project, @merge_request] do |f|
%div -if @merge_request.errors.any?
%span.entity-info .alert-message.block-message.error
- if @merge_request.new_record? %ul
= link_to project_merge_requests_path(@project) do - @merge_request.errors.full_messages.each do |msg|
.entity-button %li= msg
Merge Requests
%i
- else
= link_to project_merge_request_path(@project, @merge_request) do
.entity-button
Show Merge Request
%i
%h2= @merge_request.new_record? ? "New Merge Request" : "Edit Merge Request ##{@merge_request.id}" .clearfix
= f.label :source_branch, "From"
.input= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
.clearfix
= f.label :target_branch, "To"
.input= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
.clearfix
= f.label :assignee_id, "Assign to"
.input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px")
%hr .clearfix
%table.no-borders = f.label :title
-if @merge_request.errors.any? .input= f.text_area :title, :class => "xlarge", :maxlength => 255, :rows => 5
%tr .actions
%td{:colspan => 2} = f.submit 'Save', :class => "primary btn"
#error_explanation - if @merge_request.new_record?
- @merge_request.errors.full_messages.each do |msg| = link_to project_merge_requests_path(@project), :class => "btn" do
%span= msg Cancel
%br - else
%tr = link_to project_merge_request_path(@project, @merge_request), :class => "btn" do
%td= f.label :source_branch, "From" Cancel
%td= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
%tr
%td= f.label :target_branch, "To"
%td= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
%tr
%td= f.label :assignee_id, "Assign to"
%td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px")
= f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255
%br
%br
.merge-tabs
= f.submit 'Save', :class => "positive-button"
&nbsp; &nbsp;
- unless @merge_request.new_record? - unless @merge_request.new_record?
.right .right
= link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "btn danger"
......
...@@ -2,11 +2,4 @@ ...@@ -2,11 +2,4 @@
= link_to project_merge_requests_path(@project), :class => "tab #{'active' if current_page?(project_merge_requests_path(@project)) }" do = link_to project_merge_requests_path(@project), :class => "tab #{'active' if current_page?(project_merge_requests_path(@project)) }" do
%span %span
Merge Requests Merge Requests
- if current_page?(project_merge_requests_path(@project))
- if can? current_user, :write_merge_request, @project
= link_to new_project_merge_request_path(@project), :class => "add_new", :title => "New Merge request" do
Add new
%a.update-item{:href => project_merge_request_path(merge_request.project, merge_request)} %li.wll
= image_tag gravatar_icon(merge_request.author_email), :class => "left", :width => 40 = image_tag gravatar_icon(merge_request.author_email), :class => "avatar"
%span.update-title
= truncate(merge_request.title, :length => 60)
%span.update-author %span.update-author
%strong= merge_request.author_name %strong
= link_to project_team_member_path(@project, @project.team_member_by_id(merge_request.author_id)), :class => "author_link" do
= merge_request.author_name
authored authored
= time_ago_in_words(merge_request.created_at) = time_ago_in_words(merge_request.created_at)
ago ago
.right .right
%span.tag.commit= merge_request.source_branch %span.label= merge_request.source_branch
&rarr; &rarr;
%span.tag.commit= merge_request.target_branch %span.label= merge_request.target_branch
= link_to project_merge_request_path(merge_request.project, merge_request) do
%p
Merge Request ##{merge_request.id}:
= truncate(merge_request.title, :length => 50)
%h3
= "Edit merge request #{@merge_request.id}"
%hr
= render 'form' = render 'form'
= render "merge_requests/head" %h3
Merge Requests
- if can? current_user, :write_issue, @project
= link_to new_project_merge_request_path(@project), :class => "right btn small", :title => "New Merge Request" do
New Merge Request
.left.issues_filter
= form_tag project_merge_requests_path(@project), :method => :get do
.left
= radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "this.form.submit()", :id => "open_merge_requests", :class => "status"
= label_tag "open_merge_requests" do
%span.tag.open Open
.left
= radio_button_tag :f, 2, params[:f] == "2", :onclick => "this.form.submit()", :id => "closed_merge_requests", :class => "status"
= label_tag "closed_merge_requests" do
%span.tag.closed Closed
.clear
%hr %hr
- if @merge_requests.count > 0 %ul.pills
%div{ :class => "update-data ui-box ui-box-small ui-box-big" } %li{:class => ("active" if (params[:f] == "0" || !params[:f]))}
.data = link_to project_merge_requests_path(@project, :f => 0) do
= render @merge_requests Open
%li{:class => ("active" if params[:f] == "2")}
.clear = link_to project_merge_requests_path(@project, :f => 2) do
%br Closed
- unless @merge_requests.count > 0 || params[:f] == "2" %hr
.notice_holder %ul.unstyled= render @merge_requests
%li Merge Requests do not exist yet.
- if can? current_user, :write_merge_request, @project
%li You can add a new one by clicking on "Add New" button
%h3 New Merge Request
%hr
= render 'form' = render 'form'
%div %h3
%span.entity-info = "Merge Request ##{@merge_request.id}:"
&nbsp;
%span.label= @merge_request.source_branch
&rarr;
%span.label= @merge_request.target_branch
%small
created at
= @merge_request.created_at.stamp("Aug 21, 2011")
%span.right
- if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
- if @merge_request.closed
= link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "btn"
- else
= link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close merge request"
- if can?(current_user, :admin_project, @project) || @merge_request.author == current_user - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
= link_to edit_project_merge_request_path(@project, @merge_request) do = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small" do
.entity-button Edit
Edit Merge Request
%i
= image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
%span.commit-title
%strong
= "Merge Request ##{@merge_request.id}:"
&nbsp;
.tag.commit.inline= @merge_request.source_branch
&rarr;
.tag.commit.inline= @merge_request.target_branch
%span.commit-author
%strong
= link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do
%span.author= @merge_request.author_name
&rarr;
= link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do
%span.author= @merge_request.assignee_name
&nbsp; %hr
&nbsp; - if @merge_request.closed
= @merge_request.created_at.stamp("Aug 21, 2011 9:23pm") .alert-message.error Closed
- else
.alert-message.success Open
%hr
%br
%h3
= simple_format @merge_request.title
.clear %div.well
%br %div
%br %cite.cgray Created by
= image_tag gravatar_icon(@merge_request.author_email), :width => 16, :class => "lil_av"
= link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do
%strong.author= @merge_request.author_name
.merge-tabs %cite.cgray and currently assigned to
= link_to "#notes", :class => "merge-notes-tab active tab" do = image_tag gravatar_icon(@merge_request.assignee_email), :width => 16, :class => "lil_av"
%span = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do
Notes %strong.author= @merge_request.assignee_name
= link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do
%span %hr
Commits
= link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
%span %div= simple_format @merge_request.title
Diff
.tabs
%li.active
= link_to "#notes", :class => "merge-notes-tab tab" do
Notes
%li
= link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do
Commits
%li
= link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
Diff
- if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
.right
- if @merge_request.closed
= link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "red-button"
- else
= link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button", :title => "Close merge request"
%img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"}
.merge-request-notes .merge-request-notes
.issue_notes= render "notes/notes" .merge_request_notes= render "notes/notes"
.loading{ :style => "display:none;"} .loading{ :style => "display:none;"}
%center= image_tag "ajax-loader.gif" %center= image_tag "ajax-loader.gif"
.clear .clear
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment