mirror of
https://github.com/harness/drone.git
synced 2025-05-17 01:20:13 +08:00
updated css styles & angular
This commit is contained in:
parent
c6b880c272
commit
c8590391e9
@ -6,8 +6,6 @@ env:
|
|||||||
- PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
- PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
||||||
script:
|
script:
|
||||||
- sudo apt-get -y install libsqlite3-dev sqlite3 1> /dev/null 2> /dev/null
|
- sudo apt-get -y install libsqlite3-dev sqlite3 1> /dev/null 2> /dev/null
|
||||||
- sudo npm install -g uglify-js
|
|
||||||
- sudo npm install -g less
|
|
||||||
- make deps
|
- make deps
|
||||||
- make build
|
- make build
|
||||||
- make test
|
- make test
|
||||||
|
2
Makefile
2
Makefile
@ -30,7 +30,7 @@ clean:
|
|||||||
#@find . -name '*.css' -delete
|
#@find . -name '*.css' -delete
|
||||||
@rm -r debian/drone/usr/local/bin debian/drone.deb server/server client/client server/template/html
|
@rm -r debian/drone/usr/local/bin debian/drone.deb server/server client/client server/template/html
|
||||||
|
|
||||||
dpkg: lessc rice build deb
|
dpkg: rice build deb
|
||||||
|
|
||||||
# embeds content in go source code so that it is compiled
|
# embeds content in go source code so that it is compiled
|
||||||
# and packaged inside the go binary file.
|
# and packaged inside the go binary file.
|
||||||
|
@ -51,6 +51,7 @@ func init() {
|
|||||||
log.SetSuffix("\033[0m\n")
|
log.SetSuffix("\033[0m\n")
|
||||||
log.SetOutput(os.Stdout)
|
log.SetOutput(os.Stdout)
|
||||||
log.SetPriority(log.LOG_NOTICE)
|
log.SetPriority(log.LOG_NOTICE)
|
||||||
|
docker.Logging = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -144,6 +145,11 @@ func run(path string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove deploy & publish sections
|
||||||
|
// for now, until I fix bug
|
||||||
|
s.Publish = nil
|
||||||
|
s.Deploy = nil
|
||||||
|
|
||||||
// get the repository root directory
|
// get the repository root directory
|
||||||
dir := filepath.Dir(path)
|
dir := filepath.Dir(path)
|
||||||
code := repo.Repo{
|
code := repo.Repo{
|
||||||
|
@ -1,22 +1,28 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html ng-app="app">
|
<html ng-app="app">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8">
|
||||||
<meta name="author" content="Brad Rydzewski" />
|
<meta name="author" content="Brad Rydzewski" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title></title>
|
<title></title>
|
||||||
|
|
||||||
<link rel="shortcut icon" href="/favicon.png" />
|
<link rel="shortcut icon" href="/favicon.ico" />
|
||||||
<link rel="stylesheet" href="//yui.yahooapis.com/pure/0.4.2/pure-min.css" />
|
<link rel="stylesheet" href="//yui.yahooapis.com/pure/0.5.0/pure-min.css" />
|
||||||
|
<link rel="stylesheet" href="//yui.yahooapis.com/pure/0.5.0/grids-responsive-min.css" />
|
||||||
|
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" />
|
||||||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans" />
|
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans" />
|
||||||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Orbitron" />
|
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Orbitron" />
|
||||||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Droid+Sans+Mono" />
|
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Droid+Sans+Mono" />
|
||||||
|
<link rel="stylesheet" href="/styles/drone.css" />
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body ng-controller="MainCtrl">
|
<body ng-controller="MainCtrl" ng-cloak>
|
||||||
|
<div id="container">
|
||||||
<div ng-include src=" '/views/header.html' "></div>
|
<input id="drawer-checkbox" type="checkbox" ng-if="user != undefined" />
|
||||||
|
<header id="header" ng-include src=" '/views/header.html' "></header>
|
||||||
<div ng-view></div>
|
<aside id="drawer" ng-include src=" '/views/drawer.html' "></aside>
|
||||||
|
<div ng-view id="body"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.8/angular.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.8/angular.min.js"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.8/angular-route.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.8/angular-route.min.js"></script>
|
||||||
|
@ -1,3 +1 @@
|
|||||||
# robotstxt.org
|
|
||||||
|
|
||||||
User-agent: *
|
User-agent: *
|
@ -252,6 +252,7 @@ app.controller("RepoController", function($scope, $http, $routeParams, user, rep
|
|||||||
$scope.repo = repo;
|
$scope.repo = repo;
|
||||||
|
|
||||||
// load the repo branch list
|
// load the repo branch list
|
||||||
|
/*
|
||||||
$http({method: 'GET', url: '/v1/repos/'+repo.host+'/'+repo.owner+"/"+repo.name+"/branches"}).
|
$http({method: 'GET', url: '/v1/repos/'+repo.host+'/'+repo.owner+"/"+repo.name+"/branches"}).
|
||||||
success(function(data, status, headers, config) {
|
success(function(data, status, headers, config) {
|
||||||
$scope.branches = (typeof data==='string')?[]:data;
|
$scope.branches = (typeof data==='string')?[]:data;
|
||||||
@ -259,6 +260,7 @@ app.controller("RepoController", function($scope, $http, $routeParams, user, rep
|
|||||||
error(function(data, status, headers, config) {
|
error(function(data, status, headers, config) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
// load the repo commit feed
|
// load the repo commit feed
|
||||||
$http({method: 'GET', url: '/v1/repos/'+repo.host+'/'+repo.owner+"/"+repo.name+"/feed"}).
|
$http({method: 'GET', url: '/v1/repos/'+repo.host+'/'+repo.owner+"/"+repo.name+"/feed"}).
|
||||||
@ -379,7 +381,7 @@ app.controller("CommitController", function($scope, $http, $routeParams, stdout,
|
|||||||
});
|
});
|
||||||
|
|
||||||
// load the repo build stdout
|
// load the repo build stdout
|
||||||
$http({method: 'GET', url: '/v1/repos/'+remote+'/'+owner+"/"+name+"/branches/"+branch+"/commits/"+commit+"/builds/1/console"}).
|
$http({method: 'GET', url: '/v1/repos/'+remote+'/'+owner+"/"+name+"/branches/"+branch+"/commits/"+commit+"/console"}).
|
||||||
success(function(data, status, headers, config) {
|
success(function(data, status, headers, config) {
|
||||||
$scope.console = data;
|
$scope.console = data;
|
||||||
}).
|
}).
|
||||||
|
@ -11,7 +11,15 @@ angular.module('app').controller("HomeController", function($scope, $http, feed,
|
|||||||
|
|
||||||
$http({method: 'GET', url: '/v1/user/feed'}).
|
$http({method: 'GET', url: '/v1/user/feed'}).
|
||||||
success(function(data, status, headers, config) {
|
success(function(data, status, headers, config) {
|
||||||
$scope.feed = (typeof data==='string')?[]:data;
|
$scope.feed = (typeof data==='string')?[]:data; //.splice(0, 3);
|
||||||
|
}).
|
||||||
|
error(function(data, status, headers, config) {
|
||||||
|
console.log(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
$http({method: 'GET', url: '/v1/user/repos'}).
|
||||||
|
success(function(data, status, headers, config) {
|
||||||
|
$scope.repos = (typeof data==='string')?[]:data;
|
||||||
}).
|
}).
|
||||||
error(function(data, status, headers, config) {
|
error(function(data, status, headers, config) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
angular.module('app').filter('gravatar', function() {
|
angular.module('app').filter('gravatar', function() {
|
||||||
return function(gravatar) {
|
return function(gravatar) {
|
||||||
return "https://secure.gravatar.com/avatar/"+gravatar+"?s=32&d=mm"
|
return "https://secure.gravatar.com/avatar/"+gravatar+"?s=48&d=mm"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -60,3 +60,17 @@ angular.module('app').filter('badgeMarkup', function() {
|
|||||||
return '<a href="'+scheme+'//'+host+'/'+path+'"><img src="'+scheme+'//'+host+'/v1/badge/'+path+'/status.svg?branch=master" /></a>'
|
return '<a href="'+scheme+'//'+host+'/'+path+'"><img src="'+scheme+'//'+host+'/v1/badge/'+path+'/status.svg?branch=master" /></a>'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
angular.module('app').filter('unique', function() {
|
||||||
|
return function(input, key) {
|
||||||
|
var unique = {};
|
||||||
|
var uniqueList = [];
|
||||||
|
for(var i = 0; i < input.length; i++){
|
||||||
|
if(typeof unique[input[i][key]] == "undefined"){
|
||||||
|
unique[input[i][key]] = "";
|
||||||
|
uniqueList.push(input[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return uniqueList;
|
||||||
|
};
|
||||||
|
});
|
171
server/app/styles/base.less
Normal file
171
server/app/styles/base.less
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
// Base less file with helper mixins
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none !important;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invisible {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.clearfix {
|
||||||
|
*zoom: 1;
|
||||||
|
&:before,
|
||||||
|
&:after { content: ""; display: table; }
|
||||||
|
&:after { clear: both; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.nowrap {
|
||||||
|
white-space:nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opacity(@num) {
|
||||||
|
opacity:@num;
|
||||||
|
@num2:@num*100;
|
||||||
|
filter:alpha(opacity=@num2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.grayscale(@num:1) {
|
||||||
|
-webkit-filter: grayscale(@num);
|
||||||
|
-moz-filter: grayscale(@num);
|
||||||
|
-ms-filter: grayscale(@num);
|
||||||
|
-o-filter: grayscale(@num);
|
||||||
|
filter: grayscale(@num);
|
||||||
|
}
|
||||||
|
|
||||||
|
.transition(@transString: 0) when not (@transString = 0) {
|
||||||
|
-webkit-transition: @transString;
|
||||||
|
-moz-transition: @transString;
|
||||||
|
-ms-transition: @transString;
|
||||||
|
-o-transition: @transString;
|
||||||
|
transition: @transString;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gradient(@c1, @c2, @direction:top){
|
||||||
|
background:@c2;
|
||||||
|
background-image: -webkit-linear-gradient(@direction, @c1, @c2);
|
||||||
|
background-image: -moz-linear-gradient(@direction, @c1, @c2);
|
||||||
|
background-image: -ms-linear-gradient(@direction, @c1, @c2);
|
||||||
|
background-image: -o-linear-gradient(@direction, @c1, @c2);
|
||||||
|
background-image: linear-gradient(@direction, @c1, @c2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gradient2(@c1, @c2, @c3, @direction:top){
|
||||||
|
background:@c3;
|
||||||
|
background-image: -webkit-linear-gradient(@direction, @c1, @c2, @c3);
|
||||||
|
background-image: -moz-linear-gradient(@direction, @c1, @c2, @c3);
|
||||||
|
background-image: -ms-linear-gradient(@direction, @c1, @c2, @c3);
|
||||||
|
background-image: -o-linear-gradient(@direction, @c1, @c2, @c3);
|
||||||
|
background-image: linear-gradient(@direction, @c1, @c2, @c3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate(@deg){
|
||||||
|
-webkit-transform:rotate(@deg);
|
||||||
|
-moz-transform:rotate(@deg);
|
||||||
|
-ms-transform:rotate(@deg);
|
||||||
|
-o-transform:rotate(@deg);
|
||||||
|
transform:rotate(@deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.origin(@o){
|
||||||
|
-webkit-transform-origin:@o;
|
||||||
|
-moz-transform-origin:@o;
|
||||||
|
-ms-transform-origin:@o;
|
||||||
|
-o-transform-origin:@o;
|
||||||
|
transform-origin:@o;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter(@param){
|
||||||
|
-webkit-filter:@param;
|
||||||
|
-moz-filter:@param;
|
||||||
|
-ms-filter:@param;
|
||||||
|
-o-filter:@param;
|
||||||
|
filter:@param;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation(@a){
|
||||||
|
-webkit-animation:@a;
|
||||||
|
-moz-animation:@a;
|
||||||
|
-ms-animation:@a;
|
||||||
|
-o-animation:@a;
|
||||||
|
animation:@a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.perspective(@a){
|
||||||
|
-webkit-perspective:@a;
|
||||||
|
-moz-perspective:@a;
|
||||||
|
-ms-perspective:@a;
|
||||||
|
-o-perspective:@a;
|
||||||
|
perspective:@a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_box {
|
||||||
|
-webkit-box-sizing:border-box;
|
||||||
|
-moz-box-sizing:border-box;
|
||||||
|
-ms-box-sizing:border-box;
|
||||||
|
-o-box-sizing:border-box;
|
||||||
|
box-sizing:border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transform(@param){
|
||||||
|
-webkit-transform:@param;
|
||||||
|
-moz-transform:@param;
|
||||||
|
-ms-transform:@param;
|
||||||
|
-o-transform:@param;
|
||||||
|
transform:@param;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fix3d {
|
||||||
|
-webkit-transform:translate3D(0, 0, 0); //fix 3d flashing
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_box {
|
||||||
|
-webkit-box-sizing:border-box;
|
||||||
|
-moz-box-sizing:border-box;
|
||||||
|
-ms-box-sizing:border-box;
|
||||||
|
-o-box-sizing:border-box;
|
||||||
|
box-sizing:border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invert {
|
||||||
|
-webkit-filter:invert(100%);
|
||||||
|
-moz-filter:invert(100%);
|
||||||
|
-ms-filter:invert(100%);
|
||||||
|
-o-filter:invert(100%);
|
||||||
|
filter:invert(100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation(@a){
|
||||||
|
-webkit-animation:@a;
|
||||||
|
-moz-animation:@a;
|
||||||
|
-ms-animation:@a;
|
||||||
|
-o-animation:@a;
|
||||||
|
animation:@a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation_delay(@a){
|
||||||
|
-webkit-animation-delay:@a;
|
||||||
|
-moz-animation-delay:@a;
|
||||||
|
-ms-animation-delay:@a;
|
||||||
|
-o-animation-delay:@a;
|
||||||
|
animation-delay:@a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transition_delay(@a){
|
||||||
|
-webkit-transition-delay:@a;
|
||||||
|
-moz-transition-delay:@a;
|
||||||
|
-ms-transition-delay:@a;
|
||||||
|
-o-transition-delay:@a;
|
||||||
|
transition-delay:@a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.columns(@a){
|
||||||
|
-webkit-columns:@a;
|
||||||
|
-moz-columns:@a;
|
||||||
|
-ms-columns:@a;
|
||||||
|
-o-columns:@a;
|
||||||
|
columns:@a;
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,59 +1,924 @@
|
|||||||
|
@import "reset.less";
|
||||||
|
@import "base.less";
|
||||||
|
|
||||||
//@dark
|
// Standard Colors
|
||||||
|
|
||||||
//@blue
|
@link: #68c598;
|
||||||
//@green
|
@link2: #4ab1ce;
|
||||||
//@yellow
|
@cneg: #e97041;
|
||||||
//@red
|
@cok: #68c598;
|
||||||
|
@c0: #262626;
|
||||||
|
@c1: #45494b;
|
||||||
|
@c2: #849299;
|
||||||
|
|
||||||
|
// Standard Fonts
|
||||||
|
|
||||||
|
@logo: 'Orbitron';
|
||||||
|
@sans: 'Open Sans';
|
||||||
|
|
||||||
|
html {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: @sans;
|
||||||
|
font-weight: normal;
|
||||||
|
margin:0px;
|
||||||
|
color: @c0;
|
||||||
|
background: #fff;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 1.3;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The ngCloak directive is used to prevent the Angular html template
|
||||||
|
// from being briefly displayed by the browser in its raw (uncompiled)
|
||||||
|
// form while the application is loading.
|
||||||
|
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
.border_box;
|
||||||
|
padding-top: 55px;
|
||||||
|
position: relative;
|
||||||
|
min-width: 100%;
|
||||||
|
min-height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header {
|
||||||
|
background: @c0;
|
||||||
|
position: fixed;
|
||||||
|
height: 55px;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 9;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 55px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.brand {
|
||||||
|
display: inline-block;
|
||||||
|
font-family: @logo;
|
||||||
|
font-size: 26px;
|
||||||
|
line-height: 55px;
|
||||||
|
text-decoration: none;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
.burger {
|
||||||
|
position: absolute;
|
||||||
|
top:0px;
|
||||||
|
left: 31px;
|
||||||
|
height:55px;
|
||||||
|
font-size: 22px;
|
||||||
|
color: #CCC;
|
||||||
|
i.fa {
|
||||||
|
line-height:55px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login,
|
||||||
|
.user {
|
||||||
|
position: absolute;
|
||||||
|
right: 0px;
|
||||||
|
top: 0px;
|
||||||
|
bottom: 0px;
|
||||||
|
white-space: nowrap;
|
||||||
|
margin-right: 20px;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #CCC;
|
||||||
|
text-decoration: none;
|
||||||
|
text-transform: uppercase;
|
||||||
|
line-height: 55px;
|
||||||
|
font-size: 15px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
border-radius: 50%;
|
||||||
|
float: right;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#body {
|
||||||
|
.border_box;
|
||||||
|
display: flex;
|
||||||
|
min-width:100%;
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
article {
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#drawer {
|
||||||
|
visibility: hidden;
|
||||||
|
position:fixed;
|
||||||
|
z-index:10;
|
||||||
|
left:0px;
|
||||||
|
top:55px;
|
||||||
|
bottom:0px;
|
||||||
|
width:255px;
|
||||||
|
background:#363636;
|
||||||
|
-webkit-transition: all 0.2s;
|
||||||
|
-moz-transition: all 0.2s;
|
||||||
|
transition: all 0.2s;
|
||||||
|
-webkit-transform: translate3d(-100%, 0, 0);
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(-100%, 0, 0);
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin-top:20px;
|
||||||
|
a {
|
||||||
|
color:#CCC;
|
||||||
|
text-decoration:none;
|
||||||
|
padding:10px 0px 10px 30px;
|
||||||
|
display:block;
|
||||||
|
font-size:14px;
|
||||||
|
i {
|
||||||
|
margin-right:10px;
|
||||||
|
font-size:16px;
|
||||||
|
opacity:0.3;
|
||||||
|
min-width:16px;
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
span.divider {
|
||||||
|
display:block;
|
||||||
|
height:1px;
|
||||||
|
border-top:1px solid rgba(255,255,255,0.1);
|
||||||
|
margin-top:15px;
|
||||||
|
margin-bottom:15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.signout {
|
||||||
|
position:absolute;
|
||||||
|
bottom:20px;
|
||||||
|
right:30px;
|
||||||
|
color:#CCC;
|
||||||
|
font-size:16px;
|
||||||
|
text-transform:uppercase;
|
||||||
|
text-decoration:none;
|
||||||
|
i {
|
||||||
|
margin-left:20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#drawer-checkbox {
|
||||||
|
position:fixed;
|
||||||
|
top:7px;
|
||||||
|
left:10px;
|
||||||
|
width:45px;
|
||||||
|
height:40px;
|
||||||
|
display:block;
|
||||||
|
z-index:9999;
|
||||||
|
opacity:0;
|
||||||
|
background:none;
|
||||||
|
border:none;
|
||||||
|
cursor:pointer;
|
||||||
|
&:checked ~ #drawer {
|
||||||
|
visibility: visible;
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
&:checked ~ #drawer {
|
||||||
|
visibility: visible;
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
// override the drawers icon to show
|
||||||
|
// a close symbol, so the user knows
|
||||||
|
// exactly how to minimize.
|
||||||
|
&:checked ~ #header {
|
||||||
|
.fa-bars:before {
|
||||||
|
content: "\f00d";
|
||||||
|
color:#999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
padding-left:30px;
|
||||||
|
background:#FFF;
|
||||||
|
min-height: 77px;
|
||||||
|
max-height: 77px;
|
||||||
|
line-height: 77px;
|
||||||
|
font-family: @sans;
|
||||||
|
font-size: 22px;
|
||||||
|
white-space: nowrap;
|
||||||
|
color: rgba(0, 0, 0, 0.7);
|
||||||
|
border-bottom:1px solid #EEE;
|
||||||
|
position:relative;
|
||||||
|
z-index:2;
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration:none;
|
||||||
|
color: rgba(0, 0, 0, 0.7);
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.fa {
|
||||||
|
margin-right:20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (position:sticky) {
|
||||||
|
nav {
|
||||||
|
position: sticky;
|
||||||
|
top:55px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@supports (position:-moz-sticky) {
|
||||||
|
nav {
|
||||||
|
position: -moz-sticky;
|
||||||
|
top:55px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@supports (position:-webkit-sticky) {
|
||||||
|
nav {
|
||||||
|
position: -webkit-sticky;
|
||||||
|
top:55px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards {
|
||||||
|
//padding:20px 0px 20px 20px;
|
||||||
|
.card {
|
||||||
|
.border_box;
|
||||||
|
padding-right:20px;
|
||||||
|
padding-bottom:20px;
|
||||||
|
text-decoration:none;
|
||||||
|
position:relative;
|
||||||
|
color:@c0;
|
||||||
|
font-family:@sans;
|
||||||
|
|
||||||
|
.l-box {
|
||||||
|
background:#FFF;
|
||||||
|
border:1px solid #DDD;
|
||||||
|
position:relative;
|
||||||
|
padding:30px 20px;
|
||||||
|
height:200px;
|
||||||
|
.transition(.4s border linear);
|
||||||
|
.border_box;
|
||||||
|
|
||||||
|
//box-shadow: inset 0 0 0 1px #dfdfdf,
|
||||||
|
// inset 0 0 0 2px #fff,
|
||||||
|
// 2px 2px 0 transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border:1px solid @c0;
|
||||||
|
}
|
||||||
|
|
||||||
|
em {
|
||||||
|
position:absolute;
|
||||||
|
bottom:20px;
|
||||||
|
right:20px;
|
||||||
|
left:20px;
|
||||||
|
height:30px;
|
||||||
|
line-height:30px;
|
||||||
|
vertical-align:middle;
|
||||||
|
//text-transform:uppercase;
|
||||||
|
text-align:right;
|
||||||
|
padding-right:45px;
|
||||||
|
//border-top:1px solid #DDD;
|
||||||
|
padding-top:20px;
|
||||||
|
font-size:14px;
|
||||||
|
color:#666;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
position:absolute;
|
||||||
|
right:20px;
|
||||||
|
bottom:20px;
|
||||||
|
border-radius:50%;
|
||||||
|
width:30px;
|
||||||
|
height:30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeago {
|
||||||
|
position:absolute;
|
||||||
|
bottom:85px;
|
||||||
|
left:25px;
|
||||||
|
right:25px;
|
||||||
|
text-align:right;
|
||||||
|
font-size:14px;
|
||||||
|
color: #849299;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size:18px;
|
||||||
|
font-weight:normal;
|
||||||
|
min-height:52px;
|
||||||
|
max-height:52px;
|
||||||
|
height:52px;
|
||||||
|
text-align:center;
|
||||||
|
vertical-align:middle;
|
||||||
|
line-height:26px;
|
||||||
|
color:@c0;
|
||||||
|
|
||||||
|
.separator {
|
||||||
|
margin:0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
display: -webkit-box;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.card-inactive {
|
||||||
|
.l-box {
|
||||||
|
position:relative;
|
||||||
|
box-shadow: none;
|
||||||
|
background: @link2;
|
||||||
|
color:#FFF;
|
||||||
|
height:180px;
|
||||||
|
border-color:@link2;
|
||||||
|
&:hover {
|
||||||
|
background: darken(@link2,10%);
|
||||||
|
&:before { background:darken(@link2,10%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
padding-top:10px;
|
||||||
|
color:#FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
em {
|
||||||
|
position:absolute;
|
||||||
|
border-top:1px solid rgba(255,255,255,.5);
|
||||||
|
bottom: 15px;
|
||||||
|
font-size: 13px;
|
||||||
|
left: 25px;
|
||||||
|
right: 25px;
|
||||||
|
line-height:1.3;
|
||||||
|
padding:0px;
|
||||||
|
padding-top:20px;
|
||||||
|
text-align:center;
|
||||||
|
display:block;
|
||||||
|
height:30px;
|
||||||
|
text-transform:uppercase;
|
||||||
|
color:#FFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.card-browse-inactive,
|
||||||
|
&.card-browse {
|
||||||
|
text-align:center;
|
||||||
|
color: @link2;
|
||||||
|
font-size:16px;
|
||||||
|
font-weight:bold;
|
||||||
|
text-transform:uppercase;
|
||||||
|
.l-box {
|
||||||
|
padding-top:75px;
|
||||||
|
background:#FFF;
|
||||||
|
height:180px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.card-browse-inactive {
|
||||||
|
.l-box {
|
||||||
|
box-shadow:none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.progressContainer {
|
||||||
|
height:5px;
|
||||||
|
background-color: @cneg;
|
||||||
|
position: absolute;
|
||||||
|
bottom:65px;
|
||||||
|
left:20px;
|
||||||
|
right:20px;
|
||||||
|
|
||||||
|
.activeProgress, .secondaryProgress {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activeProgress {
|
||||||
|
background-color: @cok;
|
||||||
|
}
|
||||||
|
|
||||||
|
.secondaryProgress {
|
||||||
|
background-color: @cok;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#commitpage {
|
||||||
|
max-width:1180px;
|
||||||
|
margin:0px auto;
|
||||||
|
margin-bottom:50px;
|
||||||
|
margin-top:70px;
|
||||||
|
|
||||||
|
section {
|
||||||
|
margin-top:30px;
|
||||||
|
|
||||||
|
.commits {
|
||||||
|
border: 1px solid #DDD;
|
||||||
|
border-bottom: 0px solid #DDD;
|
||||||
|
.border_box;
|
||||||
|
a {
|
||||||
|
padding:20px 45px;
|
||||||
|
display:block;
|
||||||
|
border-bottom: 1px solid #dadcdd;
|
||||||
|
color:#262626;
|
||||||
|
text-decoration:none;
|
||||||
|
position:relative;
|
||||||
|
.border_box;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-family: @sans;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
margin-bottom:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
border-radius:50%;
|
||||||
|
margin-right:10px;
|
||||||
|
float:left;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #363636;
|
||||||
|
line-height:22px;
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&[data-status]:before {
|
||||||
|
background: transparent;
|
||||||
|
width: 7px;
|
||||||
|
min-width:7px;
|
||||||
|
max-width:7px;
|
||||||
|
position: absolute;
|
||||||
|
left: -1px;
|
||||||
|
top: 0px;
|
||||||
|
bottom: 0px;
|
||||||
|
text-align: left;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 50px;
|
||||||
|
font-family: @sans;
|
||||||
|
padding-left:2px;
|
||||||
|
overflow:hidden;
|
||||||
|
content: " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
&[data-result="Killed"],
|
||||||
|
&[data-status="Error"],
|
||||||
|
&[data-status="Failure"] {
|
||||||
|
background: #fff9f5;
|
||||||
|
&:before {
|
||||||
|
background: @cneg;
|
||||||
|
content: "!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&[data-status="Success"]:before {
|
||||||
|
background: @cok;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
span {
|
||||||
|
display:inline-block;
|
||||||
|
text-align:right;
|
||||||
|
font-size:14px;
|
||||||
|
width:100%;
|
||||||
|
padding-right:30px;
|
||||||
|
margin-top:15px;
|
||||||
|
.border_box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginpage {
|
||||||
|
.pure-g {
|
||||||
|
padding: 30px;
|
||||||
|
border: 1px solid #DDD;
|
||||||
|
max-width:400px;
|
||||||
|
margin:0px auto;
|
||||||
|
margin-top:50px;
|
||||||
|
.border_box;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display:block;
|
||||||
|
background:@c1;
|
||||||
|
color:#fff;
|
||||||
|
padding:14px 20px;
|
||||||
|
font-size:15px;
|
||||||
|
border-radius:5px;
|
||||||
|
text-decoration:none;
|
||||||
|
&:hover {
|
||||||
|
background:@c0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*="fa-"] {
|
||||||
|
float:left;
|
||||||
|
font-size:20px;
|
||||||
|
position:relative;
|
||||||
|
top:-3px;
|
||||||
|
left:-3px;
|
||||||
|
padding-right:10px;
|
||||||
|
min-width:27px;
|
||||||
|
min-height:20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pure-u-1 a {
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pure-u-1:last-child a {
|
||||||
|
margin-bottom:0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#homepage {
|
||||||
|
width:100%;
|
||||||
|
background:#f2f5f8;
|
||||||
|
|
||||||
|
section {
|
||||||
|
padding:40px 0px 20px 0px;
|
||||||
|
border-bottom:1px solid #EEE;
|
||||||
|
|
||||||
|
div {
|
||||||
|
max-width:1180px;
|
||||||
|
margin:0px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
background:#FFF;
|
||||||
|
padding:40px 0px 20px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
border-bottom:0px solid #EEE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#repospage {
|
||||||
|
width:100%;
|
||||||
|
section {
|
||||||
|
max-width:1180px;
|
||||||
|
margin:0px auto;
|
||||||
|
margin-top:30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#userspage {
|
||||||
|
width:100%;
|
||||||
|
section {
|
||||||
|
border-bottom:1px solid #eee;
|
||||||
|
max-width:768px;
|
||||||
|
margin:0px auto;
|
||||||
|
margin-top:30px;
|
||||||
|
.user {
|
||||||
|
.transition(.4s border linear);
|
||||||
|
border:1px solid #eee;
|
||||||
|
border-bottom:1px solid #fff;
|
||||||
|
text-decoration:none;
|
||||||
|
&:last-child {
|
||||||
|
border-bottom:1px solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&> div {
|
||||||
|
.border_box;
|
||||||
|
padding:20px 25px;
|
||||||
|
padding-right:0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
border-radius:50%;
|
||||||
|
width:48px;
|
||||||
|
height:48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size:24px;
|
||||||
|
margin-bottom:2px;
|
||||||
|
color:@c0;
|
||||||
|
small {
|
||||||
|
font-size: 16px;
|
||||||
|
color:#666;
|
||||||
|
margin-left:5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
color:#666;
|
||||||
|
font-size:14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border:1px solid @c0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#accountpage {
|
||||||
|
width:100%;
|
||||||
|
section {
|
||||||
|
position:relative;
|
||||||
|
max-width:768px;
|
||||||
|
margin:0px auto;
|
||||||
|
margin-top:30px;
|
||||||
|
border:1px solid #eee;
|
||||||
|
|
||||||
|
&.profile {
|
||||||
|
&> div:first-child {
|
||||||
|
.border_box;
|
||||||
|
padding:20px;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
&> div:last-child {
|
||||||
|
.border_box;
|
||||||
|
padding:20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fullname {
|
||||||
|
font-size:14px;
|
||||||
|
margin-bottom:2px;
|
||||||
|
color:#666;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
.email {
|
||||||
|
font-size:14px;
|
||||||
|
color:#666;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.token {
|
||||||
|
&> div:first-child {
|
||||||
|
div {
|
||||||
|
.border_box;
|
||||||
|
text-align:center;
|
||||||
|
padding:20px;
|
||||||
|
color:#666;
|
||||||
|
font-size:16px;
|
||||||
|
line-height:22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
i {
|
||||||
|
margin-right:7px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&> div:last-child {
|
||||||
|
.border_box;
|
||||||
|
padding:20px;
|
||||||
|
color:#666;
|
||||||
|
line-height:22px;
|
||||||
|
font-size:14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
margin:10px 0px;
|
||||||
|
font-size:22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width:64px;
|
||||||
|
height:64px;
|
||||||
|
border-radius:50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notifications {
|
||||||
|
position:absolute;
|
||||||
|
top:0px;
|
||||||
|
right:0px;
|
||||||
|
margin:20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#repopage {
|
||||||
|
width:100%;
|
||||||
|
background:#f2f5f8;
|
||||||
|
|
||||||
|
section {
|
||||||
|
padding:40px 0px 20px 0px;
|
||||||
|
border-bottom:1px solid #EEE;
|
||||||
|
&> div {
|
||||||
|
max-width:1180px;
|
||||||
|
margin:0px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(even) {
|
||||||
|
background:#FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
background:#FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card[data-status="Success"] {
|
||||||
|
&:nth-child(2) .l-box {
|
||||||
|
border-color: @cok;
|
||||||
|
}
|
||||||
|
em {
|
||||||
|
border-top:5px solid @cok;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card[data-status="Killed"],
|
||||||
|
.card[data-status="Failure"],
|
||||||
|
.card[data-status="Error"] {
|
||||||
|
&:nth-child(2) .l-box {
|
||||||
|
border-color: @cneg;
|
||||||
|
}
|
||||||
|
em {
|
||||||
|
border-top:5px solid @cneg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card[data-status="Started"] em:before,
|
||||||
|
.card[data-status="Pending"] em:before {
|
||||||
|
-webkit-animation: progress 1s linear infinite;
|
||||||
|
-moz-animation: progress 1s linear infinite;
|
||||||
|
animation: progress 1s linear infinite;
|
||||||
|
position: absolute;
|
||||||
|
content: ' ';
|
||||||
|
height: 5px;
|
||||||
|
top: -5px;
|
||||||
|
left: 0px;
|
||||||
|
right: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
background: #fee172;
|
||||||
|
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.55) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.55) 50%, rgba(255, 255, 255, 0.55) 75%, transparent 75%, transparent);
|
||||||
|
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.55) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.55) 50%, rgba(255, 255, 255, 0.55) 75%, transparent 75%, transparent);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
background-size: 30px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.l-box:after {
|
||||||
|
font-family: 'FontAwesome';
|
||||||
|
content: "\f104";
|
||||||
|
content: "\f0d9";
|
||||||
|
position: absolute;
|
||||||
|
right: -20px;
|
||||||
|
width: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: rgba(0,0,0,0.1);
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
.card:last-child .l-box:after {
|
||||||
|
content:'';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes progress {
|
||||||
|
to {
|
||||||
|
background-position: 30px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-moz-keyframes progress {
|
||||||
|
to {
|
||||||
|
background-position: 30px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes progress {
|
||||||
|
to {
|
||||||
|
background-position: 30px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// pure css styles
|
|
||||||
@import "vendor/font-awesome.less";
|
|
||||||
@import "vendor/pure-base.less";
|
|
||||||
@import "vendor/pure-grids.less";
|
|
||||||
@import "vendor/pure-forms.less";
|
|
||||||
@import "vendor/pure-menus.less";
|
|
||||||
|
|
||||||
// base variables, mixins, etc
|
#sidebar {
|
||||||
@import "base/variables.less";
|
width: 240px;
|
||||||
@import "base/overflow.less";
|
min-width: 240px;
|
||||||
@import "base/clearfix.less";
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
z-index: 5;
|
||||||
|
padding: 30px;
|
||||||
|
.border_box;
|
||||||
|
|
||||||
// general overrides and resets
|
//border-left:1px solid #cdcece;
|
||||||
@import "general/resets.less";
|
//box-shadow:-3px 0 0 rgba(0,0,0,.05);
|
||||||
@import "general/angular.less";
|
|
||||||
//@import "general/scrollbars.less";
|
|
||||||
@import "general/forms.less";
|
|
||||||
|
|
||||||
// page layouts
|
h1 {font-size:28px; font-weight:300;}
|
||||||
//@import "layout/layout.less";
|
h2 {font-size:22px; font-weight:300; margin-bottom:20px;}
|
||||||
|
dl {padding-top:23px; border-top:1px solid #ddd; margin-top:5px;
|
||||||
|
|
||||||
// modules
|
&:first-child {padding-top:0; border-top:none; margin-top:0;}
|
||||||
@import "modules/header.less";
|
|
||||||
@import "modules/article.less";
|
|
||||||
@import "modules/section.less";
|
|
||||||
|
|
||||||
@import "modules/list-activity.less";
|
dt {font-size:12px; color:@c2; text-transform:uppercase; padding:3px 0;}
|
||||||
@import "modules/list-repos.less";
|
dd {font-size:14px; padding:3px 0 20px;}
|
||||||
@import "modules/list-commits.less";
|
a {text-transform:none;}
|
||||||
@import "modules/list-users.less";
|
small {font-size:12px;}
|
||||||
@import "modules/user-account.less";
|
.large {font-size:18px; padding-bottom:5px;}
|
||||||
@import "modules/form-search.less";
|
.time {float:right; margin-left:8px;}
|
||||||
|
.photo {margin-right:4px;}
|
||||||
|
.negative {color:@cneg;}
|
||||||
|
.photoline {display:inline-block; position:relative; top:-10px; font-weight:bold;}
|
||||||
|
.small {padding-bottom:5px; font-weight:bold; font-size:12px;}
|
||||||
|
}
|
||||||
|
|
||||||
@import "modules/alert.less";
|
.status {
|
||||||
@import "modules/build.less";
|
border:1px solid transparent;
|
||||||
@import "modules/authors.less";
|
display:block;
|
||||||
@import "modules/branches.less";
|
text-align:center;
|
||||||
@import "modules/stdout.less";
|
padding:5px 20px;
|
||||||
@import "modules/switch.less";
|
border-radius:50px;
|
||||||
|
text-transform:uppercase;
|
||||||
|
margin:0 -5px 10px;
|
||||||
|
font-weight:bold;
|
||||||
|
&:before {float:left; margin-left:-5px;}
|
||||||
|
&.status_ok {
|
||||||
|
color:@cok; border-color:@cok;
|
||||||
|
&:before {content:"\f00c"; font-family:'FontAwesome';}
|
||||||
|
}
|
||||||
|
&.status_error {
|
||||||
|
color:@cneg; border-color:@cneg;
|
||||||
|
&:before {content:"!";}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//@import "alerts/alerts.less";
|
.result {
|
||||||
|
background:@link2;
|
||||||
|
background:@cok;
|
||||||
|
color:#fff;
|
||||||
|
margin:-30px -30px -6px;
|
||||||
|
padding:30px;
|
||||||
|
position:relative;
|
||||||
|
.status {
|
||||||
|
color:#fff;
|
||||||
|
background:rgba(255,255,255,.2);
|
||||||
|
&:before {
|
||||||
|
content:"\f00c";
|
||||||
|
font-family:'FontAwesome';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dl {
|
||||||
|
dd {
|
||||||
|
padding:7px 0;
|
||||||
|
strong { font-size:16px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//@import "grids/grids.less";
|
&[data-result="Killed"],
|
||||||
//@import "buttons/buttons.less";
|
&[data-result="Failure"],
|
||||||
//@import "buttons/custom.less";
|
&[data-result="Error"] {
|
||||||
//@import "forms/forms.less";
|
background: @cneg;
|
||||||
//@import "forms/custom.less";
|
.status:before {
|
||||||
//@import "menus/menus.less";
|
content:"!";
|
||||||
//@import "menus/custom.less";
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#main {
|
||||||
|
flex-grow: 2;
|
||||||
|
&.output {
|
||||||
|
background: #525252;
|
||||||
|
pre {
|
||||||
|
margin:0px auto;
|
||||||
|
padding:30px;
|
||||||
|
color:#FFF;
|
||||||
|
font-family:'Droid Sans Mono';
|
||||||
|
font-size:13px;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
25
server/app/styles/drone.min.css
vendored
25
server/app/styles/drone.min.css
vendored
File diff suppressed because one or more lines are too long
17
server/app/styles/reset.less
Normal file
17
server/app/styles/reset.less
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
html, body, div, span, object, iframe,
|
||||||
|
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||||
|
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
|
||||||
|
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
|
||||||
|
fieldset, form, label, legend,
|
||||||
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||||
|
article, aside, canvas, details, figcaption, figure,
|
||||||
|
footer, header, hgroup, menu, nav, section, summary,
|
||||||
|
time, mark, audio, video {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
font: inherit;
|
||||||
|
vertical-align: baseline;
|
||||||
|
list-style:none;
|
||||||
|
}
|
@ -1,66 +1,41 @@
|
|||||||
<h1>User Account</h1>
|
<article id="accountpage">
|
||||||
|
<nav>
|
||||||
<div class="row">
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
|
<a href="/account/profile">my account</a>
|
||||||
<!-- summary column -->
|
</nav>
|
||||||
<div class="col-xs-6 col-sm-3">
|
|
||||||
What to show here?
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- primary column -->
|
|
||||||
<div class="col-xs-12 col-sm-9">
|
|
||||||
|
|
||||||
|
<section class="pure-g profile">
|
||||||
|
<div class="pure-u-1-6">
|
||||||
<div>
|
<div>
|
||||||
<label>Remote</label>
|
<a href="https://gravatar.com/" target="_blank">
|
||||||
<span>{{ user.remote }}</span>
|
<img ng-src="https://gravatar.com/avatar/{{ user.gravatar }}?d=identicon" />
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pure-u-5-6">
|
||||||
<div>
|
<div>
|
||||||
<label>Login</label>
|
<h4>bradrydzewski</h4>
|
||||||
<span>{{ user.login }}</span>
|
<span class="fullname">Brad Rydzewski</span>
|
||||||
|
<span class="email">brad.rydzewski@gmail.com</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- button to toggle HTML5 desktop notifications for build events -->
|
||||||
|
<div ng-if="notifications.supported && !notifications.granted" class="notifications">
|
||||||
|
<button ng-click="enableNotifications()" class="pure-button">Enable Notifications</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="pure-g token">
|
||||||
|
<div class="pure-u-1-6">
|
||||||
<div>
|
<div>
|
||||||
<label>Gravatar</label>
|
<i class="fa fa-key"></i> api key
|
||||||
<img class="gravatar" ng-src="https://secure.gravatar.com/avatar/{{ user.gravatar }}?s=32&d=mm" />
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pure-u-5-6">
|
||||||
<div>
|
<div>
|
||||||
<label>Email</label>
|
{{ user.token }}
|
||||||
<input type="text" ng-model="userTemp.email" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<label>Full Name</label>
|
|
||||||
<input type="text" ng-model="userTemp.name" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<label>Created</label>
|
|
||||||
<span>{{ user.created_at | fromNow }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<label>Updated</label>
|
|
||||||
<span>{{ user.updated_at | fromNow }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<label>Synced</label>
|
|
||||||
<span>{{ user.synced_at | fromNow }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
{{failure}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div ng-if="notifications.supported && !notifications.granted">
|
|
||||||
<button ng-click="enableNotifications()">Enable Notifications</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<button ng-click="save()">Save</button>
|
|
||||||
<button ng-click="cancel()">Cancel</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
|
</article>
|
@ -1,18 +1,34 @@
|
|||||||
<h1>{{ repo.name }}</h1>
|
<aside id="sidebar">
|
||||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}">Back</a>
|
<div class="result" data-result="{{ commit.status }}">
|
||||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}/settings">Settings</a>
|
<dl>
|
||||||
|
<dd><span class="status">{{ commit.status }}</span></dd>
|
||||||
<div class="row">
|
<dd><strong>{{ commit.message }}</strong></dd>
|
||||||
<div class="col-xs-6 col-sm-3">
|
</dl>
|
||||||
<span>Commit</span>
|
|
||||||
<span>{{ commit.sha }}</span>
|
|
||||||
<br/>
|
|
||||||
<span>Status</span>
|
|
||||||
<span>{{ commit.status }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- primary column -->
|
<dl>
|
||||||
<div class="col-xs-12 col-sm-9">
|
<dd><h1>3.5 ms</h1></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dd class="large"><strong>commit <u>{{ commit.sha | shortHash}}</u> to <u>{{ commit.branch}}</u> branch</strong></dd>
|
||||||
|
<dd ng-if="commit.finished_at != 0">{{ commit.finished_at | fromNow }}</dd>
|
||||||
|
<dd ng-if="commit.finished_at == 0 && commit.started_at != 0">Started {{ commit.started_at | fromNow }}</dd>
|
||||||
|
<dd ng-if="commit.finished_at == 0 && commit.started_at == 0">Created {{ commit.created_at}}</dd>
|
||||||
|
</dl>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div id="main" class="output">
|
||||||
|
<div id="main" class="output" data-result="Failure">
|
||||||
|
<nav>
|
||||||
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
|
<span>{{ repo.owner }}</span>
|
||||||
|
<span>/</span>
|
||||||
|
<a href="/{{ repo.host }}/{{ repo.owner }}/{{ repo.name }}">{{ repo.name }}</a>
|
||||||
|
<span>/</span>
|
||||||
|
<a href="#">{{ commit.sha | shortHash}}</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<pre>{{ console }}</pre>
|
<pre>{{ console }}</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
11
server/app/views/drawer.html
Normal file
11
server/app/views/drawer.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<div onclick="document.getElementById('drawer-checkbox').checked=false;">
|
||||||
|
<ul>
|
||||||
|
<li><a href="/"><i class="fa fa-dashboard"></i> Dashboard</a></li>
|
||||||
|
<li><a href="/account/repos"><i class="fa fa-list"></i> Repositories</a></li>
|
||||||
|
<li><a href="/account/profile"><i class="fa fa-user"></i> Account</a></li>
|
||||||
|
<li ng-if="user.admin == true"><span class="divider"></span></li>
|
||||||
|
<li ng-if="user.admin == true"><a href="/admin/users"><i class="fa fa-users"></i> Users</a></li>
|
||||||
|
<li ng-if="user.admin == true"><a href="/admin/settings"><i class="fa fa-cog"></i> Settings</a></li>
|
||||||
|
</ul>
|
||||||
|
<a href="/logout" class="signout" target="_self">Signout <i class="fa fa-sign-out"></i></a>
|
||||||
|
</div>
|
@ -1,12 +1,16 @@
|
|||||||
<table border="1">
|
<a class="burger" href="/" ng-if="user != undefined">
|
||||||
<tr ng-if="user != undefined">
|
<i class="fa fa-bars"></i>
|
||||||
<td><a href="/">Home</a></td>
|
</a>
|
||||||
<td><a href="/account/profile">{{ user.login }}</a></td>
|
|
||||||
<td><img ng-src="{{ user.gravatar | gravatar }}" /></td>
|
<a class="brand" href="/">Drone</a>
|
||||||
</tr>
|
|
||||||
<tr ng-if="user == undefined">
|
<div class="user" ng-if="user != undefined">
|
||||||
<td>
|
<a href="/account/profile">
|
||||||
|
<img class="avatar" ng-src="{{ user.gravatar | gravatar }}" />
|
||||||
|
<span class="username">{{ user.login }}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="user" ng-if="user == undefined">
|
||||||
<a href="/login">Login</a>
|
<a href="/login">Login</a>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
|
||||||
</table>
|
|
@ -1,51 +1,33 @@
|
|||||||
<h1>Dashboard</h1>
|
<article id="homepage">
|
||||||
|
<nav>
|
||||||
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
|
<a href="/">dashboard</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<div class="row">
|
<section>
|
||||||
|
<div class="pure-g cards">
|
||||||
<!-- primary column -->
|
<a class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4 pure-u-xl-1-4 card card" href="/{{ repo | fullPath }}" ng-repeat="repo in repos | filter: { active: true } | limitTo:4">
|
||||||
<div class="col-xs-12 col-sm-9">
|
<div class="l-box">
|
||||||
<table class="table table-bordered">
|
<h2>{{ repo.owner }} <span class="separator">/</span> {{ repo.name }}</h2>
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Status</th>
|
|
||||||
<th>Branch</th>
|
|
||||||
<th>Sha</th>
|
|
||||||
<th>PR</th>
|
|
||||||
<th colspan=2>Author</th>
|
|
||||||
<th>Message</th>
|
|
||||||
<th>Started</th>
|
|
||||||
<th>Finished</th>
|
|
||||||
</tr>
|
|
||||||
<tr ng-repeat="commit in feed">
|
|
||||||
<td>
|
|
||||||
<a href="/{{ commit | fullPath }}">
|
|
||||||
<span>{{ commit.owner }}</span>
|
|
||||||
<span>/</span>
|
|
||||||
<span>{{ commit.name }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="/{{ commit | fullPath }}/{{ commit.branch }}/{{ commit.sha }}">
|
|
||||||
<span>{{ commit.status }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="/{{ commit | fullPath }}/{{ commit.branch }}">
|
|
||||||
<span>{{ commit.branch }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="/{{ commit | fullPath }}/{{ commit.branch }}/{{ commit.sha }}">
|
|
||||||
<span>{{ commit.sha | shortHash }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>{{ commit.pull_request }}</td>
|
|
||||||
<td>{{ commit.author }}</td>
|
|
||||||
<td><img class="gravatar" ng-src="{{ commit.gravatar | gravatar }}" /></td>
|
|
||||||
<td>{{ commit.message }}</td>
|
|
||||||
<td>{{ commit.started_at | fromNow }}</td>
|
|
||||||
<td>{{ commit.finished_at | fromNow }}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<div class="pure-g cards">
|
||||||
|
<a class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4 pure-u-xl-1-4 card card-inactive" href="/{{ repo | fullPath }}" ng-repeat="repo in repos | filter: { active: false } | limitTo:3">
|
||||||
|
<div class="l-box">
|
||||||
|
<h2>{{ repo.owner }} <span class="separator">/</span> {{ repo.name }}</h2>
|
||||||
|
<em><span class="fa fa-plus"></span> Activate</em>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4 pure-u-xl-1-4 card card-browse-inactive" href="/account/repos">
|
||||||
|
<div class="l-box">
|
||||||
|
<span>Browse All</span><br>
|
||||||
|
<span class="fa fa-long-arrow-down"></span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
</div>
|
</div>
|
@ -1,17 +1,29 @@
|
|||||||
<h1>Login</h1>
|
<article id="loginpage">
|
||||||
|
<div class="pure-g">
|
||||||
<div class="pure-u-1">
|
<div class="pure-u-1">
|
||||||
<a href="/login/github.com" target="_self">GitHub</a>
|
<a href="/login/github.com" target="_self">
|
||||||
</div>
|
<i class="fa fa fa-github-square"></i> GitHub
|
||||||
<div class="pure-u-1">
|
</a>
|
||||||
<a href="/login/enterprise.github.com" target="_self">GitHub Enterprise</a>
|
</div>
|
||||||
</div>
|
<div class="pure-u-1">
|
||||||
<div class="pure-u-1">
|
<a href="/login/enterprise.github.com" target="_self">
|
||||||
<a href="/login/bitbucket.org" target="_self">Bitbucket</a>
|
<i class="fa fa fa-github-square"></i> GitHub Enterprise
|
||||||
</div>
|
</a>
|
||||||
<div class="pure-u-1">
|
</div>
|
||||||
<a href="/login/stash.atlassian.com" target="_self">Stash</a>
|
<div class="pure-u-1">
|
||||||
</div>
|
<a href="/login/bitbucket.org" target="_self">
|
||||||
<div class="pure-u-1">
|
<i class="fa fa fa-bitbucket-square"></i> Bitbucket
|
||||||
<a href="/login/gitlab.com" target="_self">GitLab</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="pure-u-1">
|
||||||
|
<a href="/login/stash.atlassian.com" target="_self">
|
||||||
|
<i class="fa fa fa-bitbucket-square"></i> Stash
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="pure-u-1">
|
||||||
|
<a href="/login/gitlab.com" target="_self">
|
||||||
|
<i class="fa fa fa-sign-in"></i> Gitlab
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
@ -1,68 +1,24 @@
|
|||||||
<h1>{{ repo.name }}</h1>
|
<article id="repopage">
|
||||||
|
<nav>
|
||||||
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
|
<span>{{ repo.owner }}</span>
|
||||||
|
<span>/</span>
|
||||||
|
<a href="/{{ repo | fullPath}}">{{ repo.name }}</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
<div class="row" ng-if="repo.active == false">
|
<section ng-repeat="group in commits | unique: 'branch'">
|
||||||
This repo is not active
|
<div class="pure-g cards">
|
||||||
<div>URL: {{ repo.url }}</div>
|
<h2 class="pure-u-1" style="font-size:22px;margin-bottom:20px;"><i class="fa fa-code-fork"></i> {{group.branch}}</h2>
|
||||||
<div>Private: {{ repo.private }}</div>
|
<a class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4 pure-u-xl-1-4 card card" href="/{{ repo | fullPath }}/{{ commit.branch }}/{{ commit.sha }}" ng-repeat="commit in commits | filter: { branch: group.branch } | limitTo:4" data-status="{{ commit.status }}">
|
||||||
<div>remote: {{ repo.remote }}</div>
|
<div class="l-box">
|
||||||
<div>owner: {{ repo.owner }}</div>
|
<h2>{{ commit.message }}</h2>
|
||||||
<div>name: {{ repo.name }}</div>
|
<em ng-if="commit.finished_at != 0">{{ commit.finished_at | fromNow }}</em>
|
||||||
|
<em ng-if="commit.finished_at == 0 && commit.started_at != 0">Started {{ commit.started_at | fromNow }}</em>
|
||||||
<div>
|
<em ng-if="commit.finished_at == 0 && commit.started_at == 0">Created {{ commit.created_at}}</em>
|
||||||
<button ng-click="activate()">Activate</button>
|
<img ng-src="{{ commit.gravatar | gravatar }}" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row" ng-if="repo.active == true">
|
|
||||||
<div class="col-xs-6 col-sm-3">
|
|
||||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}/settings">Settings</a><br/>
|
|
||||||
Recently Updated Branches
|
|
||||||
<ul ng-repeat="commit in branches">
|
|
||||||
<li>
|
|
||||||
<a href="/{{ $parent.repo | fullPath }}/{{ commit.branch }}">
|
|
||||||
<span>{{ commit.branch }}</span>
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
<!-- primary column -->
|
</article>
|
||||||
<div class="col-xs-12 col-sm-9">
|
|
||||||
<table class="table table-bordered">
|
|
||||||
<tr>
|
|
||||||
<th>Status</th>
|
|
||||||
<th>Branch</th>
|
|
||||||
<th>Sha</th>
|
|
||||||
<th>PR</th>
|
|
||||||
<th colspan=2>Author</th>
|
|
||||||
<th>Message</th>
|
|
||||||
<th>Started</th>
|
|
||||||
<th>Finished</th>
|
|
||||||
</tr>
|
|
||||||
<tr ng-repeat="commit in commits">
|
|
||||||
<td>
|
|
||||||
<a href="/{{ $parent.repo | fullPath }}/{{ commit.branch }}/{{ commit.sha }}">
|
|
||||||
<span>{{ commit.status }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="/{{ $parent.repo | fullPath }}/{{ commit.branch }}">
|
|
||||||
<span>{{ commit.branch }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="/{{ $parent.repo | fullPath }}/{{ commit.branch }}/{{ commit.sha }}">
|
|
||||||
<span>{{ commit.sha | shortHash }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>{{ commit.pull_request }}</td>
|
|
||||||
<td>{{ commit.author }}</td>
|
|
||||||
<td><img class="gravatar" ng-src="https://secure.gravatar.com/avatar/{{ commit.gravatar }}?s=32&d=mm" /></td>
|
|
||||||
<td>{{ commit.message }}</td>
|
|
||||||
<td>{{ commit.started_at | fromNow }}</td>
|
|
||||||
<td>{{ commit.finished_at | fromNow }}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,9 +1,15 @@
|
|||||||
<h1>{{ repo.name }}</h1>
|
<article id="repopage">
|
||||||
<h2>Config</h2>
|
<nav>
|
||||||
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
|
<span>{{ repo.owner }}</span>
|
||||||
|
<span>/</span>
|
||||||
|
<a href="/{{ repo | fullPath}}">{{ repo.name }}</a>
|
||||||
|
<span>/</span>
|
||||||
|
<a href="#">settings</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}">Back</a>
|
|
||||||
|
|
||||||
<div class="row">
|
<section>
|
||||||
|
|
||||||
<!-- summary column -->
|
<!-- summary column -->
|
||||||
<div class="col-xs-6 col-sm-3">
|
<div class="col-xs-6 col-sm-3">
|
||||||
@ -28,7 +34,7 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label>Private Variables</label>
|
<label>Private Variables</label>
|
||||||
<div>--</div>
|
<div>TODO!</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@ -65,4 +71,5 @@
|
|||||||
<button ng-click="cancel()">Cancel</button>
|
<button ng-click="cancel()">Cancel</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
|
</article>
|
13
server/app/views/repo_list.html
Normal file
13
server/app/views/repo_list.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<article id="repospage">
|
||||||
|
<nav>
|
||||||
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
|
<a href="/account/repos">repositories</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<ul>
|
||||||
|
<li ng-repeat="repo in repos"><a href="/{{ repo | fullPath }}">{{ repo | fullName }}</a></li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</article>
|
@ -1,32 +1,22 @@
|
|||||||
<div class="row">
|
<div id="userspage">
|
||||||
<div class="col-xs-6 col-sm-3">
|
<nav>
|
||||||
<ul>
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
<li><a href="/admin/settings">Config</a></li>
|
<a href="/">users</a>
|
||||||
<li><a href="/admin/users">Users</a></li>
|
</nav>
|
||||||
<li><a href="/admin/workers">Workers</a></li>
|
|
||||||
<li><a href="/admin/queue">Queue</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- primary column -->
|
<section>
|
||||||
<div class="col-xs-12 col-sm-9">
|
<a class="pure-g user" ng-repeat="user in users" href="/admin/users/{{ user.remote }}/{{ user.login}}">
|
||||||
<table class="table table-bordered" border="1">
|
<div class="pure-u-1-8">
|
||||||
<tr>
|
<div>
|
||||||
<th>Remote</th>
|
<img class="gravatar" ng-src="{{ user.gravatar | gravatar }}" />
|
||||||
<th>Login</th>
|
|
||||||
<th>Gravatar</th>
|
|
||||||
<th>Email</th>
|
|
||||||
<th>Created</th>
|
|
||||||
<th>Updated</th>
|
|
||||||
</tr>
|
|
||||||
<tr ng-repeat="user in users">
|
|
||||||
<td>{{ user.remote }}</td>
|
|
||||||
<td>{{ user.login }}</td>
|
|
||||||
<td><img class="gravatar" ng-src="{{ user.gravatar | gravatar }}" /></td>
|
|
||||||
<td>{{ user.email }}</td>
|
|
||||||
<td>{{ user.created_at | toDate}}</td>
|
|
||||||
<td>{{ user.updated_at | toDate}}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pure-u-7-8">
|
||||||
|
<div>
|
||||||
|
<h4>{{ user.login }} <small>{{ user.remote }}</small></h4>
|
||||||
|
<span class="email">{{ user.email }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</section>
|
||||||
</div>
|
</div>
|
@ -33,11 +33,6 @@ func NewSession(users database.UserManager) Session {
|
|||||||
|
|
||||||
// User gets the currently authenticated user from the secure cookie session.
|
// User gets the currently authenticated user from the secure cookie session.
|
||||||
func (s *session) User(r *http.Request) *model.User {
|
func (s *session) User(r *http.Request) *model.User {
|
||||||
//if true {
|
|
||||||
// user, _ := s.users.Find(1)
|
|
||||||
// return user
|
|
||||||
//}
|
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case r.FormValue("access_token") == "":
|
case r.FormValue("access_token") == "":
|
||||||
return s.UserCookie(r)
|
return s.UserCookie(r)
|
||||||
|
@ -120,5 +120,5 @@ func (c *ImageService) Build(tag, dir string) error {
|
|||||||
headers.Set("Content-Type", "application/tar")
|
headers.Set("Content-Type", "application/tar")
|
||||||
|
|
||||||
// make the request
|
// make the request
|
||||||
return c.stream("POST", path, body, os.Stdout, headers)
|
return c.stream("POST", path, body /*os.Stdout*/, nil, headers)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user