mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Merge branch 'master' into api_password_reset
This commit is contained in:
commit
a57be58197
@ -7795,19 +7795,19 @@ function oninit(vnode) {
|
||||
inited = true;
|
||||
}
|
||||
}
|
||||
/*
|
||||
//$class = 'grd-negative-currency';
|
||||
$class = '';
|
||||
//$title = '' . $number;
|
||||
|
||||
if($number < 0) {
|
||||
$class = 'grd-negative-currency';
|
||||
}
|
||||
|
||||
?>
|
||||
<span class="<?php echo $class;?>">
|
||||
<?= $this->Number->format(intval($number) / 10000.0, ['precision' => 2]) . ' GDD';?>
|
||||
</span>
|
||||
/*
|
||||
//$class = 'grd-negative-currency';
|
||||
$class = '';
|
||||
//$title = '' . $number;
|
||||
|
||||
if($number < 0) {
|
||||
$class = 'grd-negative-currency';
|
||||
}
|
||||
|
||||
?>
|
||||
<span class="<?php echo $class;?>">
|
||||
<?= $this->Number->format(intval($number) / 10000.0, ['precision' => 2]) . ' GDD';?>
|
||||
</span>
|
||||
*/
|
||||
|
||||
|
||||
@ -7841,10 +7841,10 @@ var _tippy = _interopRequireDefault(require("tippy.js"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* 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.
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
//import { createPopper } from '@popperjs/core';
|
||||
//import 'tippy.js/dist/tippy.css';
|
||||
@ -7858,8 +7858,8 @@ function Tooltip(object) {
|
||||
// Pass the button, the tooltip, and some options, and Popper will do the
|
||||
// magic positioning for you:
|
||||
|
||||
/*createPopper(vnode.dom, tooltip, {
|
||||
placement: 'right',
|
||||
/*createPopper(vnode.dom, tooltip, {
|
||||
placement: 'right',
|
||||
});*/
|
||||
(0, _tippy["default"])(vnode.dom, {
|
||||
content: vnode.attrs.accountState.getTooltipText(),
|
||||
@ -7869,9 +7869,9 @@ function Tooltip(object) {
|
||||
}); //*/
|
||||
// bootstrap tooltip
|
||||
|
||||
/*$(vnode.dom).tooltip({
|
||||
placement:'right',
|
||||
title: vnode.attrs.accountState.getTooltipText()
|
||||
/*$(vnode.dom).tooltip({
|
||||
placement:'right',
|
||||
title: vnode.attrs.accountState.getTooltipText()
|
||||
})*/
|
||||
},
|
||||
onremove: function onremove() {// Cleanup 3rd party lib on removal
|
||||
@ -7934,15 +7934,15 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||
|
||||
/*
|
||||
__('account created');
|
||||
__('account not on login-server');
|
||||
__('email activated');
|
||||
__('account copied to community');
|
||||
__('email not activated');
|
||||
__('account multiple times on login-server');
|
||||
__('account not on community server');
|
||||
__('no keys');
|
||||
/*
|
||||
__('account created');
|
||||
__('account not on login-server');
|
||||
__('email activated');
|
||||
__('account copied to community');
|
||||
__('email not activated');
|
||||
__('account multiple times on login-server');
|
||||
__('account not on community server');
|
||||
__('no keys');
|
||||
*/
|
||||
var AccountState = /*#__PURE__*/function () {
|
||||
function AccountState(stateName) {
|
||||
@ -8051,42 +8051,42 @@ Object.defineProperty(exports, "__esModule", {
|
||||
});
|
||||
exports["default"] = void 0;
|
||||
|
||||
/*
|
||||
*
|
||||
__('account created');
|
||||
__('account not on login-server');
|
||||
__('email activated');
|
||||
__('account copied to community');
|
||||
__('email not activated');
|
||||
__('account multiple times on login-server');
|
||||
__('account not on community server');
|
||||
__('no keys');
|
||||
/*
|
||||
*
|
||||
__('account created');
|
||||
__('account not on login-server');
|
||||
__('email activated');
|
||||
__('account copied to community');
|
||||
__('email not activated');
|
||||
__('account multiple times on login-server');
|
||||
__('account not on community server');
|
||||
__('no keys');
|
||||
*/
|
||||
|
||||
/*
|
||||
$state = 'account created';
|
||||
$color = 'secondary';
|
||||
|
||||
$state = 'account not on login-server';
|
||||
$color = 'danger';
|
||||
|
||||
$state = 'email activated';
|
||||
$color = 'primary';
|
||||
|
||||
$state = 'account copied to community';
|
||||
$color = 'success';
|
||||
|
||||
$state = 'email not activated';
|
||||
$color = 'warning';
|
||||
|
||||
$state = 'account multiple times on login-server';
|
||||
$color = 'danger';
|
||||
|
||||
$state = 'account not on community server';
|
||||
$color = 'secondary';
|
||||
|
||||
$state = 'no keys';
|
||||
$color = 'warning';
|
||||
/*
|
||||
$state = 'account created';
|
||||
$color = 'secondary';
|
||||
|
||||
$state = 'account not on login-server';
|
||||
$color = 'danger';
|
||||
|
||||
$state = 'email activated';
|
||||
$color = 'primary';
|
||||
|
||||
$state = 'account copied to community';
|
||||
$color = 'success';
|
||||
|
||||
$state = 'email not activated';
|
||||
$color = 'warning';
|
||||
|
||||
$state = 'account multiple times on login-server';
|
||||
$color = 'danger';
|
||||
|
||||
$state = 'account not on community server';
|
||||
$color = 'secondary';
|
||||
|
||||
$state = 'no keys';
|
||||
$color = 'warning';
|
||||
*/
|
||||
var _default = {
|
||||
ACCOUNT_STATES: {
|
||||
@ -8248,26 +8248,26 @@ var _AccountState = _interopRequireDefault(require("../model/AccountState"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* <?php if(isset($finalUserEntrys) && count($finalUserEntrys) > 0) : ?>
|
||||
userTable
|
||||
<?php elseif(isset($finalUserEntrys)) : ?>
|
||||
<div class="grid-body py-3">
|
||||
<p class="grid-header"><?= __('Keine Benutzer gefunden') ?></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
/*
|
||||
* <?php if(isset($finalUserEntrys) && count($finalUserEntrys) > 0) : ?>
|
||||
userTable
|
||||
<?php elseif(isset($finalUserEntrys)) : ?>
|
||||
<div class="grid-body py-3">
|
||||
<p class="grid-header"><?= __('Keine Benutzer gefunden') ?></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
*/
|
||||
|
||||
/*
|
||||
<div class="tippy-popper">
|
||||
<div class="tippy-tooltip" data-placement="top">
|
||||
<div class="tippy-backdrop"></div> <!-- animateFill: true -->
|
||||
<div class="tippy-arrow"></div> <!-- arrow: true -->
|
||||
<div class="tippy-content">
|
||||
My content
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/*
|
||||
<div class="tippy-popper">
|
||||
<div class="tippy-tooltip" data-placement="top">
|
||||
<div class="tippy-backdrop"></div> <!-- animateFill: true -->
|
||||
<div class="tippy-arrow"></div> <!-- arrow: true -->
|
||||
<div class="tippy-content">
|
||||
My content
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
*/
|
||||
function view(vnode) {
|
||||
if (g_users === undefined) {
|
||||
@ -8277,11 +8277,11 @@ function view(vnode) {
|
||||
return (0, _mithril["default"])('', [(0, _mithril["default"])('.grid-body.py-3', (0, _mithril["default"])('p.grid-header', window.texte.USER_FOUND)), (0, _mithril["default"])('.table-responsive', (0, _mithril["default"])(_userTable["default"], {
|
||||
users: g_users
|
||||
}))
|
||||
/*m('.tippy-popper',
|
||||
m('.tippy-tooltip', {'data-placement': 'top'}, [
|
||||
m('.tippy-backdop'),
|
||||
m('.tippy-arrow'),
|
||||
m('.tippy-content', acc.getTooltip())
|
||||
/*m('.tippy-popper',
|
||||
m('.tippy-tooltip', {'data-placement': 'top'}, [
|
||||
m('.tippy-backdop'),
|
||||
m('.tippy-arrow'),
|
||||
m('.tippy-content', acc.getTooltip())
|
||||
]))*/
|
||||
]);
|
||||
return (0, _mithril["default"])(_userTable["default"], {
|
||||
@ -8311,12 +8311,12 @@ var _dialog = _interopRequireDefault(require("../../../lib/dialog"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 20.03.20
|
||||
*
|
||||
* @brief: Object for buttons with start an ajax request
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 20.03.20
|
||||
*
|
||||
* @brief: Object for buttons with start an ajax request
|
||||
*/
|
||||
function oninit(vnode) {
|
||||
vnode.state.loading = false;
|
||||
@ -8411,12 +8411,12 @@ var _actionBase = _interopRequireDefault(require("./actionBase"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 22.01.20
|
||||
*
|
||||
* @brief: copy Account from Login-Server to Community-Server Button and ajax request
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 22.01.20
|
||||
*
|
||||
* @brief: copy Account from Login-Server to Community-Server Button and ajax request
|
||||
*/
|
||||
function view(vnode) {
|
||||
// btn btn-primary
|
||||
@ -8458,12 +8458,12 @@ var _dialog = _interopRequireDefault(require("../../../lib/dialog"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 22.01.20
|
||||
*
|
||||
* @brief: copy Account from Login-Server to Community-Server Button and ajax request
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 22.01.20
|
||||
*
|
||||
* @brief: copy Account from Login-Server to Community-Server Button and ajax request
|
||||
*/
|
||||
function oninit(vnode) {
|
||||
vnode.state.loading = false;
|
||||
@ -8529,35 +8529,35 @@ function view(vnode) {
|
||||
btnTitle: window.texte.COPY_FROM_LOGIN_TO_COMMUNITY,
|
||||
progessText: window.texte.COPY_IN_PROGRESS
|
||||
});
|
||||
/*
|
||||
|
||||
return m('span', [
|
||||
m('span', [
|
||||
m('button.btn.btn-gradido-orange.btn-xs', {
|
||||
title:window.texte.COPY_FROM_LOGIN_TO_COMMUNITY,
|
||||
onclick:(e) => {click(vnode)},
|
||||
disabled: vnode.state.loading === true
|
||||
},
|
||||
vnode.state.loading === true ?
|
||||
m('i.spinner-border.spinner-border-sm') :
|
||||
m('i.mdi.mdi-content-copy')
|
||||
),
|
||||
window.texte.COPY_FROM_LOGIN_TO_COMMUNITY
|
||||
]),
|
||||
vnode.state.showDialog ?
|
||||
m(dialog, {
|
||||
title: window.texte.COPY_FROM_LOGIN_TO_COMMUNITY,
|
||||
body: m('div', [
|
||||
vnode.state.loading ?
|
||||
m('div', [
|
||||
m('i.spinner-border.spinner-border-sm'),
|
||||
m.trust(' '),
|
||||
window.texte.COPY_IN_PROGRESS]
|
||||
) : null,
|
||||
m('div', vnode.state.message)
|
||||
]),
|
||||
dismiss: (e) => {cleanMessage(vnode)}
|
||||
}) : null
|
||||
/*
|
||||
|
||||
return m('span', [
|
||||
m('span', [
|
||||
m('button.btn.btn-gradido-orange.btn-xs', {
|
||||
title:window.texte.COPY_FROM_LOGIN_TO_COMMUNITY,
|
||||
onclick:(e) => {click(vnode)},
|
||||
disabled: vnode.state.loading === true
|
||||
},
|
||||
vnode.state.loading === true ?
|
||||
m('i.spinner-border.spinner-border-sm') :
|
||||
m('i.mdi.mdi-content-copy')
|
||||
),
|
||||
window.texte.COPY_FROM_LOGIN_TO_COMMUNITY
|
||||
]),
|
||||
vnode.state.showDialog ?
|
||||
m(dialog, {
|
||||
title: window.texte.COPY_FROM_LOGIN_TO_COMMUNITY,
|
||||
body: m('div', [
|
||||
vnode.state.loading ?
|
||||
m('div', [
|
||||
m('i.spinner-border.spinner-border-sm'),
|
||||
m.trust(' '),
|
||||
window.texte.COPY_IN_PROGRESS]
|
||||
) : null,
|
||||
m('div', vnode.state.message)
|
||||
]),
|
||||
dismiss: (e) => {cleanMessage(vnode)}
|
||||
}) : null
|
||||
])*/
|
||||
}
|
||||
|
||||
@ -8583,12 +8583,12 @@ var _dialog = _interopRequireDefault(require("../../../lib/dialog"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 23.01.20
|
||||
*
|
||||
* @brief: delete user from Community-Server Button and ajax request
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 23.01.20
|
||||
*
|
||||
* @brief: delete user from Community-Server Button and ajax request
|
||||
*/
|
||||
function oninit(vnode) {
|
||||
vnode.state.loading = false;
|
||||
@ -8679,12 +8679,12 @@ var _dialog = _interopRequireDefault(require("../../../lib/dialog"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 23.01.20
|
||||
*
|
||||
* @brief: count transactions from users and calculate/take balance
|
||||
/*
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 23.01.20
|
||||
*
|
||||
* @brief: count transactions from users and calculate/take balance
|
||||
*/
|
||||
function oninit(vnode) {
|
||||
vnode.state.loading = true;
|
||||
@ -8752,10 +8752,10 @@ var _actionBase = _interopRequireDefault(require("./actionBase"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/*
|
||||
* 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.
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
//mdi-email
|
||||
function view(vnode) {
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
"qrcode": "^1.4.4",
|
||||
"quill": "^1.3.6",
|
||||
"sweetalert2": "^9.5.4",
|
||||
"vee-validate": "^3.2.1",
|
||||
"vee-validate": "^3.4.5",
|
||||
"vue": "^2.6.11",
|
||||
"vue-bootstrap-typeahead": "^0.2.6",
|
||||
"vue-chartjs": "^3.5.0",
|
||||
@ -47,7 +47,6 @@
|
||||
"vue-clickaway": "^2.2.2",
|
||||
"vue-clipboard2": "^0.3.0",
|
||||
"vue-cookies": "^1.7.4",
|
||||
"vue-country-flag": "^2.0.3",
|
||||
"vue-flatpickr-component": "^8.1.2",
|
||||
"vue-good-table": "^2.21.3",
|
||||
"vue-i18n": "^8.22.4",
|
||||
@ -81,6 +80,6 @@
|
||||
"last 2 versions",
|
||||
"not ie <= 10"
|
||||
],
|
||||
"author": "Bernd Hückstädt - https://www.gradido.net/",
|
||||
"description": "Gradido Wallet"
|
||||
"author": "Gradido-Akademie - https://www.gradido.net/",
|
||||
"description": "Gradido, the Natural Economy of Life, is a way to worldwide prosperity and peace in harmony with nature. - Gradido, die Natürliche Ökonomie des lebens, ist ein Weg zu weltweitem Wohlstand und Frieden in Harmonie mit der Natur."
|
||||
}
|
||||
|
||||
BIN
frontend/public/img/icons/icons-translation.png
Normal file
BIN
frontend/public/img/icons/icons-translation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@ -1,11 +1,11 @@
|
||||
<!--
|
||||
|
||||
=========================================================
|
||||
* Gradido Wallet - v0.0.1
|
||||
* Gradido Konto - v0.0.1
|
||||
=========================================================
|
||||
|
||||
* Product Page: https://www.gradido.net
|
||||
* Copyright 2020 Bernd Hückstädt - Gradido (https://www.gradido.net)
|
||||
* Copyright 2021 Gradido-Akademie - (https://www.gradido.net)
|
||||
|
||||
* Coded by www.gradido.net
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="<%= webpackConfig.output.publicPath %>favicon.png">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
|
||||
<title>Gradido Wallet</title>
|
||||
<title>Gradido Account</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
|
||||
<!-- Fonts -->
|
||||
|
||||
@ -1,6 +1,13 @@
|
||||
<template>
|
||||
<div id="app" class="font-sans text-gray-800">
|
||||
<header class="">
|
||||
<header >
|
||||
<b-col class="text-center">
|
||||
<b-dropdown size="sm" split variant="secondary" :text="$t('language') + ' - '+$i18n.locale" class="m-md-2">
|
||||
<b-dropdown-divider></b-dropdown-divider>
|
||||
<b-dropdown-item @click.prevent="setLocale('de')">Deutsch</b-dropdown-item>
|
||||
<b-dropdown-item @click.prevent="setLocale('en')">English</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</b-col>
|
||||
</header>
|
||||
<div class="">
|
||||
<particles-bg type="custom" :config="config" :bg="true" />
|
||||
@ -10,50 +17,59 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ParticlesBg } from "particles-bg-vue";
|
||||
import icon from "./icon.js";
|
||||
import { ParticlesBg } from "particles-bg-vue";
|
||||
import icon from "./icon.js"
|
||||
import { localeChanged } from 'vee-validate'
|
||||
|
||||
export default {
|
||||
name: 'app',
|
||||
components: {
|
||||
ParticlesBg
|
||||
},
|
||||
created () {
|
||||
console.log( "xx", $cookies.get("gdd_lang"))
|
||||
console.log('%cWillkommen bei Gradido %cgreen text', 'font-weight:bold', 'color: green')
|
||||
if ( $cookies.isKey("gdd_session_id") == true) {
|
||||
console.log('%cHey %c'+$cookies.get("gdd_u")+'', 'font-weight:bold', 'color: orange')
|
||||
this.$store.commit('session_id', $cookies.get("gdd_session_id"))
|
||||
this.$store.commit('email', $cookies.get("gdd_u"))
|
||||
this.$store.commit('language', $cookies.get("gdd_lang"))
|
||||
this.$i18n.locale = $cookies.get("gdd_lang")
|
||||
this.$router.push("overview")
|
||||
export default {
|
||||
name: 'app',
|
||||
components: {
|
||||
ParticlesBg
|
||||
},
|
||||
created () {
|
||||
console.log( "xx", $cookies.get("gdd_lang"))
|
||||
console.log('%cWillkommen bei Gradido %cgreen text', 'font-weight:bold', 'color: green')
|
||||
if ( $cookies.isKey("gdd_session_id") == true) {
|
||||
console.log('%cHey %c'+$cookies.get("gdd_u")+'', 'font-weight:bold', 'color: orange')
|
||||
this.$store.commit('session_id', $cookies.get("gdd_session_id"))
|
||||
this.$store.commit('email', $cookies.get("gdd_u"))
|
||||
this.$store.commit('language', $cookies.get("gdd_lang"))
|
||||
this.$i18n.locale = $cookies.get("gdd_lang")
|
||||
this.$router.push("overview")
|
||||
}else {
|
||||
console.log("app.vue to Logout")
|
||||
this.$store.dispatch('logout')
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
config: {
|
||||
num: [1, 7],
|
||||
rps: 15,
|
||||
radius: [5, 50],
|
||||
life: [6.5, 15],
|
||||
v: [1, 1],
|
||||
tha: [-40, 40],
|
||||
body: icon,
|
||||
alpha: [0.6, 0],
|
||||
scale: [0.1, 0.4],
|
||||
position: "all",
|
||||
cross: "dead",
|
||||
random: 2,
|
||||
},
|
||||
};
|
||||
},
|
||||
}
|
||||
console.log("app.vue to Logout")
|
||||
this.$store.dispatch('logout')
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
config: {
|
||||
num: [1, 7],
|
||||
rps: 15,
|
||||
radius: [5, 50],
|
||||
life: [6.5, 15],
|
||||
v: [1, 1],
|
||||
tha: [-40, 40],
|
||||
body: icon,
|
||||
alpha: [0.6, 0],
|
||||
scale: [0.1, 0.4],
|
||||
position: "all",
|
||||
cross: "dead",
|
||||
random: 2,
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
setLocale(locale) {
|
||||
this.$i18n.locale = locale
|
||||
this.$store.commit('language', this.$i18n.locale)
|
||||
localeChanged(locale)
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
|
||||
.btn-primary pim{
|
||||
background-color: #5A7B02;
|
||||
border-color: #5e72e4;
|
||||
|
||||
@ -40,6 +40,9 @@
|
||||
components: {
|
||||
FadeTransition
|
||||
},
|
||||
created() {
|
||||
console.log("base-alert gesetzt in =>", this.$route.path )
|
||||
},
|
||||
props: {
|
||||
type: {
|
||||
type: String,
|
||||
@ -64,7 +67,9 @@
|
||||
},
|
||||
methods: {
|
||||
dismissAlert() {
|
||||
console.log("sdddddddddddddddddddddddd")
|
||||
this.visible = false;
|
||||
this.$store.state.loginfail = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -6,22 +6,22 @@
|
||||
<navbar-toggle-button @click.native="showSidebar">
|
||||
|
||||
</navbar-toggle-button>
|
||||
<router-link class="navbar-brand" to="/overview">
|
||||
<img :src="logo" class="navbar-brand-img" alt="...">
|
||||
</router-link>
|
||||
|
||||
<div class="navbar-brand">
|
||||
<img :src="logo" class="navbar-brand-img" alt="...">
|
||||
</div>
|
||||
<b-row class="text-center"><b-col>{{$n($store.state.user.balance)}} GDD</b-col></b-row>
|
||||
<slot name="mobile-right">
|
||||
<ul class="nav align-items-center d-md-none">
|
||||
|
||||
<base-dropdown class="nav-item" menu-on-right tag="li" title-tag="a">
|
||||
<a slot="title-container" class="nav-link" href="#" role="button">
|
||||
<div class="media align-items-center">
|
||||
<span class="avatar avatar-sm rounded-circle">
|
||||
<img alt="Image placeholder" src="img/theme/team-1.jpg">
|
||||
<span class="avatar avatar-sm">
|
||||
<vue-qrcode :value="$store.state.email" type="image/png" ></vue-qrcode>
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
xx
|
||||
<router-link to="/overview" class="dropdown-item text-lg text-muted">
|
||||
<i class="ni ni-single-02"></i>
|
||||
<span>{{ $t('site.overview.account_overview')}}</span>
|
||||
@ -34,11 +34,16 @@
|
||||
<i class="ni ni-settings-gear-65"></i>
|
||||
<span>{{ $t('site.navbar.settings') }}</span>
|
||||
</router-link>
|
||||
<router-link to="/transactions" class="dropdown-item text-lg text-muted">
|
||||
<i class="ni ni-calendar-grid-58"></i>
|
||||
<span>Transactions</span>
|
||||
</router-link>
|
||||
<!--
|
||||
<router-link to="/activity" class="dropdown-item text-lg text-muted">
|
||||
<i class="ni ni-calendar-grid-58"></i>
|
||||
<span>{{ $t('site.navbar.activity') }}</span>
|
||||
</router-link>
|
||||
|
||||
-->
|
||||
<div class="dropdown-divider"></div>
|
||||
<div @click="logout" class="dropdown-item text-lg text-muted" >
|
||||
<i class="ni ni-support-16"></i>
|
||||
@ -69,7 +74,7 @@
|
||||
<hr class="my-3">
|
||||
<ul class="navbar-nav mb-md-3">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-lg bg-light" href="#!" @click="logout">
|
||||
<a class="nav-link text-lg" href="#!" @click="logout">
|
||||
{{ $t('logout') }}
|
||||
</a>
|
||||
</li>
|
||||
@ -80,11 +85,13 @@
|
||||
</template>
|
||||
<script>
|
||||
import NavbarToggleButton from '@/components/NavbarToggleButton'
|
||||
import VueQrcode from 'vue-qrcode'
|
||||
|
||||
export default {
|
||||
name: 'sidebar',
|
||||
components: {
|
||||
NavbarToggleButton
|
||||
NavbarToggleButton,
|
||||
VueQrcode
|
||||
},
|
||||
props: {
|
||||
logo: {
|
||||
|
||||
@ -13,6 +13,8 @@ const server = {
|
||||
LOGIN_API_URL: process.env.LOGIN_API_URL || 'http://localhost/login_api/',
|
||||
COMMUNITY_API_STATE_BALANCE_URL: process.env.COMMUNITY_API_STATE_BALANCE_URL || 'http://localhost/state-balances/',
|
||||
COMMUNITY_API_TRANSACTION_CREATION_URL: process.env.COMMUNITY_API_TRANSACTION_CREATION_URL || 'http://localhost/transaction-creations/',
|
||||
// TODO is this the right API call? what does it do?
|
||||
COMMUNITY_API_TRANSACTION_SEND_COINS: process.env.COMMUNITY_API_TRANSACTION_SEND_COINS || 'http://localhost/transaction-send-coins/',
|
||||
}
|
||||
|
||||
const CONFIG = {
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import Vue from 'vue'
|
||||
import VueI18n from 'vue-i18n'
|
||||
|
||||
import en from 'vee-validate/dist/locale/en'
|
||||
import de from 'vee-validate/dist/locale/de'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
function loadLocaleMessages () {
|
||||
@ -11,6 +14,18 @@ function loadLocaleMessages () {
|
||||
if (matched && matched.length > 1) {
|
||||
const locale = matched[1]
|
||||
messages[locale] = locales(key)
|
||||
if(locale === 'de') {
|
||||
messages[locale] = {
|
||||
validations: de,
|
||||
...messages[locale]
|
||||
}
|
||||
}
|
||||
if(locale === 'en') {
|
||||
messages[locale] = {
|
||||
validations: en,
|
||||
...messages[locale]
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
return messages
|
||||
@ -19,20 +34,23 @@ function loadLocaleMessages () {
|
||||
const numberFormats = {
|
||||
'en-US': {
|
||||
currency: {
|
||||
style: 'currency'
|
||||
style: 'currency',
|
||||
currency: "GDD",
|
||||
abbreviate: true
|
||||
}
|
||||
},
|
||||
'de-DE': {
|
||||
currency: {
|
||||
style: 'currency'
|
||||
style: 'currency',
|
||||
currency: "GDD",
|
||||
abbreviate: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export default new VueI18n({
|
||||
locale: 'en',
|
||||
fallbackLocale: 'en',
|
||||
messages: loadLocaleMessages(),
|
||||
numberFormats
|
||||
})
|
||||
})
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
"back":"zurück",
|
||||
"sent":"Senden",
|
||||
"transactions":"Transaktionen",
|
||||
"language":"Sprachen",
|
||||
"language":"Language",
|
||||
"languages":{
|
||||
"de": "Deutsch",
|
||||
"en": "English"
|
||||
@ -42,18 +42,18 @@
|
||||
"remember":"Passwort merken",
|
||||
"signin":"Anmelden",
|
||||
"forgot_pwd":"Passwort vergessen?",
|
||||
"new_wallet":"Neues Wallet erstellen"
|
||||
"new_wallet":"Neues Konto erstellen"
|
||||
},
|
||||
"signup": {
|
||||
"title": "Erstelle deine Gradido Wallet",
|
||||
"subtitle": "Werde ein teil der Gemeinschaft!",
|
||||
"title": "Erstelle dein Gradido-Konto",
|
||||
"subtitle": "Werde Teil der Gemeinschaft!",
|
||||
"strength":"Passwortsicherheit:",
|
||||
"strong":"stark",
|
||||
"agree":"habe ich gelesen und verstanden und stimme diesen zu."
|
||||
},
|
||||
"password": {
|
||||
"title": "Passwort zurücksetzen",
|
||||
"subtitle": "Wenn sie das Passwort vergessen haben oder ändern möchten.",
|
||||
"subtitle": "Wenn du dein Passwort vergessen hast, kannst du es hier zurücksetzen.",
|
||||
"reset_now": "jetzt zurücksetzen"
|
||||
},
|
||||
"thx": {
|
||||
@ -101,9 +101,5 @@
|
||||
},
|
||||
"nav": {
|
||||
"features": "Neuigkeiten"
|
||||
},
|
||||
"about": {
|
||||
"title": "Über uns",
|
||||
"content": "Lorem ipsum deutsch dolor sit amet consectetur adipisicing elit. Aut dicta incidunt ea ut commodi quidem temporibus illo quia. Et itaque deleniti veniam tempore facere ipsum animi totam culpa minima vel voluptatem adipisci natus blanditiis similique sunt expedita, ex dicta doloremque repellat vitae temporibus. Quisquam quia, accusantium blanditiis architecto facilis saepe! Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad unde laborum ut suscipit iure aliquam sapiente doloribus exercitationem nam sint."
|
||||
}
|
||||
}
|
||||
@ -7,12 +7,12 @@
|
||||
"imprint":"Legal notice",
|
||||
"privacy_policy":"Privacy policy",
|
||||
"back":"back",
|
||||
"sent":"Sent",
|
||||
"sent":"Send",
|
||||
"transactions":"transactions",
|
||||
"language":"Language",
|
||||
"language":"Sprache",
|
||||
"languages":{
|
||||
"de": "Deutsch",
|
||||
"en": "English"
|
||||
"de": "Deutsch",
|
||||
"en": "English"
|
||||
},
|
||||
"form": {
|
||||
"cancel":"Cancel",
|
||||
@ -43,10 +43,10 @@
|
||||
"remember":"Remember password",
|
||||
"signin":"Sign in",
|
||||
"forgot_pwd":"Forgot password?",
|
||||
"new_wallet":"Create new wallet"
|
||||
"new_wallet":"Create new account"
|
||||
},
|
||||
"signup": {
|
||||
"title": "Create your Gradido Wallet",
|
||||
"title": "Create your Gradido account",
|
||||
"subtitle": "Become a part of the community!",
|
||||
"strength":"password strength:",
|
||||
"strong":"strong",
|
||||
@ -54,7 +54,7 @@
|
||||
},
|
||||
"password": {
|
||||
"title": "reset password",
|
||||
"subtitle": "If you have forgotten the password or want to change it.",
|
||||
"subtitle": "If you have forgotten your password, you can reset it here.",
|
||||
"reset_now": "reset now"
|
||||
},
|
||||
"thx": {
|
||||
@ -74,36 +74,32 @@
|
||||
"support":"Support"
|
||||
},
|
||||
"sidebar" : {
|
||||
"community":"Community",
|
||||
"members_area":"Members area",
|
||||
"membership":"Membership"
|
||||
"community":"Community",
|
||||
"members_area":"Members area",
|
||||
"membership":"Membership"
|
||||
},
|
||||
"landing1" : {
|
||||
"explore":"Explore Gradido",
|
||||
"text":"If you want to get inspiration or just show something directly to your clients, you can jump start your development with our pre-built example pages.",
|
||||
"link":"Explore pages"
|
||||
"explore":"Explore Gradido",
|
||||
"text":"If you want to get inspiration or just show something directly to your clients, you can jump start your development with our pre-built example pages.",
|
||||
"link":"Explore pages"
|
||||
},
|
||||
"404" : {
|
||||
"ooops" : "Ooops!",
|
||||
"text" : "Page not found. Don't worry though, we have plenty of other pages to explore",
|
||||
"back" : "Back to dashboard!"
|
||||
"ooops" : "Ooops!",
|
||||
"text" : "Page not found. Don't worry though, we have plenty of other pages to explore",
|
||||
"back" : "Back to dashboard!"
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"site": {
|
||||
"overview": {
|
||||
"creation": "Creation",
|
||||
"transience" : "Transience",
|
||||
"exchanged": "Exchanged",
|
||||
"members" : "Members"
|
||||
},
|
||||
"admin": {
|
||||
"site": {
|
||||
"overview": {
|
||||
"creation": "Creation",
|
||||
"transience" : "Transience",
|
||||
"exchanged": "Exchanged",
|
||||
"members" : "Members"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
"nav": {
|
||||
"features": "Features"
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"content": "Lorem ipsum english dolor sit amet consectetur adipisicing elit. Aut dicta incidunt ea ut commodi quidem temporibus illo quia. Et itaque deleniti veniam tempore facere ipsum animi totam culpa minima vel voluptatem adipisci natus blanditiis similique sunt expedita, ex dicta doloremque repellat vitae temporibus. Quisquam quia, accusantium blanditiis architecto facilis saepe! Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad unde laborum ut suscipit iure aliquam sapiente doloribus exercitationem nam sint."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ import Vue from 'vue';
|
||||
import DashboardPlugin from './plugins/dashboard-plugin';
|
||||
import App from './App.vue';
|
||||
import i18n from './i18n.js';
|
||||
import VeeValidate from './vee-validate.js'
|
||||
import VueCookies from 'vue-cookies';
|
||||
|
||||
// store
|
||||
|
||||
@ -37,7 +37,6 @@ import 'vue-good-table/dist/vue-good-table.css';
|
||||
|
||||
import VueMoment from 'vue-moment';
|
||||
|
||||
import CountryFlag from 'vue-country-flag'
|
||||
|
||||
|
||||
Object.keys(rules).forEach(rule => {
|
||||
@ -59,7 +58,6 @@ export default {
|
||||
Vue.use(VueQrcodeReader);
|
||||
Vue.use(VueQrcode);
|
||||
Vue.use(VueFlatPickr);
|
||||
Vue.use(CountryFlag);
|
||||
configure({
|
||||
classes: {
|
||||
valid: 'is-valid',
|
||||
|
||||
@ -57,6 +57,10 @@ const routes = [
|
||||
{
|
||||
path: '/activity',
|
||||
component: () => import('../views/Pages/UserProfileActivity.vue')
|
||||
},
|
||||
{
|
||||
path: '/transactions',
|
||||
component: () => import('../views/Pages/UserProfileTransactionList.vue')
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@ -4,8 +4,6 @@ Vue.use(Vuex)
|
||||
import router from '../routes/router.js'
|
||||
import loginAPI from '../apis/loginAPI'
|
||||
import communityAPI from '../apis/communityAPI'
|
||||
import axios from 'axios'
|
||||
//import CONFIG from '../config'
|
||||
|
||||
export const store = new Vuex.Store({
|
||||
state: {
|
||||
@ -14,6 +12,7 @@ export const store = new Vuex.Store({
|
||||
language: 'en',
|
||||
sizeDE: 'normal',
|
||||
sizeGB: 'big',
|
||||
loginfail: false,
|
||||
user : {
|
||||
name:"",
|
||||
balance: 0,
|
||||
@ -37,7 +36,6 @@ export const store = new Vuex.Store({
|
||||
}
|
||||
}
|
||||
},
|
||||
// Retrieve a state variable
|
||||
getters: {
|
||||
//isLoggedIn: (state /*, getters */) => {
|
||||
// return state.session_id !== null;
|
||||
@ -58,6 +56,10 @@ export const store = new Vuex.Store({
|
||||
}
|
||||
|
||||
},
|
||||
loginfail: (state, loginfail) => {
|
||||
//console.log('mutation: email')
|
||||
state.loginfail = loginfail
|
||||
},
|
||||
email: (state, email) => {
|
||||
//console.log('mutation: email')
|
||||
state.email = email
|
||||
@ -67,12 +69,12 @@ export const store = new Vuex.Store({
|
||||
state.session_id = session_id
|
||||
},
|
||||
user_balance: (state,balance) => {
|
||||
//console.log('mutation: user_balance')
|
||||
state.user.balance = (balance)/10000
|
||||
console.log('mutation: user_balance')
|
||||
state.user.balance = (balance/10000)
|
||||
},
|
||||
user_balance_gdt: (state,balance) => {
|
||||
//console.log('mutation: user_balance_gdt')
|
||||
state.user.balance_gdt = (balance)/10000
|
||||
state.user.balance_gdt = (balance/10000)
|
||||
},
|
||||
transactions: (state,transactions) => {
|
||||
//console.log('mutation: transactions')
|
||||
@ -82,35 +84,20 @@ export const store = new Vuex.Store({
|
||||
// Asyncronous actions - used for api calls
|
||||
actions: {
|
||||
login: async ({ dispatch, commit }, data) => {
|
||||
// console.log('action: login')
|
||||
|
||||
//axios.post("http://localhost/login_api/unsecureLogin/",
|
||||
// {"email": data.email, "password":data.password }).then((result) => {
|
||||
// console.log("store login result", result)
|
||||
|
||||
const result = await loginAPI.login(data.email,data.password)
|
||||
// console.log('result.data.state',result.data.state)
|
||||
// console.log('result.data.session_id',result.data.session_id)
|
||||
|
||||
|
||||
if( result.success){
|
||||
commit('session_id', result.result.data.session_id)
|
||||
commit('email', data.email)
|
||||
$cookies.set('gdd_session_id', result.result.data.session_id);
|
||||
$cookies.set('gdd_u', data.email);
|
||||
|
||||
|
||||
router.push('/overview')
|
||||
} else {
|
||||
// Register failed, we perform a logout
|
||||
// console.log('action login to logout start')
|
||||
dispatch('logout')
|
||||
//alert('>>>>> FAIl LOGIN')
|
||||
commit('loginfail', true)
|
||||
|
||||
//dispatch('logout')
|
||||
}
|
||||
//}, (error) => {
|
||||
// console.log(error);
|
||||
//});
|
||||
|
||||
|
||||
},
|
||||
passwordReset: async (data) => {
|
||||
console.log("<<<<<<<<<<< PASSWORT RESET TODO >>>>>>>>>>>", data.email)
|
||||
@ -151,31 +138,23 @@ export const store = new Vuex.Store({
|
||||
ajaxCreate: async ({ dispatch, state }) => {
|
||||
//console.log('action: ajaxCreate')
|
||||
state.ajaxCreateData.amount = (state.ajaxCreateData.amount)*10000
|
||||
axios.post("http://localhost/transaction-send-coins/ajaxCreate", state.ajaxCreateData).then((result) => {
|
||||
//console.log("store ajaxCreate result", result)
|
||||
|
||||
if( result.success ){
|
||||
// TODO
|
||||
} else {
|
||||
//dispatch('logout')
|
||||
}
|
||||
}, (error) => {
|
||||
console.log(error);
|
||||
});
|
||||
const result = await communityAPI.create($cookies.get("gdd_session_id", email, amount, memo))
|
||||
console.log(result)
|
||||
},
|
||||
ajaxListTransactions: async ({commit, dispatch, state}) => {
|
||||
// console.log('action: ajaxListTransactions', state.session_id)
|
||||
// const result = await communityAPI.transactions(state.session_id)
|
||||
},
|
||||
accountBalance: async ({ commit, dispatch, state }) => {
|
||||
// console.log('action: accountBalance')
|
||||
console.log('action: accountBalance')
|
||||
// console.log('action: dispatch', dispatch)
|
||||
// console.log('action: state.session_id', state.session_id)
|
||||
// console.log(" action: $cookies.get('gdd_session_id') ", $cookies.get("gdd_session_id") )
|
||||
// commit('session_id', $cookies.get("gdd_session_id"))
|
||||
// commit('email', $cookies.get("gdd_u"))
|
||||
const result = await communityAPI.balance($cookies.get("gdd_session_id"))
|
||||
// console.log("accountBalance result", result)
|
||||
console.log("accountBalance result", result)
|
||||
console.log("aresult.result.data.balance", result.result.data.balance)
|
||||
if(result.success) {
|
||||
commit('user_balance', result.result.data.balance)
|
||||
} else {
|
||||
|
||||
27
frontend/src/vee-validate.js
Normal file
27
frontend/src/vee-validate.js
Normal file
@ -0,0 +1,27 @@
|
||||
import { configure, extend } from 'vee-validate'
|
||||
import { required, email, min } from "vee-validate/dist/rules"
|
||||
import i18n from './i18n'
|
||||
|
||||
|
||||
configure({
|
||||
defaultMessage: (field, values) => {
|
||||
values._field_ = i18n.t(`fields.${field}`)
|
||||
return i18n.t(`validations.messages.${values._rule_}`, values)
|
||||
}
|
||||
})
|
||||
|
||||
extend('email', {
|
||||
...email,
|
||||
message: (_, values) => i18n.t('validations.messages.email', values)
|
||||
})
|
||||
|
||||
extend('required', {
|
||||
...required,
|
||||
message: (_, values) => i18n.t('validations.messages.required', values)
|
||||
})
|
||||
|
||||
extend('min', {
|
||||
...min,
|
||||
message: (_, values) => i18n.t('validations.messages.min', values)
|
||||
})
|
||||
|
||||
@ -1,44 +1,45 @@
|
||||
<template>
|
||||
<div>
|
||||
<base-header class="pb-6 pb-8 pt-5 pt-md-8 bg-transparent">
|
||||
<gdd-status />
|
||||
<br>
|
||||
<gdd-sent />
|
||||
<hr>
|
||||
<gdd-table />
|
||||
<hr>
|
||||
<div>
|
||||
<gdd-add-work-2 />
|
||||
</div>
|
||||
<br>
|
||||
<!--
|
||||
<div>
|
||||
<gdd-add-work />
|
||||
</div>
|
||||
<br>
|
||||
-->
|
||||
<div>
|
||||
<gdd-work-table />
|
||||
</div>
|
||||
</base-header>
|
||||
<hr>
|
||||
<base-header class="pb-6 pb-8 pt-5 pt-md-8 bg-transparent"></base-header>
|
||||
<b-container fluid class="mt--7">
|
||||
<gdd-status />
|
||||
<br>
|
||||
<gdd-send />
|
||||
<hr>
|
||||
<gdd-table />
|
||||
<!-- <hr>
|
||||
<div>
|
||||
<gdd-add-work-2 />
|
||||
</div>
|
||||
<br> -->
|
||||
<!--
|
||||
<div>
|
||||
<gdd-add-work />
|
||||
</div>
|
||||
<br>
|
||||
-->
|
||||
<!-- <div>
|
||||
<gdd-work-table />
|
||||
</div> -->
|
||||
|
||||
</b-container>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import GddStatus from './KontoOverview/GddStatus.vue';
|
||||
import GddSent from './KontoOverview/GddSent.vue';
|
||||
import GddSend from './KontoOverview/GddSend.vue';
|
||||
import GddTable from './KontoOverview/GddTable.vue';
|
||||
import GddAddWork2 from './KontoOverview/GddAddWork2.vue';
|
||||
import GddWorkTable from './KontoOverview/GddWorkTable.vue';
|
||||
// import GddAddWork2 from './KontoOverview/GddAddWork2.vue';
|
||||
// import GddWorkTable from './KontoOverview/GddWorkTable.vue';
|
||||
|
||||
export default {
|
||||
name: "Overview",
|
||||
components: {
|
||||
GddStatus,
|
||||
GddSent,
|
||||
GddSend,
|
||||
GddTable,
|
||||
GddAddWork2,
|
||||
GddWorkTable
|
||||
//GddAddWork2,
|
||||
//GddWorkTable
|
||||
},
|
||||
created() {
|
||||
this.$store.dispatch('accountBalance', $cookies.get("gdd_session_id"))
|
||||
@ -46,7 +47,10 @@
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.active { background-color: rgba(192, 192, 192, 0.568);}
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
@ -2,37 +2,53 @@
|
||||
<div>
|
||||
<b-row>
|
||||
<b-col xl="12" md="12">
|
||||
<base-button block icon type="primary" size="lg" v-b-toggle.collapse-1>
|
||||
<span class="btn-inner--text">{{ $t('site.overview.send_gradido') }} </span>
|
||||
</base-button>
|
||||
<b-collapse id="collapse-1" class="mt-2">
|
||||
|
||||
<b-alert variant="warning" show dismissible >
|
||||
<strong>Achtung!</strong> Bitte überprüfe alle deine Eingaben sehr genau. Du bist alleine Verantwortlich für deine Entscheidungen. Versendete Gradidos können nicht wieder zurück geholt werden.
|
||||
</b-alert>
|
||||
<b-card >
|
||||
<div v-if="scan">
|
||||
<b-row>
|
||||
<b-card class="p-0 p-md-3">
|
||||
|
||||
<b-alert show variant="secondary">
|
||||
<span class="alert-text"><strong>QR Code Scanner</strong> - Scanne den QR Code deines Partners</span>
|
||||
<b-col v-show="!scan" lg="12" class="text-right ">
|
||||
<img src="/img/icons/gradido/qr-scan-pure.png" height="50" @click="scan = true">
|
||||
</b-col>
|
||||
<b-alert v-show="scan" show variant="warning">
|
||||
<span class="alert-text" @click="scan=false"><strong>schließen!</strong></span>
|
||||
</b-alert>
|
||||
<div v-if="scan">
|
||||
<!-- <b-row>
|
||||
<qrcode-capture @detect="onDetect" capture="user" ></qrcode-capture>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<qrcode-stream @decode="onDecode" @detect="onDetect" ></qrcode-stream>
|
||||
<b-alert show variant="secondary">
|
||||
<span class="alert-text"><strong>QR Code Scanner</strong> - Scanne den QR Code deines Partners</span>
|
||||
</b-alert>
|
||||
<b-alert show variant="warning" >
|
||||
<span class="alert-text" @click="scan=false"><strong>abrechen!</strong></span>
|
||||
</b-alert>
|
||||
</b-row>
|
||||
</b-row> -->
|
||||
|
||||
<qrcode-stream class="mt-3" @decode="onDecode" @detect="onDetect" ></qrcode-stream>
|
||||
|
||||
<b-container >
|
||||
<b-row>
|
||||
<b-col lg="8">
|
||||
<b-alert show variant="secondary">
|
||||
<span class="alert-text"><strong>QR Code Scanner</strong> - Scanne den QR Code deines Partners</span>
|
||||
</b-alert>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
</b-container>
|
||||
</div>
|
||||
</b-alert>
|
||||
|
||||
|
||||
|
||||
|
||||
<validation-observer v-slot="{handleSubmit}" ref="formValidator">
|
||||
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)" @reset="onReset" v-if="show">
|
||||
<br>
|
||||
<qrcode-drop-zone id="input-0" v-model="form.img"></qrcode-drop-zone>
|
||||
<div >
|
||||
<qrcode-drop-zone id="input-0" v-model="form.img" ></qrcode-drop-zone>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<b-col class="text-left pl-6">
|
||||
<b-badge variant="primary">Empfänger</b-badge>
|
||||
<b-col class="text-left p-3 p-sm-1">
|
||||
Empfänger
|
||||
</b-col>
|
||||
|
||||
<b-input-group
|
||||
@ -43,7 +59,7 @@
|
||||
size="lg"
|
||||
class="mb-3"
|
||||
>
|
||||
<b-input-group-prepend class="p-3">
|
||||
<b-input-group-prepend class="p-3 d-none d-md-block ">
|
||||
<b-icon icon="envelope" class="display-3"></b-icon>
|
||||
</b-input-group-prepend>
|
||||
<b-form-input
|
||||
@ -58,8 +74,9 @@
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<b-col class="text-left pl-6">
|
||||
<b-badge variant="primary">Betrag</b-badge>
|
||||
<b-col class="text-left p-3 p-sm-1">
|
||||
Betrag
|
||||
|
||||
</b-col>
|
||||
<b-col v-if="($store.state.user.balance == form.amount)" class="text-right">
|
||||
<b-badge variant="primary">maximale anzahl GDD zum versenden erreicht!</b-badge>
|
||||
@ -67,7 +84,7 @@
|
||||
<b-input-group id="input-group-2" label="Betrag:" label-for="input-2"
|
||||
size="lg"
|
||||
class="mb-3">
|
||||
<b-input-group-prepend>
|
||||
<b-input-group-prepend class="p-2 d-none d-md-block ">
|
||||
<div class="h3 pt-3 pr-3">GDD</div>
|
||||
|
||||
</b-input-group-prepend>
|
||||
@ -81,42 +98,39 @@
|
||||
:max="$store.state.user.balance"
|
||||
style="font-size: xx-large; padding-left:20px">
|
||||
</b-form-input>
|
||||
{{$store.state.user.balance}}
|
||||
|
||||
|
||||
</b-input-group>
|
||||
<b-col class="text-left pl-6">
|
||||
<b-badge variant="primary">Nachricht für den Empfänger (optional)</b-badge>
|
||||
<b-col class="text-left p-3 p-sm-1">
|
||||
Nachricht für den Empfänger
|
||||
</b-col>
|
||||
|
||||
<b-input-group>
|
||||
<b-input-group-prepend class="p-3">
|
||||
<b-input-group-prepend class="p-3 d-none d-md-block ">
|
||||
<b-icon icon="chat-right-text" class="display-3"></b-icon>
|
||||
</b-input-group-prepend>
|
||||
<b-form-textarea v-model="form.memo" class="pl-3"></b-form-textarea>
|
||||
<b-form-textarea rows="3" v-model="form.memo" class="pl-3" style="font-size: x-large;" ></b-form-textarea>
|
||||
</b-input-group>
|
||||
|
||||
</div>
|
||||
{{$refs.observer}}
|
||||
|
||||
<br>
|
||||
<b-row>
|
||||
<b-col></b-col>
|
||||
<b-col></b-col>
|
||||
<b-col> <b-button type="reset" variant="secondary">{{$t('form.cancel')}}</b-button></b-col>
|
||||
<b-col class="text-right"> <b-button type="submit" variant="success">{{$t('form.send_now')}}</b-button></b-col>
|
||||
</b-row>
|
||||
<b-button type="submit" variant="primary">{{$t('form.send_now')}}</b-button>
|
||||
<b-button type="reset" variant="danger">{{$t('form.cancel')}}</b-button>
|
||||
|
||||
|
||||
<br>
|
||||
</b-form>
|
||||
</validation-observer>
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { QrcodeStream, QrcodeDropZone, QrcodeCapture } from 'vue-qrcode-reader'
|
||||
import { QrcodeStream, QrcodeDropZone /*, QrcodeCapture*/ } from 'vue-qrcode-reader'
|
||||
import { BIcon } from 'bootstrap-vue'
|
||||
|
||||
export default {
|
||||
@ -124,7 +138,7 @@ export default {
|
||||
components: {
|
||||
QrcodeStream,
|
||||
QrcodeDropZone,
|
||||
QrcodeCapture,
|
||||
// QrcodeCapture,
|
||||
BIcon
|
||||
},
|
||||
data(){
|
||||
@ -147,14 +161,12 @@ export default {
|
||||
async onDecode (decodedString) {
|
||||
console.log('onDecode JSON.parse(decodedString)',JSON.parse(decodedString) )
|
||||
const arr = JSON.parse(decodedString)
|
||||
// console.log('arr',arr[0].email )
|
||||
this.modal.h4 = 'Scan erfolgreich'
|
||||
this.modal.p = arr
|
||||
console.log('qr-email',arr[0].email )
|
||||
console.log('qr-amount',arr[0].amount )
|
||||
|
||||
this.form.email = arr[0].email
|
||||
this.form.amount1 = arr[0].amount
|
||||
// console.log('arr mail',arr.email)
|
||||
// console.log('arr mail',arr.amount)
|
||||
this.modals2 = true
|
||||
|
||||
},
|
||||
async onDetect (promise) {
|
||||
try {
|
||||
@ -163,11 +175,9 @@ export default {
|
||||
content, // decoded String
|
||||
location // QR code coordinates
|
||||
} = await promise
|
||||
console.log('onDetect promise',promise)
|
||||
// console.log('onDetect promise',promise)
|
||||
//console.log('JSON.parse(decodedString)',JSON.parse(promise) )
|
||||
const arr = JSON.parse(decodedString)
|
||||
console.log('arr',arr)
|
||||
|
||||
} catch (error) {
|
||||
// ...
|
||||
}
|
||||
@ -205,4 +215,10 @@ export default {
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</script>
|
||||
<style>
|
||||
video {
|
||||
max-height: 665px;
|
||||
max-width: 665px;
|
||||
}
|
||||
</style>
|
||||
@ -4,15 +4,14 @@
|
||||
<b-col xl="6" md="6">
|
||||
<stats-card type="gradient-red"
|
||||
sub-title="balance_gdd"
|
||||
class="mb-4"
|
||||
style="font-size: -webkit-xxx-large">
|
||||
class="mb-4 h1">
|
||||
{{ $n($store.state.user.balance) }} GDD
|
||||
</stats-card>
|
||||
</b-col>
|
||||
<b-col xl="6" md="6">
|
||||
<stats-card type="gradient-orange"
|
||||
sub-title="balance_gdt"
|
||||
class="mb-4">
|
||||
class="mb-4 h1">
|
||||
{{ $n($store.state.user.balance_gdt) }} GDT
|
||||
</stats-card>
|
||||
</b-col>
|
||||
|
||||
@ -2,13 +2,13 @@
|
||||
<div>
|
||||
|
||||
<b-list-group >
|
||||
<b-list-group-item v-for="item in filteredItems" :key="item.id">
|
||||
<b-list-group-item v-for="item in filteredItems" :key="item.id" style="background-color:#ebebeba3 !important;">
|
||||
<div class="d-flex w-100 justify-content-between" @click="toogle(item)" >
|
||||
<b-icon v-if="item.type === 'send'" icon="box-arrow-left" class="m-1" font-scale="2" style="color:red"></b-icon>
|
||||
<b-icon v-else icon="box-arrow-right" class="m-1" font-scale="2" style="color:green" ></b-icon>
|
||||
<h1 class="mb-1">{{ $n((item.balance)/10000) }} <small>GDD</small></h1>
|
||||
<h1 class="mb-1">{{ $n((item.balance/10000)) }} <small>GDD</small></h1>
|
||||
<h2 class="text-muted">{{item.name}}</h2>
|
||||
<b-button v-b-toggle="'a'+item.transaction_id" variant="primary"><b>i</b></b-button>
|
||||
<b-button v-b-toggle="'a'+item.transaction_id" variant="secondary"><b>i</b></b-button>
|
||||
</div>
|
||||
<b-collapse :id="'a'+item.transaction_id" class="mt-2">
|
||||
<b-card>
|
||||
@ -20,16 +20,16 @@
|
||||
<b-list-group-item> <b-badge class="mr-4" variant="primary" pill>gdd</b-badge>{{item.balance}}</b-list-group-item>
|
||||
<b-list-group-item> <b-badge class="mr-4" variant="primary" pill>memo</b-badge>{{item.memo}}</b-list-group-item>
|
||||
</b-list-group>
|
||||
<b-button v-b-toggle="'collapse-1-inner'+ item.transaction_id" size="sm">{{$t('transaction.more')}}</b-button>
|
||||
<b-button v-b-toggle="'collapse-1-inner'+ item.transaction_id" variant="secondary">{{$t('transaction.more')}}</b-button>
|
||||
<b-collapse :id="'collapse-1-inner'+ item.transaction_id" class="mt-2">
|
||||
<b-card>{{item}}</b-card>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
</b-list-group-item>
|
||||
<b-list-group-item>
|
||||
<b-list-group-item v-show="this.$route.path == '/overview'">
|
||||
<b-alert v-if="count < 5" show variant="secondary" v-html="$t('transaction.show_part', {'count':count} )"></b-alert>
|
||||
<router-link else to="/activity" v-html="$t('transaction.show_all', {'count':count})"> </router-link>
|
||||
<router-link else to="/transactions" v-html="$t('transaction.show_all', {'count':count})"> </router-link>
|
||||
</b-list-group-item>
|
||||
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
|
||||
<script>
|
||||
import axios from 'axios';
|
||||
import communityAPI from '../../apis/communityAPI'
|
||||
|
||||
export default {
|
||||
name: 'GddTable',
|
||||
@ -51,27 +52,17 @@ export default {
|
||||
count: 0
|
||||
};
|
||||
},
|
||||
|
||||
created() {
|
||||
|
||||
axios.get("http://localhost/state-balances/ajaxListTransactions/"+ this.$store.state.session_id).then((result) => {
|
||||
//console.log("result",result)
|
||||
//console.log("result.state",result.data.state)
|
||||
//console.log("result.data.state == 'success'",result.data.state == "success")
|
||||
|
||||
//console.log("result.count",result.data.count)
|
||||
//console.log("result.gdtSum",result.data.gdtSum)
|
||||
//console.log("result.transactions",typeof(result.data.transactions))
|
||||
//commit('transactions', result.data.transactions)
|
||||
this.$store.state.user.balance_gdt = result.data.gdtSum
|
||||
this.items = result.data.transactions
|
||||
this.count = result.data.count
|
||||
|
||||
}, (error) => {
|
||||
console.log(error);
|
||||
});
|
||||
|
||||
|
||||
|
||||
async created() {
|
||||
const result = await communityAPI.transactions(this.$store.state.session_id)
|
||||
|
||||
if( result.success ){
|
||||
this.$store.state.user.balance_gdt = result.result.data.gdtSum
|
||||
this.items = result.result.data.transactions
|
||||
this.count = result.result.data.count
|
||||
} else {
|
||||
console.log('error',result)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
filteredItems(a) {
|
||||
|
||||
@ -47,7 +47,7 @@
|
||||
<b-row align-v="center" class="justify-content-xl-between">
|
||||
<b-col xl="6">
|
||||
<div class="copyright text-center text-xl-left text-muted">
|
||||
© {{year}} <a href="https://gradido.net/" class="font-weight-bold ml-1" target="_blank">Gradido Wallet</a>
|
||||
© {{year}} <a href="https://gradido.net/" class="font-weight-bold ml-1" target="_blank">Gradido-Akademie</a>
|
||||
</div>
|
||||
</b-col>
|
||||
<b-col xl="6" class="col-xl-6">
|
||||
|
||||
@ -3,44 +3,16 @@
|
||||
<template>
|
||||
<div class="main-content">
|
||||
<router-view></router-view>
|
||||
<content-footer v-if="!$route.meta.hideFooter"></content-footer>
|
||||
|
||||
|
||||
<content-footer v-if="!$route.meta.hideFooter"></content-footer>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ContentFooter from './ContentFooter.vue';
|
||||
export default {
|
||||
components: {
|
||||
ContentFooter
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
year: new Date().getFullYear(),
|
||||
pageClass: 'login-page'
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
title() {
|
||||
return `${this.$route.name} Page`;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
setLocale(locale) {
|
||||
this.$i18n.locale = locale
|
||||
//this.$router.push({
|
||||
// params: { lang: locale }
|
||||
//})
|
||||
//this.hideDropdown()
|
||||
}
|
||||
}
|
||||
};
|
||||
import ContentFooter from './ContentFooter.vue'
|
||||
export default {
|
||||
components: {
|
||||
ContentFooter
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
|
||||
@ -1,55 +1,45 @@
|
||||
<template>
|
||||
<footer class="footer px-4 bg-transparent">
|
||||
<b-row align-v="center" class="justify-content-lg-between">
|
||||
<b-col lg="6">
|
||||
<div class="copyright text-center text-lg-left text-muted">
|
||||
© {{year}} <a href="#!" to="/login" class="font-weight-bold ml-1" >Gradido Wallet</a>
|
||||
<b-col>
|
||||
<div class="copyright text-center text-lg-center text-muted">
|
||||
© {{year}} <a href="https://gradido.net/" class="font-weight-bold ml-1" target="_blank">Gradido-Akademie</a>
|
||||
</div>
|
||||
</b-col>
|
||||
<b-col lg="6">
|
||||
<b-nav class="nav-footer justify-content-center justify-content-lg-end">
|
||||
<b-nav-item ref="https://gradido.net/" target="_blank">
|
||||
<b-col>
|
||||
<b-nav class="nav-footer justify-content-center">
|
||||
<b-nav-item :href="`https://gradido.net/${$i18n.locale}`" target="_blank">
|
||||
Gradido
|
||||
</b-nav-item>
|
||||
<b-nav-item href="https://gradido.net/" target="_blank">
|
||||
<b-nav-item :href="`https://gradido.net/${$i18n.locale}/impressum/`" target="_blank">
|
||||
{{$t('imprint')}}
|
||||
</b-nav-item>
|
||||
<b-nav-item href="https://gradido.net/" target="_blank">
|
||||
<b-nav-item :href="`https://gradido.net/${$i18n.locale}/datenschutz/`" target="_blank">
|
||||
{{$t('privacy_policy')}}
|
||||
</b-nav-item>
|
||||
<b-nav-item href="#!" to="/explorer" >
|
||||
<!--<b-nav-item href="#!" to="/explorer" >
|
||||
GDD-Explorer
|
||||
</b-nav-item>
|
||||
</b-nav-item> -->
|
||||
</b-nav>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<br>
|
||||
|
||||
|
||||
<b-row >
|
||||
<b-col class="nav-link text-center" @click.prevent="setLocale('en')"><country-flag country='gb' :size='this.$store.state.sizeGB'/>{{ $t('languages.en') }}</b-col>
|
||||
<b-col class="nav-link text-center" @click.prevent="setLocale('de')"><country-flag country='de' :size='this.$store.state.sizeDE' />{{ $t('languages.de') }}</b-col>
|
||||
</b-row>
|
||||
<!--
|
||||
<br>
|
||||
<br>
|
||||
<b-row >
|
||||
<b-col class="nav-link text-center" @click.prevent="setLocale('en')">{{ $t('languages.en') }}</b-col>
|
||||
<b-col class="nav-link text-center" @click.prevent="setLocale('de')">{{ $t('languages.de') }}</b-col>
|
||||
</b-row>
|
||||
-->
|
||||
</footer>
|
||||
</template>
|
||||
<script>
|
||||
import CountryFlag from 'vue-country-flag'
|
||||
|
||||
export default {
|
||||
comments: {
|
||||
CountryFlag
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
year: new Date().getFullYear(),
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
setLocale(locale) {
|
||||
this.$i18n.locale = locale
|
||||
this.$store.commit('language', this.$i18n.locale)
|
||||
}
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@ -8,6 +8,9 @@
|
||||
|
||||
<b-nav-text class="p-0 text-lg text-muted">{{ $t('sent')}}</b-nav-text>
|
||||
</b-nav-item>
|
||||
<b-nav-item href="#!" to="/transactions">
|
||||
<b-nav-text class="p-0 text-lg text-muted">Transaktionen</b-nav-text>
|
||||
</b-nav-item>
|
||||
<b-nav-item href="#!" to="/profile">
|
||||
|
||||
<b-nav-text class="p-0 text-lg text-muted">{{ $t('site.navbar.my-profil')}}</b-nav-text>
|
||||
@ -16,11 +19,12 @@
|
||||
|
||||
<b-nav-text class="p-0 text-lg text-muted">{{ $t('site.navbar.settings') }}</b-nav-text>
|
||||
</b-nav-item>
|
||||
<b-nav-item href="#!" to="/activity">
|
||||
|
||||
|
||||
<b-nav-item href="#!" to="/activity">
|
||||
<b-nav-text class="p-0 text-lg text-muted">{{ $t('site.navbar.activity') }}</b-nav-text>
|
||||
</b-nav-item>
|
||||
|
||||
|
||||
</template>
|
||||
</side-bar>
|
||||
<div class="main-content">
|
||||
|
||||
@ -25,12 +25,13 @@
|
||||
title-classes="nav-link pr-0">
|
||||
<a href="#" class="pr-1" @click.prevent slot="title-container">
|
||||
<b-media no-body class="align-items-center">
|
||||
|
||||
<span class="pb-2 text-lg font-weight-bold">{{ $store.state.email }}</span>
|
||||
<b-media-body class="ml-2 d-none d-lg-block">
|
||||
<span class="avatar avatar-sm rounded-circle">
|
||||
<vue-qrcode :value="$store.state.email" />
|
||||
|
||||
|
||||
<span class="avatar ">
|
||||
<vue-qrcode :value="$store.state.email" type="image/png"></vue-qrcode>
|
||||
</span>
|
||||
<span class="mb-0 text-lg font-weight-bold">{{ $store.state.email }}</span>
|
||||
</b-media-body>
|
||||
</b-media>
|
||||
</a>
|
||||
@ -52,10 +53,12 @@
|
||||
<i class="ni ni-settings-gear-65"></i>
|
||||
<span>{{ $t('site.navbar.settings') }}</span>
|
||||
</b-dropdown-item>
|
||||
<!--
|
||||
<b-dropdown-item href="#!">
|
||||
<i class="ni ni-calendar-grid-58"></i>
|
||||
<span>{{ $t('site.navbar.activity') }}</span>
|
||||
</b-dropdown-item>
|
||||
-->
|
||||
<div class="dropdown-divider"></div>
|
||||
<b-dropdown-item href="#!" @click="logout">
|
||||
<i class="ni ni-user-run"></i>
|
||||
|
||||
@ -1,31 +1,29 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- Header -->
|
||||
<div class=" py-7 py-lg-5 pt-lg-1">
|
||||
<div class="header p-4">
|
||||
<b-container>
|
||||
<div class="text-center mb-7">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col xl="5" lg="6" md="8" class="px-5">
|
||||
<b-col xl="5" lg="6" md="8" class="px-2">
|
||||
<h1>Gradido</h1>
|
||||
<p class="text-lead">{{ $t('site.login.community')}}</p>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
</b-container>
|
||||
|
||||
</div>
|
||||
<!-- Page content -->
|
||||
<b-container class="mt--8 pb-5">
|
||||
<b-container class="mt--8 p-1">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col lg="5" md="7">
|
||||
<b-card no-body class="bg-secondary border-0 mb-0">
|
||||
<b-card-body class="px-lg-5 py-lg-5">
|
||||
|
||||
<b-card no-body class="border-0 mb-0" style="background-color: #ebebeba3 !important;">
|
||||
<b-card-body class="py-lg-4 px-sm-0 px-0 px-md-2 px-lg-4">
|
||||
<div class="text-center text-muted mb-4">
|
||||
<small>{{ $t('login')}}</small>
|
||||
</div>
|
||||
<validation-observer v-slot="{handleSubmit}" ref="formValidator">
|
||||
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)">
|
||||
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)" >
|
||||
<base-input alternative
|
||||
class="mb-3"
|
||||
name="Email"
|
||||
@ -45,9 +43,30 @@
|
||||
v-model="model.password">
|
||||
</base-input>
|
||||
|
||||
<b-form-checkbox v-model="model.rememberMe">{{ $t('site.login.remember')}}</b-form-checkbox>
|
||||
|
||||
<b-alert v-show="$store.state.loginfail" show variant="warning" >
|
||||
|
||||
<span class="alert-text bv-example-row">
|
||||
<b-row>
|
||||
<b-col class="col-9 text-left">
|
||||
<strong>Leider konnten wir keinen Account finden mit diesen Daten!</strong>
|
||||
</b-col>
|
||||
<b-col class="text-right" >
|
||||
<a href="#!" @click="closeAlert">
|
||||
<div>
|
||||
|
||||
<b-icon-exclamation-triangle-fill class="h2 mb-0"></b-icon-exclamation-triangle-fill>
|
||||
<b-icon-x class="h1 pl-2"></b-icon-x>
|
||||
</div>
|
||||
</a>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</span>
|
||||
</b-alert>
|
||||
|
||||
<!-- <b-form-checkbox v-model="model.rememberMe">{{ $t('site.login.remember')}}</b-form-checkbox> -->
|
||||
<div class="text-center">
|
||||
<base-button type="primary" native-type="submit" class="my-4">{{ $t('site.login.signin')}}</base-button>
|
||||
<base-button type="secondary" native-type="submit" class="my-4">{{ $t('site.login.signin')}}</base-button>
|
||||
</div>
|
||||
</b-form>
|
||||
</validation-observer>
|
||||
@ -67,20 +86,24 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: "login",
|
||||
data() {
|
||||
return {
|
||||
model: {
|
||||
email: '',
|
||||
password: '',
|
||||
rememberMe: false
|
||||
password: ''
|
||||
// rememberMe: false
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onSubmit() {
|
||||
this.$store.dispatch('login', {"email": this.model.email, "password": this.model.password})
|
||||
},
|
||||
closeAlert(){
|
||||
this.$store.state.loginfail = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="header py-7 py-lg-5 pt-lg-1">
|
||||
<div class="header p-4">
|
||||
<b-container class="container">
|
||||
<div class="header-body text-center mb-7">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col xl="5" lg="6" md="8" class="px-5">
|
||||
<b-col xl="5" lg="6" md="8" class="px-2">
|
||||
<h1 >{{ $t('site.password.title')}}</h1>
|
||||
<p class="text-lead">{{ $t('site.password.subtitle')}}</p>
|
||||
</b-col>
|
||||
@ -13,10 +13,10 @@
|
||||
</b-container>
|
||||
|
||||
</div>
|
||||
<b-container class="mt--8 pb-5">
|
||||
<b-container class="mt--8 p-1">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col lg="6" md="8" >
|
||||
<b-card no-body class="bg-secondary border-0">
|
||||
<b-card no-body class="border-0" style="background-color: #ebebeba3 !important;">
|
||||
<b-card-body class="px-lg-5 py-lg-5">
|
||||
<validation-observer v-slot="{handleSubmit}" ref="formValidator">
|
||||
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)">
|
||||
@ -30,7 +30,7 @@
|
||||
</base-input>
|
||||
{{form}}
|
||||
<div class="text-center">
|
||||
<b-button type="submit" variant="primary" class="mt-4" :disabled="disable">{{ $t('site.password.reset_now')}}</b-button>
|
||||
<b-button type="submit" outline variant="secondary" class="mt-4" :disabled="disable">{{ $t('site.password.reset_now')}}</b-button>
|
||||
</div>
|
||||
</b-form>
|
||||
</validation-observer>
|
||||
@ -39,7 +39,7 @@
|
||||
</b-col>
|
||||
</b-row>
|
||||
<div class="text-center py-lg-4" >
|
||||
<b-button type="button" variant="success" class="mt-3" to="/Login">{{ $t('back')}}</b-button>
|
||||
<router-link to="/Login" class="mt-3">{{ $t('back')}}</router-link>
|
||||
</div>
|
||||
</b-container>
|
||||
</div>
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- Header -->
|
||||
<div class="header py-7 py-lg-5 pt-lg-1">
|
||||
<div class="header p-4">
|
||||
<b-container class="container">
|
||||
<div class="header-body text-center mb-7">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col xl="5" lg="6" md="8" class="px-5">
|
||||
<b-col xl="5" lg="6" md="8" class="px-2">
|
||||
<h1 >{{ $t('site.signup.title')}}</h1>
|
||||
<p class="text-lead">{{ $t('site.signup.subtitle')}}</p>
|
||||
</b-col>
|
||||
@ -15,13 +15,13 @@
|
||||
|
||||
</div>
|
||||
<!-- Page content -->
|
||||
<b-container class="mt--8 pb-5">
|
||||
<b-container class="mt--8 p-1">
|
||||
<!-- Table -->
|
||||
<b-row class="justify-content-center">
|
||||
<b-col lg="6" md="8" >
|
||||
<b-card no-body class="bg-secondary border-0">
|
||||
<b-card no-body class="border-0" style="background-color: #ebebeba3 !important;">
|
||||
|
||||
<b-card-body class="px-lg-5 py-lg-5">
|
||||
<b-card-body class="py-lg-4 px-sm-0 px-0 px-md-2 px-lg-4">
|
||||
<div class="text-center text-muted mb-4">
|
||||
<small>{{ $t('signup')}} </small>
|
||||
</div>
|
||||
@ -68,13 +68,13 @@
|
||||
<b-col cols="12">
|
||||
<base-input :rules="{ required: { allowFalse: false } }" name="Privacy Policy">
|
||||
<b-form-checkbox v-model="model.agree">
|
||||
<span class="text-muted"><a href="#!"> {{ $t('privacy_policy')}}</a> - {{ $t('site.signup.agree')}} </span>
|
||||
<span class="text-muted"><a href="https://gradido.net/de/datenschutz/" target="_blank"> {{ $t('privacy_policy')}}</a> - {{ $t('site.signup.agree')}} </span>
|
||||
</b-form-checkbox>
|
||||
</base-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<div class="text-center">
|
||||
<b-button type="submit" variant="primary" class="mt-4">{{ $t('signup')}}</b-button>
|
||||
<b-button type="submit" variant="secondary" class="mt-4">{{ $t('signup')}}</b-button>
|
||||
</div>
|
||||
</b-form>
|
||||
</validation-observer>
|
||||
@ -83,7 +83,7 @@
|
||||
</b-col>
|
||||
</b-row>
|
||||
<div class="text-center py-lg-4" >
|
||||
<b-button type="button" variant="success" class="mt-3" to="/Login">{{ $t('back')}}</b-button>
|
||||
<router-link to="/Login" class="mt-3">{{ $t('back')}}</router-link>
|
||||
</div>
|
||||
</b-container>
|
||||
</div>
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
<card>
|
||||
<b-row align-v="center" slot="header" >
|
||||
<b-col cols="8">
|
||||
<h3 class="mb-0">Edit profile </h3>
|
||||
|
||||
</b-col>
|
||||
<b-col cols="4" class="text-right">
|
||||
<a href="#!" class="btn btn-sm btn-primary">Settings</a>
|
||||
|
||||
</b-col>
|
||||
</b-row>
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<b-col lg="3" class="order-lg-2">
|
||||
<div class="card-profile-image">
|
||||
<a href="#">
|
||||
<vue-qrcode :value="$store.state.email" />
|
||||
<vue-qrcode :value="$store.state.email" type="image/png"> </vue-qrcode>
|
||||
</a>
|
||||
</div>
|
||||
</b-col>
|
||||
@ -21,11 +21,11 @@
|
||||
<b-col >
|
||||
<div class="card-profile-stats d-flex justify-content-center mt-md-5">
|
||||
<div>
|
||||
<span class="heading">22</span>
|
||||
<span class="heading">--</span>
|
||||
<span class="description">Transactions</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="heading">10</span>
|
||||
<span class="heading">--</span>
|
||||
<span class="description">Community</span>
|
||||
</div>
|
||||
<div>
|
||||
@ -39,19 +39,8 @@
|
||||
<h5 class="h3">
|
||||
{{this.$store.state.email}}<span class="font-weight-light"></span>
|
||||
</h5>
|
||||
<div class="h5 font-weight-300">
|
||||
<i class="ni location_pin mr-2"></i>Bucharest, Romania
|
||||
</div>
|
||||
<div class="h5 mt-4">
|
||||
<i class="ni business_briefcase-24 mr-2"></i>Solution Manager - Creative Tim Officer
|
||||
</div>
|
||||
<div>
|
||||
<i class="ni education_hat mr-2"></i>University of Computer Science
|
||||
</div>
|
||||
<hr class="my-4">
|
||||
<p>Ryan — the name taken by Melbourne-raised, Brooklyn-based Nick Murphy — writes, performs and records all of his own music.</p>
|
||||
<a href="#">Show more</a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
|
||||
@ -1,21 +1,23 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="header pb-8 pt-5 pt-lg-8 d-flex align-items-center profile-header" style="max-height:200px">
|
||||
<b-container fluid>
|
||||
<b-container fluid class="d-flex align-items-center">
|
||||
<b-row >
|
||||
<b-col lg="7" md="10">
|
||||
<h1 class="display-2 text-white">{{this.$store.state.email}} </h1>
|
||||
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</b-container>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<b-container fluid class="mt--6">
|
||||
<b-row>
|
||||
<b-col>
|
||||
<div>
|
||||
<gdd-add-work-2 />
|
||||
</div>
|
||||
<br>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<hr>
|
||||
<b-row>
|
||||
<b-col xl="4" class="order-xl-2 mb-5">
|
||||
community
|
||||
@ -54,7 +56,7 @@
|
||||
<script>
|
||||
import GddTable from '../../views/KontoOverview/GddTable.vue';
|
||||
import GddWorkTable from '../../views/KontoOverview/GddWorkTable.vue';
|
||||
|
||||
import GddAddWork2 from '../../views/KontoOverview/GddAddWork2.vue';
|
||||
|
||||
import * as chartConfigs from '@/components/Charts/config';
|
||||
import LineChart from '@/components/Charts/LineChart';
|
||||
@ -65,6 +67,7 @@
|
||||
GddTable,
|
||||
GddWorkTable,
|
||||
LineChart,
|
||||
GddAddWork2
|
||||
//BarChart
|
||||
},
|
||||
data(){
|
||||
|
||||
@ -2,11 +2,7 @@
|
||||
<div>
|
||||
<div class="header pb-8 pt-5 pt-lg-8 d-flex align-items-center profile-header">
|
||||
<b-container fluid>
|
||||
<b-container fluid class="d-flex align-items-center">
|
||||
<b-row >
|
||||
<base-button><router-link to="/profileedit" > Edit Profil</router-link> </base-button>
|
||||
</b-row>
|
||||
</b-container>
|
||||
|
||||
</b-container>
|
||||
</div>
|
||||
|
||||
@ -21,13 +17,12 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import BaseButton from '../../components/BaseButton.vue';
|
||||
|
||||
import UserCard from './UserProfile/UserCard.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
UserCard,
|
||||
BaseButton
|
||||
UserCard
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
24
frontend/src/views/Pages/UserProfileTransactionList.vue
Normal file
24
frontend/src/views/Pages/UserProfileTransactionList.vue
Normal file
@ -0,0 +1,24 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="header pb-8 pt-5 pt-lg-8 d-flex align-items-center profile-header" style="max-height:200px"></div>
|
||||
<b-container fluid class="mt--6">
|
||||
<b-row>
|
||||
<b-col class="order-xl-1">
|
||||
|
||||
<gdd-table></gdd-table>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import GddTable from '../../views/KontoOverview/GddTable.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GddTable
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
</style>
|
||||
@ -11220,7 +11220,7 @@ vary@~1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||
|
||||
vee-validate@^3.2.1:
|
||||
vee-validate@^3.4.5:
|
||||
version "3.4.5"
|
||||
resolved "https://registry.yarnpkg.com/vee-validate/-/vee-validate-3.4.5.tgz#96a456c309f7bdb2cce62c3b554f96d893e9f6ae"
|
||||
integrity sha512-ZEcLqOAZzSkMhDvPcTx0xcwVOijFnMW9J+BA20j+rDmo24T8RCCqVQyRwwrDrcWJZV2dRYl/yYNa2GB6UCoBvg==
|
||||
@ -11297,11 +11297,6 @@ vue-cookies@^1.7.4:
|
||||
resolved "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.7.4.tgz#d241d0a0431da0795837651d10b4d73e7c8d3e8d"
|
||||
integrity sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA==
|
||||
|
||||
vue-country-flag@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/vue-country-flag/-/vue-country-flag-2.0.3.tgz#f644d8f5150a97f473f0c13e04622c6ede37d1de"
|
||||
integrity sha512-QZM3hNNhnGU+G1qnpq1BiICE4Zh91UA++/UpM0go8XbxkVxTiPy4asWY07vL/3PtW8M69YqWVbhwG13rzvNwkA==
|
||||
|
||||
vue-eslint-parser@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1"
|
||||
|
||||
@ -60,7 +60,7 @@ Dario, Gradido Server Admin\n\
|
||||
const static char EmailText_adminEmailVerification[] = { u8"\
|
||||
Hallo [first_name] [last_name],\n\
|
||||
\n\
|
||||
Der Admin hat soeben ein Gradido Konto für dich mit dieser E-Mail angelegt.\n\
|
||||
Der Admin hat soeben ein Gradido-Konto für dich mit dieser E-Mail angelegt.\n\
|
||||
Bitte klicke zur Bestätigung auf den Link: [link]\n\
|
||||
oder kopiere den obigen Link in Dein Browserfenster.\n\
|
||||
\n\
|
||||
@ -72,7 +72,7 @@ const static char EmailText_adminEmailVerificationResend[] = { u8"\
|
||||
Hallo [first_name] [last_name],\n\
|
||||
\n\
|
||||
Der Admin hat ein erneutes zusenden deiner Bestätigungsemail angefordert. \n\
|
||||
Du hast vor einer Weile ein Gradido Konto mit dieser E-Mail angelegt, aber es noch nicht bestätigt. \n\
|
||||
Du hast vor einer Weile ein Gradido-Konto mit dieser E-Mail angelegt, aber es noch nicht bestätigt. \n\
|
||||
\n\
|
||||
Bitte klicke zur Bestätigung auf den Link: [link]\n\
|
||||
oder kopiere den obigen Link in Dein Browserfenster.\n\
|
||||
|
||||
@ -227,7 +227,13 @@ int SigningTransaction::run() {
|
||||
//printf("[JsonRequestHandler::handleRequest] Exception: %s\n", ex.displayText().data());
|
||||
addError(new ParamError("SigningTransaction", "error parsing request answer", ex.displayText().data()));
|
||||
|
||||
FILE* f = fopen("response.html", "wt");
|
||||
std::string log_Path = "/var/log/grd_login/";
|
||||
//#ifdef _WIN32
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
log_Path = "./";
|
||||
#endif
|
||||
log_Path += "response.html";
|
||||
FILE* f = fopen(log_Path.data(), "wt");
|
||||
if (f) {
|
||||
std::string responseString = responseStringStream.str();
|
||||
fwrite(responseString.data(), 1, responseString.size(), f);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user