Merge branch 'feature-improvements'
This commit is contained in:
commit
2ecd4ff2f7
|
@ -1,7 +1,7 @@
|
|||
PHP Censor Copyright (c) 2016, Corpsee
|
||||
Copyright (c) 2016, PHP Censor
|
||||
All rights reserved.
|
||||
|
||||
PHPCI Copyright (c) 2013, Block 8 Limited
|
||||
Copyright (c) 2013, PHPCI, Block 8 Limited
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
|
|
@ -23,7 +23,7 @@ More [screenshots](docs/en/screenshots.md).
|
|||
Configuring
|
||||
-----------
|
||||
|
||||
Similar to Travis CI, to support **PHP Censor** in your project, you simply need to add a `.php-censor.yml`
|
||||
Similar to [TravisCI](https://travis-ci.org), to support PHP Censor in your project, you simply need to add a `.php-censor.yml`
|
||||
(`phpci.yml`/`.phpci.yml` for backward compatibility with PHPCI) file to the root of your repository. The file should
|
||||
look something like this:
|
||||
|
||||
|
@ -124,4 +124,4 @@ Documentation
|
|||
License
|
||||
-------
|
||||
|
||||
*PHP Censor* is open source software licensed under the [BSD-2-Clause license](LICENSE.md).
|
||||
PHP Censor is open source software licensed under the [BSD-2-Clause license](LICENSE.md).
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"name": "corpsee/php-censor",
|
||||
"description": "Simple continuous integration for PHP projects. PHPCI fork.",
|
||||
"description": "PHP Censor is a fork of PHPCI and is a open source continuous integration tool specifically designed for PHP",
|
||||
"minimum-stability": "stable",
|
||||
"type": "library",
|
||||
"type": "application",
|
||||
"keywords": ["php", "php-censor", "ci", "continuous integration"],
|
||||
"homepage": "https://github.com/corpsee/php-censor",
|
||||
"license": "BSD-2-Clause",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Corpsee",
|
||||
"name": "Dmitry Khomutov",
|
||||
"email": "poisoncorpsee@gmail.com",
|
||||
"homepage": "http://corpsee.com",
|
||||
"role": "PHP Censor developer"
|
||||
|
@ -37,7 +37,7 @@
|
|||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"php": ">=5.6.0",
|
||||
"ext-pdo": "*",
|
||||
"ext-pdo_mysql": "*",
|
||||
|
||||
|
|
17
composer.lock
generated
17
composer.lock
generated
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "813fe1e7b00edc029b1137481591822c",
|
||||
"content-hash": "0a4b95103fb8aa05e609a2a7f5997214",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bower-asset/admin-lte",
|
||||
|
@ -521,23 +521,24 @@
|
|||
},
|
||||
{
|
||||
"name": "swiftmailer/swiftmailer",
|
||||
"version": "v5.4.4",
|
||||
"version": "v5.4.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/swiftmailer/swiftmailer.git",
|
||||
"reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756"
|
||||
"reference": "cd142238a339459b10da3d8234220963f392540c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/545ce9136690cea74f98f86fbb9c92dd9ab1a756",
|
||||
"reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756",
|
||||
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/cd142238a339459b10da3d8234220963f392540c",
|
||||
"reference": "cd142238a339459b10da3d8234220963f392540c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "~0.9.1"
|
||||
"mockery/mockery": "~0.9.1",
|
||||
"symfony/phpunit-bridge": "~3.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
|
@ -570,7 +571,7 @@
|
|||
"mail",
|
||||
"mailer"
|
||||
],
|
||||
"time": "2016-11-24T01:01:23+00:00"
|
||||
"time": "2016-12-29T10:02:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/config",
|
||||
|
@ -2588,7 +2589,7 @@
|
|||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=5.4.0",
|
||||
"php": ">=5.6.0",
|
||||
"ext-pdo": "*",
|
||||
"ext-pdo_mysql": "*"
|
||||
},
|
||||
|
|
|
@ -10,7 +10,7 @@ Configuration
|
|||
|
||||
* **config** - Required - Can be either a single string pointing to a Codeception configuration file, or an array of configuration file paths. By default this is called `codeception.yml` and will be in the root of your project.
|
||||
|
||||
* **args** - Optional - The string of arguments to be passed to the run command.**Important**, due to the assumption made on line [132](https://github.com/Block8/PHPCI/blob/master/PHPCI/Plugin/Codeception.php#L132) regarding the value of `--xml` being the next argument which will not be correct if the user provides arguments using this config param, you must specify `report.xml` before any user input arguments to satisfy the report processing on line [146](https://github.com/Block8/PHPCI/blob/master/PHPCI/Plugin/Codeception.php#L146)
|
||||
* **args** - Optional - The string of arguments to be passed to the run command.**Important**, due to the assumption made on line 132 regarding the value of `--xml` being the next argument which will not be correct if the user provides arguments using this config param, you must specify `report.xml` before any user input arguments to satisfy the report processing on line 146.
|
||||
|
||||
* **path** - Optional - The path from the root of your project to the root of the codeception _output directory
|
||||
|
||||
|
|
|
@ -1,814 +0,0 @@
|
|||
/*
|
||||
* Skin: Blue
|
||||
* ----------
|
||||
*/
|
||||
.skin-blue .main-header .navbar {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .nav > li > a:hover,
|
||||
.skin-blue .main-header .navbar .nav > li > a:active,
|
||||
.skin-blue .main-header .navbar .nav > li > a:focus,
|
||||
.skin-blue .main-header .navbar .nav .open > a,
|
||||
.skin-blue .main-header .navbar .nav .open > a:hover,
|
||||
.skin-blue .main-header .navbar .nav .open > a:focus,
|
||||
.skin-blue .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #367fa9;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-blue .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #367fa9;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-blue .main-header .logo {
|
||||
background-color: #367fa9;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .logo:hover {
|
||||
background-color: #357ca5;
|
||||
}
|
||||
|
||||
.skin-blue .main-header li.user-header {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
|
||||
.skin-blue .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.skin-blue .wrapper,
|
||||
.skin-blue .main-sidebar,
|
||||
.skin-blue .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
|
||||
.skin-blue .user-panel > .info,
|
||||
.skin-blue .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-menu > li:hover > a,
|
||||
.skin-blue .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #3c8dbc;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.skin-blue .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
|
||||
.skin-blue .treeview-menu > li.active > a,
|
||||
.skin-blue .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-form input[type="text"],
|
||||
.skin-blue .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-form input[type="text"]:focus,
|
||||
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.skin-blue.layout-top-nav .main-header > .logo {
|
||||
background-color: #3c8dbc;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-blue.layout-top-nav .main-header > .logo:hover {
|
||||
background-color: #3b8ab8;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Green
|
||||
* -----------
|
||||
*/
|
||||
.skin-green .main-header .navbar {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .nav > li > a:hover,
|
||||
.skin-green .main-header .navbar .nav > li > a:active,
|
||||
.skin-green .main-header .navbar .nav > li > a:focus,
|
||||
.skin-green .main-header .navbar .nav .open > a,
|
||||
.skin-green .main-header .navbar .nav .open > a:hover,
|
||||
.skin-green .main-header .navbar .nav .open > a:focus,
|
||||
.skin-green .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #008d4c;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-green .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #008d4c;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-green .main-header .logo {
|
||||
background-color: #008d4c;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-green .main-header .logo:hover {
|
||||
background-color: #008749;
|
||||
}
|
||||
|
||||
.skin-green .main-header li.user-header {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
|
||||
.skin-green .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.skin-green .wrapper,
|
||||
.skin-green .main-sidebar,
|
||||
.skin-green .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
|
||||
.skin-green .user-panel > .info,
|
||||
.skin-green .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-menu > li:hover > a,
|
||||
.skin-green .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #00a65a;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
|
||||
.skin-green .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
|
||||
.skin-green .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.skin-green .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
|
||||
.skin-green .treeview-menu > li.active > a,
|
||||
.skin-green .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-form input[type="text"],
|
||||
.skin-green .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-form input[type="text"]:focus,
|
||||
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.skin-green .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Red
|
||||
* ---------
|
||||
*/
|
||||
.skin-red .main-header .navbar {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .nav > li > a:hover,
|
||||
.skin-red .main-header .navbar .nav > li > a:active,
|
||||
.skin-red .main-header .navbar .nav > li > a:focus,
|
||||
.skin-red .main-header .navbar .nav .open > a,
|
||||
.skin-red .main-header .navbar .nav .open > a:hover,
|
||||
.skin-red .main-header .navbar .nav .open > a:focus,
|
||||
.skin-red .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #d73925;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-red .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #d73925;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-red .main-header .logo {
|
||||
background-color: #d73925;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-red .main-header .logo:hover {
|
||||
background-color: #d33724;
|
||||
}
|
||||
|
||||
.skin-red .main-header li.user-header {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
|
||||
.skin-red .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.skin-red .wrapper,
|
||||
.skin-red .main-sidebar,
|
||||
.skin-red .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
|
||||
.skin-red .user-panel > .info,
|
||||
.skin-red .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-menu > li:hover > a,
|
||||
.skin-red .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #dd4b39;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
|
||||
.skin-red .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
|
||||
.skin-red .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.skin-red .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
|
||||
.skin-red .treeview-menu > li.active > a,
|
||||
.skin-red .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-form input[type="text"],
|
||||
.skin-red .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-form input[type="text"]:focus,
|
||||
.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.skin-red .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Yellow
|
||||
* ------------
|
||||
*/
|
||||
.skin-yellow .main-header .navbar {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .nav > li > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:active,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav .open > a,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #e08e0b;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #e08e0b;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .logo {
|
||||
background-color: #e08e0b;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .logo:hover {
|
||||
background-color: #db8b0b;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header li.user-header {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
|
||||
.skin-yellow .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.skin-yellow .wrapper,
|
||||
.skin-yellow .main-sidebar,
|
||||
.skin-yellow .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
|
||||
.skin-yellow .user-panel > .info,
|
||||
.skin-yellow .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-menu > li:hover > a,
|
||||
.skin-yellow .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #f39c12;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.skin-yellow .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
|
||||
.skin-yellow .treeview-menu > li.active > a,
|
||||
.skin-yellow .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-form input[type="text"],
|
||||
.skin-yellow .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus,
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Purple
|
||||
* ------------
|
||||
*/
|
||||
.skin-black .main-header .navbar {
|
||||
background-color: #1e282c;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .nav > li > a:hover,
|
||||
.skin-black .main-header .navbar .nav > li > a:active,
|
||||
.skin-black .main-header .navbar .nav > li > a:focus,
|
||||
.skin-black .main-header .navbar .nav .open > a,
|
||||
.skin-black .main-header .navbar .nav .open > a:hover,
|
||||
.skin-black .main-header .navbar .nav .open > a:focus,
|
||||
.skin-black .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-black .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: black;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-black .main-header .logo {
|
||||
background-color: black;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-black .main-header .logo:hover {
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
.skin-black .main-header li.user-header {
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
.skin-black .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.skin-black .wrapper,
|
||||
.skin-black .main-sidebar,
|
||||
.skin-black .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
|
||||
.skin-black .user-panel > .info,
|
||||
.skin-black .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-menu > li:hover > a,
|
||||
.skin-black .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
|
||||
.skin-black .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
|
||||
.skin-black .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.skin-black .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
|
||||
.skin-black .treeview-menu > li.active > a,
|
||||
.skin-black .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-form input[type="text"],
|
||||
.skin-black .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-form input[type="text"]:focus,
|
||||
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.skin-black .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
|
@ -1,6 +1,456 @@
|
|||
.wrapper,
|
||||
.main-sidebar,
|
||||
.left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
|
||||
.user-panel > .info,
|
||||
.user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: black;
|
||||
}
|
||||
|
||||
.sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
|
||||
.sidebar-menu > li:hover > a,
|
||||
.sidebar-menu > li.active > a {
|
||||
color: #fff;
|
||||
background: #1a2226;
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
|
||||
.sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
|
||||
.sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
|
||||
.treeview-menu > li.active > a,
|
||||
.treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
|
||||
.sidebar-form input[type="text"],
|
||||
.sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
.sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
|
||||
.sidebar-form input[type="text"]:focus,
|
||||
.sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
|
||||
.sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Blue
|
||||
* ----------
|
||||
*/
|
||||
.skin-blue .main-header .navbar {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .nav > li > a:hover,
|
||||
.skin-blue .main-header .navbar .nav > li > a:active,
|
||||
.skin-blue .main-header .navbar .nav > li > a:focus,
|
||||
.skin-blue .main-header .navbar .nav .open > a,
|
||||
.skin-blue .main-header .navbar .nav .open > a:hover,
|
||||
.skin-blue .main-header .navbar .nav .open > a:focus,
|
||||
.skin-blue .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #367fa9;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-blue .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #367fa9;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-blue .main-header .logo {
|
||||
background-color: #367fa9;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-blue .main-header .logo:hover {
|
||||
background-color: #357ca5;
|
||||
}
|
||||
|
||||
.skin-blue .main-header li.user-header {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
|
||||
.skin-blue .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Green
|
||||
* -----------
|
||||
*/
|
||||
.skin-green .main-header .navbar {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .nav > li > a:hover,
|
||||
.skin-green .main-header .navbar .nav > li > a:active,
|
||||
.skin-green .main-header .navbar .nav > li > a:focus,
|
||||
.skin-green .main-header .navbar .nav .open > a,
|
||||
.skin-green .main-header .navbar .nav .open > a:hover,
|
||||
.skin-green .main-header .navbar .nav .open > a:focus,
|
||||
.skin-green .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #008d4c;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-green .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-green .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #008d4c;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-green .main-header .logo {
|
||||
background-color: #008d4c;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-green .main-header .logo:hover {
|
||||
background-color: #008749;
|
||||
}
|
||||
|
||||
.skin-green .main-header li.user-header {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
|
||||
.skin-green .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Red
|
||||
* ---------
|
||||
*/
|
||||
.skin-red .main-header .navbar {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .nav > li > a:hover,
|
||||
.skin-red .main-header .navbar .nav > li > a:active,
|
||||
.skin-red .main-header .navbar .nav > li > a:focus,
|
||||
.skin-red .main-header .navbar .nav .open > a,
|
||||
.skin-red .main-header .navbar .nav .open > a:hover,
|
||||
.skin-red .main-header .navbar .nav .open > a:focus,
|
||||
.skin-red .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #d73925;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-red .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-red .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #d73925;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-red .main-header .logo {
|
||||
background-color: #d73925;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-red .main-header .logo:hover {
|
||||
background-color: #d33724;
|
||||
}
|
||||
|
||||
.skin-red .main-header li.user-header {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
|
||||
.skin-red .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Yellow
|
||||
* ------------
|
||||
*/
|
||||
.skin-yellow .main-header .navbar {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .nav > li > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:active,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav .open > a,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #e08e0b;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #e08e0b;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .logo {
|
||||
background-color: #e08e0b;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header .logo:hover {
|
||||
background-color: #db8b0b;
|
||||
}
|
||||
|
||||
.skin-yellow .main-header li.user-header {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
|
||||
.skin-yellow .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skin: Black
|
||||
* -----------
|
||||
*/
|
||||
.skin-black .main-header .navbar {
|
||||
background-color: #222d32;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .nav > li > a:hover,
|
||||
.skin-black .main-header .navbar .nav > li > a:active,
|
||||
.skin-black .main-header .navbar .nav > li > a:focus,
|
||||
.skin-black .main-header .navbar .nav .open > a,
|
||||
.skin-black .main-header .navbar .nav .open > a:hover,
|
||||
.skin-black .main-header .navbar .nav .open > a:focus,
|
||||
.skin-black .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #1a2226;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.skin-black .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.skin-black .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #1a2226;
|
||||
}
|
||||
}
|
||||
|
||||
.skin-black .main-header .logo {
|
||||
background-color: black;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
|
||||
.skin-black .main-header .logo:hover {
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
.skin-black .main-header li.user-header {
|
||||
background-color: #1a2226;
|
||||
}
|
||||
|
||||
.skin-black .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
|
||||
.build-info-panel .box-header h1.box-title {
|
||||
border: 0;
|
||||
font-size: 1.5em;
|
||||
border: 0;
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
margin-left: 110px;
|
||||
}
|
||||
|
@ -10,14 +460,14 @@
|
|||
}
|
||||
|
||||
.build-info-panel img {
|
||||
border: 2px solid #fff;
|
||||
border: 2px solid #fff;
|
||||
border-radius: 50%;
|
||||
margin-top: -40px;
|
||||
margin-top: -40px;
|
||||
}
|
||||
|
||||
.build-info-panel #build-info {
|
||||
margin-left: 110px;
|
||||
min-height: 50px;
|
||||
min-height: 50px;
|
||||
}
|
||||
|
||||
.build-info-panel .commit-message {
|
||||
|
@ -28,10 +478,10 @@
|
|||
color: #fff;
|
||||
}
|
||||
|
||||
.pagination>li>span {
|
||||
.pagination > li > span {
|
||||
font-weight: bold;
|
||||
background: #337ab7;
|
||||
color: #fff;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#plugins table td {
|
||||
|
@ -57,20 +507,63 @@
|
|||
float: left;
|
||||
}
|
||||
.small-box-minimal > .small-box-footer-build {
|
||||
width: 5%;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
width: 5%;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
margin-left: 1px;
|
||||
margin-top: 19px;
|
||||
font-size: 11px;
|
||||
margin-top: 19px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.navbar-nav > .user-menu > .dropdown-menu {
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
.nav-tabs-custom > .nav-tabs > li.active {
|
||||
border-top-color: #8aa4af;
|
||||
}
|
||||
|
||||
.box {
|
||||
border-top: 3px solid #8aa4af;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
padding: 9.5px;
|
||||
margin: 0 0 10px;
|
||||
font-size: 13px;
|
||||
line-height: 1.42857143;
|
||||
color: #333;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
background-color: #fff;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
body,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
.h1,
|
||||
.h2,
|
||||
.h3,
|
||||
.h4,
|
||||
.h5,
|
||||
.h6,
|
||||
.main-header .logo {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
#phpunit-data th div { margin: 0 0.5em; }
|
||||
#phpunit-data .success td { background: none; color: #00a65a; }
|
||||
#phpunit-data .fail td { background: none; color: #f56954; }
|
||||
#phpunit-data .error td { background: none; color: #f56954; }
|
||||
#phpunit-data .skipped td { background: none; color: #e08e0b; }
|
||||
#phpunit-data .todo td { background: none; color: #00c0ef; }
|
||||
|
||||
.visible-line-breaks {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
var phpunitPlugin = ActiveBuild.UiPlugin.extend({
|
||||
id: 'build-phpunit-errors',
|
||||
css: 'col-lg-6 col-md-12 col-sm-12 col-xs-12',
|
||||
css: 'col-xs-12',
|
||||
title: Lang.get('phpunit'),
|
||||
lastData: null,
|
||||
displayOnUpdate: false,
|
||||
|
@ -8,7 +8,7 @@ var phpunitPlugin = ActiveBuild.UiPlugin.extend({
|
|||
rendered: false,
|
||||
statusMap: {
|
||||
success : 'ok',
|
||||
fail: 'remove',
|
||||
failed: 'remove',
|
||||
error: 'warning-sign',
|
||||
todo: 'info-sign',
|
||||
skipped: 'exclamation-sign'
|
||||
|
@ -28,16 +28,6 @@ var phpunitPlugin = ActiveBuild.UiPlugin.extend({
|
|||
query();
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('click', '#phpunit-data .test-toggle', function(ev) {
|
||||
var input = $(ev.target);
|
||||
$('#phpunit-data tbody ' + input.data('target')).toggle(input.prop('checked'));
|
||||
});
|
||||
|
||||
$(document).on('click', '#phpunit-data button.trace', function() {
|
||||
var $btn = $(this);
|
||||
$($btn).replaceWith(self.buildTrace($btn.data('trace')));
|
||||
});
|
||||
},
|
||||
|
||||
render: function() {
|
||||
|
@ -45,7 +35,9 @@ var phpunitPlugin = ActiveBuild.UiPlugin.extend({
|
|||
return $('<div class="table-responsive"><table class="table" id="phpunit-data">' +
|
||||
'<thead>' +
|
||||
'<tr>' +
|
||||
' <th>'+Lang.get('test_message')+'</th>' +
|
||||
'<th>'+Lang.get('status')+'</th>' +
|
||||
'<th>'+Lang.get('test_message')+'</th>' +
|
||||
'<th>'+Lang.get('trace')+'</th>' +
|
||||
'</tr>' +
|
||||
'</thead><tbody></tbody></table></div>');
|
||||
},
|
||||
|
@ -62,7 +54,7 @@ var phpunitPlugin = ActiveBuild.UiPlugin.extend({
|
|||
var tests = this.lastData[0].meta_value;
|
||||
var thead = $('#phpunit-data thead tr');
|
||||
var tbody = $('#phpunit-data tbody');
|
||||
thead.empty().append('<th>'+Lang.get('test_message')+'</th>');
|
||||
thead.empty().append('<th>'+Lang.get('status')+'</th><th>'+Lang.get('test_message')+'</th><th>'+Lang.get('trace')+'</th>');
|
||||
tbody.empty();
|
||||
|
||||
if (tests.length == 0) {
|
||||
|
@ -70,12 +62,23 @@ var phpunitPlugin = ActiveBuild.UiPlugin.extend({
|
|||
return;
|
||||
}
|
||||
|
||||
var counts = { success: 0, fail: 0, error: 0, skipped: 0, todo: 0 }, total = 0;
|
||||
var counts = { success: 0, failed: 0, error: 0, skipped: 0, todo: 0 }, total = 0;
|
||||
|
||||
for (var i in tests) {
|
||||
var content = $('<td colspan="3"></td>'),
|
||||
message = $('<div class="visible-line-breaks"></div>').appendTo(content),
|
||||
severity = tests[i].severity || (tests[i].pass ? 'success' : 'failed');
|
||||
var severity = tests[i].severity || (tests[i].pass ? 'success' : 'failed'),
|
||||
label = ('success' == severity) ? 'success' : (
|
||||
('error' == severity) ? 'danger' : 'warning'
|
||||
);
|
||||
|
||||
if ('fail' === severity) {
|
||||
severity = 'failed';
|
||||
}
|
||||
|
||||
var status = $('<td><span class="label label-' + label + '">'+Lang.get(severity)+'</span></td>'),
|
||||
content = $('<td></td>'),
|
||||
trace = $('<td></td>'),
|
||||
message = $('<div class="visible-line-breaks"></div>').appendTo(content),
|
||||
trace_message = $('<div class="visible-line-breaks"></div>').appendTo(trace);
|
||||
|
||||
if (tests[i].message) {
|
||||
message.text(tests[i].message);
|
||||
|
@ -90,34 +93,15 @@ var phpunitPlugin = ActiveBuild.UiPlugin.extend({
|
|||
}
|
||||
|
||||
if (tests[i].trace && tests[i].trace.length) {
|
||||
var $traceBtn = $('<button class="btn btn-default btn-xs trace" type="button" title="Expand Trace">...</button>');
|
||||
$traceBtn.data('trace', tests[i].trace);
|
||||
content.append('Trace: ');
|
||||
content.append($traceBtn);
|
||||
trace_message.append(tests[i].trace);
|
||||
}
|
||||
|
||||
$('<tr class="'+ severity + '"></tr>').append(content).appendTo(tbody);
|
||||
$('<tr></tr>').append(status).append(content).append(trace).appendTo(tbody);
|
||||
|
||||
counts[severity]++;
|
||||
total++;
|
||||
}
|
||||
|
||||
var checkboxes = $('<th/>');
|
||||
thead.append(checkboxes).append('<th>' + Lang.get('test_total', total) + '</th>');
|
||||
|
||||
for (var key in counts) {
|
||||
var count = counts[key];
|
||||
if(count > 0) {
|
||||
checkboxes.append(
|
||||
'<div style="float:left" class="' + key + '"><input type="checkbox" class="test-toggle" data-target=".' + key + '" ' +
|
||||
(key !== 'success' ? ' checked' : '') + '/> ' +
|
||||
Lang.get('test_'+key, count)+ '</div> '
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
tbody.find('.success').hide();
|
||||
|
||||
$('#build-phpunit-errors').show();
|
||||
},
|
||||
|
||||
|
|
|
@ -3,9 +3,8 @@ var SummaryPlugin = ActiveBuild.UiPlugin.extend({
|
|||
css: 'col-xs-12',
|
||||
title: Lang.get('build-summary'),
|
||||
box: true,
|
||||
statusIcons: [ 'fa-clock-o', 'fa-cogs', 'fa-check', 'fa-remove' ],
|
||||
statusLabels: [ Lang.get('pending'), Lang.get('running'), Lang.get('successful'), Lang.get('failed') ],
|
||||
statusClasses: ['text-blue', 'text-yellow', 'text-green', 'text-red'],
|
||||
statusLabels: [ Lang.get('pending'), Lang.get('running'), Lang.get('success'), Lang.get('failed') ],
|
||||
statusClasses: ['info', 'warning', 'success', 'danger'],
|
||||
|
||||
register: function() {
|
||||
var self = this;
|
||||
|
@ -50,8 +49,7 @@ var SummaryPlugin = ActiveBuild.UiPlugin.extend({
|
|||
'<tr>' +
|
||||
'<td>' + Lang.get('stage_' + stage) + '</td>' +
|
||||
'<td>' + Lang.get(plugin) + '</td>' +
|
||||
'<td><span class="' + this.statusClasses[data.status] + '">' +
|
||||
'<i class="fa ' + this.statusIcons[data.status] + '"></i> ' +
|
||||
'<td><span class="label label-' + this.statusClasses[data.status] + '">' +
|
||||
this.statusLabels[data.status] +
|
||||
'</span></td>' +
|
||||
'<td class="text-right">' + duration + '</td>' +
|
||||
|
|
|
@ -166,7 +166,7 @@ var Build = Class.extend({
|
|||
|
||||
var container = $('<div></div>').addClass('ui-plugin ' + plugin.css).attr('id', plugin.id);
|
||||
var content = $('<div></div>').append(output);
|
||||
content.addClass('box box-default');
|
||||
content.addClass('box');
|
||||
|
||||
if (plugin.title) {
|
||||
content.prepend('<div class="box-header"><h3 class="box-title">'+plugin.title+'</h3></div>');
|
||||
|
|
|
@ -54,10 +54,6 @@ class BuildStatusController extends Controller
|
|||
$project = $this->projectStore->getById($projectId);
|
||||
$status = 'passing';
|
||||
|
||||
if (!$project->getAllowPublicStatus()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (isset($project) && $project instanceof Project) {
|
||||
$build = $project->getLatestBuild($branch, [2,3]);
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ class SessionController extends Controller
|
|||
} else {
|
||||
unset($_SESSION['login_token']);
|
||||
|
||||
$user = $this->userStore->getByEmail($this->getParam('email'));
|
||||
$user = $this->userStore->getByEmailOrName($this->getParam('email'));
|
||||
|
||||
if ($user && password_verify($this->getParam('password', ''), $user->getHash())) {
|
||||
session_regenerate_id(true);
|
||||
|
@ -69,8 +69,8 @@ class SessionController extends Controller
|
|||
$form->setMethod('POST');
|
||||
$form->setAction(APP_URL.'session/login');
|
||||
|
||||
$email = new b8\Form\Element\Email('email');
|
||||
$email->setLabel(Lang::get('email_address'));
|
||||
$email = new b8\Form\Element\Text('email');
|
||||
$email->setLabel(Lang::get('login'));
|
||||
$email->setRequired(true);
|
||||
$email->setContainerClass('form-group');
|
||||
$email->setClass('form-control');
|
||||
|
|
|
@ -94,14 +94,13 @@ abstract class BaseCommandExecutor implements CommandExecutor
|
|||
$pipes = [];
|
||||
$process = proc_open($command, $descriptorSpec, $pipes, $this->buildPath, null);
|
||||
|
||||
$this->lastOutput = '';
|
||||
$this->lastError = '';
|
||||
|
||||
if (is_resource($process)) {
|
||||
fclose($pipes[0]);
|
||||
|
||||
$this->lastOutput = stream_get_contents($pipes[1]);
|
||||
$this->lastError = stream_get_contents($pipes[2]);
|
||||
|
||||
fclose($pipes[1]);
|
||||
fclose($pipes[2]);
|
||||
list($this->lastOutput, $this->lastError) = $this->readAlternating([$pipes[1], $pipes[2]]);
|
||||
|
||||
$status = proc_close($process);
|
||||
}
|
||||
|
@ -127,6 +126,36 @@ abstract class BaseCommandExecutor implements CommandExecutor
|
|||
return $rtn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads from array of streams as data becomes available.
|
||||
* @param array $descriptors
|
||||
* @return string[] data read from each descriptor
|
||||
*/
|
||||
private function readAlternating(array $descriptors)
|
||||
{
|
||||
$outputs = [];
|
||||
foreach ($descriptors as $key => $descriptor) {
|
||||
stream_set_blocking($descriptor, false);
|
||||
$outputs[$key] = '';
|
||||
}
|
||||
do {
|
||||
$read = $descriptors;
|
||||
$write = null;
|
||||
$except = null;
|
||||
stream_select($read, $write, $except, null);
|
||||
foreach ($read as $descriptor) {
|
||||
$key = array_search($descriptor, $descriptors);
|
||||
if (feof($descriptor)) {
|
||||
fclose($descriptor);
|
||||
unset($descriptors[$key]);
|
||||
} else {
|
||||
$outputs[$key] .= fgets($descriptor);
|
||||
}
|
||||
}
|
||||
} while (count($descriptors) > 0);
|
||||
return $outputs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the output from the last command run.
|
||||
*/
|
||||
|
|
|
@ -84,7 +84,6 @@ PHP Censor',
|
|||
'pending' => 'Venter',
|
||||
'running' => 'Kører',
|
||||
'success' => 'Succes',
|
||||
'successful' => 'Lykkedes',
|
||||
'failed' => 'Fejlede',
|
||||
'manual_build' => 'Manuelt Build',
|
||||
|
||||
|
|
|
@ -84,7 +84,6 @@ PHP Censor',
|
|||
'pending' => 'Ausstehend',
|
||||
'running' => 'Wird ausgeführt',
|
||||
'success' => 'Erfolg',
|
||||
'successful' => 'Erfolgreich',
|
||||
'failed' => 'Fehlgeschlagen',
|
||||
'manual_build' => 'Manueller Build',
|
||||
|
||||
|
|
|
@ -84,7 +84,6 @@ PHP Censor',
|
|||
'pending' => 'Σε εκκρεμότητα',
|
||||
'running' => 'Τρέχοντα',
|
||||
'success' => 'Επιτυχία',
|
||||
'successful' => 'Επιτυχής',
|
||||
'failed' => 'Αποτυχία',
|
||||
'manual_build' => 'Χειροκίνητη κατασκευή',
|
||||
|
||||
|
|
|
@ -87,8 +87,8 @@ PHP Censor',
|
|||
'pending' => 'Pending',
|
||||
'running' => 'Running',
|
||||
'success' => 'Success',
|
||||
'successful' => 'Successful',
|
||||
'failed' => 'Failed',
|
||||
'error' => 'Error',
|
||||
'manual_build' => 'Manual Build',
|
||||
|
||||
// Add/Edit Project:
|
||||
|
@ -181,21 +181,21 @@ PHP Censor',
|
|||
|
||||
'build' => 'Build',
|
||||
'lines' => 'Lines',
|
||||
'comment_lines' => 'Comment Lines',
|
||||
'noncomment_lines' => 'Non-Comment Lines',
|
||||
'comment_lines' => 'Comment lines',
|
||||
'noncomment_lines' => 'Non-Comment lines',
|
||||
'logical_lines' => 'Logical Lines',
|
||||
'lines_of_code' => 'Lines of Code',
|
||||
'build_log' => 'Build Log',
|
||||
'quality_trend' => 'Quality Trend',
|
||||
'codeception_errors' => 'Codeception Errors',
|
||||
'phpmd_warnings' => 'PHPMD Warnings',
|
||||
'phpcs_warnings' => 'PHPCS Warnings',
|
||||
'phpcs_errors' => 'PHPCS Errors',
|
||||
'phplint_errors' => 'Lint Errors',
|
||||
'phpunit_errors' => 'PHPUnit Errors',
|
||||
'lines_of_code' => 'Lines of code',
|
||||
'build_log' => 'Build log',
|
||||
'quality_trend' => 'Quality trend',
|
||||
'codeception_errors' => 'Codeception errors',
|
||||
'phpmd_warnings' => 'PHPMD warnings',
|
||||
'phpcs_warnings' => 'PHPCS warnings',
|
||||
'phpcs_errors' => 'PHPCS errors',
|
||||
'phplint_errors' => 'Lint errors',
|
||||
'phpunit_errors' => 'PHPUnit errors',
|
||||
'phpunit_fail_init' => 'Neither a configuration file nor a test directory found.',
|
||||
'phpcpd_warnings' => 'PHP Copy/Paste Detector Warnings',
|
||||
'phpdoccheck_warnings' => 'Missing Docblocks',
|
||||
'phpcpd_warnings' => 'PHP Copy/Paste Detector warnings',
|
||||
'phpdoccheck_warnings' => 'Missing docblocks',
|
||||
'issues' => 'Issues',
|
||||
|
||||
'phpcpd' => 'PHP Copy/Paste Detector',
|
||||
|
@ -462,7 +462,7 @@ PHP Censor',
|
|||
'php_cpd' => 'PHP Copy/Paste Detector',
|
||||
'php_docblock_checker' => 'PHP Docblock Checker',
|
||||
'composer' => 'Composer',
|
||||
'php_loc' => 'PHPLOC',
|
||||
'php_loc' => 'PHP LOC',
|
||||
'php_parallel_lint' => 'PHP Parallel Lint',
|
||||
'email' => 'Email',
|
||||
'atoum' => 'Atoum',
|
||||
|
|
|
@ -83,7 +83,6 @@ PHP Censor',
|
|||
'pending' => 'Pediente',
|
||||
'running' => 'Ejecutando',
|
||||
'success' => 'Éxito',
|
||||
'successful' => 'Exitoso',
|
||||
'failed' => 'Falló',
|
||||
'manual_build' => 'Build Manual',
|
||||
|
||||
|
|
|
@ -84,7 +84,6 @@ PHP Censor',
|
|||
'pending' => 'En attente',
|
||||
'running' => 'En cours',
|
||||
'success' => 'Terminé',
|
||||
'successful' => 'Réussi',
|
||||
'failed' => 'Échoué',
|
||||
'manual_build' => 'Build manuel',
|
||||
|
||||
|
|
|
@ -82,7 +82,6 @@ PHP Censor',
|
|||
'pending' => 'In attesa',
|
||||
'running' => 'In corso',
|
||||
'success' => 'Successo',
|
||||
'successful' => 'Con successo',
|
||||
'failed' => 'Fallita',
|
||||
'manual_build' => 'Build Manuale',
|
||||
|
||||
|
|
|
@ -84,7 +84,6 @@ PHP Censor',
|
|||
'pending' => 'In afwachting',
|
||||
'running' => 'Lopende',
|
||||
'success' => 'Succes',
|
||||
'successful' => 'Succesvol',
|
||||
'failed' => 'Gefaald',
|
||||
'manual_build' => 'Manuele build',
|
||||
|
||||
|
|
|
@ -84,7 +84,6 @@ PHP Censor',
|
|||
'pending' => 'Oczekujące',
|
||||
'running' => 'W toku',
|
||||
'success' => 'Sukces',
|
||||
'successful' => 'Zakończone sukcesem',
|
||||
'failed' => 'Nieudane',
|
||||
'manual_build' => 'Budowanie Manualne',
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ $strings = array(
|
|||
'language' => 'Idioma',
|
||||
|
||||
// Log in:
|
||||
'log_in_to_phpci' => 'Acessar o PHPCI',
|
||||
'log_in_to_app' => 'Acessar o PHP Censor',
|
||||
'login_error' => 'Email ou senha incorretos',
|
||||
'forgotten_password_link' => 'Perdeu sua senha?',
|
||||
'reset_emailed' => 'We\'ve emailed you a link to reset your password.',
|
||||
|
@ -25,7 +25,7 @@ $strings = array(
|
|||
'reset_no_user_exists' => 'No user exists with that email address, please try again.',
|
||||
'reset_email_body' => 'Hi %s,
|
||||
|
||||
You have received this email because you, or someone else, has requested a password reset for PHPCI.
|
||||
You have received this email because you, or someone else, has requested a password reset for PHP Censor.
|
||||
|
||||
If this was you, please click the following link to reset your password: %ssession/reset-password/%d/%s
|
||||
|
||||
|
@ -33,9 +33,9 @@ Otherwise, please ignore this email and no action will be taken.
|
|||
|
||||
Thank you,
|
||||
|
||||
PHPCI',
|
||||
PHP Censor',
|
||||
|
||||
'reset_email_title' => 'PHPCI Password Reset for %s',
|
||||
'reset_email_title' => 'PHP Censor Password Reset for %s',
|
||||
'reset_invalid' => 'Invalid password reset request.',
|
||||
'email_address' => 'Endereço de e-mail',
|
||||
'login' => 'Login / Email Address',
|
||||
|
@ -83,7 +83,6 @@ PHPCI',
|
|||
'pending' => 'Pendente',
|
||||
'running' => 'Correndo',
|
||||
'success' => 'Sucesso',
|
||||
'successful' => 'Bem sucedido',
|
||||
'failed' => 'Fracassado',
|
||||
'manual_build' => 'Compilação manual',
|
||||
|
||||
|
@ -108,8 +107,8 @@ PHPCI',
|
|||
'project_title' => 'Titulo do projeto',
|
||||
'project_private_key' => 'Chave privada usada para acessar o repositório
|
||||
(Deixe em branco para controles remotos locais e/ou anônimos)',
|
||||
'build_config' => 'PHPCI construir configuração para este projeto
|
||||
(if you cannot add a phpci.yml file in the project repository)',
|
||||
'build_config' => 'PHP Censor construir configuração para este projeto
|
||||
(if you cannot add a .php-censor.yml (.phpci.yml|phpci.yml) file in the project repository)',
|
||||
'default_branch' => 'Nome padrão do branch',
|
||||
'allow_public_status' => 'Habilitar página de status pública e imagem para este projeto?',
|
||||
'archived' => 'Arquivado',
|
||||
|
@ -166,19 +165,19 @@ PHPCI',
|
|||
|
||||
'build' => 'Build',
|
||||
'lines' => 'Lines',
|
||||
'comment_lines' => 'Comment Lines',
|
||||
'noncomment_lines' => 'Non-Comment Lines',
|
||||
'logical_lines' => 'Logical Lines',
|
||||
'lines_of_code' => 'Lines of Code',
|
||||
'comment_lines' => 'Comment lines',
|
||||
'noncomment_lines' => 'Non-Comment lines',
|
||||
'logical_lines' => 'Logical lines',
|
||||
'lines_of_code' => 'Lines of code',
|
||||
'build_log' => 'Log de compilação',
|
||||
'quality_trend' => 'Quality Trend',
|
||||
'codeception_errors' => 'Codeception Errors',
|
||||
'phpmd_warnings' => 'PHPMD Warnings',
|
||||
'phpcs_warnings' => 'PHPCS Warnings',
|
||||
'phpcs_errors' => 'PHPCS Errors',
|
||||
'phplint_errors' => 'Lint Errors',
|
||||
'phpunit_errors' => 'PHPUnit Errors',
|
||||
'phpdoccheck_warnings' => 'Missing Docblocks',
|
||||
'quality_trend' => 'Quality trend',
|
||||
'codeception_errors' => 'Codeception errors',
|
||||
'phpmd_warnings' => 'PHPMD warnings',
|
||||
'phpcs_warnings' => 'PHPCS warnings',
|
||||
'phpcs_errors' => 'PHPCS errors',
|
||||
'phplint_errors' => 'Lint errors',
|
||||
'phpunit_errors' => 'PHPUnit errors',
|
||||
'phpdoccheck_warnings' => 'Missing docblocks',
|
||||
'issues' => 'Issues',
|
||||
|
||||
'codeception' => 'Codeception',
|
||||
|
@ -241,21 +240,21 @@ PHPCI',
|
|||
// Settings:
|
||||
'settings_saved' => 'Your settings have been saved.',
|
||||
'settings_check_perms' => 'Your settings could not be saved, check the permissions of your config.yml file.',
|
||||
'settings_cannot_write' => 'PHPCI cannot write to your config.yml file, settings may not be saved properly
|
||||
'settings_cannot_write' => 'PHP Censor cannot write to your config.yml file, settings may not be saved properly
|
||||
until this is rectified.',
|
||||
'settings_github_linked' => 'Your GitHub account has been linked.',
|
||||
'settings_github_not_linked' => 'Your GitHub account could not be linked.',
|
||||
'build_settings' => 'Build Settings',
|
||||
'github_application' => 'GitHub Application',
|
||||
'github_sign_in' => 'Before you can start using GitHub, you need to <a href="%s">sign in</a> and grant
|
||||
PHPCI access to your account.',
|
||||
'github_phpci_linked' => 'PHPCI is successfully linked to GitHub account.',
|
||||
PHP Censor access to your account.',
|
||||
'github_linked' => 'PHP Censor is successfully linked to GitHub account.',
|
||||
'github_where_to_find' => 'Where to find these...',
|
||||
'github_where_help' => 'If you own the application you would like to use, you can find this information within your
|
||||
<a href="https://github.com/settings/applications">applications</a> settings area.',
|
||||
|
||||
'email_settings' => 'Email Settings',
|
||||
'email_settings_help' => 'Before PHPCI can send build status emails,
|
||||
'email_settings_help' => 'Before PHP Censor can send build status emails,
|
||||
you need to configure your SMTP settings below.',
|
||||
|
||||
'application_id' => 'Application ID',
|
||||
|
@ -280,7 +279,7 @@ PHPCI',
|
|||
'3_hours' => '3 Hours',
|
||||
|
||||
// Plugins
|
||||
'cannot_update_composer' => 'PHPCI cannot update composer.json for you as it is not writable.',
|
||||
'cannot_update_composer' => 'PHP Censor cannot update composer.json for you as it is not writable.',
|
||||
'x_has_been_removed' => '%s has been removed.',
|
||||
'x_has_been_added' => '%s has been added to composer.json for you and will be installed next time
|
||||
you run composer update.',
|
||||
|
@ -310,7 +309,7 @@ PHPCI',
|
|||
'stage_fixed' => 'Fixed',
|
||||
|
||||
// Installer
|
||||
'installation_url' => 'PHPCI Installation URL',
|
||||
'installation_url' => 'PHP Censor Installation URL',
|
||||
'db_host' => 'Database Host',
|
||||
'db_name' => 'Database Name',
|
||||
'db_user' => 'Database Username',
|
||||
|
@ -319,37 +318,37 @@ PHPCI',
|
|||
'admin_pass' => 'Admin Password',
|
||||
'admin_email' => 'Admin Email Address',
|
||||
'config_path' => 'Config File Path',
|
||||
'install_phpci' => 'Install PHPCI',
|
||||
'welcome_to_phpci' => 'Welcome to PHPCI',
|
||||
'install_app' => 'Install PHP Censor',
|
||||
'welcome_to_app' => 'Welcome to PHP Censor',
|
||||
'please_answer' => 'Please answer the following questions:',
|
||||
'phpci_php_req' => 'PHPCI requires at least PHP 5.3.8 to function.',
|
||||
'app_php_req' => 'PHP Censor requires at least PHP 5.3.8 to function.',
|
||||
'extension_required' => 'Extension required: %s',
|
||||
'function_required' => 'PHPCI needs to be able to call the %s() function. Is it disabled in php.ini?',
|
||||
'requirements_not_met' => 'PHPCI cannot be installed, as not all requirements are met.
|
||||
'function_required' => 'PHP Censor needs to be able to call the %s() function. Is it disabled in php.ini?',
|
||||
'requirements_not_met' => 'PHP Censor cannot be installed, as not all requirements are met.
|
||||
Please review the errors above before continuing.',
|
||||
'must_be_valid_email' => 'Must be a valid email address.',
|
||||
'must_be_valid_url' => 'Must be a valid URL.',
|
||||
'enter_name' => 'Admin Name: ',
|
||||
'enter_email' => 'Admin Email: ',
|
||||
'enter_password' => 'Admin Password: ',
|
||||
'enter_phpci_url' => 'Your PHPCI URL ("http://phpci.local" for example): ',
|
||||
'enter_app_url' => 'Your PHP Censor URL ("http://php-censor.local" for example): ',
|
||||
|
||||
'enter_db_host' => 'Please enter your MySQL host [localhost]: ',
|
||||
'enter_db_name' => 'Please enter your MySQL database name [phpci]: ',
|
||||
'enter_db_user' => 'Please enter your MySQL username [phpci]: ',
|
||||
'enter_db_name' => 'Please enter your MySQL database name [php-censor-db]: ',
|
||||
'enter_db_user' => 'Please enter your MySQL username [php-censor-user]: ',
|
||||
'enter_db_pass' => 'Please enter your MySQL password: ',
|
||||
'could_not_connect' => 'PHPCI could not connect to MySQL with the details provided. Please try again.',
|
||||
'could_not_connect' => 'PHP Censor could not connect to MySQL with the details provided. Please try again.',
|
||||
'setting_up_db' => 'Setting up your database... ',
|
||||
'user_created' => 'User account created!',
|
||||
'failed_to_create' => 'PHPCI failed to create your admin account.',
|
||||
'config_exists' => 'The PHPCI config file exists and is not empty.',
|
||||
'update_instead' => 'If you were trying to update PHPCI, please use phpci:update instead.',
|
||||
'failed_to_create' => 'PHP Censor failed to create your admin account.',
|
||||
'config_exists' => 'The PHP Censor config file exists and is not empty.',
|
||||
'update_instead' => 'If you were trying to update PHP Censor, please use php-censor:update instead.',
|
||||
|
||||
// Update
|
||||
'update_phpci' => 'Update the database to reflect modified models.',
|
||||
'updating_phpci' => 'Updating PHPCI database: ',
|
||||
'not_installed' => 'PHPCI does not appear to be installed.',
|
||||
'install_instead' => 'Please install PHPCI via phpci:install instead.',
|
||||
'update_app' => 'Update the database to reflect modified models.',
|
||||
'updating_app' => 'Updating PHP Censor database: ',
|
||||
'not_installed' => 'PHP Censor does not appear to be installed.',
|
||||
'install_instead' => 'Please install PHP Censor via php-censor:install instead.',
|
||||
|
||||
// Poll Command
|
||||
'poll_github' => 'Poll GitHub to check if we need to start a build.',
|
||||
|
@ -370,18 +369,18 @@ PHPCI',
|
|||
'commit_id_option' => 'Commit ID to build',
|
||||
'branch_name_option' => 'Branch to build',
|
||||
'add_to_queue_failed' => 'Build created successfully, but failed to add to build queue. This usually happens
|
||||
when PHPCI is set to use a beanstalkd server that does not exist,
|
||||
when PHP Censor is set to use a beanstalkd server that does not exist,
|
||||
or your beanstalkd server has stopped.',
|
||||
|
||||
// Run Command
|
||||
'run_all_pending' => 'Run all pending PHPCI builds.',
|
||||
'run_all_pending' => 'Run all pending PHP Censor builds.',
|
||||
'finding_builds' => 'Finding builds to process',
|
||||
'found_n_builds' => 'Found %d builds',
|
||||
'skipping_build' => 'Skipping Build %d - Project build already in progress.',
|
||||
'marked_as_failed' => 'Build %d marked as failed due to timeout.',
|
||||
|
||||
// Builder
|
||||
'missing_phpci_yml' => 'This project does not contain a phpci.yml file, or it is empty.',
|
||||
'missing_app_yml' => 'This project does not contain a .php-censor.yml (.phpci.yml|phpci.yml) file, or it is empty.',
|
||||
'build_success' => 'BUILD SUCCESS',
|
||||
'build_failed' => 'BUILD FAILED',
|
||||
'removing_build' => 'Removing Build.',
|
||||
|
@ -408,7 +407,7 @@ PHPCI',
|
|||
'n_emails_sent' => '%d emails sent.',
|
||||
'n_emails_failed' => '%d emails failed to send.',
|
||||
'unable_to_set_env' => 'Unable to set environment variable',
|
||||
'tag_created' => 'Tag created by PHPCI: %s',
|
||||
'tag_created' => 'Tag created by PHP Censor: %s',
|
||||
'x_built_at_x' => '%PROJECT_TITLE% built at %BUILD_URI%',
|
||||
'hipchat_settings' => 'Please define room and authToken for hipchat_notify plugin',
|
||||
'irc_settings' => 'You must configure a server, room and nick.',
|
||||
|
|
|
@ -84,9 +84,9 @@ PHP Censor',
|
|||
'latest_builds' => 'Последние сборки',
|
||||
'pending' => 'Ожидает',
|
||||
'running' => 'Запущена',
|
||||
'success' => 'Успех',
|
||||
'successful' => 'Успешно',
|
||||
'success' => 'Успешно',
|
||||
'failed' => 'Провал',
|
||||
'error' => 'Ошибка',
|
||||
'manual_build' => 'Запущена вручную',
|
||||
|
||||
// Add/Edit Project:
|
||||
|
@ -446,7 +446,7 @@ PHP Censor',
|
|||
'php_cpd' => 'PHP Copy/Paste Detector',
|
||||
'php_docblock_checker' => 'PHP Docblock Checker',
|
||||
'composer' => 'Composer',
|
||||
'php_loc' => 'PHPLOC',
|
||||
'php_loc' => 'PHP LOC',
|
||||
'php_parallel_lint' => 'PHP Parallel Lint',
|
||||
'email' => 'Email',
|
||||
'atoum' => 'Atoum',
|
||||
|
|
|
@ -84,7 +84,6 @@ PHP Censor',
|
|||
'pending' => 'Очікує',
|
||||
'running' => 'Виконується',
|
||||
'success' => 'Успіх',
|
||||
'successful' => 'Успішно',
|
||||
'failed' => 'Провалена',
|
||||
'manual_build' => 'Ручна збірка',
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ $strings = array(
|
|||
'language' => '语言选择',
|
||||
|
||||
// Log in:
|
||||
'log_in_to_phpci' => '登录 PHPCI',
|
||||
'log_in_to_app' => '登录 PHP Censor',
|
||||
'login_error' => '邮箱或密码错误',
|
||||
'forgotten_password_link' => '忘记密码?',
|
||||
'reset_emailed' => '已发送重置密码邮件.',
|
||||
|
@ -25,7 +25,7 @@ $strings = array(
|
|||
'reset_no_user_exists' => '不存该该邮箱用户,请检查后重试!',
|
||||
'reset_email_body' => '您好 %s,
|
||||
|
||||
您收到这封邮件,是因为您或者别人发起了来自PHPCI的密码重置请求。
|
||||
您收到这封邮件,是因为您或者别人发起了来自PHP Censor的密码重置请求。
|
||||
|
||||
如果确实是您发起的,请点击链接去重置您的密码:%ssession/reset-password/%d/%s
|
||||
|
||||
|
@ -33,9 +33,9 @@ $strings = array(
|
|||
|
||||
多谢,
|
||||
|
||||
PHPCI',
|
||||
PHP Censor',
|
||||
|
||||
'reset_email_title' => '给 %s 来自 PHPCI 的密码重置邮件',
|
||||
'reset_email_title' => '给 %s 来自 PHP Censor 的密码重置邮件',
|
||||
'reset_invalid' => '密码重置请求失败!',
|
||||
'email_address' => '邮箱地址',
|
||||
'password' => '密码',
|
||||
|
@ -82,7 +82,6 @@ PHPCI',
|
|||
'pending' => '等待中',
|
||||
'running' => '构建中',
|
||||
'success' => '成功',
|
||||
'successful' => '成功',
|
||||
'failed' => '失败',
|
||||
'manual_build' => 'Manual Build',
|
||||
|
||||
|
@ -108,8 +107,8 @@ PHPCI',
|
|||
'project_title' => '项目标题',
|
||||
'project_private_key' => '访问仓库私有秘钥
|
||||
(本地或公共仓库可为空)',
|
||||
'build_config' => '该项目 PHPCI 构建配置文件
|
||||
(如果您无法在该项目仓库创建 phpci.yml 文件)',
|
||||
'build_config' => '该项目 PHP Censor 构建配置文件
|
||||
(如果您无法在该项目仓库创建 .php-censor.yml (.phpci.yml|phpci.yml) 文件)',
|
||||
'default_branch' => '默认分支名称',
|
||||
'allow_public_status' => '启用此项目的公共状态页和图像?',
|
||||
'archived' => '归档',
|
||||
|
@ -164,19 +163,19 @@ PHPCI',
|
|||
|
||||
'build' => 'Build',
|
||||
'lines' => 'Lines',
|
||||
'comment_lines' => 'Comment Lines',
|
||||
'noncomment_lines' => 'Non-Comment Lines',
|
||||
'logical_lines' => 'Logical Lines',
|
||||
'lines_of_code' => 'Lines of Code',
|
||||
'build_log' => 'Build Log',
|
||||
'quality_trend' => 'Quality Trend',
|
||||
'codeception_errors' => 'Codeception Errors',
|
||||
'phpmd_warnings' => 'PHPMD Warnings',
|
||||
'phpcs_warnings' => 'PHPCS Warnings',
|
||||
'phpcs_errors' => 'PHPCS Errors',
|
||||
'phplint_errors' => 'Lint Errors',
|
||||
'phpunit_errors' => 'PHPUnit Errors',
|
||||
'phpdoccheck_warnings' => 'Missing Docblocks',
|
||||
'comment_lines' => 'Comment lines',
|
||||
'noncomment_lines' => 'Non-Comment lines',
|
||||
'logical_lines' => 'Logical lines',
|
||||
'lines_of_code' => 'Lines of code',
|
||||
'build_log' => 'Build log',
|
||||
'quality_trend' => 'Quality trend',
|
||||
'codeception_errors' => 'Codeception errors',
|
||||
'phpmd_warnings' => 'PHPMD warnings',
|
||||
'phpcs_warnings' => 'PHPCS warnings',
|
||||
'phpcs_errors' => 'PHPCS errors',
|
||||
'phplint_errors' => 'Lint errors',
|
||||
'phpunit_errors' => 'PHPUnit errors',
|
||||
'phpdoccheck_warnings' => 'Missing docblocks',
|
||||
'issues' => 'Issues',
|
||||
|
||||
'codeception' => 'Codeception',
|
||||
|
@ -239,18 +238,18 @@ PHPCI',
|
|||
// Settings:
|
||||
'settings_saved' => '您的设置已经保存。',
|
||||
'settings_check_perms' => '权限不足,您的设置无法保存, 请检查 config.yml 文件.',
|
||||
'settings_cannot_write' => 'PHPCI 无法写入 config.yml 文件, 在这个问题解决前设置可能无法正常保存',
|
||||
'settings_cannot_write' => 'PHP Censor 无法写入 config.yml 文件, 在这个问题解决前设置可能无法正常保存',
|
||||
'settings_github_linked' => '您的 GitHub 账户已经连接。',
|
||||
'settings_github_not_linked' => '您的 GitHub 无法连接。',
|
||||
'build_settings' => '构建设置',
|
||||
'github_application' => 'GitHub Application',
|
||||
'github_sign_in' => '在使用您的 GitHub 账号之前, 您需要登录 GitHub , 并允许 PHPCI 访问您的账户。',
|
||||
'github_phpci_linked' => 'PHPCI 成功连接到您的 GitHub 账户。',
|
||||
'github_sign_in' => '在使用您的 GitHub 账号之前, 您需要登录 GitHub , 并允许 PHP Censor 访问您的账户。',
|
||||
'github_linked' => 'PHP Censor 成功连接到您的 GitHub 账户。',
|
||||
'github_where_to_find' => '在哪里可以找到...',
|
||||
'github_where_help' => '如果您想使用您自己的应用, 您可以在<a href="https://github.com/settings/applications">applications</a> 的 setting 中 找到相关信息。',
|
||||
|
||||
'email_settings' => '邮箱设置',
|
||||
'email_settings_help' => 'PHPCI在发送构建状态的邮件之前,您需要配置您的SMTP设置如下。',
|
||||
'email_settings_help' => 'PHP Censor在发送构建状态的邮件之前,您需要配置您的SMTP设置如下。',
|
||||
|
||||
'application_id' => 'Application ID',
|
||||
'application_secret' => 'Application Secret',
|
||||
|
@ -274,7 +273,7 @@ PHPCI',
|
|||
'3_hours' => '3 小时',
|
||||
|
||||
// Plugins
|
||||
'cannot_update_composer' => '由于 composer.json 文件不可写 PHPCI 无法为您更新该文件, ',
|
||||
'cannot_update_composer' => '由于 composer.json 文件不可写 PHP Censor 无法为您更新该文件, ',
|
||||
'x_has_been_removed' => '%s 已经移除',
|
||||
'x_has_been_added' => '%s 已经为您添加至 composer.json , 当您下次执行 composer update 时相关库将会安装',
|
||||
'enabled_plugins' => '已启用插件',
|
||||
|
@ -303,7 +302,7 @@ PHPCI',
|
|||
'stage_fixed' => 'Fixed',
|
||||
|
||||
// Installer
|
||||
'installation_url' => 'PHPCI Installation URL',
|
||||
'installation_url' => 'PHP Censor Installation URL',
|
||||
'db_host' => 'Database Host',
|
||||
'db_name' => 'Database Name',
|
||||
'db_user' => 'Database Username',
|
||||
|
@ -312,37 +311,37 @@ PHPCI',
|
|||
'admin_pass' => 'Admin Password',
|
||||
'admin_email' => 'Admin Email Address',
|
||||
'config_path' => 'Config File Path',
|
||||
'install_phpci' => 'Install PHPCI',
|
||||
'welcome_to_phpci' => 'Welcome to PHPCI',
|
||||
'install_app' => 'Install PHP Censor',
|
||||
'welcome_to_app' => 'Welcome to PHP Censor',
|
||||
'please_answer' => 'Please answer the following questions:',
|
||||
'phpci_php_req' => 'PHPCI requires at least PHP 5.3.8 to function.',
|
||||
'app_php_req' => 'PHP Censor requires at least PHP 5.3.8 to function.',
|
||||
'extension_required' => 'Extension required: %s',
|
||||
'function_required' => 'PHPCI needs to be able to call the %s() function. Is it disabled in php.ini?',
|
||||
'requirements_not_met' => 'PHPCI cannot be installed, as not all requirements are met.
|
||||
'function_required' => 'PHP Censor needs to be able to call the %s() function. Is it disabled in php.ini?',
|
||||
'requirements_not_met' => 'PHP Censor cannot be installed, as not all requirements are met.
|
||||
Please review the errors above before continuing.',
|
||||
'must_be_valid_email' => 'Must be a valid email address.',
|
||||
'must_be_valid_url' => 'Must be a valid URL.',
|
||||
'enter_name' => 'Admin Name: ',
|
||||
'enter_email' => 'Admin Email: ',
|
||||
'enter_password' => 'Admin Password: ',
|
||||
'enter_phpci_url' => 'Your PHPCI URL ("http://phpci.local" for example): ',
|
||||
'enter_app_url' => 'Your PHP Censor URL ("http://php-censor.local" for example): ',
|
||||
|
||||
'enter_db_host' => 'Please enter your MySQL host [localhost]: ',
|
||||
'enter_db_name' => 'Please enter your MySQL database name [phpci]: ',
|
||||
'enter_db_user' => 'Please enter your MySQL username [phpci]: ',
|
||||
'enter_db_name' => 'Please enter your MySQL database name [php-censor-db]: ',
|
||||
'enter_db_user' => 'Please enter your MySQL username [php-censor-user]: ',
|
||||
'enter_db_pass' => 'Please enter your MySQL password: ',
|
||||
'could_not_connect' => 'PHPCI could not connect to MySQL with the details provided. Please try again.',
|
||||
'could_not_connect' => 'PHP Censor could not connect to MySQL with the details provided. Please try again.',
|
||||
'setting_up_db' => 'Setting up your database... ',
|
||||
'user_created' => 'User account created!',
|
||||
'failed_to_create' => 'PHPCI failed to create your admin account.',
|
||||
'config_exists' => 'The PHPCI config file exists and is not empty.',
|
||||
'update_instead' => 'If you were trying to update PHPCI, please use phpci:update instead.',
|
||||
'failed_to_create' => 'PHP Censor failed to create your admin account.',
|
||||
'config_exists' => 'The PHP Censor config file exists and is not empty.',
|
||||
'update_instead' => 'If you were trying to update PHP Censor, please use php-censor:update instead.',
|
||||
|
||||
// Update
|
||||
'update_phpci' => 'Update the database to reflect modified models.',
|
||||
'updating_phpci' => 'Updating PHPCI database: ',
|
||||
'not_installed' => 'PHPCI does not appear to be installed.',
|
||||
'install_instead' => 'Please install PHPCI via phpci:install instead.',
|
||||
'update_app' => 'Update the database to reflect modified models.',
|
||||
'updating_app' => 'Updating PHP Censor database: ',
|
||||
'not_installed' => 'PHP Censor does not appear to be installed.',
|
||||
'install_instead' => 'Please install PHP Censor via php-censor:install instead.',
|
||||
|
||||
// Poll Command
|
||||
'poll_github' => 'Poll GitHub to check if we need to start a build.',
|
||||
|
@ -363,18 +362,18 @@ PHPCI',
|
|||
'commit_id_option' => 'Commit ID to build',
|
||||
'branch_name_option' => 'Branch to build',
|
||||
'add_to_queue_failed' => 'Build created successfully, but failed to add to build queue. This usually happens
|
||||
when PHPCI is set to use a beanstalkd server that does not exist,
|
||||
when PHP Censor is set to use a beanstalkd server that does not exist,
|
||||
or your beanstalkd server has stopped.',
|
||||
|
||||
// Run Command
|
||||
'run_all_pending' => 'Run all pending PHPCI builds.',
|
||||
'run_all_pending' => 'Run all pending PHP Censor builds.',
|
||||
'finding_builds' => 'Finding builds to process',
|
||||
'found_n_builds' => 'Found %d builds',
|
||||
'skipping_build' => 'Skipping Build %d - Project build already in progress.',
|
||||
'marked_as_failed' => 'Build %d marked as failed due to timeout.',
|
||||
|
||||
// Builder
|
||||
'missing_phpci_yml' => 'This project does not contain a phpci.yml file, or it is empty.',
|
||||
'missing_app_yml' => 'This project does not contain a .php-censor.yml (.phpci.yml|phpci.yml) file, or it is empty.',
|
||||
'build_success' => 'BUILD SUCCESS',
|
||||
'build_failed' => 'BUILD FAILED',
|
||||
'removing_build' => 'Removing Build.',
|
||||
|
@ -401,7 +400,7 @@ PHPCI',
|
|||
'n_emails_sent' => '%d emails sent.',
|
||||
'n_emails_failed' => '%d emails failed to send.',
|
||||
'unable_to_set_env' => 'Unable to set environment variable',
|
||||
'tag_created' => 'Tag created by PHPCI: %s',
|
||||
'tag_created' => 'Tag created by PHP Censor: %s',
|
||||
'x_built_at_x' => '%PROJECT_TITLE% built at %BUILD_URI%',
|
||||
'hipchat_settings' => 'Please define room and authToken for hipchat_notify plugin',
|
||||
'irc_settings' => 'You must configure a server, room and nick.',
|
||||
|
|
|
@ -10,7 +10,6 @@ use PHPCensor\Model\Base\BuildErrorBase;
|
|||
|
||||
/**
|
||||
* BuildError Model
|
||||
* @uses PHPCensor\Model\Base\BuildErrorBase
|
||||
*/
|
||||
class BuildError extends BuildErrorBase
|
||||
{
|
||||
|
|
|
@ -62,7 +62,8 @@ class Deployer extends Plugin
|
|||
'source' => 'PHP Censor',
|
||||
'url' => $this->builder->interpolate('%BUILD_URI%'),
|
||||
'branch' => $this->builder->interpolate('%BRANCH%'),
|
||||
'update_only' => $this->updateOnly
|
||||
'commit' => $this->builder->interpolate('%COMMIT%'),
|
||||
'update_only' => $this->updateOnly,
|
||||
]);
|
||||
|
||||
return $response['success'];
|
||||
|
|
|
@ -52,17 +52,23 @@ class UserStoreBase extends Store
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Get a single User by Email.
|
||||
* @return null|User
|
||||
*
|
||||
* @param string $value
|
||||
*
|
||||
* @throws HttpException
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function getByEmail($value, $useConnection = 'read')
|
||||
public function getByEmail($value)
|
||||
{
|
||||
if (is_null($value)) {
|
||||
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
|
||||
}
|
||||
|
||||
$query = 'SELECT * FROM `user` WHERE `email` = :email LIMIT 1';
|
||||
$stmt = Database::getConnection($useConnection)->prepare($query);
|
||||
$stmt = Database::getConnection()->prepare($query);
|
||||
$stmt->bindValue(':email', $value);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
|
@ -74,6 +80,35 @@ class UserStoreBase extends Store
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Get a single User by Email or Name.
|
||||
*
|
||||
* @param string $value
|
||||
*
|
||||
* @throws HttpException
|
||||
*
|
||||
* @return User
|
||||
*/
|
||||
public function getByEmailOrName($value)
|
||||
{
|
||||
if (is_null($value)) {
|
||||
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
|
||||
}
|
||||
|
||||
$query = 'SELECT * FROM `user` WHERE `email` = :value OR `name` = :value LIMIT 1';
|
||||
$stmt = Database::getConnection()->prepare($query);
|
||||
$stmt->bindValue(':value', $value);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
if ($data = $stmt->fetch(\PDO::FETCH_ASSOC)) {
|
||||
return new User($data);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get multiple User by Name.
|
||||
* @return array
|
||||
|
|
|
@ -3,7 +3,7 @@ use PHPCensor\Helper\Lang;
|
|||
|
||||
$linkTemplate = $build->getFileLinkTemplate();
|
||||
|
||||
/** @var \PHPCI\Model\BuildError[] $errors */
|
||||
/** @var \PHPCensor\Model\BuildError[] $errors */
|
||||
foreach ($errors as $error):
|
||||
|
||||
$link = str_replace('{FILE}', $error->getFile(), $linkTemplate);
|
||||
|
@ -11,7 +11,7 @@ foreach ($errors as $error):
|
|||
$link = str_replace('{LINE_END}', $error->getLineEnd(), $link);
|
||||
?>
|
||||
|
||||
<tr class="bg-<?php print $error->getSeverityClass(); ?>">
|
||||
<tr>
|
||||
<td>
|
||||
<span class="label label-<?php print $error->getSeverityClass(); ?>">
|
||||
<?php print Lang::get($error->getSeverityString()); ?>
|
||||
|
@ -30,7 +30,7 @@ foreach ($errors as $error):
|
|||
?>
|
||||
</a>
|
||||
</td>
|
||||
<td class="visible-line-breaks"><?php print $error->getMessage(); ?></td>
|
||||
<td class="visible-line-breaks"><?= trim($error->getMessage()); ?></td>
|
||||
|
||||
</tr>
|
||||
|
||||
|
|
|
@ -134,11 +134,11 @@
|
|||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="log">
|
||||
<pre style="height: 400px; overflow-y: auto;"><?php print $data['log']; ?></pre>
|
||||
<pre style="overflow-y: visible;"><?php print $data['log']; ?></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="errors">
|
||||
<table class="errors-table table table-hover dataTable">
|
||||
<table class="errors-table table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php Lang::out('severity'); ?></th>
|
||||
|
@ -149,7 +149,7 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php print $data['error_html']; ?>
|
||||
<?php print $data['error_html']; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
@ -3,176 +3,171 @@
|
|||
<head>
|
||||
<title><?php print $project->getTitle(); ?> - PHP Censor</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
|
||||
|
||||
<link href='//fonts.googleapis.com/css?family=Roboto:300,500&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/admin-lte/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/admin-lte/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/admin-lte/plugins/datepicker/datepicker3.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/admin-lte/plugins/daterangepicker/daterangepicker.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/css/ansi-colors.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/css/main.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<link rel="shortcut icon" type="image/x-icon" href="<?php echo APP_URL ?>favicon.ico">
|
||||
<link rel="shortcut icon" type="image/png" href="<?php echo APP_URL ?>assets/img/favicon.png">
|
||||
|
||||
<script>window.APP_URL = <?php print json_encode(APP_URL) ?></script>
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/ion-icons/css/ionicons.min.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="<?php print APP_URL; ?>assets/vendor/admin-lte/plugins/jQuery/jquery-2.2.3.min.js"></script>
|
||||
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
||||
|
||||
<script src="<?php print APP_URL; ?>assets/vendor/admin-lte/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
||||
<script src="<?php print APP_URL; ?>assets/vendor/admin-lte/plugins/jQueryUI/jquery-ui.min.js" type="text/javascript"></script>
|
||||
<script src="<?php echo APP_URL ?>assets/js/class.js"></script>
|
||||
<script src="<?php echo APP_URL ?>assets/js/app.js"></script>
|
||||
<script src="<?php echo APP_URL ?>assets/js/init.js"></script>
|
||||
<script src="<?php print APP_URL; ?>assets/js/class.js"></script>
|
||||
<script src="<?php print APP_URL; ?>assets/vendor/sprintf-js/dist/sprintf.min.js"></script>
|
||||
<script src="<?php print APP_URL; ?>assets/vendor/admin-lte/plugins/daterangepicker/moment.min.js"></script>
|
||||
<script src="<?php print APP_URL; ?>assets/js/app.js" type="text/javascript"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="navbar navbar-fixed-top">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="<?php echo APP_URL ?>">PHP Censor</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="content" class="container">
|
||||
|
||||
<h1><?php print $project->getTitle(); ?></h1>
|
||||
<?php if (!empty($latest)): ?>
|
||||
|
||||
<?php
|
||||
|
||||
$statusClass = null;
|
||||
$statusText = null;
|
||||
|
||||
switch ($latest->getStatus()) {
|
||||
case 0:
|
||||
$statusClass = 'info';
|
||||
$statusText = 'Pending';
|
||||
break;
|
||||
case 1:
|
||||
$statusClass = 'warning';
|
||||
$statusText = 'Running';
|
||||
break;
|
||||
case 2:
|
||||
$statusClass = 'success';
|
||||
$statusText = 'Success';
|
||||
break;
|
||||
case 3:
|
||||
$statusClass = 'danger';
|
||||
$statusText = 'Failed';
|
||||
break;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<!-- Latest Build -->
|
||||
<div class="build-info-panel panel panel-<?php print $statusClass; ?>">
|
||||
<img class="pull-left" src="//www.gravatar.com/avatar/<?php print md5($latest->getCommitterEmail()); ?>?d=mm">
|
||||
|
||||
<div class="box-header">
|
||||
<h1 class="box-title">
|
||||
<a href="/project/view/<?php print $latest->getProjectId(); ?>">
|
||||
<?php print $latest->getProject()->getTitle(); ?></a>
|
||||
<span>#<?php print $latest->getId(); ?></span>
|
||||
|
||||
<label class="pull-right label label-<?php print $statusClass; ?>"><?php print $statusText; ?></label>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="box-body">
|
||||
<div id="build-info">
|
||||
<?php if ($latest->getCommitMessage()): ?>
|
||||
<div class="commit-message">
|
||||
<?php print $latest->getCommitMessage(); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<strong>Branch: </strong> <?php print $latest->getBranch(); ?><br>
|
||||
<strong>Committer: </strong> <?php print $latest->getCommitterEmail(); ?>
|
||||
|
||||
<?php if ($latest->getCommitId() != 'Manual'): ?>
|
||||
<br><strong>Commit ID: </strong> <?php print $latest->getCommitId(); ?><br>
|
||||
<?php endif; ?>
|
||||
<body class="hold-transition skin-black layout-top-nav">
|
||||
<div class="wrapper">
|
||||
<header class="main-header">
|
||||
<nav class="navbar navbar-static-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<a href="<?php print APP_URL; ?>" class="logo" style="background-color: #222d32; text-align: left;">PHP Censor</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
<!-- Recent builds: -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header"><h3 class="box-title">Builds</h3></div>
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Commit</th>
|
||||
<th>Branch</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="latest-builds">
|
||||
|
||||
|
||||
<?php if(empty($builds) || !count($builds)): ?>
|
||||
<tr class="">
|
||||
<td colspan="6">No builds yet.</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php foreach($builds as $build): ?>
|
||||
</nav>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<div class="container">
|
||||
<section class="content">
|
||||
<?php if (!empty($latest)): ?>
|
||||
|
||||
<?php
|
||||
switch($build->getStatus())
|
||||
{
|
||||
|
||||
$statusClass = null;
|
||||
$statusText = null;
|
||||
|
||||
switch ($latest->getStatus()) {
|
||||
case 0:
|
||||
$cls = 'active';
|
||||
$subcls = 'info';
|
||||
$status = 'Pending';
|
||||
|
||||
$statusClass = 'blue';
|
||||
$statusText = 'Pending';
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$cls = 'warning';
|
||||
$subcls = 'warning';
|
||||
$status = 'Running';
|
||||
$statusClass = 'yellow';
|
||||
$statusText = 'Running';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$cls = 'success';
|
||||
$subcls = 'success';
|
||||
$status = 'Success';
|
||||
$statusClass = 'green';
|
||||
$statusText = 'Success';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$cls = 'danger';
|
||||
$subcls = 'danger';
|
||||
$status = 'Failed';
|
||||
$statusClass = 'red';
|
||||
$statusText = 'Failed';
|
||||
break;
|
||||
}
|
||||
?>
|
||||
<tr class="<?php print $cls; ?>">
|
||||
<td>#<?php print str_pad($build->getId(), 6, '0', STR_PAD_LEFT); ?></td>
|
||||
|
||||
<td>
|
||||
?>
|
||||
|
||||
<div class="small-box small-box-full bg-<?= $statusClass; ?>">
|
||||
<div class="inner">
|
||||
<h3 class="box-title">
|
||||
<?php print $latest->getProject()->getTitle(); ?> #<?php print $latest->getId(); ?> (<?= $statusText; ?>)
|
||||
</h3>
|
||||
<p>
|
||||
<?php if ($latest->getCommitMessage()): ?>
|
||||
<?php print $latest->getCommitMessage(); ?><br /><br />
|
||||
<?php endif; ?>
|
||||
|
||||
<strong>Branch: </strong> <?php print $latest->getBranch(); ?><br />
|
||||
<strong>Committer: </strong> <?php print $latest->getCommitterEmail(); ?>
|
||||
|
||||
<?php if ($latest->getCommitId() != 'Manual'): ?>
|
||||
<br /><strong>Commit: </strong> <?php print $latest->getCommitId(); ?><br>
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="icon">
|
||||
<i class="fa fa-<?php print $project->getIcon(); ?>"></i>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="box">
|
||||
<div class="box-header"><h3 class="box-title">Builds</h3></div>
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Commit</th>
|
||||
<th>Branch</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="latest-builds">
|
||||
|
||||
|
||||
<?php if(empty($builds) || !count($builds)): ?>
|
||||
<tr class="">
|
||||
<td colspan="6">No builds yet.</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php foreach($builds as $build): ?>
|
||||
|
||||
<?php
|
||||
if ($build->getCommitId() !== 'Manual') {
|
||||
print '<a href="' . $build->getCommitLink() . '">';
|
||||
}
|
||||
print $build->getCommitId();
|
||||
if ($build->getCommitId() !== 'Manual') {
|
||||
print '</a>';
|
||||
switch($build->getStatus())
|
||||
{
|
||||
case 0:
|
||||
$class = 'info';
|
||||
$status = 'Pending';
|
||||
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$class = 'warning';
|
||||
$status = 'Running';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$class = 'success';
|
||||
$status = 'Success';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$class = 'danger';
|
||||
$status = 'Failed';
|
||||
break;
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<tr>
|
||||
<td>#<?php print str_pad($build->getId(), 6, '0', STR_PAD_LEFT); ?></td>
|
||||
|
||||
<td><a href="<?php print $build->getBranchLink(); ?>"><?php print $build->getBranch(); ?></a></td>
|
||||
<td>
|
||||
<span class='label label-<?php echo $subcls ?>'><?php echo $status ?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<td>
|
||||
<?php
|
||||
if ($build->getCommitId() !== 'Manual') {
|
||||
print '<a href="' . $build->getCommitLink() . '">';
|
||||
}
|
||||
print $build->getCommitId();
|
||||
if ($build->getCommitId() !== 'Manual') {
|
||||
print '</a>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td><a href="<?php print $build->getBranchLink(); ?>"><?php print $build->getBranch(); ?></a></td>
|
||||
<td>
|
||||
<span class='label label-<?php echo $class ?>'><?php echo $status ?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<!--<footer class="main-footer">
|
||||
<div class="container">
|
||||
</div>
|
||||
</footer>-->
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<?php use PHPCensor\Helper\Lang; ?>
|
||||
|
||||
<?php if(empty($builds) || !count($builds)): ?>
|
||||
<tr class="">
|
||||
<td colspan="6"><?php Lang::out('no_builds_yet'); ?></td>
|
||||
</tr>
|
||||
<tr class="">
|
||||
<td colspan="6"><?php Lang::out('no_builds_yet'); ?></td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php foreach($builds as $build): ?>
|
||||
|
@ -11,36 +11,36 @@
|
|||
<?php
|
||||
switch($build->getStatus())
|
||||
{
|
||||
case 0:
|
||||
$cls = 'active';
|
||||
$subcls = 'info';
|
||||
$status = Lang::get('pending');
|
||||
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$cls = 'warning';
|
||||
$subcls = 'warning';
|
||||
$status = Lang::get('running');
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$cls = 'success';
|
||||
$subcls = 'success';
|
||||
$status = Lang::get('success');
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$cls = 'danger';
|
||||
$subcls = 'danger';
|
||||
$status = Lang::get('failed');
|
||||
break;
|
||||
case 0:
|
||||
$cls = 'active';
|
||||
$subcls = 'info';
|
||||
$status = Lang::get('pending');
|
||||
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$cls = 'warning';
|
||||
$subcls = 'warning';
|
||||
$status = Lang::get('running');
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$cls = 'success';
|
||||
$subcls = 'success';
|
||||
$status = Lang::get('success');
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$cls = 'danger';
|
||||
$subcls = 'danger';
|
||||
$status = Lang::get('failed');
|
||||
break;
|
||||
}
|
||||
?>
|
||||
<tr class="<?php print $cls; ?>">
|
||||
<td><a href="<?php echo APP_URL ?>build/view/<?php print $build->getId(); ?>">#<?php print str_pad($build->getId(), 6, '0', STR_PAD_LEFT); ?></a></td>
|
||||
<tr>
|
||||
<td><a href="<?php echo APP_URL ?>build/view/<?php print $build->getId(); ?>">#<?php print str_pad($build->getId(), 6, '0', STR_PAD_LEFT); ?></a></td>
|
||||
<td><?php print $build->getCreated()->format('Y-m-d H:i:s'); ?></td>
|
||||
<td><a href="<?php echo APP_URL ?>project/view/<?php print $build->getProjectId(); ?>">
|
||||
<td><a href="<?php echo APP_URL ?>project/view/<?php print $build->getProjectId(); ?>">
|
||||
<i class="fa fa-<?php print $build->getProject()->getIcon(); ?>"></i>
|
||||
|
||||
<?php
|
||||
|
@ -66,22 +66,22 @@ switch($build->getStatus())
|
|||
?>
|
||||
</td>
|
||||
|
||||
<td><a href="<?php print $build->getBranchLink(); ?>" target="_blank"><?php print $build->getBranch(); ?></a></td>
|
||||
<td>
|
||||
<span class='label label-<?php echo $subcls ?>'><?php echo $status ?></span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-default btn-sm" href="<?php echo APP_URL ?>build/view/<?php print $build->getId(); ?>"><?php Lang::out('view'); ?></a>
|
||||
<?php if($this->User()->getIsAdmin()): ?>
|
||||
<button class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="<?php echo APP_URL ?>build/delete/<?php print $build->getId(); ?>" class="app-delete-build"><?php Lang::out('delete_build'); ?></a></li>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</td>
|
||||
<td><a href="<?php print $build->getBranchLink(); ?>" target="_blank"><?php print $build->getBranch(); ?></a></td>
|
||||
<td>
|
||||
<span class='label label-<?php echo $subcls ?>'><?php echo $status ?></span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-default btn-sm" href="<?php echo APP_URL ?>build/view/<?php print $build->getId(); ?>"><?php Lang::out('view'); ?></a>
|
||||
<?php if($this->User()->getIsAdmin()): ?>
|
||||
<button class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="<?php echo APP_URL ?>build/delete/<?php print $build->getId(); ?>" class="app-delete-build"><?php Lang::out('delete_build'); ?></a></li>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<div>
|
||||
<p>
|
||||
Your commit <strong><?php print $build->getCommitId(); ?></strong> generated a
|
||||
<?php print $build->isSuccessful() ? 'successful' : 'failed'; ?> build in project
|
||||
<?php print $build->isSuccessful() ? 'success' : 'failed'; ?> build in project
|
||||
<strong><?php print $project->getTitle(); ?></strong>.
|
||||
</p>
|
||||
<?php print $content; ?>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?php use PHPCensor\Helper\Lang; ?>
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('group_add_edit'); ?></h3>
|
||||
</div>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
</a>
|
||||
</div>
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('project_groups'); ?></h3>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<div class="col-sm-5">
|
||||
<?php foreach ($groups as $group): ?>
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php print $group['title']; ?></h3>
|
||||
</div>
|
||||
|
@ -16,7 +16,7 @@
|
|||
</div>
|
||||
|
||||
<div class="col-sm-7 pull-left">
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('latest_builds'); ?></h3>
|
||||
</div>
|
||||
|
@ -42,7 +42,7 @@
|
|||
|
||||
case \PHPCensor\Model\Build::STATUS_SUCCESS:
|
||||
$updated = $build->getFinished();
|
||||
$label = Lang::get('successful');
|
||||
$label = Lang::get('success');
|
||||
$color = 'green';
|
||||
break;
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('enabled_plugins'); ?></h3>
|
||||
</div>
|
||||
|
@ -35,7 +35,7 @@
|
|||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('installed_packages'); ?></h3>
|
||||
</div>
|
||||
|
|
|
@ -42,34 +42,34 @@
|
|||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-9 col-md-8 col-sm-8">
|
||||
<div class="box box-primary">
|
||||
<div class="col-lg-9 col-md-8 col-sm-8">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('builds'); ?> (<?php print $total; ?>)</h3>
|
||||
</div>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php Lang::out('id'); ?></th>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php Lang::out('id'); ?></th>
|
||||
<th><?php Lang::out('date'); ?></th>
|
||||
<th><?php Lang::out('project'); ?></th>
|
||||
<th class="hidden-md hidden-sm hidden-xs"><?php Lang::out('commit'); ?></th>
|
||||
<th><?php Lang::out('branch'); ?></th>
|
||||
<th><?php Lang::out('status'); ?></th>
|
||||
<th style="width: 100px"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="latest-builds">
|
||||
<?php print $builds; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<th><?php Lang::out('project'); ?></th>
|
||||
<th class="hidden-md hidden-sm hidden-xs"><?php Lang::out('commit'); ?></th>
|
||||
<th><?php Lang::out('branch'); ?></th>
|
||||
<th><?php Lang::out('status'); ?></th>
|
||||
<th style="width: 100px"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="latest-builds">
|
||||
<?php print $builds; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-sm-4">
|
||||
|
||||
<?php if (in_array($project->getType(), ['github', 'gitlab', 'bitbucket'])): ?>
|
||||
<div class="box box-info">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h4 class="box-title"><?php Lang::out('webhooks'); ?></h4>
|
||||
</div>
|
||||
|
@ -100,7 +100,7 @@
|
|||
<?php endif; ?>
|
||||
|
||||
<?php if ($project->getSshPublicKey()): ?>
|
||||
<div class="box box-info">
|
||||
<div class="box">
|
||||
<div class="box-header"><h3 class="box-title"><a data-toggle="collapse" data-parent="#accordion" href="#publicCollapse"><?php Lang::out('public_key'); ?></a></h3></div>
|
||||
<div class="box-body" style="word-break: break-all;"><?php print $project->getSshPublicKey(); ?></div>
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?php use PHPCensor\Helper\Lang; ?>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-8">
|
||||
<div class="box box-primary">
|
||||
<div class="col-sm-8">
|
||||
<div class="box ">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('project_details'); ?></h3>
|
||||
</div>
|
||||
|
@ -11,11 +11,11 @@
|
|||
<?php print $form; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if(!is_null($key)): ?>
|
||||
<div class="col-sm-4">
|
||||
<div class="box box-info">
|
||||
<div class="box">
|
||||
<div class="box-body">
|
||||
<p><?php Lang::out('public_key_help'); ?></p>
|
||||
|
||||
|
|
|
@ -30,20 +30,20 @@
|
|||
</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-body clearfix">
|
||||
<?php print $basicSettings; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header"><h3 class="box-title"><?php Lang::out('build_settings'); ?></h3></div>
|
||||
<div class="box-body clearfix">
|
||||
<?php print $buildSettings; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header"><h3 class="box-title"><?php Lang::out('github_application'); ?></h3></div>
|
||||
<div class="box-body clearfix">
|
||||
|
||||
|
@ -81,7 +81,7 @@
|
|||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
<div class="box box-info">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('github_where_to_find'); ?></h3>
|
||||
</div>
|
||||
|
@ -99,7 +99,7 @@
|
|||
</div>
|
||||
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('email_settings'); ?></h3>
|
||||
</div>
|
||||
|
@ -116,7 +116,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">Authentication Settings</h3>
|
||||
</div>
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="box box-primary">
|
||||
<div class="col-xs-12">
|
||||
<div class="box">
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
@ -56,6 +56,5 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<p class="alert alert-success"><?php Lang::out('your_details_updated'); ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php Lang::out('update_your_details'); ?></h3>
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box box-primary">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-body">
|
||||
<?php print $form; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -12,16 +12,10 @@
|
|||
<link href="<?php print APP_URL; ?>assets/vendor/admin-lte/plugins/daterangepicker/daterangepicker.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/css/ansi-colors.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/css/main.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/css/admin-lte-skins.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?php print APP_URL; ?>assets/vendor/ion-icons/css/ionicons.min.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<style type="text/css">
|
||||
.visible-line-breaks {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
var APP_URL = '<?php print APP_URL; ?>';
|
||||
var LANGUAGE = <?php print json_encode(Lang::getLanguage()); ?>;
|
||||
|
|
|
@ -62,6 +62,25 @@ class CommandExecutorTest extends \PHPUnit_Framework_TestCase
|
|||
$this->assertFalse($returnValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs a script that generates an output that fills the standard error
|
||||
* buffer first, followed by the standard output buffer. The function
|
||||
* should be able to read from both streams, thereby preventing the child
|
||||
* process from blocking because one of its buffers is full.
|
||||
*/
|
||||
public function testExecuteCommand_AlternatesBothBuffers()
|
||||
{
|
||||
$length = 80000;
|
||||
$script = <<<EOD
|
||||
/bin/sh -c 'data="$(printf %%${length}s | tr " " "-")"; >&2 echo "\$data"; >&1 echo "\$data"'
|
||||
EOD;
|
||||
$data = str_repeat("-", $length);
|
||||
$returnValue = $this->testedExecutor->executeCommand(array($script));
|
||||
$this->assertTrue($returnValue);
|
||||
$this->assertEquals($data, trim($this->testedExecutor->getLastOutput()));
|
||||
$this->assertEquals($data, trim($this->testedExecutor->getLastError()));
|
||||
}
|
||||
|
||||
public function testFindBinary_ReturnsPathInSpecifiedRoot()
|
||||
{
|
||||
$thisFileName = "CommandExecutorTest.php";
|
||||
|
|
|
@ -305,7 +305,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
|
|||
$this->testedEmailPlugin->execute();
|
||||
|
||||
$this->assertContains('Passing', $this->message['subject']);
|
||||
$this->assertContains('successful', $this->message['body']);
|
||||
$this->assertContains('success', $this->message['body']);
|
||||
}
|
||||
|
||||
public function testMailFailingBuildHaveStatus()
|
||||
|
|
Loading…
Reference in a new issue