Users ready
This commit is contained in:
@@ -4,6 +4,7 @@ body{
|
||||
}
|
||||
.page{
|
||||
background-color: #fff;
|
||||
padding-top:20px;
|
||||
}
|
||||
.site-menubar{
|
||||
top:0;
|
||||
|
||||
@@ -6,4 +6,73 @@
|
||||
}
|
||||
.greenish{
|
||||
color:#5A9101;
|
||||
}
|
||||
.pointer{
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
/*********TABLES************/
|
||||
|
||||
.table-blueish-header{
|
||||
background-color:#247CF0;
|
||||
color:#fff !important;
|
||||
}
|
||||
.table-blueish-header{
|
||||
background-color:#247CF0;
|
||||
color:#fff !important;
|
||||
}
|
||||
.table-tealish-header{
|
||||
background-color:#008577;
|
||||
color:#fff !important;
|
||||
}
|
||||
.table-tealish-light-header{
|
||||
background-color:#C3F7F2;
|
||||
color:#fff !important;
|
||||
}
|
||||
|
||||
/*********SWITCH************/
|
||||
.onoffswitch {
|
||||
position: relative; width: 60px;
|
||||
-webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;
|
||||
}
|
||||
.onoffswitch-checkbox {
|
||||
display: none;
|
||||
}
|
||||
.onoffswitch-label {
|
||||
display: block; overflow: hidden; cursor: pointer;
|
||||
border: 2px solid #05A85C; border-radius: 16px;
|
||||
}
|
||||
.onoffswitch-inner {
|
||||
display: block; width: 200%; margin-left: -100%;
|
||||
transition: margin 0.3s ease-in 0s;
|
||||
}
|
||||
.onoffswitch-inner:before, .onoffswitch-inner:after {
|
||||
display: block; float: left; width: 50%; height: 23px; padding: 0; line-height: 23px;
|
||||
font-size: 11px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.onoffswitch-inner:before {
|
||||
content: "Ja";
|
||||
padding-left: 10px;
|
||||
background-color: #63BE62; color: #FFFFFF;
|
||||
}
|
||||
.onoffswitch-inner:after {
|
||||
content: "nee";
|
||||
padding-right: 10px;
|
||||
background-color: #EEEEEE; color: #999999;
|
||||
text-align: right;
|
||||
}
|
||||
.onoffswitch-switch {
|
||||
display: block; width: 25px; margin: 1.5px;
|
||||
background: #FFFFFF;
|
||||
position: absolute; top: 0; bottom: 0;
|
||||
right: 33px;
|
||||
border: 2px solid #408C40; border-radius: 16px;
|
||||
transition: all 0.3s ease-in 0s;
|
||||
}
|
||||
.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
|
||||
margin-left: 0;
|
||||
}
|
||||
.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
|
||||
right: 0px;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* Created by Pensare Software.
|
||||
* Customer: Theo Weijmer
|
||||
* Date: 25/12/2017
|
||||
* Time: 09:50
|
||||
*/
|
||||
|
||||
dbo.customerDataService = {
|
||||
|
||||
getAllCustomers: function ( archive = 'F', callback ) {
|
||||
$.getJSON( 'index.php/beheer/customersController/getAllCustomers/' + archive )
|
||||
.done( function ( data ) {
|
||||
callback( data );
|
||||
} );
|
||||
},
|
||||
|
||||
getCustomer: function ( userID, callback ) {
|
||||
$.getJSON( 'index.php/beheer/customersController/getCustomer/' + userID )
|
||||
.done( function ( data ) {
|
||||
callback( data );
|
||||
} );
|
||||
},
|
||||
|
||||
checkCustomername: function ( username, callback ) {
|
||||
$.post( 'index.php/beheer/userController/checkCustomername', 'json' )
|
||||
.done( function ( data ) {
|
||||
console.log( data );
|
||||
callback( data );
|
||||
} );
|
||||
},
|
||||
|
||||
saveCustomer: function ( submitDATA, callback ) {
|
||||
$.post( 'index.php/beheer/customersController/saveCustomer', submitDATA, function () {
|
||||
}, 'json' )
|
||||
.done( function ( data ) {
|
||||
callback( data );
|
||||
} );
|
||||
},
|
||||
|
||||
archiveCustomer: function(userID, status, callback){
|
||||
$.get('index.php/beheer/customersController/archiveCustomer/' + userID + '/' + status)
|
||||
.done(function(){
|
||||
callback();
|
||||
});
|
||||
},
|
||||
|
||||
removeCustomer: function ( userID, callback ) {
|
||||
$.getJSON( 'index.php/beheer/customersController/removeCustomer/' + userID )
|
||||
.done( function ( data ) {
|
||||
callback( data );
|
||||
} );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -26,14 +26,29 @@ dbo.userDataService = {
|
||||
.done( function ( data ) {
|
||||
console.log( data );
|
||||
callback( data );
|
||||
} )
|
||||
} );
|
||||
},
|
||||
|
||||
saveUser: function ( submitDATA, callback ) {
|
||||
$.post( 'index.php/beheer/usersController/saveUser', submitDATA, 'json' )
|
||||
$.post( 'index.php/beheer/usersController/saveUser', submitDATA, function () {
|
||||
}, 'json' )
|
||||
.done( function ( data ) {
|
||||
callback( data );
|
||||
} )
|
||||
} );
|
||||
},
|
||||
|
||||
archiveUser: function(userID, status, callback){
|
||||
$.get('index.php/beheer/usersController/archiveUser/' + userID + '/' + status)
|
||||
.done(function(){
|
||||
callback();
|
||||
});
|
||||
},
|
||||
|
||||
removeUser: function ( userID, callback ) {
|
||||
$.getJSON( 'index.php/beheer/usersController/removeUser/' + userID )
|
||||
.done( function ( data ) {
|
||||
callback( data );
|
||||
} );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
var dbo = {};
|
||||
|
||||
$(function(){
|
||||
$( function () {
|
||||
|
||||
ko.bindingHandlers.stopBinding = {
|
||||
init: function () {
|
||||
@@ -18,17 +18,15 @@ $(function(){
|
||||
ko.virtualElements.allowedBindings.stopBinding = true;
|
||||
|
||||
|
||||
|
||||
ko.bindingHandlers.fadeVisible = {
|
||||
init: function(element, valueAccessor) {
|
||||
init : function ( element, valueAccessor ) {
|
||||
var shouldDisplay = valueAccessor();
|
||||
$(element).toggle(shouldDisplay);
|
||||
$( element ).toggle( shouldDisplay );
|
||||
},
|
||||
update: function(element, valueAccessor) {
|
||||
update: function ( element, valueAccessor ) {
|
||||
// On update, fade in/out
|
||||
var shouldDisplay = valueAccessor();
|
||||
shouldDisplay ? $(element).fadeIn(750) : $(element).fadeOut(750);
|
||||
shouldDisplay ? $( element ).fadeIn( 750 ) : $( element ).fadeOut( 750 );
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
} );
|
||||
@@ -0,0 +1,113 @@
|
||||
/**
|
||||
* Created by Pensare Software.
|
||||
* User: Theo Weijmer
|
||||
* Date: 29/12/2017
|
||||
* Time: 14:19
|
||||
*/
|
||||
|
||||
dbo.customersInit = function (){
|
||||
|
||||
if ( dbo.customersModel !== undefined ) {
|
||||
|
||||
} else {
|
||||
dbo.customersModel = {
|
||||
|
||||
customers : ko.observableArray( [] ),
|
||||
customer : ko.observable(),
|
||||
archive: ko.observable( true ),
|
||||
|
||||
init: function () {
|
||||
var vm = dbo.customersModel;
|
||||
|
||||
vm.refreshCustomers();
|
||||
},
|
||||
|
||||
newCustomer: function () {
|
||||
var vm = dbo.customersModel;
|
||||
|
||||
dbo.editCostomerModal.newEditCostumer( false, function () {
|
||||
vm.refreshCostumers();
|
||||
} );
|
||||
},
|
||||
|
||||
toggleArchive: function () {
|
||||
var vm = dbo.customersModel;
|
||||
|
||||
vm.archive( !vm.archive() );
|
||||
|
||||
vm.refreshCostumers();
|
||||
},
|
||||
|
||||
editCostumer: function () {
|
||||
var customer = this;
|
||||
var vm = dbo.customersModel;
|
||||
|
||||
dbo.editCostumerModal.newEditCostumer( customer, function () {
|
||||
vm.refreshCostumers();
|
||||
} );
|
||||
},
|
||||
|
||||
archiveCustomer: function () {
|
||||
var vm = dbo.customersModel;
|
||||
var self = this;
|
||||
|
||||
var status = self.archive == 'F' ? 'T' : 'F';
|
||||
|
||||
dbo.customerDataService.archiveCostumer( self.id, status, function () {
|
||||
vm.refreshCostumers();
|
||||
} );
|
||||
},
|
||||
|
||||
removeCostumer: function () {
|
||||
var vm = dbo.customersModel;
|
||||
var self = this;
|
||||
|
||||
tellMe( {
|
||||
title : 'verwijderen opdrachtgever',
|
||||
message : 'weet u zeker dat u de opdrachtgever wilt verwijderen, dit kan niet ongedaan worden gemaakt',
|
||||
notify : true,
|
||||
noText : 'nee verwijder de opdrachtgever niet',
|
||||
yesText : 'ja verwijder de opdrachtgever',
|
||||
modalClass: 'modal-warning'
|
||||
}, function ( response ) {
|
||||
console.log( response );
|
||||
if ( response ) {
|
||||
dbo.customerDataService.removeUser( self.id, function ( data ) {
|
||||
if ( data.result ) {
|
||||
tellMe( {
|
||||
title : 'opdrachtgever verwijderd',
|
||||
message : 'de opdrachtgever is succesvol verwijderd',
|
||||
modalClass: 'modal-success'
|
||||
}, function () {
|
||||
vm.refreshCostumers();
|
||||
} );
|
||||
} else {
|
||||
tellMe( {
|
||||
title : 'fout bij verwijderen opdrachtgever',
|
||||
message : 'de opdrachtgever kan niet worden verwijderd',
|
||||
modalClass: 'modal-danger'
|
||||
} );
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
},
|
||||
|
||||
refreshCustomers: function () {
|
||||
var vm = dbo.customersModel;
|
||||
|
||||
dbo.customerDataService.getAllCustomers( vm.archive() ? 'T' : 'F', function ( data ) {
|
||||
vm.customers( data );
|
||||
} );
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
dbo.customersModel.init();
|
||||
|
||||
ko.applyBindings( dbo.customersModel, document.getElementById( 'CUSTOMERS' ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,16 +13,15 @@ dbo.usersInit = function () {
|
||||
} else {
|
||||
dbo.usersModel = {
|
||||
|
||||
users: ko.observableArray( [] ),
|
||||
user : ko.observable(),
|
||||
roles: ko.observableArray( [] ),
|
||||
users : ko.observableArray( [] ),
|
||||
user : ko.observable(),
|
||||
roles : ko.observableArray( [] ),
|
||||
archive: ko.observable( true ),
|
||||
|
||||
init: function () {
|
||||
var vm = dbo.usersModel;
|
||||
|
||||
dbo.userDataService.getAllUsers( 'F', function ( data ) {
|
||||
vm.users( data );
|
||||
} );
|
||||
vm.refreshUsers();
|
||||
|
||||
dbo.rolesDataservice.getAllRoles( 'F', function ( data ) {
|
||||
vm.roles( data );
|
||||
@@ -30,9 +29,82 @@ dbo.usersInit = function () {
|
||||
},
|
||||
|
||||
newUser: function () {
|
||||
$( "#user-modal" ).modal( 'show' );
|
||||
var vm = dbo.usersModel;
|
||||
|
||||
dbo.editUserModal.newUser();
|
||||
dbo.editUserModal.newEditUser( false, function () {
|
||||
vm.refreshUsers();
|
||||
} );
|
||||
},
|
||||
|
||||
toggleArchive: function () {
|
||||
var vm = dbo.usersModel;
|
||||
|
||||
vm.archive( !vm.archive() );
|
||||
|
||||
vm.refreshUsers();
|
||||
},
|
||||
|
||||
editUser: function () {
|
||||
var user = this;
|
||||
var vm = dbo.usersModel;
|
||||
|
||||
dbo.editUserModal.newEditUser( user, function () {
|
||||
vm.refreshUsers();
|
||||
} );
|
||||
},
|
||||
|
||||
archiveUser: function () {
|
||||
var vm = dbo.usersModel;
|
||||
var self = this;
|
||||
|
||||
var status = self.archive == 'F' ? 'T' : 'F';
|
||||
|
||||
dbo.userDataService.archiveUser( self.id, status, function () {
|
||||
vm.refreshUsers();
|
||||
} );
|
||||
},
|
||||
|
||||
removeUser: function () {
|
||||
var vm = dbo.usersModel;
|
||||
var self = this;
|
||||
|
||||
tellMe( {
|
||||
title : 'verwijderen gebruiker',
|
||||
message : 'weet u zeker dat u de gebruiker wilt verwijderen, dit kan niet ongedaan worden gemaakt',
|
||||
notify : true,
|
||||
noText : 'nee verwijder de gebruiker niet',
|
||||
yesText : 'ja verwijder de gebruiker',
|
||||
modalClass: 'modal-warning'
|
||||
}, function ( response ) {
|
||||
console.log( response );
|
||||
if ( response ) {
|
||||
dbo.userDataService.removeUser( self.id, function ( data ) {
|
||||
if ( data.result ) {
|
||||
tellMe( {
|
||||
title : 'gebruiker verwijderd',
|
||||
message : 'de gebruiker is succesvol verwijderd',
|
||||
modalClass: 'modal-success'
|
||||
}, function () {
|
||||
vm.refreshUsers();
|
||||
} );
|
||||
} else {
|
||||
tellMe( {
|
||||
title : 'fout bij verwijderen gebruiker',
|
||||
message : 'de gebruiker kan niet worden verwijderd',
|
||||
modalClass: 'modal-danger'
|
||||
} );
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
},
|
||||
|
||||
refreshUsers: function () {
|
||||
var vm = dbo.usersModel;
|
||||
|
||||
dbo.userDataService.getAllUsers( vm.archive() ? 'T' : 'F', function ( data ) {
|
||||
vm.users( data );
|
||||
} );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ $( function () {
|
||||
username : ko.observable(),
|
||||
email : ko.observable(),
|
||||
role : ko.observable(),
|
||||
callback : null,
|
||||
|
||||
init: function () {
|
||||
var vm = dbo.editUserModal;
|
||||
@@ -25,10 +26,13 @@ $( function () {
|
||||
} );
|
||||
},
|
||||
|
||||
newUser: function () {
|
||||
newEditUser: function ( user, callback ) {
|
||||
var vm = dbo.editUserModal;
|
||||
vm.callback = typeof(callback) == 'function' ? callback : null;
|
||||
|
||||
vm.setUser();
|
||||
vm.showUserModal();
|
||||
|
||||
vm.setUser( user );
|
||||
},
|
||||
|
||||
setRole: function () {
|
||||
@@ -42,8 +46,6 @@ $( function () {
|
||||
|
||||
if ( vm.formValid == false ) return;
|
||||
|
||||
dbo.userDataService.checkUsername()
|
||||
|
||||
var submitDATA = {
|
||||
id : vm.id,
|
||||
firstname : vm.firstname(),
|
||||
@@ -55,35 +57,54 @@ $( function () {
|
||||
}
|
||||
|
||||
dbo.userDataService.saveUser( submitDATA, function ( data ) {
|
||||
if ( data.succes ) {
|
||||
if ( data.success ) {
|
||||
tellMe( {
|
||||
title : 'gebruiker aangemaakt',
|
||||
message : 'gebuiker is succesvol aangemaakt',
|
||||
message : 'gebuiker is succesvol opgeslagen',
|
||||
modalClass: 'modal-success'
|
||||
}, function(){
|
||||
vm.hideUserModal();
|
||||
|
||||
if( typeof(vm.callback) == 'function') vm.callback();
|
||||
} );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
tellMe({
|
||||
var errorMessage = '<ul>';
|
||||
$.each( data.messages, function ( i, p ) {
|
||||
if ( p[0] ) {
|
||||
errorMessage += '<li>' + i + ': ' + p[0] + '</li>';
|
||||
}
|
||||
} );
|
||||
errorMessage += '</ul>';
|
||||
tellMe( {
|
||||
title : 'fout aanmaken gebruiker',
|
||||
message : data.errorMessages,
|
||||
message : errorMessage,
|
||||
modalClass: 'modal-danger'
|
||||
});
|
||||
} )
|
||||
|
||||
|
||||
} );
|
||||
} );
|
||||
},
|
||||
|
||||
setUser: function ( user = false ) {
|
||||
setUser: function ( user ) {
|
||||
var vm = dbo.editUserModal;
|
||||
var role = isNaN( user.role ) ? null : user.role;
|
||||
|
||||
vm.id = user.id || 0;
|
||||
vm.firstname( user.firstname || '' );
|
||||
vm.lastname( user.firstname || '' );
|
||||
vm.middlename( user.firstname || '' );
|
||||
vm.lastname( user.lastname || '' );
|
||||
vm.middlename( user.middlename || '' );
|
||||
vm.username( user.username || '' );
|
||||
vm.email( user.email || '' );
|
||||
vm.role( user.role || null );
|
||||
},
|
||||
|
||||
showUserModal: function () {
|
||||
$( "#user-modal" ).modal( 'show' );
|
||||
},
|
||||
|
||||
hideUserModal: function () {
|
||||
$( "#user-modal" ).modal( 'hide' );
|
||||
}
|
||||
};
|
||||
|
||||
@@ -91,7 +112,6 @@ $( function () {
|
||||
|
||||
dbo.editUserModal.lastnameInvalid = ko.pureComputed( function () {
|
||||
if ( !this.lastname() ) return true;
|
||||
console.log( this.lastname() );
|
||||
|
||||
if ( this.lastname().length < 2 ) return true;
|
||||
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
/**
|
||||
* Created by Pensare Software.
|
||||
* User: Theo Weijmer
|
||||
* Date: 13/12/2017
|
||||
* Time: 17:08
|
||||
*/
|
||||
|
||||
var tellMe = function ( options, callback ) {
|
||||
dbo.notifyModel.init( options, callback );
|
||||
}
|
||||
|
||||
dbo.notifyModel = {
|
||||
|
||||
title : ko.observable( null ),
|
||||
message : ko.observable( null ),
|
||||
notify : ko.observable( false ),
|
||||
alert : ko.observable( false ),
|
||||
noText : ko.observable( null ),
|
||||
yesText : ko.observable( null ),
|
||||
closeText : ko.observable( null ),
|
||||
modalClass: ko.observable( null ),
|
||||
callback : null,
|
||||
|
||||
init: function ( options, callback ) {
|
||||
var vm = dbo.notifyModel;
|
||||
|
||||
vm.callback = callback;
|
||||
|
||||
vm.setOptions( options );
|
||||
|
||||
$( "#notify-me" ).modal( 'show' );
|
||||
},
|
||||
|
||||
setOptions: function ( options ) {
|
||||
var vm = dbo.notifyModel;
|
||||
|
||||
vm.title( options.title || '' );
|
||||
vm.message( options.message || '' );
|
||||
vm.notify( options.notify || false );
|
||||
vm.noText( options.noText || 'Nee' );
|
||||
vm.yesText( options.yesText || 'Ja' );
|
||||
vm.closeText( options.closeText || 'ok' );
|
||||
vm.modalClass( options.modalClass || 'modal-primary' )
|
||||
},
|
||||
|
||||
closeNo: function () {
|
||||
if ( typeof( dbo.notifyModel.callback ) == 'function' ) callback( false );
|
||||
},
|
||||
|
||||
closeYes: function () {
|
||||
if ( typeof( dbo.notifyModel.callback ) == 'function' ) callback( true );
|
||||
},
|
||||
|
||||
closeOk: function () {
|
||||
if ( typeof( dbo.notifyModel.callback ) == 'function' ) callback();
|
||||
},
|
||||
|
||||
close: function () {
|
||||
if ( typeof( dbo.notifyModel.callback ) == 'function' ) callback();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
ko.applyBindings( dbo.notifyModel, document.getElementById( "notify-me" ) );
|
||||
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Created by Pensare Software.
|
||||
* User: Theo Weijmer
|
||||
* Date: 13/12/2017
|
||||
* Time: 17:08
|
||||
*/
|
||||
|
||||
var tellMe = function ( options, callback ) {
|
||||
dbo.tellmeModel.init( options, callback );
|
||||
}
|
||||
|
||||
dbo.tellmeModel = {
|
||||
|
||||
title : ko.observable( null ),
|
||||
message : ko.observable( null ),
|
||||
notify : ko.observable( false ),
|
||||
alert : ko.observable( false ),
|
||||
noText : ko.observable( null ),
|
||||
yesText : ko.observable( null ),
|
||||
closeText : ko.observable( null ),
|
||||
modalClass: ko.observable( null ),
|
||||
callback : null,
|
||||
|
||||
init: function ( options, callback ) {
|
||||
var vm = dbo.tellmeModel;
|
||||
|
||||
vm.callback = callback;
|
||||
|
||||
vm.setOptions( options );
|
||||
|
||||
$( "#tell-me" ).modal({
|
||||
show:true
|
||||
} );
|
||||
},
|
||||
|
||||
setOptions: function ( options ) {
|
||||
var vm = dbo.tellmeModel;
|
||||
|
||||
vm.title( options.title || '' );
|
||||
vm.message( options.message || '' );
|
||||
vm.notify( options.notify || false );
|
||||
vm.noText( options.noText || 'Nee' );
|
||||
vm.yesText( options.yesText || 'Ja' );
|
||||
vm.closeText( options.closeText || 'ok' );
|
||||
vm.modalClass( options.modalClass || 'modal-primary' )
|
||||
},
|
||||
|
||||
closeNo: function () {
|
||||
var vm = dbo.tellmeModel;
|
||||
if ( typeof( vm.callback ) == 'function' ) vm.callback( false );
|
||||
vm.closeTellme();
|
||||
},
|
||||
|
||||
closeYes: function () {
|
||||
var vm = dbo.tellmeModel;
|
||||
if ( typeof( vm.callback ) == 'function' ) vm.callback( true );
|
||||
vm.closeTellme();
|
||||
},
|
||||
|
||||
closeOk: function () {
|
||||
var vm = dbo.tellmeModel;
|
||||
if ( typeof( vm.callback ) == 'function' ) vm.callback();
|
||||
vm.closeTellme();
|
||||
},
|
||||
|
||||
close: function () {
|
||||
var vm = dbo.tellmeModel;
|
||||
if ( typeof( vm.callback ) == 'function' ) vm.callback();
|
||||
},
|
||||
|
||||
closeTellme: function(){
|
||||
$( "#tell-me" ).modal( 'hide');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
ko.applyBindings( dbo.tellmeModel, document.getElementById( "tell-me" ) );
|
||||
|
||||
|
||||
$(document).on('show.bs.modal', '.modal', function (event) {
|
||||
var zIndex = 1040 + (10 * $('.modal:visible').length);
|
||||
$(this).css('z-index', zIndex);
|
||||
setTimeout(function() {
|
||||
$('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');
|
||||
}, 0);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user