Conversie codeigniter 4
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
<div class="AUTHORISATION">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
pagina
|
||||
</th>
|
||||
<th v-for="(role, roleIndex) in roles" align="center">
|
||||
<span>{{ role.rolename }}</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(page, pageIndex) in pages">
|
||||
<td>
|
||||
<span v-bind:class="{'main-menu': page.typePage == 'MAIN', 'sub-page': page.typePage != 'MAIN'}" >
|
||||
{{ page.pagename }}
|
||||
</span>
|
||||
</td>
|
||||
<td v-for="(accessPage, roleIndex) in page.accessPages" align="center">
|
||||
<i v-if="accessPage.access"
|
||||
v-on:click="toggleAccess(pageIndex, roleIndex)"
|
||||
class="icon fa-check pointer"></i>
|
||||
<i v-if="! accessPage.access"
|
||||
v-on:click="toggleAccess(pageIndex, roleIndex)"
|
||||
class="icon fa-square-o pointer"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,7 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-offset-3 col-xs-6">
|
||||
<div class="jumbotron">
|
||||
<h2 style="text-align: center">Backup DBOIS</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,291 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Tweefactorauthenticatie Instellingen - DBOIS</title>
|
||||
|
||||
<link rel="icon" href="/css/images/dbo-01-80x80.png" type="image/png">
|
||||
<link rel="stylesheet" href="/css/vendor/bootstrap.min.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="/css/vendor/bootstrap-extend.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="/css/vendor/site.min.css?v=<?=$version?>">
|
||||
|
||||
<style>
|
||||
.twofactor-container {
|
||||
max-width: 800px;
|
||||
margin: 50px auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.method-card {
|
||||
border: 2px solid #ddd;
|
||||
border-radius: 8px;
|
||||
padding: 20px;
|
||||
margin: 15px 0;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
.method-card:hover {
|
||||
border-color: #348eda;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
||||
}
|
||||
.method-card.active {
|
||||
border-color: #68b90f;
|
||||
background-color: #f0f8ff;
|
||||
}
|
||||
.qr-code-container {
|
||||
text-align: center;
|
||||
margin: 20px 0;
|
||||
}
|
||||
.qr-code-container img {
|
||||
max-width: 250px;
|
||||
}
|
||||
.verification-code-input {
|
||||
text-align: center;
|
||||
font-size: 24px;
|
||||
letter-spacing: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.secret-code {
|
||||
background-color: #f5f5f5;
|
||||
padding: 10px;
|
||||
font-family: monospace;
|
||||
word-break: break-all;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.alert {
|
||||
margin: 15px 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="twofactor-container">
|
||||
<div class="panel">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Tweefactorauthenticatie Instellingen</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<!-- Current Status -->
|
||||
<div class="alert alert-info" data-bind="visible: !enabled()">
|
||||
<strong>Tweefactorauthenticatie is momenteel uitgeschakeld.</strong>
|
||||
<p>Schakel 2FA in om een extra beveiligingslaag aan uw account toe te voegen.</p>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-success" data-bind="visible: enabled">
|
||||
<strong>Tweefactorauthenticatie is ingeschakeld</strong>
|
||||
<p>Huidige methode: <span data-bind="text: currentMethod"></span></p>
|
||||
</div>
|
||||
|
||||
<!-- Enable/Disable Section -->
|
||||
<div data-bind="visible: !enabled()">
|
||||
<h4>Kies een 2FA methode:</h4>
|
||||
|
||||
<div class="method-card" data-bind="click: function() { selectMethod('email'); }, css: { active: selectedMethod() === 'email' }">
|
||||
<h5><i class="icon wb-envelope" aria-hidden="true"></i> E-mail</h5>
|
||||
<p>Ontvang een eenmalige code via e-mail bij elke inlogpoging.</p>
|
||||
</div>
|
||||
|
||||
<div class="method-card" data-bind="click: function() { selectMethod('authenticator'); }, css: { active: selectedMethod() === 'authenticator' }">
|
||||
<h5><i class="icon wb-mobile" aria-hidden="true"></i> Google Authenticator</h5>
|
||||
<p>Gebruik een authenticator app zoals Google Authenticator of Authy.</p>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary btn-lg" data-bind="click: enableTwoFactor, enable: selectedMethod">
|
||||
2FA Inschakelen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Authenticator Setup -->
|
||||
<div data-bind="visible: showAuthenticatorSetup">
|
||||
<hr>
|
||||
<h4>Google Authenticator Instellen</h4>
|
||||
|
||||
<div class="qr-code-container">
|
||||
<p>Scan deze QR-code met uw authenticator app:</p>
|
||||
<img data-bind="attr: { src: qrCodeUrl }" alt="QR Code">
|
||||
|
||||
<p class="mt-20">Of voer deze code handmatig in:</p>
|
||||
<div class="secret-code" data-bind="text: secret"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Voer de 6-cijferige code in om te verifiëren:</label>
|
||||
<input type="text"
|
||||
class="form-control verification-code-input"
|
||||
maxlength="6"
|
||||
data-bind="textInput: verificationCode, event: { keyup: handleVerificationKeyup }">
|
||||
</div>
|
||||
|
||||
<button class="btn btn-success" data-bind="click: verifyAuthenticatorSetup, enable: verificationCode().length === 6">
|
||||
Verifiëren
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Change Method -->
|
||||
<div data-bind="visible: enabled() && !showAuthenticatorSetup()">
|
||||
<hr>
|
||||
<h4>Methode Wijzigen</h4>
|
||||
|
||||
<div class="method-card" data-bind="click: function() { selectMethod('email'); }, css: { active: changeToMethod() === 'email' }">
|
||||
<h5><i class="icon wb-envelope" aria-hidden="true"></i> E-mail</h5>
|
||||
<p>Ontvang een eenmalige code via e-mail bij elke inlogpoging.</p>
|
||||
</div>
|
||||
|
||||
<div class="method-card" data-bind="click: function() { selectMethod('authenticator'); }, css: { active: changeToMethod() === 'authenticator' }">
|
||||
<h5><i class="icon wb-mobile" aria-hidden="true"></i> Google Authenticator</h5>
|
||||
<p>Gebruik een authenticator app zoals Google Authenticator of Authy.</p>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" data-bind="click: changeMethod, enable: changeToMethod() !== currentMethod()">
|
||||
Methode Wijzigen
|
||||
</button>
|
||||
|
||||
<hr>
|
||||
|
||||
<button class="btn btn-danger" data-bind="click: disableTwoFactor">
|
||||
2FA Uitschakelen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center">
|
||||
<a href="/" class="btn btn-default">Terug naar Dashboard</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/js/vendor/jquery/jquery.js?v=<?=$version?>"></script>
|
||||
<script src="/js/vendor/bootstrap/bootstrap.js?v=<?=$version?>"></script>
|
||||
<script src="/js/vendor/Knockout.min.js?v=<?=$version?>"></script>
|
||||
|
||||
<script>
|
||||
function TwoFactorViewModel() {
|
||||
var self = this;
|
||||
|
||||
self.enabled = ko.observable(<?= $user->two_factor_enabled === 'T' ? 'true' : 'false' ?>);
|
||||
self.currentMethod = ko.observable('<?= $user->two_factor_method ?>');
|
||||
self.selectedMethod = ko.observable(null);
|
||||
self.changeToMethod = ko.observable(null);
|
||||
self.showAuthenticatorSetup = ko.observable(false);
|
||||
self.qrCodeUrl = ko.observable('');
|
||||
self.secret = ko.observable('');
|
||||
self.verificationCode = ko.observable('');
|
||||
|
||||
self.selectMethod = function(method) {
|
||||
if (!self.enabled()) {
|
||||
self.selectedMethod(method);
|
||||
} else {
|
||||
self.changeToMethod(method);
|
||||
}
|
||||
};
|
||||
|
||||
self.enableTwoFactor = function() {
|
||||
if (!self.selectedMethod()) {
|
||||
alert('Kies eerst een methode');
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '/beheer/TwoFactorController/enable',
|
||||
method: 'POST',
|
||||
data: { method: self.selectedMethod() },
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
if (response.method === 'authenticator') {
|
||||
self.qrCodeUrl(response.qrCodeUrl);
|
||||
self.secret(response.secret);
|
||||
self.showAuthenticatorSetup(true);
|
||||
} else {
|
||||
alert(response.message);
|
||||
location.reload();
|
||||
}
|
||||
} else {
|
||||
alert(response.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
self.verifyAuthenticatorSetup = function() {
|
||||
$.ajax({
|
||||
url: '/beheer/TwoFactorController/verifySetup',
|
||||
method: 'POST',
|
||||
data: { code: self.verificationCode() },
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
alert('Google Authenticator succesvol ingesteld!');
|
||||
location.reload();
|
||||
} else {
|
||||
alert(response.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
self.disableTwoFactor = function() {
|
||||
if (!confirm('Weet u zeker dat u 2FA wilt uitschakelen?')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '/beheer/TwoFactorController/disable',
|
||||
method: 'POST',
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
alert(response.message);
|
||||
location.reload();
|
||||
} else {
|
||||
alert(response.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
self.changeMethod = function() {
|
||||
if (!self.changeToMethod()) {
|
||||
alert('Kies eerst een methode');
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '/beheer/TwoFactorController/changeMethod',
|
||||
method: 'POST',
|
||||
data: { method: self.changeToMethod() },
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
if (response.method === 'authenticator') {
|
||||
self.enabled(false);
|
||||
self.selectedMethod('authenticator');
|
||||
self.qrCodeUrl(response.qrCodeUrl);
|
||||
self.secret(response.secret);
|
||||
self.showAuthenticatorSetup(true);
|
||||
} else {
|
||||
alert(response.message);
|
||||
location.reload();
|
||||
}
|
||||
} else {
|
||||
alert(response.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
self.handleVerificationKeyup = function(data, event) {
|
||||
// Auto-verify when 6 digits entered
|
||||
if (self.verificationCode().length === 6 && event.keyCode === 13) {
|
||||
self.verifyAuthenticatorSetup();
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
ko.applyBindings(new TwoFactorViewModel());
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
<div class="page" id="<?= $pageurl ?>">
|
||||
<?= view('pages/' . strtolower($pageurl) . '_view') ?>
|
||||
</div>
|
||||
@@ -0,0 +1,62 @@
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-tealish-header">naam</th>
|
||||
<th class="table-tealish-header">adres</th>
|
||||
<th class="table-tealish-header">plaats</th>
|
||||
<th class="table-tealish-header">contactpersoon</th>
|
||||
<th class="table-tealish-header">email</th>
|
||||
<th class="table-tealish-header"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:customers">
|
||||
<tr>
|
||||
<td><span data-bind="text:name"></span></td>
|
||||
<td><span data-bind="text:address"></span></td>
|
||||
<td><span data-bind="text:postcode + ' ' + place"></span></td>
|
||||
<td><span data-bind="text:contactperson"</td>
|
||||
<td><span data-bind="text:email"></span></td>
|
||||
<td>
|
||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editCustomer"></i>
|
||||
<!-- ko if:archive == 'F' -->
|
||||
<i class="icon fa-archive pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveCustomer"></i>
|
||||
<!-- /ko -->
|
||||
<!-- ko if:archive != 'F' -->
|
||||
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveCustomer"></i>
|
||||
<!-- /ko -->
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeCustomer"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="4" class="">
|
||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newCustomer">
|
||||
nieuwe opdrachtgever
|
||||
</button>
|
||||
</td>
|
||||
<td colspan="2" class="">
|
||||
<div class="row form-horizontal">
|
||||
<label class="col-md-4 form-control-label">archief</label>
|
||||
<div class="col-md-8">
|
||||
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:archive"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
</table>
|
||||
@@ -0,0 +1,211 @@
|
||||
<div class="row">
|
||||
<?php if(in_array(ROLE, [2] )): ?>
|
||||
<div class="db-panel">
|
||||
<div class="conceal-panel db-panel-success" data-bind="click:hideConceals">
|
||||
<h3>Onderhanden werkpositie</h3>
|
||||
<img src="css/images/progress.svg" alt="OWHP" />
|
||||
</div>
|
||||
<div class="db-panel-holder db-panel-success">
|
||||
<div class="db-panel-heading" data-bind="click:showConceals">
|
||||
<h3 class="db-panel-title">
|
||||
Onderhanden werkpositie
|
||||
</h3>
|
||||
</div>
|
||||
<div class="db-panel-body" data-bind="width:owp">
|
||||
<br>
|
||||
<h4>
|
||||
<span class="db-panel-label">Onderhanden werkpositie huidig jaar:</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:owpThisYear"></strong></span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">Onderhanden werkpositie volgend jaar:</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:owpNextYear"></strong></span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">Totaal:</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:owpTotal"></strong></span>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="db-panel">
|
||||
<div class="conceal-panel db-panel-warning" data-bind="click:hideConceals">
|
||||
<h3>Omzet</h3>
|
||||
<img src="css/images/revenue.svg" alt="OMZET>" />
|
||||
</div>
|
||||
<div class="db-panel-holder db-panel-warning">
|
||||
<div class="db-panel-heading" data-bind="click:showConceals">
|
||||
<h3 class="db-panel-title">
|
||||
Omzet
|
||||
</h3>
|
||||
</div>
|
||||
<div class="db-panel-body" data-bind="width:owp">
|
||||
<br>
|
||||
<h4>
|
||||
<span class="db-panel-label">Omzet totaal gerealiseerd lopend jaar:</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:revenuesThisYear"></strong></span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">
|
||||
Minimum omzet lopend jaar:
|
||||
</span>
|
||||
<span class="dashboard-info"
|
||||
data-bind="event: {
|
||||
mouseover: enableDetails.bind($data, 'toolTip1'),
|
||||
mouseout: disableDetails.bind($data, 'toolTip1') }">
|
||||
<label>?</label>
|
||||
<div data-bind="if:toolTip1" class="my-tooltip">
|
||||
<p>Omzet totaal gerealiseerd lopend jaar + Onderhanden werkpositie lopend jaar.</p>
|
||||
</div>
|
||||
</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:minimumRevenues"></strong></span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">
|
||||
Verwachte omzet komende 12 maanden:
|
||||
</span>
|
||||
<span class="dashboard-info"
|
||||
data-bind="event: {
|
||||
mouseover: enableDetails.bind($data, 'toolTip3'),
|
||||
mouseout: disableDetails.bind($data, 'toolTip3') }">
|
||||
<label>?</label>
|
||||
<div data-bind="if:toolTip3" class="my-tooltip">
|
||||
<p> Onderhanden werkpositie totaal/40%.</p>
|
||||
</div>
|
||||
</span>
|
||||
<span class="db-panel-data">
|
||||
<strong data-bind="text:revenuesNextyear"></strong>
|
||||
</span>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="db-panel">
|
||||
<div class="conceal-panel db-panel-info" data-bind="click:hideConceals">
|
||||
<h3>Facturatie</h3>
|
||||
<img src="css/images/bill.svg" alt="FACTURATIE" />
|
||||
</div>
|
||||
<div class="db-panel-holder db-panel-info">
|
||||
<div class="db-panel-heading">
|
||||
<h3 class="db-panel-title" data-bind="click:showConceals">
|
||||
Facturatie
|
||||
<span style="margin-left:10px;display:none"
|
||||
class="glyphicon glyphicon-question-sign pointer"
|
||||
data-bind="click:invoiceOverview"></span>
|
||||
<div class="facturation-overview-holder">
|
||||
<!-- ko if:showInvoiceOverview -->
|
||||
<div class="facturation-overview" data-bind="click:invoiceOverview">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>project</th>
|
||||
<th>gefactureerd</th>
|
||||
<th>betaald</th>
|
||||
<th>te betalen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:billingOverview">
|
||||
<tr>
|
||||
<td>
|
||||
<span data-bind="text:project"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:invoiced"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:payedcosts"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:openCosts"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="db-panel-body" data-bind="width:owp">
|
||||
<br>
|
||||
<h4>
|
||||
<span class="db-panel-label">Verstuurde facturen lopende jaar (incl btw):</span>
|
||||
<span class="db-panel-data">
|
||||
<strong data-bind="text:invoiced">
|
||||
</strong>
|
||||
</span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">Openstaande facturen (incl btw):</span>
|
||||
<span class="db-panel-data">
|
||||
<strong data-bind="text:openInvoices">
|
||||
</strong>
|
||||
</span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">Nog te factureren totaal (incl btw):</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:toInvoice"></strong></span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">Betaalde facturen lopende jaar (incl btw):</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:payments"></strong></span>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="db-panel">
|
||||
<div class="conceal-panel db-panel-danger" data-bind="click:hideConceals">
|
||||
<h3>Resultaat</h3>
|
||||
<img src="css/images/seo-and-web.svg" alt="RESULTAAT" />
|
||||
</div>
|
||||
<div class="db-panel-holder db-panel-danger">
|
||||
<div class="db-panel-heading" data-bind="click:showConceals">
|
||||
<h3 class="db-panel-title">
|
||||
Resultaat
|
||||
</h3>
|
||||
</div>
|
||||
<div class="db-panel-body" data-bind="width:owp">
|
||||
<br>
|
||||
<h4>
|
||||
<span class="db-panel-label">Kosten derden (incl btw):</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:openCosts"></strong></span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">
|
||||
Netto kasstroom (excl btw):
|
||||
</span>
|
||||
<span class="dashboard-info"
|
||||
data-bind="event: {
|
||||
mouseover: enableDetails.bind($data, 'toolTip2'),
|
||||
mouseout: disableDetails.bind($data, 'toolTip2') }">
|
||||
<label>?</label>
|
||||
<div data-bind="if:toolTip2" class="my-tooltip">
|
||||
<p>Openstaande facturen + nog te factureren totaal - kosten derden.</p>
|
||||
</div>
|
||||
</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:revenues"></strong></span>
|
||||
</h4>
|
||||
<h4>
|
||||
<span class="db-panel-label">(eigen) omzet * kans (excl btw):</span>
|
||||
<span class="db-panel-data"><strong data-bind="text:totalChance"></strong></span>
|
||||
</h4>
|
||||
<!-- <h4>-->
|
||||
<!-- <span class="db-panel-label">Omzet lopend jaar (excl btw):</span>-->
|
||||
<!-- <span class="db-panel-data"><strong data-bind="text:revenueCurrentYear"></strong></span>-->
|
||||
<!-- </h4>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="row">
|
||||
<div class="col-lg-offset-3 col-lg-6">
|
||||
<div class="jumbotron" style="text-align:center">
|
||||
<h3>De Beleidsonderszoekers</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<select class="form-control form-control-sm"
|
||||
data-bind="options:years,
|
||||
optionsText:'year',
|
||||
optionsValue:'year',
|
||||
value:selectedYear,
|
||||
event:{change:refreshEmployeehours}"></select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control form-control-sm"
|
||||
data-bind="options:months,
|
||||
optionsText:'month',
|
||||
optionsValue:'monthID',
|
||||
value:selectedMonth,
|
||||
event:{change:refreshEmployeehours}"></select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control form-control-sm"
|
||||
data-bind="options:employees,
|
||||
optionsText:'fullname',
|
||||
optionsValue:'id',
|
||||
value:$root.selectedEmployeeID,
|
||||
event:{change:refreshEmployeehours}"></select>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-tealish-header" width="15%">datum</th>
|
||||
<th class="table-tealish-header" width="35%">soort uren</th>
|
||||
<th class="table-tealish-header" width="35%">project</th>
|
||||
<th class="table-tealish-header" width="10%" style="min-width:100px;">uren</th>
|
||||
<th class="table-tealish-header" width="5%"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:employeehours">
|
||||
<tr>
|
||||
<td data-bind="css:{'red-line': dirty}">
|
||||
<input class="form-control form-control-sm"
|
||||
data-bind="datepicker:{dateFormat: 'dd-mm-yy' },
|
||||
enable:archive() == 'F',
|
||||
value:hourdate,
|
||||
event:{change:$root.saveEmployeehours}"
|
||||
</td>
|
||||
<td data-bind="css:{'red-line': dirty}">
|
||||
<select class="form-control form-control-sm"
|
||||
data-bind="options:$root.hourtypes,
|
||||
optionsText:'description',
|
||||
optionsValue:'id',
|
||||
value:hourtype_id,
|
||||
enable:archive() == 'F',
|
||||
optionsCaption:'selecteer...',
|
||||
event:{change:$root.saveEmployeehours}"></select>
|
||||
</td>
|
||||
<td data-bind="css:{'red-line': dirty}">
|
||||
<!-- ko if: archive() == 'T' -->
|
||||
<div data-bind="text:projectname" class="fake-input"></div>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: hourType() == 'PROJECTS' && archive() == 'F' -->
|
||||
<select class="form-control form-control-sm"
|
||||
data-bind="options:$root.projects,
|
||||
optionsText:'projectFull',
|
||||
optionsValue:'projectID',
|
||||
value:projectID,
|
||||
optionsCaption:'selecteer...',
|
||||
event:{change:$root.saveEmployeehours}"></select>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: hourType() == 'OFFERS' && archive() == 'F' -->
|
||||
<select class="form-control form-control-sm"
|
||||
data-bind="options:$root.offersWithoutProject,
|
||||
optionsText:'fulloffer',
|
||||
optionsValue:'id',
|
||||
value:projectID,
|
||||
optionsCaption:'selecteer...',
|
||||
event:{change:$root.saveEmployeehours}"></select>
|
||||
<!-- /ko -->
|
||||
</td>
|
||||
<td class="align-right" data-bind="css:{'red-line': dirty}">
|
||||
<input type="number"
|
||||
class="form-control form-control-sm align-right"
|
||||
paceholder="uren"
|
||||
data-bind="textInput:hours,
|
||||
enable:canFillInHours && archive() == 'F',
|
||||
event:{keyup:$root.saveDelayedEmployeehours,
|
||||
change: $root.saveDelayedEmployeehours}"/>
|
||||
</td>
|
||||
<td data-bind="css:{'red-line': dirty}">
|
||||
<!-- <i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editEmployeehour"></i>-->
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeEmployeehour"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newEmployeehour">
|
||||
nieuwe uren
|
||||
</button>
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
</table>
|
||||
@@ -0,0 +1,31 @@
|
||||
<div id="EMPLOYEEHOURSREPORT">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<label>jaar</label>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control" data-bind="textInput:selectedYear, event:{keyup:checkYear}">
|
||||
<div class="invalid-feedback" data-bind="visible: ! validYear()">geen geldig jaar</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="nav-tabs-horizontal">
|
||||
<ul class="nav nav-tabs nav-tabs-solid">
|
||||
<!-- ko foreach:months -->
|
||||
<li class="nav-item" data-bind="click:$root.setActivetab.bind($data, monthID)" style="z-index:10">
|
||||
<a class="nav-link"
|
||||
data-bind="text:monthName, css:{'active' : $root.selectedMonthID() == monthID}"></a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active">
|
||||
<?= view('reports/employeehours/employeemonthhours_view') ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,64 @@
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-tealish-header">contact</th>
|
||||
<th class="table-tealish-header">naam</th>
|
||||
<th class="table-tealish-header">adres</th>
|
||||
<th class="table-tealish-header">plaats</th>
|
||||
<th class="table-tealish-header">email</th>
|
||||
<th class="table-tealish-header">tarief</th>
|
||||
<th class="table-tealish-header"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:externals">
|
||||
<tr>
|
||||
<td><span data-bind="text:contactperson"></span></td>
|
||||
<td><span data-bind="text:name"></span></td>
|
||||
<td><span data-bind="text:address"></span></td>
|
||||
<td><span data-bind="text:postcode + ' ' + place"></span></td>
|
||||
<td><span data-bind="text:email"></span></td>
|
||||
<td><span data-bind="text:rate"></span></td>
|
||||
<td>
|
||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editExternal"></i>
|
||||
<!-- ko if:archive == 'F' -->
|
||||
<i class="icon fa-archive pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveExternal"></i>
|
||||
<!-- /ko -->
|
||||
<!-- ko if:archive != 'F' -->
|
||||
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveExternal"></i>
|
||||
<!-- /ko -->
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeExternal"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="4" class="">
|
||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newExternal">
|
||||
nieuwe onderaannemer
|
||||
</button>
|
||||
</td>
|
||||
<td colspan="2" class="">
|
||||
<div class="row form-horizontal">
|
||||
<label class="col-md-4 form-control-label">archief</label>
|
||||
<div class="col-md-8">
|
||||
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:archive"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
</table>
|
||||
@@ -0,0 +1,30 @@
|
||||
<div class="dbo-page">
|
||||
<div class="row">
|
||||
<?php foreach ( $pages as $page ): ?>
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-primary panel-line">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<?= $page->pagename ?>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<?php foreach ( $page->subpages as $subpage ): ?>
|
||||
<div class="col-md-6">
|
||||
<div class="panel panel-success panel-line">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<?= $subpage->pagename ?>
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,85 @@
|
||||
<div id="INVOICEREPORT">
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<label>jaar</label>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control" data-bind="textInput:selectedYear, event:{keyup:checkYear}">
|
||||
<div class="invalid-feedback" data-bind="visible: ! validYear()">geen geldig jaar</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-success" data-bind="click:createSpreadsheet">
|
||||
maak spreadsheet
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="row form-horizontal">
|
||||
<label class="col-md-4 form-control-label">archief</label>
|
||||
<div class="col-md-8">
|
||||
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:archive"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="nav-tabs-horizontal">
|
||||
<ul class="nav nav-tabs nav-tabs-solid">
|
||||
<li class="nav-item"
|
||||
data-bind="click:setActivetab.bind($data, 'invoice')" style="z-index:10">
|
||||
<a class="nav-link"
|
||||
data-bind="css:{'active':invoiceTab() == 'invoice'}">facturen</a>
|
||||
</li>
|
||||
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'forecast')" style="z-index:10">
|
||||
<a class="nav-link"
|
||||
data-bind="css:{'active':invoiceTab() == 'forecast'}">prognoses</a>
|
||||
</li>
|
||||
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'monthforecast')" style="z-index:10">
|
||||
<a class="nav-link"
|
||||
data-bind="css:{'active':invoiceTab() == 'monthforecast'}">maand prognoses</a>
|
||||
</li>
|
||||
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'monthpayments')" style="z-index:10">
|
||||
<a class="nav-link" data-bind="css:{'active':invoiceTab() == 'monthpayments'}">maand betalingen</a>
|
||||
</li>
|
||||
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'invoices')" style="z-index:10">
|
||||
<a class="nav-link" data-bind="css:{'active':invoiceTab() == 'invoices'}">verstuurde facturen</a>
|
||||
</li>
|
||||
<!-- <li class="nav-item" data-bind="click:setActivetab.bind($data, 'externals')" style="z-index:10">-->
|
||||
<!-- <a class="nav-link" data-bind="css:{'active':invoiceTab() == 'externals'}">onderaannemers</a>-->
|
||||
<!-- </li>-->
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div data-bind="visible:invoiceTab() == 'invoice'">
|
||||
<?= view('reports/invoices/invoiceoverview_report') ?>
|
||||
</div>
|
||||
<div id="cast" data-bind="visible:invoiceTab() == 'forecast'">
|
||||
<?= view('reports/invoices/invoiceforecast_report') ?>
|
||||
</div>
|
||||
<div id="invoiceforecast" data-bind="visible:invoiceTab() == 'monthforecast'">
|
||||
<?= view('reports/invoices/monthforecast_report') ?>
|
||||
</div>
|
||||
<div id="invoiceforecast" data-bind="visible:invoiceTab() == 'monthpayments'">
|
||||
<?= view('reports/invoices/monthpayment_report') ?>
|
||||
</div>
|
||||
<div id="invoiceforecast" data-bind="visible:invoiceTab() == 'invoices'">
|
||||
<?= view('reports/invoices/invoices_report') ?>
|
||||
</div>
|
||||
<!-- <div id="invoiceforecast" data-bind="visible:invoiceTab() == 'externals'">-->
|
||||
<!-- --><?php //$this->load->view('reports/invoices/contractors_report') ?>
|
||||
<!-- </div>-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1 @@
|
||||
<h1>DASHBOARD</h1>
|
||||
@@ -0,0 +1,252 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js css-menubar" lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui">
|
||||
<meta name="description" content="bootstrap admin template">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>-*-*-LOGIN DBOIS-*-*-</title>*
|
||||
|
||||
<link rel="icon" href="css/images/dbo-01-80x80.png" type="image/png">
|
||||
|
||||
<!-- Stylesheets -->
|
||||
<link rel="stylesheet" href="css/vendor/bootstrap.min.css?v=<?= APP_VERSION ?>">
|
||||
<link rel="stylesheet" href="css/vendor/bootstrap-extend.css?v=<?= APP_VERSION ?>">
|
||||
<link rel="stylesheet" href="css/vendor/site.min.css?v=<?= APP_VERSION ?>">
|
||||
|
||||
<!-- Plugins -->
|
||||
<!-- <link rel="stylesheet" href="css/vendor/plugins/animsition/animsition.css">-->
|
||||
<link rel="stylesheet" href="css/vendor/plugins/asscrollable/asScrollable.css?v=<?= APP_VERSION ?>">
|
||||
<link rel="stylesheet" href="css/vendor/plugins/switchery/switchery.css?v=<?= APP_VERSION ?>">
|
||||
<link rel="stylesheet" href="css/vendor/plugins/slidepanel/slidePanel.css?v=<?= APP_VERSION ?>">
|
||||
<link rel="stylesheet" href="css/vendor/plugins/flag-icon-css/flag-icon.css?v=<?= APP_VERSION ?>">
|
||||
<link rel="stylesheet" href="css/login-v3.css?v=<?= APP_VERSION ?>">
|
||||
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="stylesheet" href="fonts/web-icons/web-icons.min.css?v=<?= APP_VERSION ?>">
|
||||
<link rel="stylesheet" href="fonts/brand-icons/brand-icons.min.css?v=<?= APP_VERSION ?>">
|
||||
<link rel='stylesheet' href='http://fonts.googleapis.com/css?family=Roboto:300,400,500,300italic'>
|
||||
</head>
|
||||
<body class="animsition page-login-v3 layout-full">
|
||||
<!-- Page -->
|
||||
<?= view('specials/tellme_modal') ?>
|
||||
|
||||
<!-- Password Change Modal -->
|
||||
<div class="modal fade" id="password-change-modal" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bg-warning">
|
||||
<h4 class="modal-title">
|
||||
<i class="icon wb-warning" aria-hidden="true"></i>
|
||||
Wachtwoord wijzigen verplicht
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-warning">
|
||||
<strong>Let op:</strong> Uw huidige wachtwoord voldoet niet aan de beveiligingseisen.
|
||||
U moet uw wachtwoord wijzigen om door te gaan.
|
||||
</div>
|
||||
|
||||
<h5>Wachtwoordeisen:</h5>
|
||||
<ul class="list-unstyled" data-bind="foreach: passwordRequirements">
|
||||
<li style="padding: 5px 0;">
|
||||
<i class="icon wb-check text-success" aria-hidden="true"></i>
|
||||
<span data-bind="text: $data"></span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- New Password Input -->
|
||||
<div class="form-group form-material floating" data-plugin="formMaterial" style="margin-top: 30px;">
|
||||
<input type="password"
|
||||
class="form-control"
|
||||
id="newPassword"
|
||||
data-bind="textInput: newPassword"
|
||||
autocomplete="new-password" />
|
||||
<label class="floating-label">Nieuw wachtwoord</label>
|
||||
</div>
|
||||
|
||||
<!-- Confirm Password Input -->
|
||||
<div class="form-group form-material floating" data-plugin="formMaterial">
|
||||
<input type="password"
|
||||
class="form-control"
|
||||
id="confirmPassword"
|
||||
data-bind="textInput: confirmPassword, event: { keyup: handlePasswordChangeKeyup }"
|
||||
autocomplete="new-password" />
|
||||
<label class="floating-label">Bevestig wachtwoord</label>
|
||||
</div>
|
||||
|
||||
<!-- Error Message -->
|
||||
<div data-bind="visible: passwordChangeError()" class="alert alert-danger" style="margin-top: 20px;">
|
||||
<span data-bind="text: passwordChangeError"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-lg btn-block"
|
||||
data-bind="click: changePassword, enable: newPassword().length >= 8 && confirmPassword().length >= 8 && !isChangingPassword()">
|
||||
<span data-bind="visible: !isChangingPassword()">Wachtwoord wijzigen</span>
|
||||
<span data-bind="visible: isChangingPassword()">Wijzigen...</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 2FA Verification Modal -->
|
||||
<div class="modal fade" id="twofactor-modal" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">
|
||||
<i class="icon wb-lock" aria-hidden="true"></i>
|
||||
Tweefactorauthenticatie
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body text-center">
|
||||
<!-- Email Method -->
|
||||
<div data-bind="visible: twoFactorMethod() === 'email'">
|
||||
<div style="font-size: 48px; color: #348eda; margin-bottom: 20px;">
|
||||
<i class="icon wb-envelope" aria-hidden="true"></i>
|
||||
</div>
|
||||
<p>Voer de 6-cijferige code in die naar uw e-mail is verzonden.</p>
|
||||
</div>
|
||||
|
||||
<!-- Authenticator Method -->
|
||||
<div data-bind="visible: twoFactorMethod() === 'authenticator'">
|
||||
<div style="font-size: 48px; color: #348eda; margin-bottom: 20px;">
|
||||
<i class="icon wb-mobile" aria-hidden="true"></i>
|
||||
</div>
|
||||
<p>Voer de 6-cijferige code in van uw authenticator app.</p>
|
||||
</div>
|
||||
|
||||
<!-- Code Input -->
|
||||
<div class="form-group" style="margin-top: 30px;">
|
||||
<input type="text"
|
||||
class="form-control text-center"
|
||||
id="twoFactorCode"
|
||||
maxlength="6"
|
||||
placeholder="000000"
|
||||
style="font-size: 32px; letter-spacing: 8px; font-weight: bold;"
|
||||
data-bind="textInput: twoFactorCode, event: { keyup: handleTwoFactorKeyup }"
|
||||
autocomplete="off" />
|
||||
</div>
|
||||
|
||||
<!-- Error Message -->
|
||||
<div data-bind="visible: twoFactorError()" class="alert alert-danger" style="margin-top: 20px;">
|
||||
<span data-bind="text: twoFactorError"></span>
|
||||
</div>
|
||||
|
||||
<!-- Resend Button (Email only) -->
|
||||
<div data-bind="visible: twoFactorMethod() === 'email'" style="margin-top: 20px;">
|
||||
<a href="#" data-bind="click: resendOtp, enable: !isResending()">
|
||||
<span data-bind="visible: !isResending()">Code opnieuw verzenden</span>
|
||||
<span data-bind="visible: isResending()">Verzenden...</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-bind="click: cancelTwoFactor">Annuleren</button>
|
||||
<button type="button" class="btn btn-primary btn-lg" data-bind="click: verifyTwoFactor, enable: twoFactorCode().length === 6 && !isVerifying()">
|
||||
<span data-bind="visible: !isVerifying()">Verifiëren</span>
|
||||
<span data-bind="visible: isVerifying()">Verifiëren...</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page vertical-align text-center" data-animsition-in="fade-in" data-animsition-out="fade-out">
|
||||
<div class="page-content vertical-align-middle animation-slide-top animation-duration-1">
|
||||
<div class="panel" id="login-form">
|
||||
<div class="panel-body">
|
||||
<div class="brand">
|
||||
<img class="brand-img" src="css/images/logo_dbo.png" alt="...">
|
||||
<h2 class="brand-text font-size-18">projectbeheer</h2>
|
||||
</div>
|
||||
<div data-bind="visible: !showPasswordRequest()">
|
||||
<div>
|
||||
<div class="form-group form-material floating" data-plugin="formMaterial">
|
||||
<input type="text" class="form-control" name="gebruikersnaam"
|
||||
data-bind="textInput:username" />
|
||||
<label class="floating-label">gebruikersnaam</label>
|
||||
</div>
|
||||
<div class="form-group form-material floating" data-plugin="formMaterial">
|
||||
<input type="password" class="form-control" name="password"
|
||||
data-bind="textInput:password" />
|
||||
<label class="floating-label">wachtwoord</label>
|
||||
</div>
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-block btn-lg mt-40"
|
||||
data-bind="click:login">Log in</button>
|
||||
</div>
|
||||
<div>
|
||||
<br />
|
||||
<a href="#" data-bind="click:togglePasswordrequest">wachtwoord vergeten?</a>
|
||||
</div>
|
||||
</div>
|
||||
<div data-bind="visible: showPasswordRequest()">
|
||||
<p>
|
||||
Vul hieronder uw emailadres en gebruikersnaam in, u krijgt dan een mail met een nieuw wachtwoord toegezonden!
|
||||
</p>
|
||||
<div class="form-group form-material floating" data-plugin="formMaterial">
|
||||
<input type="text"
|
||||
class="form-control"
|
||||
name="gebruikersnaam"
|
||||
data-bind="textInput:username" />
|
||||
<label class="floating-label">gebruikersnaam</label>
|
||||
</div>
|
||||
<div class="form-group form-material floating" data-plugin="formMaterial">
|
||||
<input type="text"
|
||||
class="form-control"
|
||||
name="password"
|
||||
data-bind="textInput:email" />
|
||||
<label class="floating-label">emailadres</label>
|
||||
</div>
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-block btn-lg mt-40"
|
||||
data-bind="click:requestPassword">vraag aan</button>
|
||||
<div>
|
||||
<br />
|
||||
<a href="#" data-bind="click:togglePasswordrequest">terug naar inlog?</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="page-copyright page-copyright-inverse">
|
||||
<p>© 2018. De Beleidsonderzoekers</p>
|
||||
<!-- <p style="font-size:.8em">powered by: Pensare Software</p>-->
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Page -->
|
||||
|
||||
|
||||
<!-- Core -->
|
||||
<script src="js/vendor/jquery/jquery.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
<script src="js/vendor/popper-js/umd/popper.min.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
<script src="js/vendor/bootstrap/bootstrap.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
<script src="js/vendor/animsition/animsition.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="js/vendor/Config.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
|
||||
|
||||
<!-- Page -->
|
||||
|
||||
<script src="js/vendor/Knockout.min.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
<script src="js/lib/modules/login/loginModule.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
<script src="js/lib/modules/specials/tellmeModule.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
<script src="js/lib/helpers.js?v=<?= APP_VERSION ?? '1.0.81' ?>"></script>
|
||||
<script>
|
||||
// Apply bindings for password change modal
|
||||
$(function() {
|
||||
ko.applyBindings(dbo.loginModel, document.getElementById('password-change-modal'));
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,219 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js css-menubar" lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui">
|
||||
<title>Tweefactorauthenticatie - DBOIS</title>
|
||||
|
||||
<link rel="icon" href="css/images/dbo-01-80x80.png" type="image/png">
|
||||
|
||||
<!-- Stylesheets -->
|
||||
<link rel="stylesheet" href="css/vendor/bootstrap.min.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="css/vendor/bootstrap-extend.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="css/vendor/site.min.css?v=<?=$version?>">
|
||||
|
||||
<!-- Plugins -->
|
||||
<link rel="stylesheet" href="css/vendor/plugins/asscrollable/asScrollable.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="css/vendor/plugins/switchery/switchery.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="css/vendor/plugins/slidepanel/slidePanel.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="css/vendor/plugins/flag-icon-css/flag-icon.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="css/login-v3.css?v=<?=$version?>">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="stylesheet" href="fonts/web-icons/web-icons.min.css?v=<?=$version?>">
|
||||
<link rel="stylesheet" href="fonts/brand-icons/brand-icons.min.css?v=<?=$version?>">
|
||||
<link rel='stylesheet' href='http://fonts.googleapis.com/css?family=Roboto:300,400,500,300italic'>
|
||||
|
||||
<style>
|
||||
.verification-code-input {
|
||||
text-align: center;
|
||||
font-size: 32px;
|
||||
letter-spacing: 8px;
|
||||
font-weight: bold;
|
||||
padding: 20px;
|
||||
}
|
||||
.resend-link {
|
||||
margin-top: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
.method-icon {
|
||||
font-size: 48px;
|
||||
color: #348eda;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="animsition page-login-v3 layout-full">
|
||||
<!-- Page -->
|
||||
<?= view('specials/tellme_modal') ?>
|
||||
<div class="page vertical-align text-center" data-animsition-in="fade-in" data-animsition-out="fade-out">
|
||||
<div class="page-content vertical-align-middle animation-slide-top animation-duration-1">
|
||||
<div class="panel" id="verify2fa-form">
|
||||
<div class="panel-body">
|
||||
<div class="brand">
|
||||
<img class="brand-img" src="css/images/logo_dbo.png" alt="DBOIS">
|
||||
<h2 class="brand-text font-size-18">projectbeheer</h2>
|
||||
</div>
|
||||
|
||||
<div class="text-center">
|
||||
<div class="method-icon" data-bind="visible: method() === 'email'">
|
||||
<i class="icon wb-envelope" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="method-icon" data-bind="visible: method() === 'authenticator'">
|
||||
<i class="icon wb-mobile" aria-hidden="true"></i>
|
||||
</div>
|
||||
|
||||
<h3>Tweefactorauthenticatie</h3>
|
||||
|
||||
<p data-bind="visible: method() === 'email'">
|
||||
Voer de 6-cijferige code in die naar uw e-mail is verzonden.
|
||||
</p>
|
||||
<p data-bind="visible: method() === 'authenticator'">
|
||||
Voer de 6-cijferige code in van uw authenticator app.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group form-material floating mt-40" data-plugin="formMaterial">
|
||||
<input type="text"
|
||||
class="form-control verification-code-input"
|
||||
name="verification_code"
|
||||
maxlength="6"
|
||||
data-bind="textInput: verificationCode, event: { keyup: handleKeyup }"
|
||||
autocomplete="off"
|
||||
autofocus />
|
||||
<label class="floating-label">Verificatiecode</label>
|
||||
</div>
|
||||
|
||||
<div data-bind="visible: errorMessage()" class="alert alert-danger">
|
||||
<span data-bind="text: errorMessage"></span>
|
||||
</div>
|
||||
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-block btn-lg mt-40"
|
||||
data-bind="click: verify, enable: verificationCode().length === 6 && !isVerifying()">
|
||||
<span data-bind="visible: !isVerifying()">Verifiëren</span>
|
||||
<span data-bind="visible: isVerifying()">Verifiëren...</span>
|
||||
</button>
|
||||
|
||||
<div data-bind="visible: method() === 'email'">
|
||||
<a href="#" class="resend-link" data-bind="click: resendOtp, enable: !isResending()">
|
||||
<span data-bind="visible: !isResending()">Code opnieuw verzenden</span>
|
||||
<span data-bind="visible: isResending()">Verzenden...</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="mt-20">
|
||||
<a href="/login/logout">Annuleren</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="page-copyright page-copyright-inverse">
|
||||
<p>© 2018. De Beleidsonderzoekers</p>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Page -->
|
||||
|
||||
<!-- Core -->
|
||||
<script src="js/vendor/jquery/jquery.js?v=<?=$version?>"></script>
|
||||
<script src="js/vendor/popper-js/umd/popper.min.js?v=<?=$version?>"></script>
|
||||
<script src="js/vendor/bootstrap/bootstrap.js?v=<?=$version?>"></script>
|
||||
<script src="js/vendor/animsition/animsition.js?v=<?=$version?>"></script>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="js/vendor/Config.js?v=<?=$version?>"></script>
|
||||
<script src="js/vendor/Knockout.min.js?v=<?=$version?>"></script>
|
||||
<script src="js/lib/modules/specials/tellmeModule.js?v=<?=$version?>"></script>
|
||||
<script src="js/lib/helpers.js?v=<?=$version?>"></script>
|
||||
|
||||
<script>
|
||||
function Verify2FAViewModel() {
|
||||
var self = this;
|
||||
|
||||
self.method = ko.observable('<?= $method ?>');
|
||||
self.verificationCode = ko.observable('');
|
||||
self.errorMessage = ko.observable('');
|
||||
self.isVerifying = ko.observable(false);
|
||||
self.isResending = ko.observable(false);
|
||||
|
||||
self.verify = function() {
|
||||
if (self.verificationCode().length !== 6) {
|
||||
return;
|
||||
}
|
||||
|
||||
self.errorMessage('');
|
||||
self.isVerifying(true);
|
||||
|
||||
$.ajax({
|
||||
url: '/login/verify2fa',
|
||||
method: 'POST',
|
||||
data: { code: self.verificationCode() },
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
// Redirect to main application
|
||||
window.location.href = '/';
|
||||
} else {
|
||||
self.errorMessage(response.message || 'Ongeldige verificatiecode');
|
||||
self.verificationCode('');
|
||||
}
|
||||
self.isVerifying(false);
|
||||
},
|
||||
error: function() {
|
||||
self.errorMessage('Er is een fout opgetreden. Probeer het opnieuw.');
|
||||
self.isVerifying(false);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
self.resendOtp = function() {
|
||||
self.isResending(true);
|
||||
self.errorMessage('');
|
||||
|
||||
$.ajax({
|
||||
url: '/login/resendOtp',
|
||||
method: 'POST',
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
alert(response.message || 'Nieuwe code verzonden');
|
||||
} else {
|
||||
self.errorMessage(response.message || 'Kan code niet opnieuw verzenden');
|
||||
}
|
||||
self.isResending(false);
|
||||
},
|
||||
error: function() {
|
||||
self.errorMessage('Er is een fout opgetreden. Probeer het opnieuw.');
|
||||
self.isResending(false);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
self.handleKeyup = function(data, event) {
|
||||
// Clear error message on input
|
||||
self.errorMessage('');
|
||||
|
||||
// Auto-submit when 6 digits entered and Enter is pressed
|
||||
if (self.verificationCode().length === 6 && event.keyCode === 13) {
|
||||
self.verify();
|
||||
}
|
||||
|
||||
// Only allow digits
|
||||
var sanitized = self.verificationCode().replace(/[^0-9]/g, '');
|
||||
if (sanitized !== self.verificationCode()) {
|
||||
self.verificationCode(sanitized);
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
ko.applyBindings(new Verify2FAViewModel());
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,86 @@
|
||||
<div class="MONTHLYEMPLOYEEHOURS">
|
||||
<!-- <div class="row">-->
|
||||
<!-- <div class="col-md-1">-->
|
||||
<!-- <label>jaar</label>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="col-md-2">-->
|
||||
<!-- <input type="text" class="form-control" data-bind="textInput:selectedYear, event:{keyup:checkYear}" >-->
|
||||
<!-- <div class="invalid-feedback" data-bind="visible: ! validYear()">geen geldig jaar</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<div class="row form-horizontal">
|
||||
<label class="col-md-4 form-control-label">archief</label>
|
||||
<div class="col-md-8">
|
||||
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:archive"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="nav-tabs-horizontal">
|
||||
<ul class="nav nav-tabs nav-tabs-solid">
|
||||
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'euro')" style="z-index:10">
|
||||
<a class="nav-link" data-bind="css:{'active':sluggy() == 'euro'}">totaal euro's</a>
|
||||
</li>
|
||||
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'hours')" style="z-index:10">
|
||||
<a class="nav-link" data-bind="css:{'active':sluggy() == 'hours'}">totaal uren</a>
|
||||
</li>
|
||||
|
||||
<!-- ko foreach:uniqueEmployees -->
|
||||
<li class="nav-item" data-bind="click:$root.setActivetab.bind($data, id)" style="z-index:10">
|
||||
<a class="nav-link" data-bind="text:fullname, css:{'active':$root.sluggy() == id}"></a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane" data-bind="css:{'active':sluggy() == 'euro'}">
|
||||
<?= view('reports/monthlyemployeehours/euro_view') ?>
|
||||
</div>
|
||||
<div class="tab-pane" data-bind="css:{'active':sluggy() == 'hours'}">
|
||||
<?= view('reports/monthlyemployeehours/hours_view') ?>
|
||||
</div>
|
||||
|
||||
<!-- ko foreach:uniqueEmployees -->
|
||||
<div class="tab-pane" data-bind="css:{'active':$root.sluggy() == id}">
|
||||
<div style="position:relative">
|
||||
<div style="position:absolute;right:20px; z-index:10;">
|
||||
<div class="onoffswitch" data-bind="click:$root.toggleHourView">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:hourView"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ko if : hourView() -->
|
||||
<?= view('reports/monthlyemployeehours/_employeehour_view') ?>
|
||||
<!-- /ko -->
|
||||
<!-- ko if : ! hourView() -->
|
||||
<?= view('reports/monthlyemployeehours/_employeerevenue_view') ?>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,124 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text"
|
||||
data-bind="textInput:search,event:{keyup:searchOffers}"
|
||||
class="form-control"
|
||||
name=""
|
||||
placeholder="Zoek...">
|
||||
<span class="input-group-btn">
|
||||
<button type="text"
|
||||
class="btn btn-primary">
|
||||
<i class="icon wb-search" aria-hidden="true"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="10%" class="table-tealish-header pointer" data-bind="click:directionOrderOffers.bind($data, 'offernumber')">nummer</th>
|
||||
<th width="20%" class="table-tealish-header pointer" data-bind="click:directionOrderOffers.bind($data, 'CUS.name')">klant</th>
|
||||
<th width="25%" class="table-tealish-header pointer" data-bind="click:directionOrderOffers.bind($data, 'offername')">offertenaam</th>
|
||||
<th width="5%" class="table-tealish-header pointer" data-bind="click:directionOrderOffers.bind($data, 'startdate')">datum</th>
|
||||
<th width="5%" class="table-tealish-header pointer" data-bind="click:directionOrderOffers.bind($data, 'deadline')">deadline</th>
|
||||
<th width="10%" class="table-tealish-header pointer align-right" data-bind="click:directionOrderOffers.bind($data, 'own_revenue')">(eigen) omzet</th>
|
||||
<th width="10%" class="table-tealish-header pointer align-right" data-bind="click:directionOrderOffers.bind($data, 'acceptance_chance')">kans</th>
|
||||
<th width="10%" class="table-tealish-header align-right">(eigen) omzet * kans</th>
|
||||
<!-- <th class="table-tealish-header pointer" data-bind="click:directionOrderOffers.bind($data, 'accepteddate')">geaccepteerd</th>-->
|
||||
<!-- <th class="table-tealish-header pointer" data-bind="click:directionOrderOffers.bind($data, 'rejectdate')">afgewezen</th>-->
|
||||
<th width="5%" class="table-tealish-header pointer"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:offers">
|
||||
<tr data-bind="css:{'table-info':$root.selectedRowID() == id}">
|
||||
<td data-bind="click:$root.selectOffer" class="pointer">
|
||||
<span data-bind="text:offernumber"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectOffer" class="pointer">
|
||||
<span data-bind="text:customerName"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectOffer" class="pointer">
|
||||
<span data-bind="text:offername"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectOffer" class="pointer">
|
||||
<span data-bind="text:startdate"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectOffer" class="pointer">
|
||||
<span data-bind="text:deadline"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectOffer" class="pointer align-right">
|
||||
€ <span data-bind="text:own_revenue"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectOffer" class="pointer align-right">
|
||||
<span data-bind="text:acceptance_chance"></span> %
|
||||
</td>
|
||||
<td data-bind="click:$root.selectOffer" class="pointer align-right">
|
||||
€ <span data-bind="text:chanceOwnRevenue"></span>
|
||||
</td>
|
||||
<!-- <td data-bind="click:$root.selectOffer" class="pointer">-->
|
||||
<!-- <span data-bind="text:accepteddate"></span>-->
|
||||
<!-- </td>-->
|
||||
<!-- <td data-bind="click:$root.selectOffer" class="pointer">-->
|
||||
<!-- <span data-bind="text:rejectdate"></span>-->
|
||||
<!-- </td>-->
|
||||
<td>
|
||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editOffer"></i>
|
||||
<!-- ko if:archive == 'F' -->
|
||||
<i class="icon fa-archive pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveOffer"></i>
|
||||
<!-- /ko -->
|
||||
<!-- ko if:archive != 'F' -->
|
||||
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveOffer"></i>
|
||||
<!-- /ko -->
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeOffer, css:{'whiteish':$root.selectedRowID() == id}"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="5" class="align-right table-tealish-header">
|
||||
Totaal
|
||||
</th>
|
||||
<th class="align-right table-tealish-header">
|
||||
€ <span data-bind="text:totalOwnRevenue"></span>
|
||||
</th>
|
||||
<th class=" table-tealish-header"> </th>
|
||||
<th class="align-right table-tealish-header">
|
||||
€ <span data-bind="text:totalChanceOwnRevenue"></span>
|
||||
</th>
|
||||
<th class=" table-tealish-header"> </th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="5" class="">
|
||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newOffer">
|
||||
nieuwe offerte
|
||||
</button>
|
||||
</td>
|
||||
<td colspan="3" class="">
|
||||
<div class="row form-horizontal">
|
||||
<label class="col-md-4 form-control-label">archief</label>
|
||||
<div class="col-md-8">
|
||||
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:archive"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
@@ -0,0 +1,126 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text"
|
||||
data-bind="textInput:search,event:{keyup:searchProjects}"
|
||||
class="form-control"
|
||||
name=""
|
||||
placeholder="Zoek...">
|
||||
<span class="input-group-btn">
|
||||
<button type="text"
|
||||
class="btn btn-primary">
|
||||
<i class="icon wb-search" aria-hidden="true"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-tealish-header pointer"
|
||||
data-bind="click:directionOrderProjects.bind($data, 'projectnumber')">nummer</th>
|
||||
<th class="table-tealish-header pointer"
|
||||
data-bind="click:directionOrderProjects.bind($data, 'USR.firstname')">projectleider</th>
|
||||
<th class="table-tealish-header pointer"
|
||||
data-bind="click:directionOrderProjects.bind($data, 'projectname')">projectnaam</th>
|
||||
<th class="table-tealish-header pointer"
|
||||
data-bind="click:directionOrderProjects.bind($data, 'startdate')">start</th>
|
||||
<th class="table-tealish-header align-right">eigen tarief omzet</th>
|
||||
<th class="table-tealish-header align-right">overige kosten</th>
|
||||
<th class="table-tealish-header align-right">Kosten derden</th>
|
||||
<th class="table-tealish-header align-right">totaal</th>
|
||||
<th class="table-tealish-header"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:projects">
|
||||
<tr data-bind="css:{'table-info':$root.selectedRowID() == id}">
|
||||
<td data-bind="click:$root.selectProject" class="pointer">
|
||||
<span data-bind="text:projectnumber"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||
<span data-bind="text:projectleader"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||
<span data-bind="text:projectname, attr:{title:customer}"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||
<span data-bind="text:startdate"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectPoject" class="pointer align-right">
|
||||
<span data-bind="text:dbo.helpers.numberWithPoints(totalOwnrevenue.toFixed(0))"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectPoject" class="pointer align-right">
|
||||
<span data-bind="text:dbo.helpers.numberWithPoints(totalOtherrevenue.toFixed(0))"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectPoject" class="pointer align-right">
|
||||
<span data-bind="text:dbo.helpers.numberWithPoints(costs.toFixed(0))"></span>
|
||||
</td>
|
||||
<td data-bind="click:$root.selectPoject" class="pointer align-right">
|
||||
<b data-bind="text:dbo.helpers.numberWithPoints(total.toFixed(0))"></b>
|
||||
</td>
|
||||
<td>
|
||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editProject"></i>
|
||||
<!-- ko if:archive == 'F' -->
|
||||
<i class="icon fa-archive pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveProject"></i>
|
||||
<!-- /ko -->
|
||||
<!-- ko if:archive != 'F' -->
|
||||
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveProject"></i>
|
||||
<!-- /ko -->
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeProject, css:{'whiteish':$root.selectedRowID() == id}"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="4" class="align-right table-tealish-header">
|
||||
Totaal
|
||||
</th>
|
||||
<th class="align-right table-tealish-header">
|
||||
€ <span data-bind="text:totalOwnRevenue"></span>
|
||||
</th>
|
||||
<th class="align-right table-tealish-header">
|
||||
€ <span data-bind="text:totalOtherrevenue"></span>
|
||||
</th>
|
||||
<th class="align-right table-tealish-header">
|
||||
€ <span data-bind="text:totalCosts"></span>
|
||||
</th>
|
||||
<th class="align-right table-tealish-header">
|
||||
€ <span data-bind="text:total"></span>
|
||||
</th>
|
||||
<th class="align-right table-tealish-header"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="5" class="">
|
||||
<!-- <button class="btn btn-primary btn-round btn-sm" data-bind="click:newProject">-->
|
||||
<!-- nieuw project-->
|
||||
<!-- </button>-->
|
||||
</td>
|
||||
<td colspan="3" class="">
|
||||
<div class="row form-horizontal">
|
||||
<label class="col-md-4 form-control-label">archief</label>
|
||||
<div class="col-md-8">
|
||||
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:archive"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
</table>
|
||||
@@ -0,0 +1,138 @@
|
||||
<div id="RESERVATIONS">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<label class="col-xs-12">
|
||||
alle bedragen inclusief btw
|
||||
</label>
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="2%"> </th>
|
||||
<th width="34%">project</th>
|
||||
<th width="8%" class="align-right">Kosten derden</th>
|
||||
<th width="8%" class="align-right">factuur INK</th>
|
||||
<th width="8%" class="align-right">gereserveerd op<br/>spaarrekening</th>
|
||||
<th width="8%" class="align-right">betaald</th>
|
||||
<th width="8%" class="align-right">nog te betalen<br />facturen</th>
|
||||
<th width="8%" class="align-right">betaald via<br />reserveringen</th>
|
||||
<th width="8%" class="align-right">saldo reservering</th>
|
||||
<th width="8%" class="align-right">saldo facturen INK</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!-- ko foreach:projects -->
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
<i class="icon fa-chevron-right"
|
||||
data-bind="click:$root.toggleExternals, visible: ! showExternals()">
|
||||
</i>
|
||||
<i class="icon fa-chevron-down"
|
||||
data-bind="click:$root.toggleExternals, visible:showExternals()">
|
||||
</i>
|
||||
</th>
|
||||
<th>
|
||||
<span data-bind="text:projectnumber"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:otherRevenue"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:costs"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:reservation"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:payed"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:saldoToPay"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:fromreservation"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:saldo"></span>
|
||||
</th>
|
||||
<th class="align-right" data-bind="visible: ! showExternals()">
|
||||
<span data-bind="text:saldoInvoices"></span>
|
||||
</th>
|
||||
</tr>
|
||||
<!-- ko if:showExternals() -->
|
||||
<!-- ko foreach: externals -->
|
||||
<tr>
|
||||
<td width="5px"> </td>
|
||||
<td>
|
||||
<span data-bind="text:externalName"></span>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td class="align-right lighgrey-background">
|
||||
<span data-bind="text:costs"></span>
|
||||
</td>
|
||||
<td class="align-right">
|
||||
<span data-bind="text:reservation"></span>
|
||||
</td>
|
||||
<td class="align-right lighgrey-background">
|
||||
<span data-bind="text:payed"></span>
|
||||
</td>
|
||||
<td class="align-right">
|
||||
<span data-bind="text:saldoToPay"></span>
|
||||
</td>
|
||||
<td class="align-right lighgrey-background">
|
||||
<span data-bind="text:fromreservation"></span>
|
||||
</td>
|
||||
<td class="align-right">
|
||||
<span data-bind="text:saldo"></span>
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<!-- /ko -->
|
||||
<!-- /ko -->
|
||||
<!-- ko if:showExternals() -->
|
||||
<tr class="subtotal">
|
||||
<th colspan="2">Totaal</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:otherRevenue"></span>
|
||||
</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:costs"></span>
|
||||
</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:reservation"></span>
|
||||
</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:payed"></span>
|
||||
</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:saldoToPay"></span>
|
||||
</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:fromreservation"></span>
|
||||
</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:saldo"></span>
|
||||
</th>
|
||||
<th class="align-right">
|
||||
<span data-bind="text:saldoInvoices"></span>
|
||||
</th>
|
||||
</tr>
|
||||
<!-- /ko -->
|
||||
</tbody>
|
||||
<!-- /ko -->
|
||||
<tfoot>
|
||||
<tr class="grandtotal">
|
||||
<th colspan="2">Grand totaal</th>
|
||||
<th class="align-right"><span data-bind="text:otherRevenue"></span></th>
|
||||
<th class="align-right"><span data-bind="text:costs"></span></th>
|
||||
<th class="align-right"><span data-bind="text:reservation"></span></th>
|
||||
<th class="align-right"><span data-bind="text:payed"></span></th>
|
||||
<th class="align-right"><span data-bind="text:saldoToPay"></span></th>
|
||||
<th class="align-right"><span data-bind="text:fromreservation"></span></th>
|
||||
<th class="align-right"><span data-bind="text:saldo"></span></th>
|
||||
<th class="align-right"><span data-bind="text:saldoInvoices"></span></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,65 @@
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-tealish-header">voornaam</th>
|
||||
<th class="table-tealish-header">achternaam</th>
|
||||
<th class="table-tealish-header">tussenvoegsel</th>
|
||||
<th class="table-tealish-header">gebruikersnaam</th>
|
||||
<th class="table-tealish-header">email</th>
|
||||
<th class="table-tealish-header">rol</th>
|
||||
<th class="table-tealish-header"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:users">
|
||||
<tr>
|
||||
<td><span data-bind="text:lastname"></span></td>
|
||||
<td><span data-bind="text:firstname"></span></td>
|
||||
<td><span data-bind="text:middlename"></span></td>
|
||||
<td><span data-bind="text:username"</td>
|
||||
<td><span data-bind="text:email"></span></td>
|
||||
<td><span data-bind=""></span></td>
|
||||
<td>
|
||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editUser"></i>
|
||||
<i class="icon fa-user pointer" title="uren" data-bind="click:$root.editTarget"></i>
|
||||
<!-- ko if:archive == 'F' -->
|
||||
<i class="icon fa-archive pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveUser"></i>
|
||||
<!-- /ko -->
|
||||
<!-- ko if:archive != 'F' -->
|
||||
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
||||
data-bind="click:$root.archiveUser"></i>
|
||||
<!-- /ko -->
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeUser"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5" class="">
|
||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newUser">
|
||||
nieuwe gebruiker
|
||||
</button>
|
||||
</td>
|
||||
<td colspan="2" class="">
|
||||
<div class="row form-horizontal">
|
||||
<label class="col-md-4 form-control-label">archief</label>
|
||||
<div class="col-md-8">
|
||||
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||
<input type="checkbox"
|
||||
name="onoffswitch"
|
||||
class="onoffswitch-checkbox"
|
||||
data-bind="checked:archive"
|
||||
id="myonoffswitch">
|
||||
<label class="onoffswitch-label" for="myonoffswitch">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
</table>
|
||||
@@ -0,0 +1,42 @@
|
||||
<div class="VAT">
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>percentage</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:vats">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="percentage-sign-holder">
|
||||
<!-- ko if:inEdit() -->
|
||||
<input type="text"
|
||||
class="form-control percentage-input"
|
||||
data-bind="textInput:vatrate,
|
||||
event:{keyup:$root.validateNumber.bind($data, 'vatrate')}">
|
||||
<!-- /ko -->
|
||||
<!-- ko if: !inEdit() -->
|
||||
<span data-bind="text:vatrate"></span>%
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</td>
|
||||
<td width="60px">
|
||||
<i class="icon fa-edit pointer" data-bind="click:$root.toggleEdit"></i>
|
||||
<i class="icon fa-trash redish pointer" data-bind="click:$root.removeVat"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<button class="btn btn-primary" data-bind="click:addVat">voeg btw toe</button>
|
||||
</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user