Merge branch 'master' of dev.gitlabhq.com:gitlabhq
This commit is contained in:
commit
12782adf03
66 changed files with 493 additions and 440 deletions
|
@ -10,6 +10,8 @@
|
||||||
//= require jquery.ui.selectmenu
|
//= require jquery.ui.selectmenu
|
||||||
//= require jquery.tagify
|
//= require jquery.tagify
|
||||||
//= require jquery.cookie
|
//= require jquery.cookie
|
||||||
|
//= require modernizr
|
||||||
|
//= require chosen
|
||||||
//= require raphael
|
//= require raphael
|
||||||
//= require branch-graph
|
//= require branch-graph
|
||||||
//= require_tree .
|
//= require_tree .
|
||||||
|
@ -22,9 +24,9 @@ $(function(){
|
||||||
$('select#branch').selectmenu({style:'popup', width:200});
|
$('select#branch').selectmenu({style:'popup', width:200});
|
||||||
$('select#tag').selectmenu({style:'popup', width:200});
|
$('select#tag').selectmenu({style:'popup', width:200});
|
||||||
|
|
||||||
$(".account-box").mouseenter(showMenu);
|
$(".account-box").mouseenter(showMenu);
|
||||||
$(".account-box").mouseleave(resetMenu);
|
$(".account-box").mouseleave(resetMenu);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function updatePage(data){
|
function updatePage(data){
|
||||||
|
@ -32,9 +34,9 @@ function updatePage(data){
|
||||||
}
|
}
|
||||||
|
|
||||||
function showMenu() {
|
function showMenu() {
|
||||||
$(this).toggleClass('hover');
|
$(this).toggleClass('hover');
|
||||||
}
|
}
|
||||||
|
|
||||||
function resetMenu() {
|
function resetMenu() {
|
||||||
$(this).removeClass("hover");
|
$(this).removeClass("hover");
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,25 +8,23 @@ $(document).ready(function(){
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var CommitsList = {
|
||||||
|
|
||||||
var CommitsList = {
|
|
||||||
|
|
||||||
ref:null,
|
ref:null,
|
||||||
limit:0,
|
limit:0,
|
||||||
offset:0,
|
offset:0,
|
||||||
|
|
||||||
init:
|
init:
|
||||||
function(ref, limit) {
|
function(ref, limit) {
|
||||||
this.ref=ref;
|
this.ref=ref;
|
||||||
this.limit=limit;
|
this.limit=limit;
|
||||||
this.offset=limit;
|
this.offset=limit;
|
||||||
this.initLoadMore();
|
this.initLoadMore();
|
||||||
$('.loading').show();
|
$('.loading').show();
|
||||||
},
|
},
|
||||||
|
|
||||||
getOld:
|
getOld:
|
||||||
function() {
|
function() {
|
||||||
$('.loading').show();
|
$('.loading').show();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -39,14 +37,14 @@ getOld:
|
||||||
append:
|
append:
|
||||||
function(count, html) {
|
function(count, html) {
|
||||||
$("#commits_list").append(html);
|
$("#commits_list").append(html);
|
||||||
if(count > 0) {
|
if(count > 0) {
|
||||||
this.offset += count;
|
this.offset += count;
|
||||||
this.initLoadMore();
|
this.initLoadMore();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
initLoadMore:
|
initLoadMore:
|
||||||
function() {
|
function() {
|
||||||
$(window).bind('scroll', function(){
|
$(window).bind('scroll', function(){
|
||||||
if($(window).scrollTop() == $(document).height() - $(window).height()){
|
if($(window).scrollTop() == $(document).height() - $(window).height()){
|
||||||
$(window).unbind('scroll');
|
$(window).unbind('scroll');
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
var NoteList = {
|
var NoteList = {
|
||||||
|
|
||||||
first_id: 0,
|
first_id: 0,
|
||||||
last_id: 0,
|
last_id: 0,
|
||||||
resource_name: null,
|
resource_name: null,
|
||||||
|
|
||||||
init:
|
init:
|
||||||
function(resource_name, first_id, last_id) {
|
function(resource_name, first_id, last_id) {
|
||||||
this.resource_name = resource_name;
|
this.resource_name = resource_name;
|
||||||
this.first_id = first_id;
|
this.first_id = first_id;
|
||||||
this.last_id = last_id;
|
this.last_id = last_id;
|
||||||
this.initRefresh();
|
this.initRefresh();
|
||||||
this.initLoadMore();
|
this.initLoadMore();
|
||||||
},
|
},
|
||||||
|
|
||||||
getOld:
|
getOld:
|
||||||
function() {
|
function() {
|
||||||
$('.loading').show();
|
$('.loading').show();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -31,7 +31,7 @@ append:
|
||||||
this.initLoadMore();
|
this.initLoadMore();
|
||||||
},
|
},
|
||||||
|
|
||||||
replace:
|
replace:
|
||||||
function(fid, lid, html) {
|
function(fid, lid, html) {
|
||||||
this.first_id = fid;
|
this.first_id = fid;
|
||||||
this.last_id = lid;
|
this.last_id = lid;
|
||||||
|
@ -39,17 +39,16 @@ replace:
|
||||||
this.initLoadMore();
|
this.initLoadMore();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
prepend:
|
prepend:
|
||||||
function(id, html) {
|
function(id, html) {
|
||||||
if(id != this.last_id) {
|
if(id != this.last_id) {
|
||||||
this.last_id = id;
|
this.last_id = id;
|
||||||
$("#notes-list").prepend(html);
|
$("#notes-list").prepend(html);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getNew:
|
getNew:
|
||||||
function() {
|
function() {
|
||||||
// refersh notes list
|
// refersh notes list
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -59,7 +58,7 @@ getNew:
|
||||||
},
|
},
|
||||||
|
|
||||||
refresh:
|
refresh:
|
||||||
function() {
|
function() {
|
||||||
// refersh notes list
|
// refersh notes list
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -68,8 +67,6 @@ refresh:
|
||||||
dataType: "script"});
|
dataType: "script"});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
initRefresh:
|
initRefresh:
|
||||||
function() {
|
function() {
|
||||||
// init timer
|
// init timer
|
||||||
|
@ -78,7 +75,7 @@ initRefresh:
|
||||||
},
|
},
|
||||||
|
|
||||||
initLoadMore:
|
initLoadMore:
|
||||||
function() {
|
function() {
|
||||||
$(window).bind('scroll', function(){
|
$(window).bind('scroll', function(){
|
||||||
if($(window).scrollTop() == $(document).height() - $(window).height()){
|
if($(window).scrollTop() == $(document).height() - $(window).height()){
|
||||||
$(window).unbind('scroll');
|
$(window).unbind('scroll');
|
||||||
|
|
|
@ -48,7 +48,6 @@ function taggifyForm(){
|
||||||
source: '/tags.json'
|
source: '/tags.json'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$('form').submit( function() {
|
$('form').submit( function() {
|
||||||
var tag_field = $('#tag_field')
|
var tag_field = $('#tag_field')
|
||||||
tag_field.val( tag_field.tagify('serialize') );
|
tag_field.val( tag_field.tagify('serialize') );
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*= require jquery-ui/jquery-ui
|
*= require jquery-ui/jquery-ui
|
||||||
*= require jquery-ui/jquery.ui.selectmenu
|
*= require jquery-ui/jquery.ui.selectmenu
|
||||||
*= require jquery-ui/jquery.tagify
|
*= require jquery-ui/jquery.tagify
|
||||||
|
*= require chosen
|
||||||
*= require_self
|
*= require_self
|
||||||
*= require_tree .
|
*= require_tree .
|
||||||
*/
|
*/
|
||||||
|
@ -15,10 +16,10 @@
|
||||||
.cgreen { color:#44aa22; }
|
.cgreen { color:#44aa22; }
|
||||||
|
|
||||||
/** COMMON STYLES **/
|
/** COMMON STYLES **/
|
||||||
.left {
|
.left {
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
.right {
|
.right {
|
||||||
float:right;
|
float:right;
|
||||||
}
|
}
|
||||||
.width-50p{
|
.width-50p{
|
||||||
|
@ -33,7 +34,7 @@
|
||||||
.width-65p{
|
.width-65p{
|
||||||
width:65%;
|
width:65%;
|
||||||
}
|
}
|
||||||
.append-bottom-10 {
|
.append-bottom-10 {
|
||||||
margin-bottom:10px;
|
margin-bottom:10px;
|
||||||
}
|
}
|
||||||
.prepend-top-10 {
|
.prepend-top-10 {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
.issues_filter {
|
.issues_filter {
|
||||||
margin-top:10px;
|
margin-top:10px;
|
||||||
.left {
|
.left {
|
||||||
margin-right:15px;
|
margin-right:15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,11 +38,10 @@
|
||||||
|
|
||||||
/** ISSUES LIST **/
|
/** ISSUES LIST **/
|
||||||
.issue .action-links {
|
.issue .action-links {
|
||||||
display:none;
|
display:none;
|
||||||
a {
|
a {
|
||||||
margin-left:10px;
|
margin-left:10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.issue:hover .action-links { display:block; }
|
.issue:hover .action-links { display:block; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Note textare */
|
/* Note textare */
|
||||||
#note_note {
|
#note_note {
|
||||||
height:100px;
|
height:100px;
|
||||||
|
|
|
@ -99,15 +99,15 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
td.code {
|
td.code {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
.highlight {
|
.highlight {
|
||||||
margin-left: 55px;
|
margin-left: 55px;
|
||||||
overflow:auto;
|
overflow:auto;
|
||||||
overflow-y:hidden;
|
overflow-y:hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.highlight pre {
|
.highlight pre {
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
word-wrap:normal;
|
word-wrap:normal;
|
||||||
}
|
}
|
||||||
|
@ -115,12 +115,11 @@ td.code {
|
||||||
.highlighttable tr:hover {
|
.highlighttable tr:hover {
|
||||||
background:white;
|
background:white;
|
||||||
}
|
}
|
||||||
table.highlighttable pre{
|
table.highlighttable pre{
|
||||||
line-height:16px !important;
|
line-height:16px !important;
|
||||||
font-size:12px !important;
|
font-size:12px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
table.highlighttable .linenodiv pre {
|
table.highlighttable .linenodiv pre {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
padding-right: 4px;
|
padding-right: 4px;
|
||||||
|
@ -235,7 +234,6 @@ input.ssh_project_url {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#user_projects_limit{
|
#user_projects_limit{
|
||||||
width: 60px;
|
width: 60px;
|
||||||
}
|
}
|
||||||
|
@ -244,7 +242,7 @@ input.ssh_project_url {
|
||||||
cursor: move;
|
cursor: move;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-refs-form {
|
.project-refs-form {
|
||||||
span {
|
span {
|
||||||
background: none !important;
|
background: none !important;
|
||||||
position:static !important;
|
position:static !important;
|
||||||
|
@ -258,18 +256,18 @@ input.ssh_project_url {
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter .left { margin-right:15px; }
|
.filter .left { margin-right:15px; }
|
||||||
|
|
||||||
body.project-page table .commit {
|
body.project-page table .commit {
|
||||||
a.tree-commit-link {
|
a.tree-commit-link {
|
||||||
color:gray;
|
color:gray;
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration:underline;
|
text-decoration:underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** NEW PROJECT **/
|
/** NEW PROJECT **/
|
||||||
.new-project-hodler {
|
.new-project-hodler {
|
||||||
.icon span { background-position: -31px -70px; }
|
.icon span { background-position: -31px -70px; }
|
||||||
td { border-bottom: 1px solid #DEE2E3; }
|
td { border-bottom: 1px solid #DEE2E3; }
|
||||||
}
|
}
|
||||||
|
@ -277,8 +275,8 @@ body.project-page table .commit {
|
||||||
/** Feed entry **/
|
/** Feed entry **/
|
||||||
.commit,
|
.commit,
|
||||||
.snippet,
|
.snippet,
|
||||||
.message {
|
.message {
|
||||||
.title {
|
.title {
|
||||||
color:#666;
|
color:#666;
|
||||||
a { color:#666 !important; }
|
a { color:#666 !important; }
|
||||||
p { margin-top:0px; }
|
p { margin-top:0px; }
|
||||||
|
@ -295,21 +293,21 @@ body.project-page table .commit {
|
||||||
font-size:1.5em;
|
font-size:1.5em;
|
||||||
height:auto;
|
height:auto;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
.ui-selectmenu-status {
|
.ui-selectmenu-status {
|
||||||
padding:3px 10px;
|
padding:3px 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Snippets **/
|
/** Snippets **/
|
||||||
.new_snippet textarea,
|
.new_snippet textarea,
|
||||||
.edit_snippet textarea {
|
.edit_snippet textarea {
|
||||||
height:300px;
|
height:300px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
width: 95%;
|
width: 95%;
|
||||||
}
|
}
|
||||||
.snippet .action-links {
|
.snippet .action-links {
|
||||||
display:none;
|
display:none;
|
||||||
a {
|
a {
|
||||||
margin-left:10px;
|
margin-left:10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -348,11 +346,11 @@ body.project-page table .commit {
|
||||||
background: #2c5c66;
|
background: #2c5c66;
|
||||||
color:white;
|
color:white;
|
||||||
}
|
}
|
||||||
&.issue {
|
&.issue {
|
||||||
background: #D12F19;
|
background: #D12F19;
|
||||||
color:white;
|
color:white;
|
||||||
}
|
}
|
||||||
&.commit {
|
&.commit {
|
||||||
background: #44aacc;
|
background: #44aacc;
|
||||||
color:white;
|
color:white;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,6 @@ input:invalid, textarea:invalid { background-color: #f0dddd; }
|
||||||
table { border-collapse: collapse; border-spacing: 0; }
|
table { border-collapse: collapse; border-spacing: 0; }
|
||||||
td { vertical-align: top; }
|
td { vertical-align: top; }
|
||||||
|
|
||||||
|
|
||||||
/* ==|== primary styles =====================================================
|
/* ==|== primary styles =====================================================
|
||||||
Author: Ricardo Rauch
|
Author: Ricardo Rauch
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
|
@ -89,13 +88,13 @@ input[type="text"]:focus, input[type="password"]:focus { outline: none; }
|
||||||
input.text{border: 1px solid #ccc; border-radius: 4px; display: block; padding: 10px}
|
input.text{border: 1px solid #ccc; border-radius: 4px; display: block; padding: 10px}
|
||||||
|
|
||||||
.form-row{
|
.form-row{
|
||||||
padding: 0px 0px 10px 0px;
|
padding: 0px 0px 10px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-row label{
|
.form-row label{
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0px 0px 5px 0px;
|
padding: 0px 0px 5px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* eo Forms */
|
/* eo Forms */
|
||||||
|
@ -103,23 +102,23 @@ input.text{border: 1px solid #ccc; border-radius: 4px; display: block; padding:
|
||||||
/* Tables */
|
/* Tables */
|
||||||
table {width:100%; border: 1px solid #DEE2E3; margin-bottom: 20px}
|
table {width:100%; border: 1px solid #DEE2E3; margin-bottom: 20px}
|
||||||
table thead{
|
table thead{
|
||||||
-webkit-border-top-left-radius: 5px;
|
-webkit-border-top-left-radius: 5px;
|
||||||
-webkit-border-top-right-radius: 5px;
|
-webkit-border-top-right-radius: 5px;
|
||||||
-moz-border-radius-topleft: 5px;
|
-moz-border-radius-topleft: 5px;
|
||||||
-moz-border-radius-topright: 5px;
|
-moz-border-radius-topright: 5px;
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
}
|
}
|
||||||
table thead th{
|
table thead th{
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));
|
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: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
||||||
background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
||||||
background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #97A0A5;
|
color: #97A0A5;
|
||||||
}
|
}
|
||||||
td, th{ padding: .9em 1em; vertical-align: middle; }
|
td, th{ padding: .9em 1em; vertical-align: middle; }
|
||||||
|
|
||||||
|
@ -127,37 +126,36 @@ table thead .image{width:100px}
|
||||||
table tr:hover, .listed_items tr.odd:hover{background-color:#FFFFCF}
|
table tr:hover, .listed_items tr.odd:hover{background-color:#FFFFCF}
|
||||||
/* eo Tables */
|
/* eo Tables */
|
||||||
|
|
||||||
|
|
||||||
/* Buttons */
|
/* Buttons */
|
||||||
.grey-button{
|
.grey-button{
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 6px 20px;
|
padding: 6px 20px;
|
||||||
border: 1px solid #999;
|
border: 1px solid #999;
|
||||||
color: #666;
|
color: #666;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
box-shadow: 0 1px 2px rgba(0,0,0,.3);
|
box-shadow: 0 1px 2px rgba(0,0,0,.3);
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5));
|
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5));
|
||||||
background-image: -webkit-linear-gradient(#f7f7f7 7.6%, #d5d5d5);
|
background-image: -webkit-linear-gradient(#f7f7f7 7.6%, #d5d5d5);
|
||||||
background-image: -moz-linear-gradient(#f7f7f7 7.6%, #d5d5d5);
|
background-image: -moz-linear-gradient(#f7f7f7 7.6%, #d5d5d5);
|
||||||
background-image: -o-linear-gradient(#f7f7f7 7.6%, #d5d5d5);
|
background-image: -o-linear-gradient(#f7f7f7 7.6%, #d5d5d5);
|
||||||
}
|
}
|
||||||
|
|
||||||
a.button, input.button {
|
a.button, input.button {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
color: #578E91;
|
color: #578E91;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
border: 1px solid #8CE2E6;
|
border: 1px solid #8CE2E6;
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbf5f6), to(#c5eef0));
|
background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbf5f6), to(#c5eef0));
|
||||||
background-image: -webkit-linear-gradient(#dbf5f6 79.4%, #c5eef0);
|
background-image: -webkit-linear-gradient(#dbf5f6 79.4%, #c5eef0);
|
||||||
background-image: -moz-linear-gradient(#dbf5f6 79.4%, #c5eef0);
|
background-image: -moz-linear-gradient(#dbf5f6 79.4%, #c5eef0);
|
||||||
background-image: -o-linear-gradient(#dbf5f6 79.4%, #c5eef0);
|
background-image: -o-linear-gradient(#dbf5f6 79.4%, #c5eef0);
|
||||||
}
|
}
|
||||||
|
|
||||||
input.button{margin-bottom: 1.5em}
|
input.button{margin-bottom: 1.5em}
|
||||||
|
@ -167,21 +165,21 @@ input.button{margin-bottom: 1.5em}
|
||||||
.button.green {margin-right: 0; }
|
.button.green {margin-right: 0; }
|
||||||
|
|
||||||
.button.yellow{
|
.button.yellow{
|
||||||
color: #908054;
|
color: #908054;
|
||||||
border-color: #DDCDA1;
|
border-color: #DDCDA1;
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #FFEFC3), to(#F3E3B7));
|
background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #FFEFC3), to(#F3E3B7));
|
||||||
background-image: -webkit-linear-gradient(#FFEFC3 79.4%, #F3E3B7);
|
background-image: -webkit-linear-gradient(#FFEFC3 79.4%, #F3E3B7);
|
||||||
background-image: -moz-linear-gradient(#FFEFC3 79.4%, #F3E3B7);
|
background-image: -moz-linear-gradient(#FFEFC3 79.4%, #F3E3B7);
|
||||||
background-image: -o-linear-gradient(#FFEFC3 79.4%, #F3E3B7);
|
background-image: -o-linear-gradient(#FFEFC3 79.4%, #F3E3B7);
|
||||||
}
|
}
|
||||||
|
|
||||||
.button.blue{
|
.button.blue{
|
||||||
color: #417E97;
|
color: #417E97;
|
||||||
border-color: #b2cdec;
|
border-color: #b2cdec;
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbe8f6), to(#c7daf1));
|
background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbe8f6), to(#c7daf1));
|
||||||
background-image: -webkit-linear-gradient(#dbe8f6 79.4%, #c7daf1);
|
background-image: -webkit-linear-gradient(#dbe8f6 79.4%, #c7daf1);
|
||||||
background-image: -moz-linear-gradient(#dbe8f6 79.4%, #c7daf1);
|
background-image: -moz-linear-gradient(#dbe8f6 79.4%, #c7daf1);
|
||||||
background-image: -o-linear-gradient(#dbe8f6 79.4%, #c7daf1);
|
background-image: -o-linear-gradient(#dbe8f6 79.4%, #c7daf1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-small{ text-shadow: none; padding: 4px 10px; }
|
.button-small{ text-shadow: none; padding: 4px 10px; }
|
||||||
|
@ -192,50 +190,49 @@ input.button{margin-bottom: 1.5em}
|
||||||
/* UI Box */
|
/* UI Box */
|
||||||
.ui-box{border: 1px solid #DEDFE1; float: left; border-radius: 5px}
|
.ui-box{border: 1px solid #DEDFE1; float: left; border-radius: 5px}
|
||||||
.ui-box h3{
|
.ui-box h3{
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));
|
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: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
||||||
background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
||||||
background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
border-bottom: 1px solid #DEDFE1;
|
border-bottom: 1px solid #DEDFE1;
|
||||||
-webkit-border-top-left-radius: 5px;
|
-webkit-border-top-left-radius: 5px;
|
||||||
-webkit-border-top-right-radius: 5px;
|
-webkit-border-top-right-radius: 5px;
|
||||||
-moz-border-radius-topleft: 5px;
|
-moz-border-radius-topleft: 5px;
|
||||||
-moz-border-radius-topright: 5px;
|
-moz-border-radius-topright: 5px;
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-box.ui-box-small h3{
|
.ui-box.ui-box-small h3{
|
||||||
padding: 8px 10px;
|
padding: 8px 10px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.ui-box .data{padding: .5em 1em}
|
.ui-box .data{padding: .5em 1em}
|
||||||
|
|
||||||
.ui-box .buttons{background-color: #f7f8f9; padding: 1em;
|
.ui-box .buttons{background-color: #f7f8f9; padding: 1em;
|
||||||
-webkit-border-bottom-right-radius: 5px;
|
-webkit-border-bottom-right-radius: 5px;
|
||||||
-webkit-border-bottom-left-radius: 5px;
|
-webkit-border-bottom-left-radius: 5px;
|
||||||
-moz-border-radius-bottomright: 5px;
|
-moz-border-radius-bottomright: 5px;
|
||||||
-moz-border-radius-bottomleft: 5px;
|
-moz-border-radius-bottomleft: 5px;
|
||||||
border-bottom-right-radius: 5px;
|
border-bottom-right-radius: 5px;
|
||||||
border-bottom-left-radius: 5px;
|
border-bottom-left-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-box .buttons .button{padding: 8px 9px; font-size: 11px}
|
.ui-box .buttons .button{padding: 8px 9px; font-size: 11px}
|
||||||
|
|
||||||
.ui-box.hover:hover{box-shadow: 0 0 10px rgba(0,0,0,.1); border: 1px solid #ccc;
|
.ui-box.hover:hover{box-shadow: 0 0 10px rgba(0,0,0,.1); border: 1px solid #ccc;
|
||||||
|
|
||||||
-webkit-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
-webkit-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
||||||
-moz-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
-moz-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
||||||
-o-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
-o-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
||||||
transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* eo UI Box */
|
/* eo UI Box */
|
||||||
|
@ -244,62 +241,61 @@ input.button{margin-bottom: 1.5em}
|
||||||
body.login-page{background-color: #f1f1f1; padding-top: 10%}
|
body.login-page{background-color: #f1f1f1; padding-top: 10%}
|
||||||
|
|
||||||
.login-box{
|
.login-box{
|
||||||
width: 304px;
|
width: 304px;
|
||||||
position: relative;
|
position: relative;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
background: white;
|
background: white;
|
||||||
box-shadow: rgba(0, 0, 0, 0.07) 0 1px 0,white 0 2px 0,rgba(0, 0, 0, 0.07) 0 3px 0,white 0 4px 0, rgba(0, 0, 0, 0.07) 0 5px 0;
|
box-shadow: rgba(0, 0, 0, 0.07) 0 1px 0,white 0 2px 0,rgba(0, 0, 0, 0.07) 0 3px 0,white 0 4px 0, rgba(0, 0, 0, 0.07) 0 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-box .login-logo{
|
.login-box .login-logo{
|
||||||
margin: 10px 0 30px 0;
|
margin: 10px 0 30px 0;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-box input.text{background-color: #f1f1f1; font-size: 16px; border-radius: 0; padding: 14px 10px; width: 280px}
|
.login-box input.text{background-color: #f1f1f1; font-size: 16px; border-radius: 0; padding: 14px 10px; width: 280px}
|
||||||
|
|
||||||
.login-box input.text.top{
|
.login-box input.text.top{
|
||||||
-webkit-border-top-left-radius: 5px;
|
-webkit-border-top-left-radius: 5px;
|
||||||
-webkit-border-top-right-radius: 5px;
|
-webkit-border-top-right-radius: 5px;
|
||||||
-moz-border-radius-topleft: 5px;
|
-moz-border-radius-topleft: 5px;
|
||||||
-moz-border-radius-topright: 5px;
|
-moz-border-radius-topright: 5px;
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-box input.text.bottom{
|
.login-box input.text.bottom{
|
||||||
-webkit-border-bottom-right-radius: 5px;
|
-webkit-border-bottom-right-radius: 5px;
|
||||||
-webkit-border-bottom-left-radius: 5px;
|
-webkit-border-bottom-left-radius: 5px;
|
||||||
-moz-border-radius-bottomright: 5px;
|
-moz-border-radius-bottomright: 5px;
|
||||||
-moz-border-radius-bottomleft: 5px;
|
-moz-border-radius-bottomleft: 5px;
|
||||||
border-bottom-right-radius: 5px;
|
border-bottom-right-radius: 5px;
|
||||||
border-bottom-left-radius: 5px;
|
border-bottom-left-radius: 5px;
|
||||||
border-top: 0;
|
border-top: 0;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-box a.forgot{float: right; padding-top: 6px}
|
.login-box a.forgot{float: right; padding-top: 6px}
|
||||||
|
|
||||||
|
|
||||||
/* Icons */
|
/* Icons */
|
||||||
.directory, .file{
|
.directory, .file{
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
width: 14px;
|
width: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.directory{
|
.directory{
|
||||||
background: url('images.png') no-repeat -73px -26px;
|
background: url('images.png') no-repeat -73px -26px;
|
||||||
height: 11px;
|
height: 11px;
|
||||||
margin-bottom: -1px;
|
margin-bottom: -1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file{
|
.file{
|
||||||
background: url('images.png') no-repeat -114px -24px;
|
background: url('images.png') no-repeat -114px -24px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
margin-bottom: -3px;
|
margin-bottom: -3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* eo Icons*/
|
/* eo Icons*/
|
||||||
|
@ -315,7 +311,7 @@ body.login-page{background-color: #f1f1f1; padding-top: 10%}
|
||||||
textarea
|
textarea
|
||||||
{
|
{
|
||||||
border: 1px solid #FFBBBB;
|
border: 1px solid #FFBBBB;
|
||||||
background: #fff4f6;
|
background: #fff4f6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* eo Errors */
|
/* eo Errors */
|
||||||
|
@ -324,91 +320,84 @@ body.login-page{background-color: #f1f1f1; padding-top: 10%}
|
||||||
#container{background-color: white; overflow: hidden; }
|
#container{background-color: white; overflow: hidden; }
|
||||||
body.collapsed #container{margin: auto; width: 980px; border: 1px solid rgba(0,0,0,.22); border-top: 0; box-shadow: 0 0 0px 4px rgba(0,0,0,.04)}
|
body.collapsed #container{margin: auto; width: 980px; border: 1px solid rgba(0,0,0,.22); border-top: 0; box-shadow: 0 0 0px 4px rgba(0,0,0,.04)}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Header */
|
/* Header */
|
||||||
header{background: #474D57 url('bg-header.png') repeat-x bottom; z-index: 10000; height: 44px; padding: 10px 2% 6px 2%; position: relative}
|
header{background: #474D57 url('bg-header.png') repeat-x bottom; z-index: 10000; height: 44px; padding: 10px 2% 6px 2%; position: relative}
|
||||||
header a{color: white; text-shadow: 0 -1px 0 black}
|
header a{color: white; text-shadow: 0 -1px 0 black}
|
||||||
header a:hover{color: #f1f1f1}
|
header a:hover{color: #f1f1f1}
|
||||||
header h1{
|
header h1{
|
||||||
width: 65px;
|
width: 65px;
|
||||||
}
|
}
|
||||||
header h1.logo{margin: 0; padding: 0}
|
header h1.logo{margin: 0; padding: 0}
|
||||||
header h1.logo a{
|
header h1.logo a{
|
||||||
background: url('images.png') no-repeat -3px -7px;
|
background: url('images.png') no-repeat -3px -7px;
|
||||||
width: 65px;
|
width: 65px;
|
||||||
height: 26px;
|
height: 26px;
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
text-indent: -1000em;
|
text-indent: -1000em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
header nav{border-radius: 4px; box-shadow: 0 1px 2px black; width: 294px; margin: auto;
|
header nav{border-radius: 4px; box-shadow: 0 1px 2px black; width: 294px; margin: auto;
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#31363e));
|
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#31363e));
|
||||||
background-image: -webkit-linear-gradient(#595d63 6.6%, #31363e);
|
background-image: -webkit-linear-gradient(#595d63 6.6%, #31363e);
|
||||||
background-image: -moz-linear-gradient(#595d63 6.6%, #31363e);
|
background-image: -moz-linear-gradient(#595d63 6.6%, #31363e);
|
||||||
background-image: -o-linear-gradient(#595d63 6.6%, #31363e);
|
background-image: -o-linear-gradient(#595d63 6.6%, #31363e);
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
height:30px
|
height:30px
|
||||||
}
|
}
|
||||||
header nav a{padding: 8px 12px 8px 34px; display: inline-block; color: #D6DADF; border-right: 1px solid #31363E; position: relative; box-shadow: 1px 0 0 rgba(255,255,255,.1); margin: 0}
|
header nav a{padding: 8px 12px 8px 34px; display: inline-block; color: #D6DADF; border-right: 1px solid #31363E; position: relative; box-shadow: 1px 0 0 rgba(255,255,255,.1); margin: 0}
|
||||||
header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}
|
header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}
|
||||||
header nav a:last-child {border: 0; box-shadow: none}
|
header nav a:last-child {border: 0; box-shadow: none}
|
||||||
header nav a:hover, header nav a.current{
|
header nav a:hover, header nav a.current{
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#2c2f35));
|
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#2c2f35));
|
||||||
background-image: -webkit-linear-gradient(#595d63 6.6%, #2c2f35);
|
background-image: -webkit-linear-gradient(#595d63 6.6%, #2c2f35);
|
||||||
background-image: -moz-linear-gradient(#595d63 6.6%, #202227);
|
background-image: -moz-linear-gradient(#595d63 6.6%, #202227);
|
||||||
background-image: -o-linear-gradient(#595d63 6.6%, #202227);
|
background-image: -o-linear-gradient(#595d63 6.6%, #202227);
|
||||||
}
|
}
|
||||||
|
|
||||||
header nav a:active{
|
header nav a:active{
|
||||||
box-shadow: 0 1px 4px rgba(0,0,0,.8) inset;
|
box-shadow: 0 1px 4px rgba(0,0,0,.8) inset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
header nav a.dashboard {
|
header nav a.dashboard {
|
||||||
-webkit-border-top-left-radius: 4px;
|
-webkit-border-top-left-radius: 4px;
|
||||||
-webkit-border-bottom-left-radius: 4px;
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
-moz-border-radius-topleft: 4px;
|
-moz-border-radius-topleft: 4px;
|
||||||
-moz-border-radius-bottomleft: 4px;
|
-moz-border-radius-bottomleft: 4px;
|
||||||
border-top-left-radius: 4px;
|
border-top-left-radius: 4px;
|
||||||
border-bottom-left-radius: 4px;
|
border-bottom-left-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
header nav a.admin{
|
header nav a.admin{
|
||||||
-webkit-border-top-right-radius: 4px;
|
-webkit-border-top-right-radius: 4px;
|
||||||
-webkit-border-bottom-right-radius: 4px;
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
-moz-border-radius-topright: 4px;
|
-moz-border-radius-topright: 4px;
|
||||||
-moz-border-radius-bottomright: 4px;
|
-moz-border-radius-bottomright: 4px;
|
||||||
border-top-right-radius: 4px;
|
border-top-right-radius: 4px;
|
||||||
border-bottom-right-radius: 4px;
|
border-bottom-right-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
header .search{ display: inline-block; float: right; margin-right: 46px}
|
header .search{ display: inline-block; float: right; margin-right: 46px}
|
||||||
|
|
||||||
header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}
|
header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}
|
||||||
|
|
||||||
header nav a.dashboard span{background: url('images.png') no-repeat -161px 0;}
|
header nav a.dashboard span{background: url('images.png') no-repeat -161px 0;}
|
||||||
header nav a.admin span{background: url('images.png') no-repeat -184px 0;}
|
header nav a.admin span{background: url('images.png') no-repeat -184px 0;}
|
||||||
header nav a.project span{background: url('images.png') no-repeat -209px -1px; top: 7px}
|
header nav a.project span{background: url('images.png') no-repeat -209px -1px; top: 7px}
|
||||||
|
|
||||||
|
|
||||||
header .login-top{float: right; width: 180px;
|
header .login-top{float: right; width: 180px;
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 62, color-stop(0.032, #464c56), to(#363c45));
|
background-image: -webkit-gradient(linear, 0 0, 0 62, color-stop(0.032, #464c56), to(#363c45));
|
||||||
background-image: -webkit-linear-gradient(#464c56 3.2%, #363c45);
|
background-image: -webkit-linear-gradient(#464c56 3.2%, #363c45);
|
||||||
background-image: -moz-linear-gradient(#464c56 3.2%, #363c45);
|
background-image: -moz-linear-gradient(#464c56 3.2%, #363c45);
|
||||||
background-image: -o-linear-gradient(#464c56 3.2%, #363c45);
|
background-image: -o-linear-gradient(#464c56 3.2%, #363c45);
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
height: 44px;
|
height: 44px;
|
||||||
}
|
}
|
||||||
header .login-top a{display: block;}
|
header .login-top a{display: block;}
|
||||||
header .login-top a.pic{float: left; margin-right: 10px;
|
header .login-top a.pic{float: left; margin-right: 10px;
|
||||||
img{ height: 36px; width: 36px; border: 1px solid black}
|
img{ height: 36px; width: 36px; border: 1px solid black}
|
||||||
}
|
}
|
||||||
header .login-top a.username{margin-bottom: 5px}
|
header .login-top a.username{margin-bottom: 5px}
|
||||||
header .login-top a.logout{color: #ccc}
|
header .login-top a.logout{color: #ccc}
|
||||||
|
@ -419,12 +408,11 @@ header{margin-bottom: 0; clear: both; }
|
||||||
.page-title a.grey-button{float: right;}
|
.page-title a.grey-button{float: right;}
|
||||||
.right{float: right;}
|
.right{float: right;}
|
||||||
|
|
||||||
|
|
||||||
/* Account box */
|
/* 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{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: 38px; height: 38px; display: block; box-shadow: 0 1px 2px black}
|
header .account-box img{ border-radius: 4px; right: 20px; position: absolute; width: 38px; height: 38px; display: block; box-shadow: 0 1px 2px black}
|
||||||
header .account-box img:after{
|
header .account-box img:after{
|
||||||
content: " ";
|
content: " ";
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
@ -432,7 +420,7 @@ header .account-box img:after{
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
float: right;
|
float: right;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 1px solid rgba(255, 255, 255, .1);
|
border: 1px solid rgba(255, 255, 255, .1);
|
||||||
border-bottom: 0;
|
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: -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)));
|
||||||
|
@ -462,7 +450,6 @@ header .account-links:before {
|
||||||
z-index:10;
|
z-index:10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Inspired by http://maxvoltar.com/temp/nowplaying/ */
|
/* Inspired by http://maxvoltar.com/temp/nowplaying/ */
|
||||||
header .account-links{background: white; 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{background: white; 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: #666; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #eee}
|
header .account-links a{color: #666; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #eee}
|
||||||
|
@ -470,28 +457,28 @@ header .account-links a:hover{
|
||||||
background: #3aacec;
|
background: #3aacec;
|
||||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#39acec), to(#279ada), color-stop(.05, #4cbefe));
|
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#39acec), to(#279ada), color-stop(.05, #4cbefe));
|
||||||
background: -moz-linear-gradient(top, #39acec, #4cbefe 5%, #279ada);
|
background: -moz-linear-gradient(top, #39acec, #4cbefe 5%, #279ada);
|
||||||
background: linear-gradient(top, #39acec, #4cbefe 5%, #279ada);
|
background: linear-gradient(top, #39acec, #4cbefe 5%, #279ada);
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-shadow: #1488c8 0 -1px 0;
|
text-shadow: #1488c8 0 -1px 0;
|
||||||
}
|
}
|
||||||
.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute}
|
.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute}
|
||||||
header .account-links a:first-child{
|
header .account-links a:first-child{
|
||||||
-webkit-border-top-left-radius: 5px;
|
-webkit-border-top-left-radius: 5px;
|
||||||
-webkit-border-top-right-radius: 5px;
|
-webkit-border-top-right-radius: 5px;
|
||||||
-moz-border-radius-topleft: 5px;
|
-moz-border-radius-topleft: 5px;
|
||||||
-moz-border-radius-topright: 5px;
|
-moz-border-radius-topright: 5px;
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .account-links a:last-child{
|
header .account-links a:last-child{
|
||||||
-webkit-border-bottom-right-radius: 5px;
|
-webkit-border-bottom-right-radius: 5px;
|
||||||
-webkit-border-bottom-left-radius: 5px;
|
-webkit-border-bottom-left-radius: 5px;
|
||||||
-moz-border-radius-bottomright: 5px;
|
-moz-border-radius-bottomright: 5px;
|
||||||
-moz-border-radius-bottomleft: 5px;
|
-moz-border-radius-bottomleft: 5px;
|
||||||
border-bottom-right-radius: 5px;
|
border-bottom-right-radius: 5px;
|
||||||
border-bottom-left-radius: 5px;
|
border-bottom-left-radius: 5px;
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#no_ssh_key_defined {
|
#no_ssh_key_defined {
|
||||||
|
@ -509,13 +496,10 @@ input.search-input:focus{ background-color: white; width: 216px;}
|
||||||
input.search-input::-webkit-input-placeholder {color: #666}
|
input.search-input::-webkit-input-placeholder {color: #666}
|
||||||
/* eo Header */
|
/* eo Header */
|
||||||
|
|
||||||
|
|
||||||
h2.icon{position: relative; padding-left: 40px; float: left; }
|
h2.icon{position: relative; padding-left: 40px; float: left; }
|
||||||
/*h2 a{font-weight: normal;}*/
|
/*h2 a{font-weight: normal;}*/
|
||||||
h2.icon span{background: #E3E5EA url('images.png'); height: 32px; width: 32px; left: 0; top: -5px; border-radius: 4px; display: inline-block; position: absolute}
|
h2.icon span{background: #E3E5EA url('images.png'); height: 32px; width: 32px; left: 0; top: -5px; border-radius: 4px; display: inline-block; position: absolute}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Dashboard Page */
|
/* Dashboard Page */
|
||||||
html, body { height: 100%; }
|
html, body { height: 100%; }
|
||||||
|
|
||||||
|
@ -545,25 +529,22 @@ body.dashboard-page .news-feed .project-updates a.project-update span.update-aut
|
||||||
body.dashboard-page .news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
|
body.dashboard-page .news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
|
||||||
/* eo Dashboard Page */
|
/* eo Dashboard Page */
|
||||||
|
|
||||||
|
|
||||||
.grey-button.right{margin-top: 20px}
|
.grey-button.right{margin-top: 20px}
|
||||||
|
|
||||||
/* Project Page */
|
/* Project Page */
|
||||||
|
|
||||||
body.project-page h2.icon .project-name, body.project-page h2.icon d{border: 1px solid #eee; padding: 5px 30px 5px 10px; border-radius: 5px; position: relative;}
|
body.project-page h2.icon .project-name, body.project-page h2.icon d{border: 1px solid #eee; padding: 5px 30px 5px 10px; border-radius: 5px; position: relative;}
|
||||||
body.project-page h2.icon .project-name i.arrow{float: right;
|
body.project-page h2.icon .project-name i.arrow{float: right;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
top: 13px;
|
top: 13px;
|
||||||
display: block;
|
display: block;
|
||||||
background: url('images.png') no-repeat -97px -29px;
|
background: url('images.png') no-repeat -97px -29px;
|
||||||
width: 4px;
|
width: 4px;
|
||||||
height: 5px;
|
height: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.project-page h2.icon span{ background-position: -78px -68px; }
|
||||||
|
|
||||||
body.project-page h2.icon span{ background-position: -78px -68px; }
|
|
||||||
body.project-page .project-container{ position: relative; float: left; width: 100%; height: 100%; }
|
body.project-page .project-container{ position: relative; float: left; width: 100%; height: 100%; }
|
||||||
body.project-page .page-title{margin-bottom: 0}
|
body.project-page .page-title{margin-bottom: 0}
|
||||||
body.project-page .project-sidebar {width: 220px; left: 0; top: 0; height: 100%; bottom: 0; position: absolute; background-color: #f7f7f7; float: left; display: inline-block; background: #f7f7f7; padding: 20px 0 20px 2%; margin: 0; }
|
body.project-page .project-sidebar {width: 220px; left: 0; top: 0; height: 100%; bottom: 0; position: absolute; background-color: #f7f7f7; float: left; display: inline-block; background: #f7f7f7; padding: 20px 0 20px 2%; margin: 0; }
|
||||||
|
@ -575,18 +556,17 @@ body.projects-page input.text.git-url {margin:10px 0 0 }
|
||||||
|
|
||||||
.projects_selector:hover > .project-box{ -moz-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); -webkit-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); box-shadow:0px 0px 10px rgba(0, 0, 0, .1); }
|
.projects_selector:hover > .project-box{ -moz-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); -webkit-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); box-shadow:0px 0px 10px rgba(0, 0, 0, .1); }
|
||||||
|
|
||||||
|
|
||||||
body.project-page .project-sidebar aside{width: 219px}
|
body.project-page .project-sidebar aside{width: 219px}
|
||||||
body.project-page .project-sidebar aside a{display: block; position: relative; background: white; padding: 15px 10px; border-bottom: 1px solid #eee}
|
body.project-page .project-sidebar aside a{display: block; position: relative; background: white; padding: 15px 10px; border-bottom: 1px solid #eee}
|
||||||
body.project-page .project-sidebar aside a:first-child{
|
body.project-page .project-sidebar aside a:first-child{
|
||||||
-webkit-border-top-left-radius: 5px;
|
-webkit-border-top-left-radius: 5px;
|
||||||
-moz-border-radius-topleft: 5px;
|
-moz-border-radius-topleft: 5px;
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
}
|
}
|
||||||
.project-page .project-sidebar aside a:last-child{
|
.project-page .project-sidebar aside a:last-child{
|
||||||
-webkit-border-bottom-left-radius: 5px;
|
-webkit-border-bottom-left-radius: 5px;
|
||||||
-moz-border-radius-bottomleft: 5px;
|
-moz-border-radius-bottomleft: 5px;
|
||||||
border-bottom-left-radius: 5px;
|
border-bottom-left-radius: 5px;
|
||||||
}
|
}
|
||||||
body.project-page .project-sidebar aside a:hover{background-color: #eee;}
|
body.project-page .project-sidebar aside a:hover{background-color: #eee;}
|
||||||
body.project-page .project-sidebar aside a 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}
|
body.project-page .project-sidebar aside a 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}
|
||||||
|
@ -595,7 +575,7 @@ body.project-page .project-content{ padding: 20px; display: block; margin-left:
|
||||||
body.project-page .project-content h2{ margin-top: 6px}
|
body.project-page .project-content h2{ margin-top: 6px}
|
||||||
body.project-page .project-content .button.right{margin-left: 20px}
|
body.project-page .project-content .button.right{margin-left: 20px}
|
||||||
body.project-page table .commit a{color: #{$blue_link}}
|
body.project-page table .commit a{color: #{$blue_link}}
|
||||||
body.project-page table th, body.project-page table td{ border-bottom: 1px solid #DEE2E3;}
|
body.project-page table th, body.project-page table td{ border-bottom: 1px solid #DEE2E3;}
|
||||||
body.project-page .fixed{position: fixed; }
|
body.project-page .fixed{position: fixed; }
|
||||||
|
|
||||||
/* New project Page */
|
/* New project Page */
|
||||||
|
@ -606,32 +586,31 @@ body.project-page .fixed{position: fixed; }
|
||||||
/* Commit Page */
|
/* Commit Page */
|
||||||
body.project-page.commits-page .commit-info{float: right;}
|
body.project-page.commits-page .commit-info{float: right;}
|
||||||
body.project-page.commits-page .commit-info data{
|
body.project-page.commits-page .commit-info data{
|
||||||
padding: 4px 10px;
|
padding: 4px 10px;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
}
|
}
|
||||||
body.project-page.commits-page .commit-info data.commit-button{
|
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-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
|
||||||
background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
|
background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
|
||||||
background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
|
background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
|
||||||
background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
|
background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
|
||||||
box-shadow: 0 -1px 0 white inset;
|
box-shadow: 0 -1px 0 white inset;
|
||||||
display: block;
|
display: block;
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-right: 20px;
|
padding-right: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
body.project-page.commits-page .commit-button i{
|
body.project-page.commits-page .commit-button i{
|
||||||
background: url('images.png') no-repeat -138px -27px;
|
background: url('images.png') no-repeat -138px -27px;
|
||||||
width: 6px;
|
width: 6px;
|
||||||
height: 9px;
|
height: 9px;
|
||||||
float: right;
|
float: right;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 6px;
|
top: 6px;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
}
|
}
|
||||||
body.project-page.commits-page .commits-date {display: block; width: 100%; margin-bottom: 20px}
|
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 .commits-date .data {padding: 0}
|
||||||
|
@ -648,9 +627,6 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{
|
||||||
|
|
||||||
/* eo Project Page */
|
/* eo Project Page */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Projects Page */
|
/* Projects Page */
|
||||||
body.projects-page h2.icon span{background-position: -31px -70px;}
|
body.projects-page h2.icon span{background-position: -31px -70px;}
|
||||||
body.projects-page .project-box.ui-box .data .repository {margin-bottom: 20px}
|
body.projects-page .project-box.ui-box .data .repository {margin-bottom: 20px}
|
||||||
|
@ -659,7 +635,6 @@ body.projects-page .project-box{width: 100%; margin-bottom: 3em}
|
||||||
body.projects-page .browse-code{margin-right: 10px}
|
body.projects-page .browse-code{margin-right: 10px}
|
||||||
/* eo Projects Page */
|
/* eo Projects Page */
|
||||||
|
|
||||||
|
|
||||||
/* ==|== non-semantic helper classes ======================================== */
|
/* ==|== non-semantic helper classes ======================================== */
|
||||||
.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; }
|
.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; }
|
||||||
.ir br { display: none; }
|
.ir br { display: none; }
|
||||||
|
@ -671,28 +646,24 @@ body.projects-page .browse-code{margin-right: 10px}
|
||||||
.clearfix:after { clear: both; }
|
.clearfix:after { clear: both; }
|
||||||
.clearfix { zoom: 1; }
|
.clearfix { zoom: 1; }
|
||||||
|
|
||||||
|
|
||||||
/* ==|== media queries ====================================================== */
|
/* ==|== media queries ====================================================== */
|
||||||
|
|
||||||
@media only screen and (min-width: 480px) {
|
@media only screen and (min-width: 480px) {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 768px) {
|
@media only screen and (min-width: 768px) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ==|== print styles ======================================================= */
|
/* ==|== print styles ======================================================= */
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; }
|
* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; }
|
||||||
a, a:visited { text-decoration: underline; }
|
a, a:visited { text-decoration: underline; }
|
||||||
a[href]:after { content: " (" attr(href) ")"; }
|
a[href]:after { content: " (" attr(href) ")"; }
|
||||||
abbr[title]:after { content: " (" attr(title) ")"; }
|
abbr[title]:after { content: " (" attr(title) ")"; }
|
||||||
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
|
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
|
||||||
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
|
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
|
||||||
thead { display: table-header-group; }
|
thead { display: table-header-group; }
|
||||||
tr, img { page-break-inside: avoid; }
|
tr, img { page-break-inside: avoid; }
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.tags-list {
|
.tags-list {
|
||||||
padding : 0px 10px 10px 10px;
|
padding : 0px 10px 10px 10px;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tags-list a {
|
.tags-list a {
|
||||||
|
@ -15,7 +15,6 @@
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.small-tags a{
|
.small-tags a{
|
||||||
font-size: 9px;
|
font-size: 9px;
|
||||||
|
|
||||||
|
@ -26,10 +25,9 @@
|
||||||
background-color: #72bbdf;
|
background-color: #72bbdf;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.medium-tags a{
|
.medium-tags a{
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
|
||||||
|
@ -40,5 +38,5 @@
|
||||||
background-color: #72bbdf;
|
background-color: #72bbdf;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,8 +79,8 @@ class ApplicationController < ActionController::Base
|
||||||
elsif params[:last_id]
|
elsif params[:last_id]
|
||||||
@notes = @notes.where("id > ?", params[:last_id])
|
@notes = @notes.where("id > ?", params[:last_id])
|
||||||
elsif params[:first_id]
|
elsif params[:first_id]
|
||||||
@notes = @notes.where("id < ?", params[:first_id])
|
@notes = @notes.where("id < ?", params[:first_id])
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,10 +10,9 @@ class CommitsController < ApplicationController
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
before_filter :load_refs, :only => :index # load @branch, @tag & @ref
|
before_filter :load_refs, :only => :index # load @branch, @tag & @ref
|
||||||
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@repo = project.repo
|
@repo = project.repo
|
||||||
limit, offset = (params[:limit] || 20), (params[:offset] || 0)
|
limit, offset = (params[:limit] || 20), (params[:offset] || 0)
|
||||||
|
|
||||||
@commits = if params[:path]
|
@commits = if params[:path]
|
||||||
@repo.log(@ref, params[:path], :max_count => limit, :skip => offset)
|
@repo.log(@ref, params[:path], :max_count => limit, :skip => offset)
|
||||||
|
@ -24,6 +23,7 @@ class CommitsController < ApplicationController
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html # index.html.erb
|
format.html # index.html.erb
|
||||||
format.js
|
format.js
|
||||||
|
format.atom { render :layout => false }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class CommitsController < ApplicationController
|
||||||
@notes = project.commit_notes(@commit).fresh.limit(20)
|
@notes = project.commit_notes(@commit).fresh.limit(20)
|
||||||
@note = @project.build_commit_note(@commit)
|
@note = @project.build_commit_note(@commit)
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.js { respond_with_notes }
|
format.js { respond_with_notes }
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,6 +24,7 @@ class IssuesController < ApplicationController
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html # index.html.erb
|
format.html # index.html.erb
|
||||||
format.js
|
format.js
|
||||||
|
format.atom { render :layout => false }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -40,7 +41,7 @@ class IssuesController < ApplicationController
|
||||||
@notes = @issue.notes.inc_author.order("created_at DESC").limit(20)
|
@notes = @issue.notes.inc_author.order("created_at DESC").limit(20)
|
||||||
@note = @project.notes.new(:noteable => @issue)
|
@note = @project.notes.new(:noteable => @issue)
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.js { respond_with_notes }
|
format.js { respond_with_notes }
|
||||||
end
|
end
|
||||||
|
@ -97,7 +98,7 @@ class IssuesController < ApplicationController
|
||||||
else @project.issues.opened
|
else @project.issues.opened
|
||||||
end
|
end
|
||||||
|
|
||||||
@issues = @issues.where("title LIKE ? OR content LIKE ?", "%#{terms}%", "%#{terms}%") unless terms.blank?
|
@issues = @issues.where("title LIKE ?", "%#{terms}%") unless terms.blank?
|
||||||
|
|
||||||
render :partial => 'issues'
|
render :partial => 'issues'
|
||||||
end
|
end
|
||||||
|
|
|
@ -79,7 +79,7 @@ class ProjectsController < ApplicationController
|
||||||
@notes = @project.common_notes.order("created_at DESC")
|
@notes = @project.common_notes.order("created_at DESC")
|
||||||
@notes = @notes.fresh.limit(20)
|
@notes = @notes.fresh.limit(20)
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.js { respond_with_notes }
|
format.js { respond_with_notes }
|
||||||
end
|
end
|
||||||
|
@ -168,7 +168,7 @@ class ProjectsController < ApplicationController
|
||||||
|
|
||||||
def add_refs(commit, ref_cache)
|
def add_refs(commit, ref_cache)
|
||||||
if ref_cache.empty?
|
if ref_cache.empty?
|
||||||
@repo.refs.each do |ref|
|
@repo.refs.each do |ref|
|
||||||
ref_cache[ref.commit.id] ||= []
|
ref_cache[ref.commit.id] ||= []
|
||||||
ref_cache[ref.commit.id] << ref
|
ref_cache[ref.commit.id] << ref
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
class TagsController < ApplicationController
|
class TagsController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@tags = Project.tag_counts.order('count DESC')
|
@tags = Project.tag_counts.order('count DESC')
|
||||||
@tags = @tags.where('name like ?', "%#{params[:term]}%") unless params[:term].blank?
|
@tags = @tags.where('name like ?', "%#{params[:term]}%") unless params[:term].blank?
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.json { render json: @tags.limit(8).map {|t| t.name}}
|
format.json { render json: @tags.limit(8).map {|t| t.name}}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,7 +11,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def body_class(default_class = nil)
|
def body_class(default_class = nil)
|
||||||
main = content_for(:body_class).blank? ?
|
main = content_for(:body_class).blank? ?
|
||||||
default_class :
|
default_class :
|
||||||
content_for(:body_class)
|
content_for(:body_class)
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ module ApplicationHelper
|
||||||
else
|
else
|
||||||
"Never"
|
"Never"
|
||||||
end
|
end
|
||||||
rescue
|
rescue
|
||||||
"Never"
|
"Never"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ module DashboardHelper
|
||||||
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 "Grit::Commit" then project_commit_path(project, project.repo.commits(object.id).first)
|
when "Grit::Commit" then project_commit_path(project, project.repo.commits(object.id).first)
|
||||||
when "Note"
|
when "Note"
|
||||||
then
|
then
|
||||||
note = object
|
note = object
|
||||||
case note.noteable_type
|
case note.noteable_type
|
||||||
when "Issue" then project_issue_path(project, note.noteable_id)
|
when "Issue" then project_issue_path(project, note.noteable_id)
|
||||||
|
@ -12,9 +12,9 @@ module DashboardHelper
|
||||||
when "Commit" then project_commit_path(project, :id => note.noteable_id)
|
when "Commit" then project_commit_path(project, :id => note.noteable_id)
|
||||||
else wall_project_path(project)
|
else wall_project_path(project)
|
||||||
end
|
end
|
||||||
else wall_project_path(project)
|
else wall_project_path(project)
|
||||||
end
|
end
|
||||||
rescue
|
rescue
|
||||||
"#"
|
"#"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ class Issue < ActiveRecord::Base
|
||||||
validates_presence_of :author_id
|
validates_presence_of :author_id
|
||||||
|
|
||||||
delegate :name,
|
delegate :name,
|
||||||
:email,
|
:email,
|
||||||
:to => :author,
|
:to => :author,
|
||||||
:prefix => true
|
:prefix => true
|
||||||
|
|
||||||
validates :title,
|
validates :title,
|
||||||
|
|
|
@ -8,8 +8,8 @@ class Note < ActiveRecord::Base
|
||||||
:class_name => "User"
|
:class_name => "User"
|
||||||
|
|
||||||
delegate :name,
|
delegate :name,
|
||||||
:email,
|
:email,
|
||||||
:to => :author,
|
:to => :author,
|
||||||
:prefix => true
|
:prefix => true
|
||||||
|
|
||||||
attr_protected :author, :author_id
|
attr_protected :author, :author_id
|
||||||
|
|
|
@ -129,9 +129,9 @@ class Project < ActiveRecord::Base
|
||||||
private_flag
|
private_flag
|
||||||
end
|
end
|
||||||
|
|
||||||
def last_activity
|
def last_activity
|
||||||
updates(1).first
|
updates(1).first
|
||||||
rescue
|
rescue
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ class Project < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def updates(n = 3)
|
def updates(n = 3)
|
||||||
[
|
[
|
||||||
fresh_commits(n),
|
fresh_commits(n),
|
||||||
fresh_issues(n),
|
fresh_issues(n),
|
||||||
fresh_notes(n)
|
fresh_notes(n)
|
||||||
|
|
|
@ -9,7 +9,7 @@ class Repository
|
||||||
@project = project
|
@project = project
|
||||||
end
|
end
|
||||||
|
|
||||||
def path
|
def path
|
||||||
@path ||= project.path
|
@path ||= project.path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
class User < ActiveRecord::Base
|
class User < ActiveRecord::Base
|
||||||
# Include default devise modules. Others available are:
|
# Include default devise modules. Others available are:
|
||||||
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
|
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
|
||||||
devise :database_authenticatable,
|
devise :database_authenticatable, :token_authenticatable,
|
||||||
:recoverable, :rememberable, :trackable, :validatable
|
:recoverable, :rememberable, :trackable, :validatable
|
||||||
|
|
||||||
# Setup accessible (or protected) attributes for your model
|
# Setup accessible (or protected) attributes for your model
|
||||||
|
@ -25,6 +25,8 @@ class User < ActiveRecord::Base
|
||||||
:foreign_key => :assignee_id,
|
:foreign_key => :assignee_id,
|
||||||
:dependent => :destroy
|
:dependent => :destroy
|
||||||
|
|
||||||
|
before_create :ensure_authentication_token
|
||||||
|
alias_attribute :private_token, :authentication_token
|
||||||
scope :not_in_project, lambda { |project| where("id not in (:ids)", :ids => project.users.map(&:id) ) }
|
scope :not_in_project, lambda { |project| where("id not in (:ids)", :ids => project.users.map(&:id) ) }
|
||||||
|
|
||||||
def identifier
|
def identifier
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
= form_for [:admin, @admin_project] do |f|
|
= form_for [:admin, @admin_project] do |f|
|
||||||
-if @admin_project.errors.any?
|
-if @admin_project.errors.any?
|
||||||
#error_explanation
|
#error_explanation
|
||||||
%h2= "#{pluralize(@admin_project.errors.count, "error")} prohibited this admin_project from being saved:"
|
%h2= "#{pluralize(@admin_project.errors.count, "error")} prohibited this admin_project from being saved:"
|
||||||
%ul
|
%ul
|
||||||
- @admin_project.errors.full_messages.each do |msg|
|
- @admin_project.errors.full_messages.each do |msg|
|
||||||
%li= msg
|
%li= msg
|
||||||
|
@ -19,7 +19,6 @@
|
||||||
%br
|
%br
|
||||||
= f.text_field :path
|
= f.text_field :path
|
||||||
|
|
||||||
|
|
||||||
.form-row
|
.form-row
|
||||||
= f.label :tag_list
|
= f.label :tag_list
|
||||||
%br
|
%br
|
||||||
|
@ -36,4 +35,4 @@
|
||||||
:javascript
|
:javascript
|
||||||
$(function(){
|
$(function(){
|
||||||
taggifyForm();
|
taggifyForm();
|
||||||
})
|
})
|
||||||
|
|
23
app/views/commits/index.atom.builder
Normal file
23
app/views/commits/index.atom.builder
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
xml.instruct!
|
||||||
|
xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://search.yahoo.com/mrss/" do
|
||||||
|
xml.title "Recent commits to #{@project.name}:#{@ref}"
|
||||||
|
xml.link :href => project_commits_url(@project, :atom, :ref => @ref), :rel => "self", :type => "application/atom+xml"
|
||||||
|
xml.link :href => project_commits_url(@project), :rel => "alternate", :type => "text/html"
|
||||||
|
xml.id project_commits_url(@project)
|
||||||
|
xml.updated @commits.first.committed_date.strftime("%Y-%m-%dT%H:%M:%SZ") if @commits.any?
|
||||||
|
|
||||||
|
@commits.each do |commit|
|
||||||
|
xml.entry do
|
||||||
|
xml.id project_commit_url(@project, :id => commit.id)
|
||||||
|
xml.link :href => project_commit_url(@project, :id => commit.id)
|
||||||
|
xml.title truncate(commit.safe_message, :length => 80)
|
||||||
|
xml.updated commit.committed_date.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
xml.media :thumbnail, :width => "40", :height => "40", :url => gravatar_icon(commit.author_email)
|
||||||
|
xml.author do |author|
|
||||||
|
xml.name commit.author_name
|
||||||
|
xml.email commit.author_email
|
||||||
|
end
|
||||||
|
xml.summary commit.safe_message
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -6,7 +6,7 @@
|
||||||
%h2.icon
|
%h2.icon
|
||||||
%span
|
%span
|
||||||
%d
|
%d
|
||||||
= link_to project_commits_path(@project) do
|
= link_to project_commits_path(@project) do
|
||||||
= @project.name
|
= @project.name
|
||||||
- if params[:path]
|
- if params[:path]
|
||||||
\/
|
\/
|
||||||
|
@ -20,8 +20,6 @@
|
||||||
.loading{ :style => "display:none;"}
|
.loading{ :style => "display:none;"}
|
||||||
%center= image_tag "ajax-loader.gif"
|
%center= image_tag "ajax-loader.gif"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
$(function(){
|
$(function(){
|
||||||
CommitsList.init("#{@ref}", 20);
|
CommitsList.init("#{@ref}", 20);
|
||||||
|
|
|
@ -27,13 +27,13 @@
|
||||||
%a.project-update{:href => dashboard_feed_path(project, update)}
|
%a.project-update{:href => dashboard_feed_path(project, update)}
|
||||||
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
|
= image_tag gravatar_icon(update.author_email), :class => "left", :width => 40
|
||||||
%span.update-title
|
%span.update-title
|
||||||
- if update.kind_of?(Grit::Commit)
|
- if update.kind_of?(Grit::Commit)
|
||||||
%span.right.tag.commit= update.head.name
|
%span.right.tag.commit= update.head.name
|
||||||
= dashboard_feed_title(update)
|
= dashboard_feed_title(update)
|
||||||
%span.update-author
|
%span.update-author
|
||||||
%strong= update.author_name
|
%strong= update.author_name
|
||||||
authored
|
authored
|
||||||
= time_ago_in_words(update.created_at)
|
= time_ago_in_words(update.created_at)
|
||||||
ago
|
ago
|
||||||
/ #news-feed
|
/ #news-feed
|
||||||
/ #dashboard-content
|
/ #dashboard-content
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
- if can? current_user, :write_issue, issue
|
- if can? current_user, :write_issue, issue
|
||||||
- if issue.closed
|
- if issue.closed
|
||||||
= link_to 'Reopen', project_issue_path(@project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "cgray", :remote => true
|
= link_to 'Reopen', project_issue_path(@project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "cgray", :remote => true
|
||||||
- else
|
- else
|
||||||
= link_to 'Resolve', project_issue_path(@project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "cgray", :remote => true
|
= link_to 'Resolve', project_issue_path(@project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "cgray", :remote => true
|
||||||
- if can? current_user, :write_issue, issue
|
- if can? current_user, :write_issue, issue
|
||||||
= link_to 'Edit', edit_project_issue_path(@project, issue), :class => "cgray edit-issue-link", :remote => true
|
= link_to 'Edit', edit_project_issue_path(@project, issue), :class => "cgray edit-issue-link", :remote => true
|
||||||
|
|
23
app/views/issues/index.atom.builder
Normal file
23
app/views/issues/index.atom.builder
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
xml.instruct!
|
||||||
|
xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://search.yahoo.com/mrss/" do
|
||||||
|
xml.title "#{@project.name} issues"
|
||||||
|
xml.link :href => project_issues_url(@project, :atom), :rel => "self", :type => "application/atom+xml"
|
||||||
|
xml.link :href => project_issues_url(@project), :rel => "alternate", :type => "text/html"
|
||||||
|
xml.id project_issues_url(@project)
|
||||||
|
xml.updated @issues.first.created_at.strftime("%Y-%m-%dT%H:%M:%SZ") if @issues.any?
|
||||||
|
|
||||||
|
@issues.each do |issue|
|
||||||
|
xml.entry do
|
||||||
|
xml.id project_issue_url(@project, issue)
|
||||||
|
xml.link :href => project_issue_url(@project, issue)
|
||||||
|
xml.title truncate(issue.title, :length => 80)
|
||||||
|
xml.updated issue.created_at.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
xml.media :thumbnail, :width => "40", :height => "40", :url => gravatar_icon(issue.author_email)
|
||||||
|
xml.author do |author|
|
||||||
|
xml.name issue.author_name
|
||||||
|
xml.email issue.author_email
|
||||||
|
end
|
||||||
|
xml.summary issue.title
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -31,7 +31,6 @@
|
||||||
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){
|
var setIssueFilter = function(form, value){
|
||||||
$.cookie('issue_filter', value, { expires: 140 });
|
$.cookie('issue_filter', value, { expires: 140 });
|
||||||
form.submit();
|
form.submit();
|
||||||
|
|
|
@ -22,12 +22,12 @@
|
||||||
%td
|
%td
|
||||||
= image_tag gravatar_icon(@issue.assignee.email), :class => "left", :width => 40, :style => "padding:0 5px;"
|
= image_tag gravatar_icon(@issue.assignee.email), :class => "left", :width => 40, :style => "padding:0 5px;"
|
||||||
= @issue.assignee.name
|
= @issue.assignee.name
|
||||||
%tr
|
%tr
|
||||||
%td Tags
|
%td Tags
|
||||||
%td
|
%td
|
||||||
- if @issue.critical
|
- if @issue.critical
|
||||||
%span.tag.high critical
|
%span.tag.high critical
|
||||||
- else
|
- else
|
||||||
%span.tag.normal normal
|
%span.tag.normal normal
|
||||||
|
|
||||||
- if @issue.today?
|
- if @issue.today?
|
||||||
|
@ -42,7 +42,6 @@
|
||||||
- else
|
- else
|
||||||
= check_box_tag "closed", 1, @issue.closed, :disabled => true
|
= check_box_tag "closed", 1, @issue.closed, :disabled => true
|
||||||
|
|
||||||
|
|
||||||
- if can?(current_user, :write_issue, @issue)
|
- if can?(current_user, :write_issue, @issue)
|
||||||
.clear
|
.clear
|
||||||
%br
|
%br
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
<div class="account-links">
|
<div class="account-links">
|
||||||
<%= link_to profile_path, :class => "username" do %>
|
<%= link_to profile_path, :class => "username" do %>
|
||||||
<%#= current_user.name %>
|
<%#= current_user.name %>
|
||||||
My profile
|
My profile
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete %>
|
<%= link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete %>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
%aside
|
%aside
|
||||||
= link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil
|
= link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil
|
||||||
= link_to "Password", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil
|
= link_to "Password", 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 keys_path, :class => controller.controller_name == "keys" ? "current" : nil do
|
||||||
Keys
|
Keys
|
||||||
- unless current_user.keys.empty?
|
- unless current_user.keys.empty?
|
||||||
%span{ :class => "number" }= current_user.keys.count
|
%span{ :class => "number" }= current_user.keys.count
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
|
GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
|
||||||
= stylesheet_link_tag "application"
|
= stylesheet_link_tag "application"
|
||||||
= javascript_include_tag "application"
|
= javascript_include_tag "application"
|
||||||
|
- if current_page?(tree_project_path(@project)) || current_page?(project_commits_path(@project))
|
||||||
|
= auto_discovery_link_tag(:atom, project_commits_url(@project, :atom, :ref => @ref, :private_token => current_user.private_token), :title => "Recent commits to #{@project.name}:#{@ref}")
|
||||||
|
- 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")
|
||||||
= csrf_meta_tags
|
= csrf_meta_tags
|
||||||
= javascript_tag do
|
= javascript_tag do
|
||||||
REQ_URI = "#{request.env["REQUEST_URI"]}";
|
REQ_URI = "#{request.env["REQUEST_URI"]}";
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
%br
|
%br
|
||||||
%br
|
%br
|
||||||
= f.text_area :note, :size => 255
|
= f.text_area :note, :size => 255
|
||||||
|
|
||||||
%div.attach_holder
|
%div.attach_holder
|
||||||
%br
|
%br
|
||||||
= f.label :attachment
|
= f.label :attachment
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
:plain
|
:plain
|
||||||
NoteList.replace(#{@notes.last.id}, #{@notes.first.id}, "#{escape_javascript(render(:partial => 'notes/notes_list'))}");
|
NoteList.replace(#{@notes.last.id}, #{@notes.first.id}, "#{escape_javascript(render(:partial => 'notes/notes_list'))}");
|
||||||
|
|
||||||
|
|
||||||
- elsif params[:last_id]
|
- elsif params[:last_id]
|
||||||
:plain
|
:plain
|
||||||
NoteList.prepend(#{@notes.first.id}, "#{escape_javascript(render(:partial => 'notes/notes_list'))}");
|
NoteList.prepend(#{@notes.first.id}, "#{escape_javascript(render(:partial => 'notes/notes_list'))}");
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
ago
|
ago
|
||||||
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
|
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
|
||||||
= link_to "Remove", [@project, note], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-note right"
|
= link_to "Remove", [@project, note], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-note right"
|
||||||
|
|
||||||
%div.note-title
|
%div.note-title
|
||||||
= markdown(note.note)
|
= markdown(note.note)
|
||||||
- if note.attachment.url
|
- if note.attachment.url
|
||||||
|
|
|
@ -10,9 +10,7 @@
|
||||||
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
%td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
|
||||||
%td{:align => "left", :style => "padding: 20px 0 0;"}
|
%td{:align => "left", :style => "padding: 20px 0 0;"}
|
||||||
%h2{:style => "color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
%h2{:style => "color:#646464 !important; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
|
||||||
= link_to project_issue_url(@project, @issue) do
|
= link_to project_issue_url(@project, @issue), :title => @issue.title do
|
||||||
= "Issue ##{@issue.id.to_s}"
|
= "Issue ##{@issue.id.to_s}"
|
||||||
= truncate(@issue.title, :length => 45)
|
= truncate(@issue.title, :length => 45)
|
||||||
%br
|
%br
|
||||||
%cite{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
|
|
||||||
= @issue.content
|
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
%span.update-author
|
%span.update-author
|
||||||
%strong= update.author_name
|
%strong= update.author_name
|
||||||
authored
|
authored
|
||||||
= time_ago_in_words(update.created_at)
|
= time_ago_in_words(update.created_at)
|
||||||
ago
|
ago
|
||||||
.right
|
.right
|
||||||
- klass = update.class.to_s.split("::").last.downcase
|
- klass = update.class.to_s.split("::").last.downcase
|
||||||
%span.tag{ :class => klass }= klass
|
%span.tag{ :class => klass }= klass
|
||||||
- if update.kind_of?(Grit::Commit)
|
- if update.kind_of?(Grit::Commit)
|
||||||
%span.tag.commit= update.head.name
|
%span.tag.commit= update.head.name
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
= form_for(@project, :remote => true) do |f|
|
= form_for(@project, :remote => true) do |f|
|
||||||
%div.form_content
|
%div.form_content
|
||||||
- unless @project.new_record?
|
- unless @project.new_record?
|
||||||
%h2.icon
|
%h2.icon
|
||||||
%span
|
%span
|
||||||
= @project.name
|
= @project.name
|
||||||
- if @project.errors.any?
|
- if @project.errors.any?
|
||||||
|
@ -56,4 +56,4 @@
|
||||||
:javascript
|
:javascript
|
||||||
$(function(){
|
$(function(){
|
||||||
taggifyForm();
|
taggifyForm();
|
||||||
})
|
})
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
= project.name
|
= project.name
|
||||||
.small-tags= tag_list project
|
.small-tags= tag_list project
|
||||||
|
|
||||||
|
|
||||||
%td= truncate project.url_to_repo
|
%td= truncate project.url_to_repo
|
||||||
%td= project.code
|
%td= project.code
|
||||||
%td= check_box_tag "read", 1, project.readers.include?(current_user), :disabled => :disabled
|
%td= check_box_tag "read", 1, project.readers.include?(current_user), :disabled => :disabled
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
= form_tag destination, :method => :get, :class => "project-refs-form" do
|
= form_tag destination, :method => :get, :class => "project-refs-form" do
|
||||||
= select_tag "ref", grouped_options_refs, :onchange => "this.form.submit();", :class => "project-refs-select"
|
= select_tag "ref", grouped_options_refs, :onchange => "this.form.submit();", :class => "project-refs-select"
|
||||||
|
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
$(function(){
|
$(function(){
|
||||||
$('.project-refs-select').chosen();
|
$('.project-refs-select').chosen();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
- projects.each_with_index do |project, i|
|
- projects.each_with_index do |project, i|
|
||||||
%div.grid_1.projects_selector
|
%div.grid_1.projects_selector
|
||||||
%div{ :class => "project-box ui-box ui-box-big" }
|
%div{ :class => "project-box ui-box ui-box-big" }
|
||||||
= link_to project_path(project) do
|
= link_to project_path(project) do
|
||||||
%h3= truncate(project.name, :length => 20)
|
%h3= truncate(project.name, :length => 20)
|
||||||
.data
|
.data
|
||||||
%p.title.repository.git_url_wrapper
|
%p.title.repository.git_url_wrapper
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
-#%a.right.button{:href => "#"} Download
|
-#%a.right.button{:href => "#"} Download
|
||||||
-#-if can? current_user, :admin_project, @project
|
-#-if can? current_user, :admin_project, @project
|
||||||
%a.right.button.blue{:href => "#"} EDIT
|
%a.right.button.blue{:href => "#"} EDIT
|
||||||
|
@ -6,7 +5,7 @@
|
||||||
%h2.icon
|
%h2.icon
|
||||||
%span
|
%span
|
||||||
%d
|
%d
|
||||||
= link_to tree_project_path(@project, :path => nil, :commit_id => @commit.try(:id)), :remote => true do
|
= link_to tree_project_path(@project, :path => nil, :commit_id => @commit.try(:id)), :remote => true do
|
||||||
= @project.name
|
= @project.name
|
||||||
- if params[:path]
|
- if params[:path]
|
||||||
- part_path = ""
|
- part_path = ""
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.grid_4
|
.grid_4
|
||||||
- if current_user.can_create_project?
|
- if current_user.can_create_project?
|
||||||
%a.grey-button.right{:href => new_project_path} Create new project
|
%a.grey-button.right{:href => new_project_path} Create new project
|
||||||
%h2.icon
|
%h2.icon
|
||||||
%span
|
%span
|
||||||
Projects
|
Projects
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
- content_for(:body_class, "new-project-page")
|
- content_for(:body_class, "new-project-page")
|
||||||
- content_for(:page_title) do
|
- content_for(:page_title) do
|
||||||
.new-project-hodler
|
.new-project-hodler
|
||||||
.container
|
.container
|
||||||
%h2.icon
|
%h2.icon
|
||||||
%span
|
%span
|
||||||
New Project
|
New Project
|
||||||
|
|
||||||
%div.clear
|
%div.clear
|
||||||
= render 'form'
|
= render 'form'
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
%table.round-borders#snippets-table
|
%table.round-borders#snippets-table
|
||||||
%thead
|
%thead
|
||||||
%th
|
%th
|
||||||
= render @snippets.fresh
|
= render @snippets.fresh
|
||||||
:javascript
|
:javascript
|
||||||
$('.delete-snippet').live('ajax:success', function() {
|
$('.delete-snippet').live('ajax:success', function() {
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
- content_for(:body_class, "projects-page")
|
- content_for(:body_class, "projects-page")
|
||||||
- content_for(:page_title) do
|
- content_for(:page_title) do
|
||||||
.grid_4
|
.grid_4
|
||||||
%h2
|
%h2
|
||||||
Tags
|
Tags
|
||||||
|
|
||||||
|
|
||||||
.tags-list
|
.tags-list
|
||||||
- @tags.all.each do |tag|
|
- @tags.all.each do |tag|
|
||||||
= link_to "#{tag.name}(#{tag.count})", tag_path(name)
|
= link_to "#{tag.name}(#{tag.count})", tag_path(name)
|
||||||
|
|
||||||
|
|
|
@ -158,11 +158,11 @@ Devise.setup do |config|
|
||||||
|
|
||||||
# ==> Configuration for :token_authenticatable
|
# ==> Configuration for :token_authenticatable
|
||||||
# Defines name of the authentication token params key
|
# Defines name of the authentication token params key
|
||||||
# config.token_authentication_key = :auth_token
|
config.token_authentication_key = :private_token
|
||||||
|
|
||||||
# If true, authentication through token does not store user in session and needs
|
# If true, authentication through token does not store user in session and needs
|
||||||
# to be supplied on each request. Useful if you are using the token as API token.
|
# to be supplied on each request. Useful if you are using the token as API token.
|
||||||
# config.stateless_token = false
|
config.stateless_token = true
|
||||||
|
|
||||||
# ==> Scopes configuration
|
# ==> Scopes configuration
|
||||||
# Turn scoped views on. Before rendering "sessions/new", it will first check for
|
# Turn scoped views on. Before rendering "sessions/new", it will first check for
|
||||||
|
|
|
@ -3,7 +3,6 @@ Gitlab::Application.routes.draw do
|
||||||
get 'tags'=> 'tags#index'
|
get 'tags'=> 'tags#index'
|
||||||
get 'tags/:tag' => 'projects#index'
|
get 'tags/:tag' => 'projects#index'
|
||||||
|
|
||||||
|
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
resources :users
|
resources :users
|
||||||
resources :projects
|
resources :projects
|
||||||
|
@ -53,10 +52,8 @@ Gitlab::Application.routes.draw do
|
||||||
resources :team_members
|
resources :team_members
|
||||||
resources :issues do
|
resources :issues do
|
||||||
collection do
|
collection do
|
||||||
post :sort
|
post :sort
|
||||||
end
|
get :search
|
||||||
collection do
|
|
||||||
get :search
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
resources :notes, :only => [:create, :destroy]
|
resources :notes, :only => [:create, :destroy]
|
||||||
|
|
|
@ -15,16 +15,16 @@ class IssueContenToNote < ActiveRecord::Migration
|
||||||
if note.save
|
if note.save
|
||||||
issue.update_attributes(:content => nil)
|
issue.update_attributes(:content => nil)
|
||||||
print "."
|
print "."
|
||||||
else
|
else
|
||||||
print "F"
|
print "F"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
total = Issue.where("content is not null").count
|
total = Issue.where("content is not null").count
|
||||||
|
|
||||||
if total > 0
|
if total > 0
|
||||||
puts "content of #{total} issues were not migrated"
|
puts "content of #{total} issues were not migrated"
|
||||||
else
|
else
|
||||||
puts "Done"
|
puts "Done"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
9
db/migrate/20111111093150_remove_content_from_issues.rb
Normal file
9
db/migrate/20111111093150_remove_content_from_issues.rb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
class RemoveContentFromIssues < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
remove_column :issues, :content
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
add_column :issues, :content, :text
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddAuthenticationTokenToUsers < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :users, :authentication_token, :string
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,11 +11,10 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20111101222453) do
|
ActiveRecord::Schema.define(:version => 20111115063954) do
|
||||||
|
|
||||||
create_table "issues", :force => true do |t|
|
create_table "issues", :force => true do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.text "content"
|
|
||||||
t.integer "assignee_id"
|
t.integer "assignee_id"
|
||||||
t.integer "author_id"
|
t.integer "author_id"
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
|
@ -104,6 +103,7 @@ ActiveRecord::Schema.define(:version => 20111101222453) do
|
||||||
t.string "skype", :default => "", :null => false
|
t.string "skype", :default => "", :null => false
|
||||||
t.string "linkedin", :default => "", :null => false
|
t.string "linkedin", :default => "", :null => false
|
||||||
t.string "twitter", :default => "", :null => false
|
t.string "twitter", :default => "", :null => false
|
||||||
|
t.string "authentication_token"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
||||||
|
|
|
@ -39,7 +39,7 @@ function branchGraph(holder) {
|
||||||
var cuday = 0, cumonth = "";
|
var cuday = 0, cumonth = "";
|
||||||
r.rect(0, 0, days.length * 20 + 20, 20).attr({fill: "#474D57"});
|
r.rect(0, 0, days.length * 20 + 20, 20).attr({fill: "#474D57"});
|
||||||
r.rect(0, 20, days.length * 20 + 20, 20).attr({fill: "#f7f7f7"});
|
r.rect(0, 20, days.length * 20 + 20, 20).attr({fill: "#f7f7f7"});
|
||||||
|
|
||||||
for (mm = 0; mm < days.length; mm++) {
|
for (mm = 0; mm < days.length; mm++) {
|
||||||
if(days[mm] != null){
|
if(days[mm] != null){
|
||||||
if(cuday != days[mm][0]){
|
if(cuday != days[mm][0]){
|
||||||
|
@ -50,7 +50,7 @@ function branchGraph(holder) {
|
||||||
r.text(10 + mm * 20, 10, days[mm][1]).attr({font: "12px Fontin-Sans, Arial", fill: "#444"});
|
r.text(10 + mm * 20, 10, days[mm][1]).attr({font: "12px Fontin-Sans, Arial", fill: "#444"});
|
||||||
cumonth = days[mm][1]
|
cumonth = days[mm][1]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = 0; i < ii; i++) {
|
for (i = 0; i < ii; i++) {
|
||||||
|
@ -65,7 +65,7 @@ function branchGraph(holder) {
|
||||||
}
|
}
|
||||||
var t = r.text(x+5, y+5, shortrefs).attr({font: "12px Fontin-Sans, Arial", fill: "#666",
|
var t = r.text(x+5, y+5, shortrefs).attr({font: "12px Fontin-Sans, Arial", fill: "#666",
|
||||||
title: longrefs, cursor: "pointer", rotation: "90"});
|
title: longrefs, cursor: "pointer", rotation: "90"});
|
||||||
|
|
||||||
var textbox = t.getBBox();
|
var textbox = t.getBBox();
|
||||||
t.translate(textbox.height/-4,textbox.width/2);
|
t.translate(textbox.height/-4,textbox.width/2);
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ function branchGraph(holder) {
|
||||||
if (c.space == commits[i].space) {
|
if (c.space == commits[i].space) {
|
||||||
r.path("M" + (x - 5) + "," + (y + .0001) + "L" + (15 + 20 * c.time) + "," + (y + .0001))
|
r.path("M" + (x - 5) + "," + (y + .0001) + "L" + (15 + 20 * c.time) + "," + (y + .0001))
|
||||||
.attr({stroke: colors[c.space], "stroke-width": 2});
|
.attr({stroke: colors[c.space], "stroke-width": 2});
|
||||||
|
|
||||||
} else if (c.space < commits[i].space) {
|
} else if (c.space < commits[i].space) {
|
||||||
r.path(["M", x - 5, y + .0001, "l-5-2,0,4,5,-2C",x-5,y,x -17, y+2, x -20, y-10,"L", cx,y-10,cx , cy])
|
r.path(["M", x - 5, y + .0001, "l-5-2,0,4,5,-2C",x-5,y,x -17, y+2, x -20, y-10,"L", cx,y-10,cx , cy])
|
||||||
.attr({stroke: colors[commits[i].space], "stroke-width": 2});
|
.attr({stroke: colors[commits[i].space], "stroke-width": 2});
|
||||||
|
|
|
@ -12,20 +12,20 @@ class GraphCommit
|
||||||
@_commit.send(m, *args, &block)
|
@_commit.send(m, *args, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Method is adding time and space on the
|
# Method is adding time and space on the
|
||||||
# list of commits. As well as returns date list
|
# list of commits. As well as returns date list
|
||||||
# corelated with time set on commits.
|
# corelated with time set on commits.
|
||||||
#
|
#
|
||||||
# @param [Array<GraphCommit>] comits to index
|
# @param [Array<GraphCommit>] comits to index
|
||||||
#
|
#
|
||||||
# @return [Array<TimeDate>] list of commit dates corelated with time on commits
|
# @return [Array<TimeDate>] list of commit dates corelated with time on commits
|
||||||
def self.index_commits(commits)
|
def self.index_commits(commits)
|
||||||
days, heads = [], []
|
days, heads = [], []
|
||||||
map = {}
|
map = {}
|
||||||
|
|
||||||
commits.reverse.each_with_index do |c,i|
|
commits.reverse.each_with_index do |c,i|
|
||||||
c.time = i
|
c.time = i
|
||||||
days[i] = c.committed_date
|
days[i] = c.committed_date
|
||||||
map[c.id] = c
|
map[c.id] = c
|
||||||
heads += c.refs unless c.refs.nil?
|
heads += c.refs unless c.refs.nil?
|
||||||
end
|
end
|
||||||
|
@ -35,7 +35,7 @@ class GraphCommit
|
||||||
heads.sort! do |a,b|
|
heads.sort! do |a,b|
|
||||||
if a.name == "master"
|
if a.name == "master"
|
||||||
-1
|
-1
|
||||||
elsif b.name == "master"
|
elsif b.name == "master"
|
||||||
1
|
1
|
||||||
else
|
else
|
||||||
b.commit.committed_date <=> a.commit.committed_date
|
b.commit.committed_date <=> a.commit.committed_date
|
||||||
|
@ -45,7 +45,7 @@ class GraphCommit
|
||||||
j = 0
|
j = 0
|
||||||
heads.each do |h|
|
heads.each do |h|
|
||||||
if map.include? h.commit.id then
|
if map.include? h.commit.id then
|
||||||
j = mark_chain(j+=1, map[h.commit.id], map)
|
j = mark_chain(j+=1, map[h.commit.id], map)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
days
|
days
|
||||||
|
@ -55,15 +55,15 @@ class GraphCommit
|
||||||
#
|
#
|
||||||
# @param [Fixnum] space (row on the graph) to be set
|
# @param [Fixnum] space (row on the graph) to be set
|
||||||
# @param [GraphCommit] the commit object.
|
# @param [GraphCommit] the commit object.
|
||||||
# @param [Hash<String,GraphCommit>] map of commits
|
# @param [Hash<String,GraphCommit>] map of commits
|
||||||
#
|
#
|
||||||
# @return [Fixnum] max space used.
|
# @return [Fixnum] max space used.
|
||||||
def self.mark_chain(mark, commit, map)
|
def self.mark_chain(mark, commit, map)
|
||||||
commit.space = mark if commit.space == 0
|
commit.space = mark if commit.space == 0
|
||||||
m1 = mark - 1
|
m1 = mark - 1
|
||||||
marks = commit.parents.collect do |p|
|
marks = commit.parents.collect do |p|
|
||||||
if map.include? p.id and map[p.id].space == 0 then
|
if map.include? p.id and map[p.id].space == 0 then
|
||||||
mark_chain(m1 += 1, map[p.id],map)
|
mark_chain(m1 += 1, map[p.id],map)
|
||||||
else
|
else
|
||||||
m1 + 1
|
m1 + 1
|
||||||
end
|
end
|
||||||
|
@ -71,5 +71,5 @@ class GraphCommit
|
||||||
marks << mark
|
marks << mark
|
||||||
marks.compact.max
|
marks.compact.max
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -62,10 +62,10 @@ describe Project do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "updates" do
|
describe "updates" do
|
||||||
let(:project) { Factory :project }
|
let(:project) { Factory :project }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@issue = Factory :issue,
|
@issue = Factory :issue,
|
||||||
:project => project,
|
:project => project,
|
||||||
:author => Factory(:user),
|
:author => Factory(:user),
|
||||||
|
@ -86,10 +86,10 @@ describe Project do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "last_activity" do
|
describe "last_activity" do
|
||||||
let(:project) { Factory :project }
|
let(:project) { Factory :project }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@note = Factory :note,
|
@note = Factory :note,
|
||||||
:project => project,
|
:project => project,
|
||||||
:author => Factory(:user)
|
:author => Factory(:user)
|
||||||
|
@ -99,7 +99,7 @@ describe Project do
|
||||||
it { project.last_activity_date.to_s.should == @note.created_at.to_s }
|
it { project.last_activity_date.to_s.should == @note.created_at.to_s }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "fresh commits" do
|
describe "fresh commits" do
|
||||||
let(:project) { Factory :project }
|
let(:project) { Factory :project }
|
||||||
|
|
||||||
it { project.fresh_commits(3).count.should == 3 }
|
it { project.fresh_commits(3).count.should == 3 }
|
||||||
|
|
|
@ -19,15 +19,20 @@ describe User do
|
||||||
user.identifier.should == "test_mail.com"
|
user.identifier.should == "test_mail.com"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should have authentication token" do
|
||||||
|
user = Factory(:user)
|
||||||
|
user.authentication_token.should_not == ""
|
||||||
|
end
|
||||||
|
|
||||||
describe "dependent" do
|
describe "dependent" do
|
||||||
before do
|
before do
|
||||||
@user = Factory :user
|
@user = Factory :user
|
||||||
@note = Factory :note,
|
@note = Factory :note,
|
||||||
:author => @user,
|
:author => @user,
|
||||||
:project => Factory(:project)
|
:project => Factory(:project)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should destroy all notes with user" do
|
it "should destroy all notes with user" do
|
||||||
Note.find_by_id(@note.id).should_not be_nil
|
Note.find_by_id(@note.id).should_not be_nil
|
||||||
@user.destroy
|
@user.destroy
|
||||||
Note.find_by_id(@note.id).should be_nil
|
Note.find_by_id(@note.id).should be_nil
|
||||||
|
|
|
@ -25,6 +25,25 @@ describe "Commits" do
|
||||||
page.should have_content(commit.author)
|
page.should have_content(commit.author)
|
||||||
page.should have_content(commit.message)
|
page.should have_content(commit.message)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should render atom feed" do
|
||||||
|
visit project_commits_path(project, :atom)
|
||||||
|
|
||||||
|
page.response_headers['Content-Type'].should have_content("application/atom+xml")
|
||||||
|
page.body.should have_selector("title", :text => "Recent commits to #{project.name}")
|
||||||
|
page.body.should have_selector("author email", :text => commit.author_email)
|
||||||
|
page.body.should have_selector("entry summary", :text => commit.message)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should render atom feed via private token" do
|
||||||
|
logout
|
||||||
|
visit project_commits_path(project, :atom, :private_token => @user.private_token)
|
||||||
|
|
||||||
|
page.response_headers['Content-Type'].should have_content("application/atom+xml")
|
||||||
|
page.body.should have_selector("title", :text => "Recent commits to #{project.name}")
|
||||||
|
page.body.should have_selector("author email", :text => commit.author_email)
|
||||||
|
page.body.should have_selector("entry summary", :text => commit.message)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET /commits/:id" do
|
describe "GET /commits/:id" do
|
||||||
|
|
|
@ -15,13 +15,13 @@ describe "Dashboard" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should have projects panel" do
|
it "should have projects panel" do
|
||||||
within ".project-list" do
|
within ".project-list" do
|
||||||
page.should have_content(@project.name)
|
page.should have_content(@project.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should have news feed" do
|
it "should have news feed" do
|
||||||
within "#news-feed" do
|
within "#news-feed" do
|
||||||
page.should have_content("master")
|
page.should have_content("master")
|
||||||
page.should have_content(@project.commit.author.name)
|
page.should have_content(@project.commit.author.name)
|
||||||
page.should have_content(@project.commit.safe_message)
|
page.should have_content(@project.commit.safe_message)
|
||||||
|
|
|
@ -27,6 +27,25 @@ describe "Issues" do
|
||||||
it { should have_content(@issue.project.name) }
|
it { should have_content(@issue.project.name) }
|
||||||
it { should have_content(@issue.assignee.name) }
|
it { should have_content(@issue.assignee.name) }
|
||||||
|
|
||||||
|
it "should render atom feed" do
|
||||||
|
visit project_issues_path(project, :atom)
|
||||||
|
|
||||||
|
page.response_headers['Content-Type'].should have_content("application/atom+xml")
|
||||||
|
page.body.should have_selector("title", :text => "#{project.name} issues")
|
||||||
|
page.body.should have_selector("author email", :text => @issue.author_email)
|
||||||
|
page.body.should have_selector("entry summary", :text => @issue.title)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should render atom feed via private token" do
|
||||||
|
logout
|
||||||
|
visit project_issues_path(project, :atom, :private_token => @user.private_token)
|
||||||
|
|
||||||
|
page.response_headers['Content-Type'].should have_content("application/atom+xml")
|
||||||
|
page.body.should have_selector("title", :text => "#{project.name} issues")
|
||||||
|
page.body.should have_selector("author email", :text => @issue.author_email)
|
||||||
|
page.body.should have_selector("entry summary", :text => @issue.title)
|
||||||
|
end
|
||||||
|
|
||||||
describe "Destroy" do
|
describe "Destroy" do
|
||||||
before do
|
before do
|
||||||
# admin access to remove issue
|
# admin access to remove issue
|
||||||
|
@ -81,13 +100,13 @@ describe "Issues" do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "fill in" do
|
describe "fill in" do
|
||||||
describe 'assign to me' do
|
describe 'assign to me' do
|
||||||
before do
|
before do
|
||||||
fill_in "issue_title", :with => "bug 345"
|
fill_in "issue_title", :with => "bug 345"
|
||||||
click_link "Select user"
|
click_link "Select user"
|
||||||
within "#issue_assignee_id-menu" do
|
within "#issue_assignee_id-menu" do
|
||||||
click_link @user.name
|
click_link @user.name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect { click_button "Save" }.to change {Issue.count}.by(1) }
|
it { expect { click_button "Save" }.to change {Issue.count}.by(1) }
|
||||||
|
@ -107,13 +126,13 @@ describe "Issues" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'assign to other' do
|
describe 'assign to other' do
|
||||||
before do
|
before do
|
||||||
fill_in "issue_title", :with => "bug 345"
|
fill_in "issue_title", :with => "bug 345"
|
||||||
click_link "Select user"
|
click_link "Select user"
|
||||||
within "#issue_assignee_id-menu" do
|
within "#issue_assignee_id-menu" do
|
||||||
click_link @user2.name
|
click_link @user2.name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect { click_button "Save" }.to change {Issue.count}.by(1) }
|
it { expect { click_button "Save" }.to change {Issue.count}.by(1) }
|
||||||
|
@ -145,7 +164,7 @@ describe "Issues" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "Show issue" do
|
describe "Show issue" do
|
||||||
before do
|
before do
|
||||||
@issue = Factory :issue,
|
@issue = Factory :issue,
|
||||||
:author => @user,
|
:author => @user,
|
||||||
|
@ -205,7 +224,7 @@ describe "Issues" do
|
||||||
@issue.save
|
@issue.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should be able to search on different statuses" do
|
it "should be able to search on different statuses" do
|
||||||
@issue = Issue.first
|
@issue = Issue.first
|
||||||
@issue.closed = true
|
@issue.closed = true
|
||||||
|
@ -214,13 +233,13 @@ describe "Issues" do
|
||||||
visit project_issues_path(project)
|
visit project_issues_path(project)
|
||||||
choose 'closed_issues'
|
choose 'closed_issues'
|
||||||
fill_in 'issue_search', :with => 'foobar'
|
fill_in 'issue_search', :with => 'foobar'
|
||||||
|
|
||||||
page.should have_content 'foobar'
|
page.should have_content 'foobar'
|
||||||
page.should_not have_content 'foobar2'
|
page.should_not have_content 'foobar2'
|
||||||
page.should_not have_content 'gitlab'
|
page.should_not have_content 'gitlab'
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should search for term and return the correct results" do
|
it "should search for term and return the correct results" do
|
||||||
visit project_issues_path(project)
|
visit project_issues_path(project)
|
||||||
fill_in 'issue_search', :with => 'foobar'
|
fill_in 'issue_search', :with => 'foobar'
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ describe "Projects" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should beahave like activities page" do
|
it "should beahave like activities page" do
|
||||||
within ".project-update" do
|
within ".project-update" do
|
||||||
page.should have_content("master")
|
page.should have_content("master")
|
||||||
page.should have_content(@project.commit.author.name)
|
page.should have_content(@project.commit.author.name)
|
||||||
page.should have_content(@project.commit.safe_message)
|
page.should have_content(@project.commit.safe_message)
|
||||||
|
|
|
@ -10,7 +10,6 @@ describe "Tags" do
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
|
|
||||||
|
|
||||||
describe "GET '/tags.json'" do
|
describe "GET '/tags.json'" do
|
||||||
before do
|
before do
|
||||||
@project = Factory :project
|
@project = Factory :project
|
||||||
|
@ -20,12 +19,9 @@ describe "Tags" do
|
||||||
visit '/tags.json'
|
visit '/tags.json'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
it "should contains tags" do
|
it "should contains tags" do
|
||||||
page.should have_content('demo1')
|
page.should have_content('demo1')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,7 +7,7 @@ describe "Top Panel", :js => true do
|
||||||
before do
|
before do
|
||||||
visit projects_path
|
visit projects_path
|
||||||
fill_in "search", :with => "Ke"
|
fill_in "search", :with => "Ke"
|
||||||
within ".ui-autocomplete" do
|
within ".ui-autocomplete" do
|
||||||
find(:xpath, "//a[.=\"Keys\"]").click
|
find(:xpath, "//a[.=\"Keys\"]").click
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -24,7 +24,7 @@ describe "Top Panel", :js => true do
|
||||||
visit project_path(@project)
|
visit project_path(@project)
|
||||||
|
|
||||||
fill_in "search", :with => "Commi"
|
fill_in "search", :with => "Commi"
|
||||||
within ".ui-autocomplete" do
|
within ".ui-autocomplete" do
|
||||||
find(:xpath, "//a[.=\"#{@project.code} / Commits\"]").click
|
find(:xpath, "//a[.=\"#{@project.code} / Commits\"]").click
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue