This commit is contained in:
Christine Slotty 2020-06-10 18:30:02 +02:00
parent 53407dd806
commit e0d22698ef
13 changed files with 1102 additions and 421 deletions

View File

@ -21,6 +21,7 @@ use Cake\Routing\Router;
use Cake\ORM\TableRegistry;
use Cake\Core\Configure;
use Cake\I18n\Time;
use Cake\I18n\I18n;
/**
* Application Controller
@ -72,16 +73,16 @@ class AppController extends Controller
]
]
]);
$this->Auth->deny(['index']);
/*
* Enable the following component for recommended CakePHP security settings.
* see https://book.cakephp.org/3.0/en/controllers/components/security.html
*/
//$this->loadComponent('Security');
// load current balance
$session = $this->getRequest()->getSession();
$state_user_id = $session->read('StateUser.id');
@ -98,7 +99,7 @@ class AppController extends Controller
//echo "stateUser.balance: " . $session->read('StateUser.balance');
}
}
// load error count
if($state_user_id) {
$stateErrorsTable = TableRegistry::getTableLocator()->get('stateErrors');
@ -110,8 +111,8 @@ class AppController extends Controller
$session->write('StateUser.errorCount', $stateErrorQuery->count());
}
//echo "initialize";
// put current page into global for navi
$GLOBALS["passed"] = null;
$side = $this->request->getParam('controller');
@ -122,14 +123,14 @@ class AppController extends Controller
$GLOBALS["passed"] = $passedArguments[0];
}
$GLOBALS["subside"] = $subside;
// server login
if($this->Auth->user('id')) {
$GLOBALS['ServerUser'] = $this->Auth->user();
}
}
protected function requestLogin()
{
$session = $this->getRequest()->getSession();
@ -144,20 +145,20 @@ class AppController extends Controller
// login server cannot detect host ip
// TODO: update login server, recognize nginx real ip header
$loginServer = Configure::read('LoginServer');
if($session_id != 0) {
$userStored = $session->read('StateUser');
$transactionPendings = $session->read('Transactions.pending');
$transactionExecutings = $session->read('Transaction.executing');
if($session->read('session_id') != $session_id ||
if($session->read('session_id') != $session_id ||
( $userStored && !isset($userStored['id'])) ||
intval($transactionPendings) > 0 ||
intval($transactionExecutings) > 0) {
$http = new Client();
try {
$url = $loginServer['host'] . ':' . $loginServer['port'];
$response = $http->get($url . '/login', ['session_id' => $session_id]);
$json = $response->getJson();
@ -165,7 +166,7 @@ class AppController extends Controller
if($json['state'] === 'success' && intval($json['user']['email_checked']) === 1) {
//echo "email checked: " . $json['user']['email_checked'] . "; <br>";
if($session->read('session_id') != $session_id ||
if($session->read('session_id') != $session_id ||
( $userStored && !isset($userStored['id']))) {
$session->destroy();
}
@ -247,20 +248,20 @@ class AppController extends Controller
}
return true;
}
/*
public function beforeFilter(Event $event)
{
//$this->Auth->allow(['display']);
}
*/
public function addAdminError($controller, $action, array $returnTable, $state_user_id) {
if(!is_array($returnTable)) {
$this->addAdminError('AppController', 'addAdminError', ['state' => 'error', 'msg' => 'returnTable isn\'t array', 'details' => gettype($returnTable)]);
return false;
}
$adminErrorTable = TableRegistry::getTableLocator()->get('AdminErrors');
$adminErrorTable = TableRegistry::getTableLocator()->get('AdminErrors');
$adminErrorEntity = $adminErrorTable->newEntity();
$adminErrorEntity->state_user_id = $state_user_id;
$adminErrorEntity->controller = $controller;
@ -268,6 +269,8 @@ class AppController extends Controller
$adminErrorEntity->state = $returnTable['state'];
if(isset($returnTable['msg'])) {
$adminErrorEntity->msg = $returnTable['msg'];
} else {
$adminErrorEntity->msg = __('(Leere Message)');
}
if(isset($returnTable['details'])) {
$adminErrorEntity->details = $returnTable['details'];
@ -277,25 +280,25 @@ class AppController extends Controller
}
return true;
}
public function getAdminEmailLink($text) {
$serverAdminEmail = Configure::read('ServerAdminEmail');
$serverAdminEmail = Configure::read('ServerAdminEmail');
return '<a href="mailto:' . $serverAdminEmail . '">'. $serverAdminEmail . '</a>';
}
public function returnJsonEncoded($json) {
$this->autoRender = false;
$response = $this->response->withType('application/json');
return $response->withStringBody($json);
}
public function returnJson($array) {
$this->autoRender = false;
$response = $this->response->withType('application/json');
return $response->withStringBody(json_encode($array));
}
public function getStartEndForMonth($month, $year)
public function getStartEndForMonth($month, $year)
{
$timeString = $year . '-' . $month . '-01 00:00';
$firstDay = new Time($timeString);
@ -303,5 +306,5 @@ class AppController extends Controller
$lastDay = $lastDay->addMonth(1);
return [$firstDay, $lastDay];
}
}

View File

@ -24,20 +24,20 @@ class NavHeaderEntry
*/
?>
<?php if($errorCount > 0) : ?>
<li>
<?= $this->Html->link(
'<i class="mdi mdi-alert-outline grd-alert-color mdi-1x"></i>'
. '<span class="notification-indicator notification-indicator-warning notification-indicator-ripple"></span>',
'<i class="material-icons-outlined grd-alert-color">announcement</i>'
. '<span class="notification-indicator notification-indicator-warning">ss</span>',
['controller' => 'StateErrors', 'action' => 'ShowForUser'],
['class' => 'nav-link', 'escape' => false, 'title' => "$errorCount " . __('Fehler')]) ?>
</li>
<?php endif; ?>
<?php if($transactionPendings > 0) : ?>
<li>
<a class="nav-link" title="<?= "$transactionPendings " . __('Transaktionen sind noch zu unterzeichnen')?>" href="<?= Router::url('./', true) ?>account/checkTransactions">
<i class="mdi mdi-signature-freehand mdi-1x"></i>
<i class="material-icons-outlined">verified_user</i>
<!--
fingerprint
today
-->
<!--(<?= $transactionPendings ?>)-->
<span class="notification-indicator notification-indicator-primary notification-indicator-ripple"></span>
<span class="notification-indicator notification-indicator-primary">ss</span>
</a>
</li>
<?php endif; ?>

View File

@ -38,6 +38,9 @@ $GLOBALS["self"] = $this;
<body>
<div class="layout">
<!-- TODO save last state so that it remains unchanged, on reload! -->
<div class="header-notify">
<?= $this->element('navi_notify'); ?>
</div>
<div class="sidebar1 nav-menu initial">
<a href="/">
<picture class="logo big visible">
@ -61,7 +64,6 @@ $GLOBALS["self"] = $this;
<!-- XXX -->
<div class="nav-vertical">
<ul>
<?= $this->element('navi_header'); ?>
<?= $this->element('navi'); ?>
</ul>
</div>

View File

@ -32,8 +32,8 @@ $this->loadHelper('Form', [
$('textarea').maxlength({
alwaysShow: true,
warningClass: "badge mt-1 badge-success",
limitReachedClass: "badge mt-1 badge-danger"
warningClass: "badge badge-warning",
limitReachedClass: "badge badge-error"
});
})(jQuery);
</script>

View File

@ -15,15 +15,17 @@
/* GRID */
.layout {
display: grid;
grid-template-rows: [top] 2vh [line2] 86vh [footer1] 7vh [footer2] 5vh [end];
grid-template-rows: [top] 6vh [line2] 86vh [footer1] 3vh [footer2] 5vh [end];
grid-template-columns: [left1] 1fr [left2] 1fr [left3] 8fr [right3] 1fr [right2] 1fr [right1];
grid-template-areas: "header header header header header" "left . center . ." "footer footer footer footer footer" "bottom bottom bottom bottom bottom";
margin: 0;
padding: 0;
}
/*.header {
.header-notify {
grid-area: header;
}*/
grid-column-start: right3;
grid-column-end: right2;
}
.sidebar1 {
grid-area: left;
grid-row-start: top;
@ -77,7 +79,7 @@
============================================================*/
/* ============================================================
Screen styles.
Basic screen styles.
Datei : screen.less
Datum : 2020-04-30
@ -144,6 +146,7 @@
align-items: center;
font-size: 70%;
font-style: italic;
line-height: 0;
}
.bottomright {
position: fixed;
@ -210,6 +213,12 @@
.gdt-text-color {
color: #a27824;
}
.grd-alert-color {
color: #ff5f66;
}
.grd-success-color {
color: #047006;
}
.grd-orange-color {
color: #ffa600;
}
@ -225,7 +234,7 @@
Datei : navi.less
Datum : 2020-04-30
Autor : einhornimmond / Christine Slotty
Copyright : Gradio
Copyright : Gradido
============================================================*/
@media screen {
@ -363,6 +372,11 @@
gap: 5%;
padding: 1em;
}
.footer .nav-horizontal {
gap: 0;
padding: 0 1em;
padding-inline-start: 0 !important;
}
.nav-top-smaller {
margin: 0;
padding: 0;
@ -459,6 +473,171 @@
display: block;
}
}
/* ============================================================
Notification
Datei : notification.css
Datum : 2020-06-10
Autor : Christine Slotty
Copyright : Gradido
============================================================*/
@media screen {
.header-notify {
position: relative;
display: flex;
flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav-link {
display: block;
padding: 0.5rem 1rem;
color: #525c5d;
}
.notification-indicator {
display: block;
width: 7px;
height: 7px;
position: absolute;
top: 12px;
right: 12px;
border-radius: 100%;
z-index: 99000;
}
.notification-indicator:before {
content: "";
display: block;
width: 26px;
height: 26px;
z-index: 99000;
border-radius: 100%;
opacity: 0;
-webkit-transform-origin: 50% 50%;
transform-origin: 50% 50%;
mix-blend-mode: screen;
-webkit-animation: blink 1.2s ease-out;
animation: blink 1.2s ease-out;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
@-webkit-keyframes blink {
0%,
35% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
50% {
-webkit-transform: scale(0.6);
transform: scale(0.6);
opacity: 0.8;
}
100% {
opacity: 0;
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
}
@keyframes blink {
0%,
35% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
50% {
-webkit-transform: scale(0.6);
transform: scale(0.6);
opacity: 0.8;
}
100% {
opacity: 0;
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
}
.notification-indicator-primary {
background: #047006;
}
.notification-indicator-primary:before {
content: "";
background: rgba(4, 112, 6, 0.5);
}
.notification-indicator-warning {
background: #f0825f;
}
.notification-indicator-warning:before {
content: "";
background: rgba(240, 130, 95, 0.5);
}
/* .notification-indicator-secondary {
background: grey
}
.notification-indicator-secondary:before {
content: "";
background: rgba(128, 128, 128, .5)
}
.notification-indicator-success {
background: #00e093
}
.notification-indicator-success:before {
content: "";
background: rgba(0, 224, 147, .5)
}
.notification-indicator-info {
background: #6c61f6
}
.notification-indicator-info:before {
content: "";
background: rgba(108, 97, 246, .5)
}
.notification-indicator-danger {
background: #ff5f66
}
.notification-indicator-danger:before {
content: "";
background: rgba(255, 95, 102, .5)
}
.notification-indicator-light {
background: #dfdfdf
}
.notification-indicator-light:before {
content: "";
background: rgba(223, 223, 223, .5)
}
.notification-indicator-dark {
background: #74767b
}
.notification-indicator-dark:before {
content: "";
background: rgba(116, 118, 123, .5)
}
.notification-indicator-white {
background: #fff
}
.notification-indicator-white:before {
content: "";
background: rgba(255, 255, 255, .5)
}
*/
}
/* ============================================================
Screen styles for center part.
@ -565,113 +744,114 @@
/* Ende @media screen */
/* ============================================================
Print styles.
Screen styles for lists.
Datei : print.css
Datum : 2020-04-30
Datei : list.css
Datum : 2020-06-09
Autor : Christine Slotty
Copyright : Gradio
============================================================*/
/* ---------------------------------------------------------
Print styles
---------------------------------------------------------*/
@media print {
* {
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
background: transparent !important;
@media screen {
/* =========
LISTS
=========*/
/* List Content */
.content-list {
width: 100%;
}
html {
background-color: #111;
.content-list-title {
font-size: 1rem;
margin: 0;
padding: 20px 25px;
color: #313131;
}
/* Hide navigation */
nav {
display: none;
.content-list-table {
display: flex;
flex-direction: column;
width: 100%;
overflow: auto;
font-size: 16px;
color: #212529;
}
/* Show link destinations in brackets after the link text */
a[href]:after {
content: " (" attr(href) ") ";
.row {
display: flex;
width: 100%;
border-top: 1px solid #f2f4f9;
-webkit-transition-duration: 0.5s;
transition-duration: 0.5s;
}
a[href] {
font-weight: bold;
text-decoration: underline;
color: #06c;
border: none;
.row:hover {
background-color: #f6f7f9;
}
/* Don't show link destinations for JavaScript or internal links */
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: "";
.cell {
display: flex;
align-items: center;
padding: 1em 1.5em;
}
/* Show abbr title value in brackets after the text */
abbr[title]:after {
content: " (" attr(title) ")";
.c0 {
flex-grow: 5;
}
figure {
margin-bottom: 1em;
.c1 {
width: 80px;
flex: 0 0 80px;
}
.c2 {
width: 160px;
flex: 0 0 160px;
}
.c3 {
width: 240px;
flex: 0 0 240px;
}
.c4 {
width: 320px;
flex: 0 0 320px;
}
.header-cell {
border-top: 1px solid #f2f4f9;
background-color: #fafafa;
color: #101010;
}
.content-list-table img,
.content-list-table i {
vertical-align: middle;
}
.content-list-table > span {
font-size: 0.8em;
padding: 0.5em 2em;
vertical-align: middle;
}
/* Individual Tables XXX rm!! */
.wiretransfer {
grid-template-columns: 5fr 4fr 3fr 2fr 1fr;
}
.error-list {
grid-template-columns: 2fr 2fr 5fr 1fr;
}
.transactions {
grid-template-columns: 1fr 4fr 2fr 2fr;
}
.profile-img {
width: 30px;
height: 30px;
border-radius: 6px;
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2);
overflow: hidden;
border-style: none;
box-sizing: border-box;
margin-right: 40px;
}
figure img {
border: 1px solid #000;
.tx-email {
cursor: pointer;
display: block;
color: #101010;
font-weight: 400;
}
.small {
font-size: 80%;
font-weight: 400;
}
}
/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : 12.07.2019, 07:59:32
Author : einhornimmond
*/
div[role='grd_dialog'] {
position: fixed;
width: 100%;
height: 100%;
background-color: #fff;
top: 0;
left: 0;
}
div.grd_modal-dialog {
margin-top: 100px;
min-height: 200px;
max-width: 1000px;
margin-left: auto;
margin-right: auto;
background-color: #fff;
color: #000;
border: 1px solid grey;
}
div.grd_modal-dialog.grd_dialog-large {
margin-top: 5px;
width: 90%;
}
div.grd_modal-body {
padding: 25px;
}
div.grd_modal-header {
background-color: rgba(0, 0, 0, 0.1);
padding: 5px;
padding-left: 15px;
border: 1px solid grey;
color: #000;
}
div.grd_modal-footer {
background-color: rgba(0, 0, 0, 0.1);
height: 40px;
}
.grd_modal-footer a,
.grd_modal-footer button {
float: right;
padding: 9px;
margin-right: 10px;
border: 1px solid grey;
}
.grd_modal-footer a:hover,
.grd_modal-footer button:hover {
background-color: rgba(255, 255, 255, 0.5);
}
/*
To change this license header, choose License Headers in Project Properties.
@ -711,12 +891,10 @@ and open the template in the editor.
}
.form-control {
grid-column: 0.66666667;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
margin: 0;
padding: 0.375rem 0.75rem;
padding: 0.4em 0.75em;
padding-left: 20px;
padding-right: 20px;
margin: 0;
color: rgba(16, 16, 16, 0.8);
display: block;
font-size: 1rem;
@ -730,6 +908,37 @@ and open the template in the editor.
-webkit-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.form-control:focus {
color: #495057;
background-color: #f6f7f9;
border-color: #d7dee5;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
textarea {
resize: vertical;
}
.badge {
display: inline-block;
padding: 0.45rem 1rem;
font-size: 80%;
font-weight: 700;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25rem;
-webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.badge-warning {
color: #fff;
background-color: #00e093;
}
.badge-error {
color: #fff;
background-color: #ff5f66;
}
.form-button {
cursor: pointer;
font: 600 13.3333px Arial;
@ -848,107 +1057,56 @@ display: inline-block;
*/
/* ============================================================
Screen styles for lists.
Print styles.
Datei : list.css
Datum : 2020-06-09
Datei : print.css
Datum : 2020-04-30
Autor : Christine Slotty
Copyright : Gradio
============================================================*/
@media screen {
/* =========
LISTS
=========*/
/* List Content */
.content-list {
width: 100%;
/* ---------------------------------------------------------
Print styles
---------------------------------------------------------*/
@media print {
* {
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
background: transparent !important;
}
.content-list-title {
font-size: 1rem;
margin: 0;
padding: 20px 25px;
color: #313131;
html {
background-color: #111;
}
.content-list-table {
display: flex;
flex-direction: column;
width: 100%;
overflow: auto;
font-size: 16px;
color: #212529;
/* Hide navigation */
nav {
display: none;
}
.row {
display: flex;
width: 100%;
/* Show link destinations in brackets after the link text */
a[href]:after {
content: " (" attr(href) ") ";
}
.cell {
display: flex;
align-items: center;
padding: 1em 1.5em;
a[href] {
font-weight: bold;
text-decoration: underline;
color: #06c;
border: none;
}
.c0 {
flex-grow: 5;
/* Don't show link destinations for JavaScript or internal links */
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: "";
}
.c1 {
width: 80px;
flex: 0 0 80px;
/* Show abbr title value in brackets after the text */
abbr[title]:after {
content: " (" attr(title) ")";
}
.c2 {
width: 160px;
flex: 0 0 160px;
}
.c3 {
width: 240px;
flex: 0 0 240px;
}
.c4 {
width: 320px;
flex: 0 0 320px;
}
.header-cell {
border-top: 1px solid #f2f4f9;
background-color: #fafafa;
color: #101010;
}
.content-list-table img,
.content-list-table i {
vertical-align: middle;
}
.content-list-table > span {
font-size: 0.8em;
padding: 0.5em 2em;
vertical-align: middle;
}
/* Individual Tables */
.wiretransfer {
grid-template-columns: 5fr 4fr 3fr 2fr 1fr;
}
.error-list {
grid-template-columns: 2fr 2fr 5fr 1fr;
}
.transactions {
grid-template-columns: 1fr 4fr 2fr 2fr;
}
.profile-img {
width: 30px;
height: 30px;
border-radius: 6px;
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2);
figure {
margin-bottom: 1em;
overflow: hidden;
border-style: none;
box-sizing: border-box;
margin-right: 40px;
}
.tx-email {
cursor: pointer;
display: block;
color: #101010;
font-weight: 400;
}
.small {
font-size: 80%;
font-weight: 400;
figure img {
border: 1px solid #000;
}
}
/*
@ -956,6 +1114,62 @@ To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : 12.07.2019, 07:59:32
Author : einhornimmond
*/
div[role='grd_dialog'] {
position: fixed;
width: 100%;
height: 100%;
background-color: #fff;
top: 0;
left: 0;
}
div.grd_modal-dialog {
margin-top: 100px;
min-height: 200px;
max-width: 1000px;
margin-left: auto;
margin-right: auto;
background-color: #fff;
color: #000;
border: 1px solid grey;
}
div.grd_modal-dialog.grd_dialog-large {
margin-top: 5px;
width: 90%;
}
div.grd_modal-body {
padding: 25px;
}
div.grd_modal-header {
background-color: rgba(0, 0, 0, 0.1);
padding: 5px;
padding-left: 15px;
border: 1px solid grey;
color: #000;
}
div.grd_modal-footer {
background-color: rgba(0, 0, 0, 0.1);
height: 40px;
}
.grd_modal-footer a,
.grd_modal-footer button {
float: right;
padding: 9px;
margin-right: 10px;
border: 1px solid grey;
}
.grd_modal-footer a:hover,
.grd_modal-footer button:hover {
background-color: rgba(255, 255, 255, 0.5);
}
/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : 30.10.2019, 16:04:16
Author : einhornimmond

View File

@ -15,15 +15,17 @@
/* GRID */
.layout {
display: grid;
grid-template-rows: [top] 2vh [line2] 86vh [footer1] 7vh [footer2] 5vh [end];
grid-template-rows: [top] 6vh [line2] 86vh [footer1] 3vh [footer2] 5vh [end];
grid-template-columns: [left1] 1fr [left2] 1fr [left3] 8fr [right3] 1fr [right2] 1fr [right1];
grid-template-areas: "header header header header header" "left . center . ." "footer footer footer footer footer" "bottom bottom bottom bottom bottom";
margin: 0;
padding: 0;
}
/*.header {
.header-notify {
grid-area: header;
}*/
grid-column-start: right3;
grid-column-end: right2;
}
.sidebar1 {
grid-area: left;
grid-row-start: top;
@ -77,7 +79,7 @@
============================================================*/
/* ============================================================
Screen styles.
Basic screen styles.
Datei : screen.less
Datum : 2020-04-30
@ -144,6 +146,7 @@
align-items: center;
font-size: 70%;
font-style: italic;
line-height: 0;
}
.bottomright {
position: fixed;
@ -210,6 +213,12 @@
.gdt-text-color {
color: #a27824;
}
.grd-alert-color {
color: #ff5f66;
}
.grd-success-color {
color: #047006;
}
.grd-orange-color {
color: #ffa600;
}
@ -225,7 +234,7 @@
Datei : navi.less
Datum : 2020-04-30
Autor : einhornimmond / Christine Slotty
Copyright : Gradio
Copyright : Gradido
============================================================*/
@media screen {
@ -363,6 +372,11 @@
gap: 5%;
padding: 1em;
}
.footer .nav-horizontal {
gap: 0;
padding: 0 1em;
padding-inline-start: 0 !important;
}
.nav-top-smaller {
margin: 0;
padding: 0;
@ -459,6 +473,171 @@
display: block;
}
}
/* ============================================================
Notification
Datei : notification.css
Datum : 2020-06-10
Autor : Christine Slotty
Copyright : Gradido
============================================================*/
@media screen {
.header-notify {
position: relative;
display: flex;
flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav-link {
display: block;
padding: 0.5rem 1rem;
color: #525c5d;
}
.notification-indicator {
display: block;
width: 7px;
height: 7px;
position: absolute;
top: 12px;
right: 12px;
border-radius: 100%;
z-index: 99000;
}
.notification-indicator:before {
content: "";
display: block;
width: 26px;
height: 26px;
z-index: 99000;
border-radius: 100%;
opacity: 0;
-webkit-transform-origin: 50% 50%;
transform-origin: 50% 50%;
mix-blend-mode: screen;
-webkit-animation: blink 1.2s ease-out;
animation: blink 1.2s ease-out;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
@-webkit-keyframes blink {
0%,
35% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
50% {
-webkit-transform: scale(0.6);
transform: scale(0.6);
opacity: 0.8;
}
100% {
opacity: 0;
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
}
@keyframes blink {
0%,
35% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
50% {
-webkit-transform: scale(0.6);
transform: scale(0.6);
opacity: 0.8;
}
100% {
opacity: 0;
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
}
.notification-indicator-primary {
background: #047006;
}
.notification-indicator-primary:before {
content: "";
background: rgba(4, 112, 6, 0.5);
}
.notification-indicator-warning {
background: #f0825f;
}
.notification-indicator-warning:before {
content: "";
background: rgba(240, 130, 95, 0.5);
}
/* .notification-indicator-secondary {
background: grey
}
.notification-indicator-secondary:before {
content: "";
background: rgba(128, 128, 128, .5)
}
.notification-indicator-success {
background: #00e093
}
.notification-indicator-success:before {
content: "";
background: rgba(0, 224, 147, .5)
}
.notification-indicator-info {
background: #6c61f6
}
.notification-indicator-info:before {
content: "";
background: rgba(108, 97, 246, .5)
}
.notification-indicator-danger {
background: #ff5f66
}
.notification-indicator-danger:before {
content: "";
background: rgba(255, 95, 102, .5)
}
.notification-indicator-light {
background: #dfdfdf
}
.notification-indicator-light:before {
content: "";
background: rgba(223, 223, 223, .5)
}
.notification-indicator-dark {
background: #74767b
}
.notification-indicator-dark:before {
content: "";
background: rgba(116, 118, 123, .5)
}
.notification-indicator-white {
background: #fff
}
.notification-indicator-white:before {
content: "";
background: rgba(255, 255, 255, .5)
}
*/
}
/* ============================================================
Screen styles for center part.
@ -565,113 +744,114 @@
/* Ende @media screen */
/* ============================================================
Print styles.
Screen styles for lists.
Datei : print.css
Datum : 2020-04-30
Datei : list.css
Datum : 2020-06-09
Autor : Christine Slotty
Copyright : Gradio
============================================================*/
/* ---------------------------------------------------------
Print styles
---------------------------------------------------------*/
@media print {
* {
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
background: transparent !important;
@media screen {
/* =========
LISTS
=========*/
/* List Content */
.content-list {
width: 100%;
}
html {
background-color: #111;
.content-list-title {
font-size: 1rem;
margin: 0;
padding: 20px 25px;
color: #313131;
}
/* Hide navigation */
nav {
display: none;
.content-list-table {
display: flex;
flex-direction: column;
width: 100%;
overflow: auto;
font-size: 16px;
color: #212529;
}
/* Show link destinations in brackets after the link text */
a[href]:after {
content: " (" attr(href) ") ";
.row {
display: flex;
width: 100%;
border-top: 1px solid #f2f4f9;
-webkit-transition-duration: 0.5s;
transition-duration: 0.5s;
}
a[href] {
font-weight: bold;
text-decoration: underline;
color: #06c;
border: none;
.row:hover {
background-color: #f6f7f9;
}
/* Don't show link destinations for JavaScript or internal links */
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: "";
.cell {
display: flex;
align-items: center;
padding: 1em 1.5em;
}
/* Show abbr title value in brackets after the text */
abbr[title]:after {
content: " (" attr(title) ")";
.c0 {
flex-grow: 5;
}
figure {
margin-bottom: 1em;
.c1 {
width: 80px;
flex: 0 0 80px;
}
.c2 {
width: 160px;
flex: 0 0 160px;
}
.c3 {
width: 240px;
flex: 0 0 240px;
}
.c4 {
width: 320px;
flex: 0 0 320px;
}
.header-cell {
border-top: 1px solid #f2f4f9;
background-color: #fafafa;
color: #101010;
}
.content-list-table img,
.content-list-table i {
vertical-align: middle;
}
.content-list-table > span {
font-size: 0.8em;
padding: 0.5em 2em;
vertical-align: middle;
}
/* Individual Tables XXX rm!! */
.wiretransfer {
grid-template-columns: 5fr 4fr 3fr 2fr 1fr;
}
.error-list {
grid-template-columns: 2fr 2fr 5fr 1fr;
}
.transactions {
grid-template-columns: 1fr 4fr 2fr 2fr;
}
.profile-img {
width: 30px;
height: 30px;
border-radius: 6px;
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2);
overflow: hidden;
border-style: none;
box-sizing: border-box;
margin-right: 40px;
}
figure img {
border: 1px solid #000;
.tx-email {
cursor: pointer;
display: block;
color: #101010;
font-weight: 400;
}
.small {
font-size: 80%;
font-weight: 400;
}
}
/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : 12.07.2019, 07:59:32
Author : einhornimmond
*/
div[role='grd_dialog'] {
position: fixed;
width: 100%;
height: 100%;
background-color: #fff;
top: 0;
left: 0;
}
div.grd_modal-dialog {
margin-top: 100px;
min-height: 200px;
max-width: 1000px;
margin-left: auto;
margin-right: auto;
background-color: #fff;
color: #000;
border: 1px solid grey;
}
div.grd_modal-dialog.grd_dialog-large {
margin-top: 5px;
width: 90%;
}
div.grd_modal-body {
padding: 25px;
}
div.grd_modal-header {
background-color: rgba(0, 0, 0, 0.1);
padding: 5px;
padding-left: 15px;
border: 1px solid grey;
color: #000;
}
div.grd_modal-footer {
background-color: rgba(0, 0, 0, 0.1);
height: 40px;
}
.grd_modal-footer a,
.grd_modal-footer button {
float: right;
padding: 9px;
margin-right: 10px;
border: 1px solid grey;
}
.grd_modal-footer a:hover,
.grd_modal-footer button:hover {
background-color: rgba(255, 255, 255, 0.5);
}
/*
To change this license header, choose License Headers in Project Properties.
@ -711,12 +891,10 @@ and open the template in the editor.
}
.form-control {
grid-column: 0.66666667;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
margin: 0;
padding: 0.375rem 0.75rem;
padding: 0.4em 0.75em;
padding-left: 20px;
padding-right: 20px;
margin: 0;
color: rgba(16, 16, 16, 0.8);
display: block;
font-size: 1rem;
@ -730,6 +908,37 @@ and open the template in the editor.
-webkit-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.form-control:focus {
color: #495057;
background-color: #f6f7f9;
border-color: #d7dee5;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
textarea {
resize: vertical;
}
.badge {
display: inline-block;
padding: 0.45rem 1rem;
font-size: 80%;
font-weight: 700;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25rem;
-webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.badge-warning {
color: #fff;
background-color: #00e093;
}
.badge-error {
color: #fff;
background-color: #ff5f66;
}
.form-button {
cursor: pointer;
font: 600 13.3333px Arial;
@ -848,107 +1057,56 @@ display: inline-block;
*/
/* ============================================================
Screen styles for lists.
Print styles.
Datei : list.css
Datum : 2020-06-09
Datei : print.css
Datum : 2020-04-30
Autor : Christine Slotty
Copyright : Gradio
============================================================*/
@media screen {
/* =========
LISTS
=========*/
/* List Content */
.content-list {
width: 100%;
/* ---------------------------------------------------------
Print styles
---------------------------------------------------------*/
@media print {
* {
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
background: transparent !important;
}
.content-list-title {
font-size: 1rem;
margin: 0;
padding: 20px 25px;
color: #313131;
html {
background-color: #111;
}
.content-list-table {
display: flex;
flex-direction: column;
width: 100%;
overflow: auto;
font-size: 16px;
color: #212529;
/* Hide navigation */
nav {
display: none;
}
.row {
display: flex;
width: 100%;
/* Show link destinations in brackets after the link text */
a[href]:after {
content: " (" attr(href) ") ";
}
.cell {
display: flex;
align-items: center;
padding: 1em 1.5em;
a[href] {
font-weight: bold;
text-decoration: underline;
color: #06c;
border: none;
}
.c0 {
flex-grow: 5;
/* Don't show link destinations for JavaScript or internal links */
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: "";
}
.c1 {
width: 80px;
flex: 0 0 80px;
/* Show abbr title value in brackets after the text */
abbr[title]:after {
content: " (" attr(title) ")";
}
.c2 {
width: 160px;
flex: 0 0 160px;
}
.c3 {
width: 240px;
flex: 0 0 240px;
}
.c4 {
width: 320px;
flex: 0 0 320px;
}
.header-cell {
border-top: 1px solid #f2f4f9;
background-color: #fafafa;
color: #101010;
}
.content-list-table img,
.content-list-table i {
vertical-align: middle;
}
.content-list-table > span {
font-size: 0.8em;
padding: 0.5em 2em;
vertical-align: middle;
}
/* Individual Tables */
.wiretransfer {
grid-template-columns: 5fr 4fr 3fr 2fr 1fr;
}
.error-list {
grid-template-columns: 2fr 2fr 5fr 1fr;
}
.transactions {
grid-template-columns: 1fr 4fr 2fr 2fr;
}
.profile-img {
width: 30px;
height: 30px;
border-radius: 6px;
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2);
figure {
margin-bottom: 1em;
overflow: hidden;
border-style: none;
box-sizing: border-box;
margin-right: 40px;
}
.tx-email {
cursor: pointer;
display: block;
color: #101010;
font-weight: 400;
}
.small {
font-size: 80%;
font-weight: 400;
figure img {
border: 1px solid #000;
}
}
/*
@ -956,6 +1114,62 @@ To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : 12.07.2019, 07:59:32
Author : einhornimmond
*/
div[role='grd_dialog'] {
position: fixed;
width: 100%;
height: 100%;
background-color: #fff;
top: 0;
left: 0;
}
div.grd_modal-dialog {
margin-top: 100px;
min-height: 200px;
max-width: 1000px;
margin-left: auto;
margin-right: auto;
background-color: #fff;
color: #000;
border: 1px solid grey;
}
div.grd_modal-dialog.grd_dialog-large {
margin-top: 5px;
width: 90%;
}
div.grd_modal-body {
padding: 25px;
}
div.grd_modal-header {
background-color: rgba(0, 0, 0, 0.1);
padding: 5px;
padding-left: 15px;
border: 1px solid grey;
color: #000;
}
div.grd_modal-footer {
background-color: rgba(0, 0, 0, 0.1);
height: 40px;
}
.grd_modal-footer a,
.grd_modal-footer button {
float: right;
padding: 9px;
margin-right: 10px;
border: 1px solid grey;
}
.grd_modal-footer a:hover,
.grd_modal-footer button:hover {
background-color: rgba(255, 255, 255, 0.5);
}
/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : 30.10.2019, 16:04:16
Author : einhornimmond

View File

@ -23,7 +23,7 @@
/* GRID */
.layout {
display: grid;
grid-template-rows: [top] 2vh [line2] 86vh [footer1] 7vh [footer2] 5vh [end];
grid-template-rows: [top] 6vh [line2] 86vh [footer1] 3vh [footer2] 5vh [end];
grid-template-columns: [left1] 1fr [left2] 1fr [left3] 8fr [right3] 1fr [right2] 1fr [right1];
grid-template-areas: "header header header header header"
"left . center . ."
@ -33,9 +33,12 @@
padding: 0;
}
/*.header {
.header-notify {
grid-area: header;
}*/
grid-column-start: right3;
grid-column-end: right2;
}
.sidebar1 {
grid-area: left;
grid-row-start: top;

View File

@ -44,6 +44,10 @@
/* FORMS */
@form-label: #212529;
@badge-color-warning: #fff;
@badge-background-warning: #00e093;
@badge-color-error: #fff;
@badge-background-error: #ff5f66;
/* VARIOUS INDIVIDUAL */
@grd-orange: #ffa600;
@ -76,6 +80,9 @@
@error: red;
@error-border: rgba(255, 0, 0, 0.5);
@grd-alert: #ff5f66;
@grd-success: #047006;
/* https://www.w3schools.com/colors/colors_shades.asp */
@unobtrusive: grey;
@light: #F5F5F5;

View File

@ -1,6 +1,6 @@
/* ============================================================
Screen styles.
Basic screen styles.
Datei : screen.less
Datum : 2020-04-30
@ -71,6 +71,7 @@
align-items: center;
font-size: @footer-fs;
font-style: italic;
line-height: 0;
}
.bottomright {
@ -152,6 +153,14 @@
color: @gdt-text;
}
.grd-alert-color {
color: @grd-alert;
}
.grd-success-color {
color: @grd-success;
}
.grd-orange-color {
color: @grd-orange
}

View File

@ -5,7 +5,7 @@
Datei : navi.less
Datum : 2020-04-30
Autor : einhornimmond / Christine Slotty
Copyright : Gradio
Copyright : Gradido
============================================================*/
@media screen {
@ -183,6 +183,12 @@
padding: 1em;
}
.footer .nav-horizontal {
gap: 0;
padding: 0 1em;
padding-inline-start: 0 !important;
}
.nav-top-smaller {
margin: 0;
padding: 0;

View File

@ -0,0 +1,181 @@
/* ============================================================
Notification
Datei : notification.css
Datum : 2020-06-10
Autor : Christine Slotty
Copyright : Gradido
============================================================*/
@media screen {
.header-notify {
position: relative;
display: flex;
flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav-link {
display: block;
padding: .5rem 1rem;
color: #525c5d;
}
.notification-indicator {
display: block;
width: 7px;
height: 7px;
position: absolute;
top: 12px;
right: 12px;
border-radius: 100%;
z-index: 99000;
}
.notification-indicator:before {
content: "";
display: block;
width: 26px;
height: 26px;
z-index: 99000;
border-radius: 100%;
opacity: 0;
-webkit-transform-origin: 50% 50%;
transform-origin: 50% 50%;
mix-blend-mode: screen;
-webkit-animation: blink 1.2s ease-out;
animation: blink 1.2s ease-out;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite
}
@-webkit-keyframes blink {
0%,
35% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1
}
50% {
-webkit-transform: scale(.6);
transform: scale(.6);
opacity: .8
}
100% {
opacity: 0;
-webkit-transform: scale(1.2);
transform: scale(1.2)
}
}
@keyframes blink {
0%,
35% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1
}
50% {
-webkit-transform: scale(.6);
transform: scale(.6);
opacity: .8
}
100% {
opacity: 0;
-webkit-transform: scale(1.2);
transform: scale(1.2)
}
}
.notification-indicator-primary {
background: #047006
}
.notification-indicator-primary:before {
content: "";
background: rgba(4, 112, 6, .5)
}
.notification-indicator-warning {
background: #f0825f
}
.notification-indicator-warning:before {
content: "";
background: rgba(240, 130, 95, .5)
}
/* .notification-indicator-secondary {
background: grey
}
.notification-indicator-secondary:before {
content: "";
background: rgba(128, 128, 128, .5)
}
.notification-indicator-success {
background: #00e093
}
.notification-indicator-success:before {
content: "";
background: rgba(0, 224, 147, .5)
}
.notification-indicator-info {
background: #6c61f6
}
.notification-indicator-info:before {
content: "";
background: rgba(108, 97, 246, .5)
}
.notification-indicator-danger {
background: #ff5f66
}
.notification-indicator-danger:before {
content: "";
background: rgba(255, 95, 102, .5)
}
.notification-indicator-light {
background: #dfdfdf
}
.notification-indicator-light:before {
content: "";
background: rgba(223, 223, 223, .5)
}
.notification-indicator-dark {
background: #74767b
}
.notification-indicator-dark:before {
content: "";
background: rgba(116, 118, 123, .5)
}
.notification-indicator-white {
background: #fff
}
.notification-indicator-white:before {
content: "";
background: rgba(255, 255, 255, .5)
}
*/
}

View File

@ -38,6 +38,13 @@
.row {
display: flex;
width: 100%;
border-top: 1px solid #f2f4f9;
-webkit-transition-duration: .5s;
transition-duration: .5s;
}
.row:hover {
background-color: #f6f7f9;
}
.cell {
@ -87,7 +94,7 @@
vertical-align: middle;
}
/* Individual Tables */
/* Individual Tables XXX rm!! */
.wiretransfer {
grid-template-columns: 5fr 4fr 3fr 2fr 1fr;
}

View File

@ -43,12 +43,10 @@ and open the template in the editor.
.form-control {
grid-column: 2 / 3;
display: block;
width: 100%;
height: calc(1.5em + .75rem + 2px);
margin: 0;
padding: .375rem .75rem;
padding: .4em .75em;
padding-left: 20px;
padding-right: 20px;
margin: 0;
color: rgba(16, 16, 16, .8);
display: block;
font-size: 1rem;
@ -63,6 +61,42 @@ and open the template in the editor.
transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}
.form-control:focus {
color: #495057;
background-color: #f6f7f9;
border-color: #d7dee5;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, .25);
}
textarea {
resize: vertical;
}
.badge {
display: inline-block;
padding: .45rem 1rem;
font-size: 80%;
font-weight: 700;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25rem;
-webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
}
.badge-warning {
color: @badge-color-warning;
background-color: @badge-background-warning;
}
.badge-error {
color: @badge-color-error;
background-color: @badge-background-error;
}
.form-button {
cursor: pointer;
font: 600 13.3333px Arial;
@ -102,6 +136,7 @@ and open the template in the editor.
.center-form .form-control {
width: 90%;
}
.center-form fieldset {
margin-bottom: 1em;
}