replaced AvanzuAdminTheme with AdminLTE bundle #201 (#202)

This commit is contained in:
Kevin Papst
2018-07-09 18:25:08 +02:00
committed by GitHub
parent 0eb8ae5117
commit 7a0d690101
38 changed files with 452 additions and 559 deletions

View File

@@ -39,7 +39,7 @@
/* ================================ NAVBAR ================================ */
.navbar-nav>li>a.ddt-large {
.navbar-nav > li > a.ddt-large {
padding-top: 12px;
padding-bottom: 9px;
}
@@ -90,7 +90,8 @@ li.open .ticktac i.running{
/* Right sidebar with additional tabs for personal settings and "About Kimai" section */
.control-sidebar {
select {
color: #000;
color: $input-color;
background-color: $input-bg;
}
div.image {
img.img-circle {
@@ -109,26 +110,6 @@ li.open .ticktac i.running{
left: 80px;
}
/* ================================ FONT AWESOME 5 ================================ */
.sidebar-menu>li>a>.far,
.sidebar-menu>li>a>.fas,
.sidebar-menu>li>a>.fal,
.sidebar-menu>li>a>.fab {
width: 20px;
}
.sidebar-menu .treeview-menu>li>a>.far,
.sidebar-menu .treeview-menu>li>a>.fas,
.sidebar-menu .treeview-menu>li>a>.fal,
.sidebar-menu .treeview-menu>li>a>.fab {
width: 20px;
}
.main-header .sidebar-toggle {
font-family: "Font Awesome 5 Free";
font-weight: 900;
}
/* ================================ FOOTER ================================ */
footer.main-footer {
@@ -178,223 +159,3 @@ table.invoice-sum th {
table.invoice-sum th, table.invoice-sum td {
text-align: right;
}
/* ================================ DATA-TABLES ================================ */
/*
dataTables.bootstrap.css
*/
div.dataTables_length label {
font-weight: normal;
text-align: left;
white-space: nowrap;
}
div.dataTables_length select {
width: 75px;
display: inline-block;
}
div.dataTables_filter {
text-align: right;
}
div.dataTables_filter label {
font-weight: normal;
white-space: nowrap;
text-align: left;
}
div.dataTables_filter input {
margin-left: 0.5em;
display: inline-block;
width: auto;
}
div.dataTables_info {
padding-top: 8px;
white-space: nowrap;
}
div.dataTables_paginate {
margin: 0;
white-space: nowrap;
text-align: right;
}
div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap;
}
@media screen and (max-width: 767px) {
div.dataTables_length,
div.dataTables_filter,
div.dataTables_info,
div.dataTables_paginate {
text-align: center;
}
div.DTTT {
margin-bottom: 0.5em;
}
}
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
table.dataTable {
clear: both;
/*margin-top: 6px !important;
margin-bottom: 6px !important;*/
margin-bottom: 0px !important;
max-width: none !important;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
position: relative;
}
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after {
position: absolute;
top: 8px;
right: 8px;
display: block;
font-family: 'Glyphicons Halflings';
opacity: 0.5;
}
table.dataTable thead .sorting:after {
opacity: 0.2;
content: "\e150"; /* sort */
}
table.dataTable thead .sorting_asc:after {
content: "\e155"; /* sort-by-attributes */
}
table.dataTable thead .sorting_desc:after {
content: "\e156"; /* sort-by-attributes-alt */
}
div.dataTables_scrollBody table.dataTable thead .sorting:after,
div.dataTables_scrollBody table.dataTable thead .sorting_asc:after,
div.dataTables_scrollBody table.dataTable thead .sorting_desc:after {
display: none;
}
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
color: #eee;
}
table.dataTable thead > tr > th {
padding-right: 30px;
}
table.dataTable th:active {
outline: none;
}
/* Condensed */
table.dataTable.table-condensed thead > tr > th {
padding-right: 20px;
}
table.dataTable.table-condensed thead .sorting:after,
table.dataTable.table-condensed thead .sorting_asc:after,
table.dataTable.table-condensed thead .sorting_desc:after {
top: 6px;
right: 6px;
}
/* Scrolling */
div.dataTables_scrollHead table {
margin-bottom: 0 !important;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
div.dataTables_scrollHead table thead tr:last-child th:first-child,
div.dataTables_scrollHead table thead tr:last-child td:first-child {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody tbody tr:first-child th,
div.dataTables_scrollBody tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot table {
margin-top: 0 !important;
border-top: none;
}
/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column
width calculations when using scrolling impossible to align columns. We have
to use separate
*/
table.table-bordered.dataTable {
border-collapse: separate !important;
}
table.table-bordered thead th,
table.table-bordered thead td {
border-left-width: 0;
border-top-width: 0;
}
table.table-bordered tbody th,
table.table-bordered tbody td {
border-left-width: 0;
border-bottom-width: 0;
}
table.table-bordered tfoot th,
table.table-bordered tfoot td {
border-left-width: 0;
border-bottom-width: 0;
}
table.table-bordered th:last-child,
table.table-bordered td:last-child {
border-right-width: 0;
}
div.dataTables_scrollHead table.table-bordered {
border-bottom-width: 0;
}
/*
* TableTools styles
*/
.table.dataTable tbody tr.active td,
.table.dataTable tbody tr.active th {
background-color: #08C;
color: white;
}
.table.dataTable tbody tr.active:hover td,
.table.dataTable tbody tr.active:hover th {
background-color: #0075b0 !important;
}
.table.dataTable tbody tr.active th > a,
.table.dataTable tbody tr.active td > a {
color: white;
}
.table-striped.dataTable tbody tr.active:nth-child(odd) td,
.table-striped.dataTable tbody tr.active:nth-child(odd) th {
background-color: #017ebc;
}

224
assets/css/datatable.scss Normal file
View File

@@ -0,0 +1,224 @@
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/*
dataTables.bootstrap.css
*/
div.dataTables_length label {
font-weight: normal;
text-align: left;
white-space: nowrap;
}
div.dataTables_length select {
width: 75px;
display: inline-block;
}
div.dataTables_filter {
text-align: right;
}
div.dataTables_filter label {
font-weight: normal;
white-space: nowrap;
text-align: left;
}
div.dataTables_filter input {
margin-left: 0.5em;
display: inline-block;
width: auto;
}
div.dataTables_info {
padding-top: 8px;
white-space: nowrap;
}
div.dataTables_paginate {
margin: 0;
white-space: nowrap;
text-align: right;
}
div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap;
}
@media screen and (max-width: 767px) {
div.dataTables_length,
div.dataTables_filter,
div.dataTables_info,
div.dataTables_paginate {
text-align: center;
}
div.DTTT {
margin-bottom: 0.5em;
}
}
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
table.dataTable {
clear: both;
/*margin-top: 6px !important;
margin-bottom: 6px !important;*/
margin-bottom: 0px !important;
max-width: none !important;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
position: relative;
}
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after {
position: absolute;
top: 8px;
right: 8px;
display: block;
font-family: 'Glyphicons Halflings';
opacity: 0.5;
}
table.dataTable thead .sorting:after {
opacity: 0.2;
content: "\e150"; /* sort */
}
table.dataTable thead .sorting_asc:after {
content: "\e155"; /* sort-by-attributes */
}
table.dataTable thead .sorting_desc:after {
content: "\e156"; /* sort-by-attributes-alt */
}
div.dataTables_scrollBody table.dataTable thead .sorting:after,
div.dataTables_scrollBody table.dataTable thead .sorting_asc:after,
div.dataTables_scrollBody table.dataTable thead .sorting_desc:after {
display: none;
}
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
color: #eee;
}
table.dataTable thead > tr > th {
padding-right: 30px;
}
table.dataTable th:active {
outline: none;
}
/* Condensed */
table.dataTable.table-condensed thead > tr > th {
padding-right: 20px;
}
table.dataTable.table-condensed thead .sorting:after,
table.dataTable.table-condensed thead .sorting_asc:after,
table.dataTable.table-condensed thead .sorting_desc:after {
top: 6px;
right: 6px;
}
/* Scrolling */
div.dataTables_scrollHead table {
margin-bottom: 0 !important;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
div.dataTables_scrollHead table thead tr:last-child th:first-child,
div.dataTables_scrollHead table thead tr:last-child td:first-child {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody tbody tr:first-child th,
div.dataTables_scrollBody tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot table {
margin-top: 0 !important;
border-top: none;
}
/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column
width calculations when using scrolling impossible to align columns. We have
to use separate
*/
table.table-bordered.dataTable {
border-collapse: separate !important;
}
table.table-bordered thead th,
table.table-bordered thead td {
border-left-width: 0;
border-top-width: 0;
}
table.table-bordered tbody th,
table.table-bordered tbody td {
border-left-width: 0;
border-bottom-width: 0;
}
table.table-bordered tfoot th,
table.table-bordered tfoot td {
border-left-width: 0;
border-bottom-width: 0;
}
table.table-bordered th:last-child,
table.table-bordered td:last-child {
border-right-width: 0;
}
div.dataTables_scrollHead table.table-bordered {
border-bottom-width: 0;
}
/*
* TableTools styles
*/
.table.dataTable tbody tr.active td,
.table.dataTable tbody tr.active th {
background-color: #08C;
color: white;
}
.table.dataTable tbody tr.active:hover td,
.table.dataTable tbody tr.active:hover th {
background-color: #0075b0 !important;
}
.table.dataTable tbody tr.active th > a,
.table.dataTable tbody tr.active td > a {
color: white;
}
.table-striped.dataTable tbody tr.active:nth-child(odd) td,
.table-striped.dataTable tbody tr.active:nth-child(odd) th {
background-color: #017ebc;
}

View File

@@ -1,11 +0,0 @@
$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
$fa-font-path: "~@fortawesome/fontawesome-free/webfonts/";
@import '~bootstrap-sass/assets/stylesheets/bootstrap';
@import '~@fortawesome/fontawesome-free/scss/fontawesome';
@import '~@fortawesome/fontawesome-free/scss/fa-regular';
@import '~@fortawesome/fontawesome-free/scss/fa-solid';
@import '~@fortawesome/fontawesome-free/scss/fa-brands';
@import '~daterangepicker/daterangepicker.css';
@import '~bootstrap-select/dist/css/bootstrap-select.min.css';

View File

@@ -1,37 +1,10 @@
// ------ jquery and bootstrap basics ------
// create global $ and jQuery variables
const $ = require('jquery');
global.$ = global.jQuery = $;
require('../../vendor/kevinpapst/adminlte-bundle/Resources/assets/admin-lte');
require('jquery-ui');
require('bootstrap-sass');
require('jquery-slimscroll');
require('bootstrap-select');
const Moment = require('moment');
global.moment = Moment;
require('daterangepicker');
// ------ for charts ------
const Chart = require('../../vendor/almasaeed2010/adminlte/plugins/chartjs/Chart.min.js');
global.Chart = Chart;
// ------ AdminLTE framework ------
require('../css/vendor.scss');
require('../../vendor/almasaeed2010/adminlte/dist/css/AdminLTE.min.css');
require('../../vendor/almasaeed2010/adminlte/dist/css/skins/_all-skins.css');
require('../css/app.scss');
global.$.AdminLTE = {};
global.$.AdminLTE.options = {};
require('../../vendor/almasaeed2010/adminlte/dist/js/app.js');
require('../css/datatable.scss');
// ------ Kimai itself ------
require('./kimai.js');
require('./datatable.js');
require('./toolbar.js');
require('../images/default_avatar.png');
// ------ icheck for enhanced radio buttins and checkboxes ------
require('icheck');
require('icheck/skins/square/blue.css');

View File

@@ -5,12 +5,12 @@
"description": "Kimai Time-Tracking 2",
"require": {
"php": "^7.1.3",
"ext-intl": "*",
"ext-pdo": "*",
"ext-pdo_sqlite": "*",
"ext-intl": "*",
"avanzu/admin-theme-bundle": "dev-kevinpapst",
"beberlei/DoctrineExtensions": "^1.0",
"erusev/parsedown": "^1.6",
"kevinpapst/adminlte-bundle": "^0.3.0",
"ocramius/proxy-manager": "2.1.1",
"sensio/framework-extra-bundle": "^5.1",
"symfony/asset": "^4.0",

274
composer.lock generated
View File

@@ -4,112 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "91e4b63b85862338cd5c14989b384afa",
"content-hash": "7e58d46b399667b75fa9f0b39e8cf11d",
"packages": [
{
"name": "almasaeed2010/adminlte",
"version": "v2.3.11",
"source": {
"type": "git",
"url": "https://github.com/almasaeed2010/AdminLTE.git",
"reference": "2be703222af2edcb87e562d3da2299e4352bff8a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/almasaeed2010/AdminLTE/zipball/2be703222af2edcb87e562d3da2299e4352bff8a",
"reference": "2be703222af2edcb87e562d3da2299e4352bff8a",
"shasum": ""
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Abdullah Almsaeed",
"email": "abdullah@almsaeedstudio.com"
}
],
"description": "AdminLTE - admin control panel and dashboard that's based on Bootstrap 3",
"homepage": "http://almsaeedstudio.com/",
"keywords": [
"JS",
"admin",
"back-end",
"css",
"less",
"responsive",
"template",
"theme",
"web"
],
"time": "2017-01-08T21:03:57+00:00"
},
{
"name": "avanzu/admin-theme-bundle",
"version": "dev-kevinpapst",
"source": {
"type": "git",
"url": "https://github.com/kevinpapst/AdminThemeBundle.git",
"reference": "4d5b901116d7287dd31a91e6c6e5b2839e3d039f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kevinpapst/AdminThemeBundle/zipball/4d5b901116d7287dd31a91e6c6e5b2839e3d039f",
"reference": "4d5b901116d7287dd31a91e6c6e5b2839e3d039f",
"shasum": ""
},
"require": {
"almasaeed2010/adminlte": "~2.3.0",
"php": "^7.1.3",
"symfony/console": "^4.0",
"symfony/event-dispatcher": "^4.0",
"symfony/http-foundation": "^4.0",
"symfony/http-kernel": "^4.0",
"symfony/options-resolver": "^4.0",
"symfony/process": "^4.0"
},
"require-dev": {
"phpspec/prophecy": "^1.6"
},
"suggest": {
"knplabs/knp-menu-bundle": "Allows easy menu integration."
},
"type": "symfony-bundle",
"autoload": {
"psr-4": {
"Avanzu\\AdminThemeBundle\\": ""
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "Marc Bach",
"email": "mail@avanzu.de",
"homepage": "http://www.avanzu.de",
"role": "Original Author"
},
{
"name": "Ángel Guzmán Maeso",
"email": "shakaran@gmail.com",
"homepage": "https://shakaran.net/blog",
"role": "Developer Collaborator"
},
{
"name": "Kevin Papst",
"homepage": "https://www.kevinpapst.de",
"role": "Developer"
}
],
"description": "Admin Theme based on the AdminLTE Template for easy integration with Symfony 4",
"support": {
"source": "https://github.com/kevinpapst/AdminThemeBundle/tree/kevinpapst"
},
"time": "2018-06-25T20:44:57+00:00"
},
{
"name": "beberlei/DoctrineExtensions",
"version": "v1.0.23",
@@ -1247,6 +1143,71 @@
],
"time": "2014-01-12T16:20:24+00:00"
},
{
"name": "kevinpapst/adminlte-bundle",
"version": "0.3",
"source": {
"type": "git",
"url": "https://github.com/kevinpapst/AdminLTEBundle.git",
"reference": "d7210c249e782b143a5c72f119c4bf463cbb38e5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kevinpapst/AdminLTEBundle/zipball/d7210c249e782b143a5c72f119c4bf463cbb38e5",
"reference": "d7210c249e782b143a5c72f119c4bf463cbb38e5",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"symfony/config": "^4.0",
"symfony/dependency-injection": "^4.0",
"symfony/event-dispatcher": "^4.0",
"symfony/framework-bundle": "^4.0",
"symfony/http-foundation": "^4.0",
"symfony/http-kernel": "^4.0",
"symfony/options-resolver": "^4.0",
"symfony/security": "^4.0",
"twig/twig": "^2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.10",
"phpspec/prophecy": "^1.6"
},
"suggest": {
"knplabs/knp-menu-bundle": "Allows easy menu integration."
},
"type": "symfony-bundle",
"autoload": {
"psr-4": {
"KevinPapst\\AdminLTEBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marc Bach",
"email": "mail@avanzu.de",
"homepage": "http://www.avanzu.de",
"role": "Original Author"
},
{
"name": "Ángel Guzmán Maeso",
"email": "shakaran@gmail.com",
"homepage": "https://shakaran.net/blog",
"role": "Developer Collaborator"
},
{
"name": "Kevin Papst",
"homepage": "https://www.kevinpapst.de",
"role": "Developer"
}
],
"description": "Admin Theme based on the AdminLTE 2.3 for easy integration with Symfony 4",
"time": "2018-07-08T17:57:25+00:00"
},
{
"name": "monolog/monolog",
"version": "1.23.0",
@@ -3605,55 +3566,6 @@
],
"time": "2018-04-26T10:06:28+00:00"
},
{
"name": "symfony/process",
"version": "v4.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a",
"reference": "1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.1-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Process\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2018-05-31T10:17:53+00:00"
},
{
"name": "symfony/profiler-pack",
"version": "v1.0.3",
@@ -7163,6 +7075,55 @@
"homepage": "https://symfony.com",
"time": "2018-06-11T12:56:28+00:00"
},
{
"name": "symfony/process",
"version": "v4.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a",
"reference": "1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.1-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Process\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2018-05-31T10:17:53+00:00"
},
{
"name": "symfony/thanks",
"version": "v1.0.7",
@@ -7359,16 +7320,15 @@
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"avanzu/admin-theme-bundle": 20,
"symfony/lts": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "^7.1.3",
"ext-intl": "*",
"ext-pdo": "*",
"ext-pdo_sqlite": "*",
"ext-intl": "*"
"ext-pdo_sqlite": "*"
},
"platform-dev": []
}

View File

@@ -17,5 +17,5 @@ return [
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true],
Avanzu\AdminThemeBundle\AvanzuAdminThemeBundle::class => ['all' => true],
KevinPapst\AdminLTEBundle\AdminLTEBundle::class => ['all' => true],
];

View File

@@ -0,0 +1,33 @@
#
# Configuration file for the AdminLTE bundle
#
# For more information about the settings visit:
# https://github.com/kevinpapst/AdminLTEBundle/blob/master/Resources/docs/configurations.md
#
admin_lte:
options:
# default image for missing user avatar images
default_avatar: build/images/default_avatar.png
# the color skin
skin: skin-blue
# if activated, the boxed_layout will be deactivated
fixed_layout: false
# boxed layout (true) or full-screen (false)
boxed_layout: false
# initial collapsed state of the sidebar
collapsed_sidebar: false
# whether the logo collapses or not
mini_sidebar: false
# tabs in the control_sidebar (right screen) can be configured, see:
# https://github.com/kevinpapst/AdminLTEBundle/blob/master/Resources/docs/control_sidebar.md
control_sidebar:
settings:
icon: "fas fa-cogs"
controller: 'App\Controller\SidebarController::settingsAction'
home:
icon: "fas fa-question-circle"
template: sidebar/home.html.twig
routes:
adminlte_profile: user_profile

View File

@@ -1,9 +0,0 @@
avanzu_admin_theme:
use_twig: true
use_assetic: false
bower_bin: "/usr/local/bin/bower"
options:
default_avatar: build/images/default_avatar.png
control_sidebar: true
knp_menu:
enable: false

View File

@@ -49,10 +49,3 @@ twig:
kimai_context:
box_color: "green" # a color for ???
active_warning: 3 # display a warning color if the user has at least X active recordings
control_sidebar: # all tabs in the control sidebar
settings:
icon: "fas fa-cogs"
controller: 'App\Controller\SidebarController::settingsAction'
home:
icon: "fas fa-question-circle"
template: sidebar/home.html.twig

View File

@@ -11,8 +11,3 @@ homepage:
_controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::redirectAction
route: timesheet
permanent: true
avanzu_admin_profile:
path: /{_locale}/profile/{username}
options:
avanzu_admin_route: profile

View File

@@ -1,8 +0,0 @@
# ========================================================================
# Demo routes, only work with "avanzu_admin_theme/enable_demo: true"
# ========================================================================
#avanzu_admin:
# prefix: /admin
# resource: "@AvanzuAdminThemeBundle/Resources/config/routes.yml"

View File

@@ -89,6 +89,9 @@ services:
arguments:
$dateSettings: "%kimai.languages%"
KevinPapst\AdminLTEBundle\Helper\ContextHelper:
alias: admin_lte_theme.context_helper
# ================================================================================
# TIMESHEET RECORD CALCULATOR
# ================================================================================

View File

@@ -9,6 +9,7 @@
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.1.0",
"@symfony/webpack-encore": "^0.20.1",
"admin-lte": "^2.3.11",
"bootstrap-sass": "^3.3.7",
"bootstrap-select": "^1.13.1",
"daterangepicker": "^3.0.3",

View File

@@ -10,19 +10,19 @@
<php>
<ini name="error_reporting" value="-1" />
<ini name="intl.default_locale" value="en_US" />
<env name="KERNEL_CLASS" value="App\Kernel" />
<env name="APP_ENV" value="test"/>
<env name="APP_DEBUG" value="1"/>
<env name="APP_SECRET" value="5a79a1c866efef9ca1800f971d689f3e"/>
<env name="DATABASE_PREFIX" value="kimai2_"/>
<env name="KERNEL_CLASS" value="App\Kernel" force="true"/>
<env name="APP_ENV" value="test" force="true"/>
<env name="APP_DEBUG" value="1" force="true"/>
<env name="APP_SECRET" value="5a79a1c866efef9ca1800f971d689f3e" force="true"/>
<env name="DATABASE_PREFIX" value="kimai2_" force="true"/>
<!-- define your env variables for the test env here -->
<!-- ###+ doctrine/doctrine-bundle ### -->
<env name="DATABASE_URL" value="sqlite:///var/data/kimai_test.sqlite"/>
<env name="DATABASE_URL" value="sqlite:///var/data/kimai_test.sqlite" force="true"/>
<!-- ###- doctrine/doctrine-bundle ### -->
<!-- ###+ symfony/swiftmailer-bundle ### -->
<env name="MAILER_URL" value="null://localhost"/>
<env name="MAILER_URL" value="null://localhost" force="true"/>
<!-- ###- symfony/swiftmailer-bundle ### -->
</php>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{
"build/app.js": "/build/app.js?604773492e023a83c73b",
"build/app.css": "/build/app.css?ec2e5a6f655d60e8c23adb0967d24d6f",
"build/app.js": "/build/app.js?ab8e6e2c499b2137f638",
"build/app.css": "/build/app.css?2cd028b4cb27a6be36dc5e854ea1ada9",
"build/fonts/fa-solid-900.woff": "/build/fonts/fa-solid-900.woff?128d2b0b",
"build/images/boxed-bg.jpg": "/build/images/boxed-bg.jpg?7799dece",
"build/images/blue.png": "/build/images/blue.png?96f8a905",

View File

@@ -9,7 +9,7 @@
namespace App\Event;
use Avanzu\AdminThemeBundle\Model\MenuItemModel;
use KevinPapst\AdminLTEBundle\Model\MenuItemModel;
/**
* The ConfigureAdminMenuEvent is used for populating the administration navigation.

View File

@@ -9,7 +9,7 @@
namespace App\Event;
use Avanzu\AdminThemeBundle\Event\SidebarMenuEvent;
use KevinPapst\AdminLTEBundle\Event\SidebarMenuEvent;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\HttpFoundation\Request;

View File

@@ -11,8 +11,8 @@ namespace App\EventSubscriber;
use App\Event\ConfigureAdminMenuEvent;
use App\Event\ConfigureMainMenuEvent;
use Avanzu\AdminThemeBundle\Event\SidebarMenuEvent;
use Avanzu\AdminThemeBundle\Model\MenuItemModel;
use KevinPapst\AdminLTEBundle\Event\SidebarMenuEvent;
use KevinPapst\AdminLTEBundle\Model\MenuItemModel;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;

View File

@@ -11,7 +11,7 @@ namespace App\EventSubscriber;
use App\Event\ConfigureAdminMenuEvent;
use App\Event\ConfigureMainMenuEvent;
use Avanzu\AdminThemeBundle\Model\MenuItemModel;
use KevinPapst\AdminLTEBundle\Model\MenuItemModel;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;

View File

@@ -10,8 +10,8 @@
namespace App\EventSubscriber;
use App\Entity\User;
use Avanzu\AdminThemeBundle\Event\ShowUserEvent;
use Avanzu\AdminThemeBundle\Model\UserModel;
use KevinPapst\AdminLTEBundle\Event\ShowUserEvent;
use KevinPapst\AdminLTEBundle\Model\UserModel;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;

View File

@@ -11,7 +11,7 @@ namespace App\EventSubscriber;
use App\Entity\User;
use App\Entity\UserPreference;
use Avanzu\AdminThemeBundle\Helper\ContextHelper;
use KevinPapst\AdminLTEBundle\Helper\ContextHelper;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\KernelEvent;
use Symfony\Component\HttpKernel\KernelEvents;

View File

@@ -1,10 +1,4 @@
{
"almasaeed2010/adminlte": {
"version": "v2.3.11"
},
"avanzu/admin-theme-bundle": {
"version": "dev-kevinpapst"
},
"beberlei/doctrineextensions": {
"version": "v1.0.20"
},
@@ -119,6 +113,9 @@
"jdorn/sql-formatter": {
"version": "v1.2.17"
},
"kevinpapst/adminlte-bundle": {
"version": "0.3"
},
"monolog/monolog": {
"version": "1.23.0"
},

View File

@@ -60,7 +60,7 @@
<td class="{{ tables.data_table_column_class(tableName, columns, 'activity') }}">
<a href="{{ path('admin_activity_edit', {'id': entry.activity.id}) }}">{{ widgets.label_activity(entry.activity) }}</a>
</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'username') }}"><a href="{{ path('profile'|route_alias, {'username' : entry.user.username}) }}">{{ widgets.label_user(entry.user) }}</a></td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'username') }}"><a href="{{ path('user_profile'|route_alias, {'username' : entry.user.username}) }}">{{ widgets.label_user(entry.user) }}</a></td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'description') }}">{{ entry.description }}</td>
<td>
{% set actionButtons = {} %}

View File

@@ -1,4 +1,4 @@
{% extends '@AvanzuAdminTheme/layout/default-layout.html.twig' %}
{% extends '@AdminLTE/layout/default-layout.html.twig' %}
{% block avanzu_page_content_class %}{{ parent() }} {% block main_content_class %}{% endblock %}{% endblock %}

View File

@@ -1,5 +1,5 @@
{# User Account: style can be found in dropdown.less #}
{% import "@AvanzuAdminTheme/layout/macros.html.twig" as macro %}
{% import "@AdminLTE/Macros/default.html.twig" as macro %}
<li class="dropdown user user-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
{{ macro.avatar(user.avatar, user.username, 'user-image') }}

View File

@@ -1,23 +0,0 @@
<aside class="control-sidebar control-sidebar-dark">
<ul class="nav nav-tabs nav-justified control-sidebar-tabs">
{% if kimai_context.control_sidebar is defined %}
{% for name, tab in kimai_context.control_sidebar %}
<li{% if loop.first %} class="active"{% endif %}><a href="#control-sidebar-{{ name }}-tab" data-toggle="tab"><i class="{{ tab.icon|icon(tab.icon) }}"></i></a></li>
{% endfor %}
{% endif %}
</ul>
<div class="tab-content">
{% if kimai_context.control_sidebar is defined %}
{% for name, tab in kimai_context.control_sidebar %}
<div class="tab-pane {% if loop.first %}active{% endif %}" id="control-sidebar-{{ name }}-tab">
{% if tab.controller is defined %}
{{ render(controller(tab.controller)) }}
{% elseif tab.template is defined %}
{% include tab.template %}
{% endif %}
</div>
{% endfor %}
{% endif %}
</div>
</aside>
<div class="control-sidebar-bg"></div>

View File

@@ -1,4 +1,4 @@
{% import "@AvanzuAdminTheme/layout/macros.html.twig" as macro %}
{% import "@AdminLTE/Macros/default.html.twig" as macro %}
{% if app.session.started and app.session.flashbag.peekAll|length > 0 %}
<div class="row">

View File

@@ -1,4 +1,4 @@
{% extends "@AvanzuAdminTheme/layout/form-theme.html.twig" %}
{% extends "@AdminLTE/layout/form-theme.html.twig" %}
{% block form_label %}
{% if form.vars.documentation is defined and form.vars.documentation is not empty %}

View File

@@ -1,4 +1,4 @@
{% extends "@AvanzuAdminTheme/layout/form-theme.html.twig" %}
{% extends "@AdminLTE/layout/form-theme.html.twig" %}
{% block date_widget %}
{% if widget == 'single_text' %}

View File

@@ -1,7 +1,7 @@
<!DOCTYPE html{% block avanzu_html_start %}{% endblock %}>
<html>
<head>
{% include('@AvanzuAdminTheme/Partials/_head.html.twig') %}
{% include('@AdminLTE/Partials/_head.html.twig') %}
<title>{{ 'browser.title'|trans }}</title>
</head>
<body{% block avanzu_body_start %}{% endblock %} class="hold-transition login-page">

View File

@@ -1,4 +1,4 @@
{% import "@AvanzuAdminTheme/layout/macros.html.twig" as macro %}
{% import "@AdminLTE/Macros/default.html.twig" as macro %}
{% import "macros/widgets.html.twig" as widgets %}

View File

@@ -125,7 +125,7 @@
{% endmacro %}
{% macro profile_box(user, stats) %}
{% import "@AvanzuAdminTheme/layout/macros.html.twig" as macro %}
{% import "@AdminLTE/Macros/default.html.twig" as macro %}
{% import "macros/widgets.html.twig" as widgets %}
<div class="box box-primary">
@@ -163,7 +163,7 @@
{# -------------------------------- UNUSED FOR NOW -------------------------------- #}
{% macro profile_list_unused(user, items, color) %}
{% import "@AvanzuAdminTheme/layout/macros.html.twig" as macro %}
{% import "@AdminLTE/Macros/default.html.twig" as macro %}
{% import "macros/widgets.html.twig" as widgets %}
<div class="box box-widget widget-user-2">
@@ -188,7 +188,7 @@
{# -------------------------------- UNUSED FOR NOW -------------------------------- #}
{% macro profile_box_unused(user, stats, color) %}
{% import "@AvanzuAdminTheme/layout/macros.html.twig" as macro %}
{% import "@AdminLTE/Macros/default.html.twig" as macro %}
{% import "macros/widgets.html.twig" as widgets %}
<div class="box box-widget widget-user">

View File

@@ -93,6 +93,10 @@ adjust-sourcemap-loader@^1.1.0:
object-path "^0.9.2"
regex-parser "^2.2.9"
admin-lte@^2.3.11:
version "2.3.11"
resolved "https://registry.yarnpkg.com/admin-lte/-/admin-lte-2.3.11.tgz#da56dcd34d42e9ef1af362be15520a053a9d43db"
ajv-keywords@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"