updated css styles & angular
This commit is contained in:
parent
c6b880c272
commit
c8590391e9
25 changed files with 2306 additions and 4125 deletions
|
@ -6,8 +6,6 @@ env:
|
|||
- PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
||||
script:
|
||||
- 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 build
|
||||
- make test
|
||||
|
|
2
Makefile
2
Makefile
|
@ -30,7 +30,7 @@ clean:
|
|||
#@find . -name '*.css' -delete
|
||||
@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
|
||||
# and packaged inside the go binary file.
|
||||
|
|
|
@ -51,6 +51,7 @@ func init() {
|
|||
log.SetSuffix("\033[0m\n")
|
||||
log.SetOutput(os.Stdout)
|
||||
log.SetPriority(log.LOG_NOTICE)
|
||||
docker.Logging = false
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
@ -144,6 +145,11 @@ func run(path string) {
|
|||
return
|
||||
}
|
||||
|
||||
// remove deploy & publish sections
|
||||
// for now, until I fix bug
|
||||
s.Publish = nil
|
||||
s.Deploy = nil
|
||||
|
||||
// get the repository root directory
|
||||
dir := filepath.Dir(path)
|
||||
code := repo.Repo{
|
||||
|
|
|
@ -1,22 +1,28 @@
|
|||
<!doctype html>
|
||||
<html ng-app="app">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="Brad Rydzewski" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title></title>
|
||||
|
||||
<link rel="shortcut icon" href="/favicon.png" />
|
||||
<link rel="stylesheet" href="//yui.yahooapis.com/pure/0.4.2/pure-min.css" />
|
||||
<link rel="shortcut icon" href="/favicon.ico" />
|
||||
<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=Orbitron" />
|
||||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Droid+Sans+Mono" />
|
||||
<link rel="stylesheet" href="/styles/drone.css" />
|
||||
|
||||
</head>
|
||||
<body ng-controller="MainCtrl">
|
||||
|
||||
<div ng-include src=" '/views/header.html' "></div>
|
||||
|
||||
<div ng-view></div>
|
||||
<body ng-controller="MainCtrl" ng-cloak>
|
||||
<div id="container">
|
||||
<input id="drawer-checkbox" type="checkbox" ng-if="user != undefined" />
|
||||
<header id="header" ng-include src=" '/views/header.html' "></header>
|
||||
<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-route.min.js"></script>
|
||||
|
|
|
@ -1,3 +1 @@
|
|||
# robotstxt.org
|
||||
|
||||
User-agent: *
|
|
@ -252,6 +252,7 @@ app.controller("RepoController", function($scope, $http, $routeParams, user, rep
|
|||
$scope.repo = repo;
|
||||
|
||||
// load the repo branch list
|
||||
/*
|
||||
$http({method: 'GET', url: '/v1/repos/'+repo.host+'/'+repo.owner+"/"+repo.name+"/branches"}).
|
||||
success(function(data, status, headers, config) {
|
||||
$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) {
|
||||
console.log(data);
|
||||
});
|
||||
*/
|
||||
|
||||
// load the repo commit 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
|
||||
$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) {
|
||||
$scope.console = data;
|
||||
}).
|
||||
|
|
|
@ -11,7 +11,15 @@ angular.module('app').controller("HomeController", function($scope, $http, feed,
|
|||
|
||||
$http({method: 'GET', url: '/v1/user/feed'}).
|
||||
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) {
|
||||
console.log(data);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
angular.module('app').filter('gravatar', function() {
|
||||
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"
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -59,4 +59,18 @@ angular.module('app').filter('badgeMarkup', function() {
|
|||
var path = repo.host+'/'+repo.owner+'/'+repo.name;
|
||||
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
|
||||
//@green
|
||||
//@yellow
|
||||
//@red
|
||||
@link: #68c598;
|
||||
@link2: #4ab1ce;
|
||||
@cneg: #e97041;
|
||||
@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
|
||||
@import "base/variables.less";
|
||||
@import "base/overflow.less";
|
||||
@import "base/clearfix.less";
|
||||
#sidebar {
|
||||
width: 240px;
|
||||
min-width: 240px;
|
||||
position: relative;
|
||||
display: block;
|
||||
z-index: 5;
|
||||
padding: 30px;
|
||||
.border_box;
|
||||
|
||||
// general overrides and resets
|
||||
@import "general/resets.less";
|
||||
@import "general/angular.less";
|
||||
//@import "general/scrollbars.less";
|
||||
@import "general/forms.less";
|
||||
//border-left:1px solid #cdcece;
|
||||
//box-shadow:-3px 0 0 rgba(0,0,0,.05);
|
||||
|
||||
// page layouts
|
||||
//@import "layout/layout.less";
|
||||
h1 {font-size:28px; font-weight:300;}
|
||||
h2 {font-size:22px; font-weight:300; margin-bottom:20px;}
|
||||
dl {padding-top:23px; border-top:1px solid #ddd; margin-top:5px;
|
||||
|
||||
// modules
|
||||
@import "modules/header.less";
|
||||
@import "modules/article.less";
|
||||
@import "modules/section.less";
|
||||
&:first-child {padding-top:0; border-top:none; margin-top:0;}
|
||||
|
||||
@import "modules/list-activity.less";
|
||||
@import "modules/list-repos.less";
|
||||
@import "modules/list-commits.less";
|
||||
@import "modules/list-users.less";
|
||||
@import "modules/user-account.less";
|
||||
@import "modules/form-search.less";
|
||||
dt {font-size:12px; color:@c2; text-transform:uppercase; padding:3px 0;}
|
||||
dd {font-size:14px; padding:3px 0 20px;}
|
||||
a {text-transform:none;}
|
||||
small {font-size:12px;}
|
||||
.large {font-size:18px; padding-bottom:5px;}
|
||||
.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";
|
||||
@import "modules/build.less";
|
||||
@import "modules/authors.less";
|
||||
@import "modules/branches.less";
|
||||
@import "modules/stdout.less";
|
||||
@import "modules/switch.less";
|
||||
.status {
|
||||
border:1px solid transparent;
|
||||
display:block;
|
||||
text-align:center;
|
||||
padding:5px 20px;
|
||||
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";
|
||||
//@import "buttons/buttons.less";
|
||||
//@import "buttons/custom.less";
|
||||
//@import "forms/forms.less";
|
||||
//@import "forms/custom.less";
|
||||
//@import "menus/menus.less";
|
||||
//@import "menus/custom.less";
|
||||
&[data-result="Killed"],
|
||||
&[data-result="Failure"],
|
||||
&[data-result="Error"] {
|
||||
background: @cneg;
|
||||
.status:before {
|
||||
content:"!";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#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>
|
||||
<a href="/"><span class="fa fa-th"></span></a>
|
||||
<a href="/account/profile">my account</a>
|
||||
</nav>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<!-- summary column -->
|
||||
<div class="col-xs-6 col-sm-3">
|
||||
What to show here?
|
||||
</div>
|
||||
|
||||
<!-- primary column -->
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
|
||||
<div>
|
||||
<label>Remote</label>
|
||||
<span>{{ user.remote }}</span>
|
||||
<section class="pure-g profile">
|
||||
<div class="pure-u-1-6">
|
||||
<div>
|
||||
<a href="https://gravatar.com/" target="_blank">
|
||||
<img ng-src="https://gravatar.com/avatar/{{ user.gravatar }}?d=identicon" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-u-5-6">
|
||||
<div>
|
||||
<h4>bradrydzewski</h4>
|
||||
<span class="fullname">Brad Rydzewski</span>
|
||||
<span class="email">brad.rydzewski@gmail.com</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>Login</label>
|
||||
<span>{{ user.login }}</span>
|
||||
<!-- 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>
|
||||
|
||||
<div>
|
||||
<label>Gravatar</label>
|
||||
<img class="gravatar" ng-src="https://secure.gravatar.com/avatar/{{ user.gravatar }}?s=32&d=mm" />
|
||||
<section class="pure-g token">
|
||||
<div class="pure-u-1-6">
|
||||
<div>
|
||||
<i class="fa fa-key"></i> api key
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>Email</label>
|
||||
<input type="text" ng-model="userTemp.email" />
|
||||
<div class="pure-u-5-6">
|
||||
<div>
|
||||
{{ user.token }}
|
||||
</div>
|
||||
</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>
|
||||
</section>
|
||||
</article>
|
|
@ -1,18 +1,34 @@
|
|||
<h1>{{ repo.name }}</h1>
|
||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}">Back</a>
|
||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}/settings">Settings</a>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-6 col-sm-3">
|
||||
<span>Commit</span>
|
||||
<span>{{ commit.sha }}</span>
|
||||
<br/>
|
||||
<span>Status</span>
|
||||
<span>{{ commit.status }}</span>
|
||||
<aside id="sidebar">
|
||||
<div class="result" data-result="{{ commit.status }}">
|
||||
<dl>
|
||||
<dd><span class="status">{{ commit.status }}</span></dd>
|
||||
<dd><strong>{{ commit.message }}</strong></dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<dl>
|
||||
<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>
|
||||
|
||||
<!-- primary column -->
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
<pre>{{ console }}</pre>
|
||||
</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">
|
||||
<tr ng-if="user != undefined">
|
||||
<td><a href="/">Home</a></td>
|
||||
<td><a href="/account/profile">{{ user.login }}</a></td>
|
||||
<td><img ng-src="{{ user.gravatar | gravatar }}" /></td>
|
||||
</tr>
|
||||
<tr ng-if="user == undefined">
|
||||
<td>
|
||||
<a href="/login">Login</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<a class="burger" href="/" ng-if="user != undefined">
|
||||
<i class="fa fa-bars"></i>
|
||||
</a>
|
||||
|
||||
<a class="brand" href="/">Drone</a>
|
||||
|
||||
<div class="user" ng-if="user != undefined">
|
||||
<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>
|
||||
</div>
|
|
@ -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">
|
||||
<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="l-box">
|
||||
<h2>{{ repo.owner }} <span class="separator">/</span> {{ repo.name }}</h2>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- primary column -->
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
<table class="table table-bordered">
|
||||
<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>
|
||||
<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>
|
||||
|
|
|
@ -1,17 +1,29 @@
|
|||
<h1>Login</h1>
|
||||
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/github.com" target="_self">GitHub</a>
|
||||
</div>
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/enterprise.github.com" target="_self">GitHub Enterprise</a>
|
||||
</div>
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/bitbucket.org" target="_self">Bitbucket</a>
|
||||
</div>
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/stash.atlassian.com" target="_self">Stash</a>
|
||||
</div>
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/gitlab.com" target="_self">GitLab</a>
|
||||
</div>
|
||||
<article id="loginpage">
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/github.com" target="_self">
|
||||
<i class="fa fa fa-github-square"></i> GitHub
|
||||
</a>
|
||||
</div>
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/enterprise.github.com" target="_self">
|
||||
<i class="fa fa fa-github-square"></i> GitHub Enterprise
|
||||
</a>
|
||||
</div>
|
||||
<div class="pure-u-1">
|
||||
<a href="/login/bitbucket.org" target="_self">
|
||||
<i class="fa fa fa-bitbucket-square"></i> Bitbucket
|
||||
</a>
|
||||
</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">
|
||||
This repo is not active
|
||||
<div>URL: {{ repo.url }}</div>
|
||||
<div>Private: {{ repo.private }}</div>
|
||||
<div>remote: {{ repo.remote }}</div>
|
||||
<div>owner: {{ repo.owner }}</div>
|
||||
<div>name: {{ repo.name }}</div>
|
||||
|
||||
<div>
|
||||
<button ng-click="activate()">Activate</button>
|
||||
</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>
|
||||
<section ng-repeat="group in commits | unique: 'branch'">
|
||||
<div class="pure-g cards">
|
||||
<h2 class="pure-u-1" style="font-size:22px;margin-bottom:20px;"><i class="fa fa-code-fork"></i> {{group.branch}}</h2>
|
||||
<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 class="l-box">
|
||||
<h2>{{ commit.message }}</h2>
|
||||
<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>
|
||||
<em ng-if="commit.finished_at == 0 && commit.started_at == 0">Created {{ commit.created_at}}</em>
|
||||
<img ng-src="{{ commit.gravatar | gravatar }}" />
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- primary column -->
|
||||
<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>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
|
@ -1,68 +1,75 @@
|
|||
<h1>{{ repo.name }}</h1>
|
||||
<h2>Config</h2>
|
||||
<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>
|
||||
<span>/</span>
|
||||
<a href="#">settings</a>
|
||||
</nav>
|
||||
|
||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}">Back</a>
|
||||
|
||||
<div class="row">
|
||||
<section>
|
||||
|
||||
<!-- summary column -->
|
||||
<div class="col-xs-6 col-sm-3">
|
||||
<!-- badge -->
|
||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}">
|
||||
<img ng-src="/v1/badge/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}/status.svg" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- primary column -->
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
|
||||
<div>
|
||||
<label>Post Commit Hook</label>
|
||||
<input type="checkbox" ng-model="repoTemp.post_commits" />
|
||||
<!-- summary column -->
|
||||
<div class="col-xs-6 col-sm-3">
|
||||
<!-- badge -->
|
||||
<a href="/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}">
|
||||
<img ng-src="/v1/badge/{{ repo.remote }}/{{ repo.owner}}/{{ repo.name }}/status.svg" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>Pull Reqest Hook</label>
|
||||
<input type="checkbox" ng-model="repoTemp.pull_requests" />
|
||||
</div>
|
||||
<!-- primary column -->
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
|
||||
<div>
|
||||
<label>Private Variables</label>
|
||||
<div>--</div>
|
||||
</div>
|
||||
<div>
|
||||
<label>Post Commit Hook</label>
|
||||
<input type="checkbox" ng-model="repoTemp.post_commits" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>Privileged</label>
|
||||
<input type="checkbox" ng-model="repoTemp.privileged" />
|
||||
</div>
|
||||
<div>
|
||||
<label>Pull Reqest Hook</label>
|
||||
<input type="checkbox" ng-model="repoTemp.pull_requests" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>Timeout</label>
|
||||
<input type="number" ng-model="repoTemp.timeout" />
|
||||
</div>
|
||||
<div>
|
||||
<label>Private Variables</label>
|
||||
<div>TODO!</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>URL</label>
|
||||
<span>{{ repo.url }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<label>Privileged</label>
|
||||
<input type="checkbox" ng-model="repoTemp.privileged" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>Created</label>
|
||||
<span>{{ repo.created_at | fromNow }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<label>Timeout</label>
|
||||
<input type="number" ng-model="repoTemp.timeout" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>Updated</label>
|
||||
<span>{{ repo.updated_at | fromNow }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<label>URL</label>
|
||||
<span>{{ repo.url }}</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{failure}}
|
||||
</div>
|
||||
<div>
|
||||
<label>Created</label>
|
||||
<span>{{ repo.created_at | fromNow }}</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button ng-click="save()">Save</button>
|
||||
<button ng-click="cancel()">Cancel</button>
|
||||
<div>
|
||||
<label>Updated</label>
|
||||
<span>{{ repo.updated_at | fromNow }}</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{failure}}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button ng-click="save()">Save</button>
|
||||
<button ng-click="cancel()">Cancel</button>
|
||||
</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 class="col-xs-6 col-sm-3">
|
||||
<ul>
|
||||
<li><a href="/admin/settings">Config</a></li>
|
||||
<li><a href="/admin/users">Users</a></li>
|
||||
<li><a href="/admin/workers">Workers</a></li>
|
||||
<li><a href="/admin/queue">Queue</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="userspage">
|
||||
<nav>
|
||||
<a href="/"><span class="fa fa-th"></span></a>
|
||||
<a href="/">users</a>
|
||||
</nav>
|
||||
|
||||
<!-- primary column -->
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
<table class="table table-bordered" border="1">
|
||||
<tr>
|
||||
<th>Remote</th>
|
||||
<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>
|
||||
<section>
|
||||
<a class="pure-g user" ng-repeat="user in users" href="/admin/users/{{ user.remote }}/{{ user.login}}">
|
||||
<div class="pure-u-1-8">
|
||||
<div>
|
||||
<img class="gravatar" ng-src="{{ user.gravatar | gravatar }}" />
|
||||
</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>
|
|
@ -33,11 +33,6 @@ func NewSession(users database.UserManager) Session {
|
|||
|
||||
// User gets the currently authenticated user from the secure cookie session.
|
||||
func (s *session) User(r *http.Request) *model.User {
|
||||
//if true {
|
||||
// user, _ := s.users.Find(1)
|
||||
// return user
|
||||
//}
|
||||
|
||||
switch {
|
||||
case r.FormValue("access_token") == "":
|
||||
return s.UserCookie(r)
|
||||
|
|
|
@ -120,5 +120,5 @@ func (c *ImageService) Build(tag, dir string) error {
|
|||
headers.Set("Content-Type", "application/tar")
|
||||
|
||||
// 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 a new issue