mirror of
https://github.com/ConjureETS/Interface-Admin.git
synced 2026-03-24 04:21:06 +00:00
Fixed pairing sb-admin-2 to pug-bootstrap
This commit is contained in:
parent
49f396a2e0
commit
f653cd3714
3
.gitignore
vendored
3
.gitignore
vendored
@ -2,4 +2,5 @@ vendor/
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
|
||||
.idea/
|
||||
.idea/
|
||||
dist/
|
||||
36
dist/App.js
vendored
36
dist/App.js
vendored
@ -1,36 +0,0 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const express = require("express");
|
||||
const logger = require("morgan");
|
||||
const bodyParser = require("body-parser");
|
||||
//import * as ExpressSession from 'express-session';
|
||||
// Creates and configures an ExpressJS web server.
|
||||
class App {
|
||||
//Run configuration methods on the Express instance.
|
||||
constructor() {
|
||||
this.expressApp = express();
|
||||
this.middleware();
|
||||
this.routes();
|
||||
this.expressApp.set('view engine', 'pug');
|
||||
}
|
||||
// Configure Express middleware.
|
||||
middleware() {
|
||||
this.expressApp.use(logger('dev'));
|
||||
this.expressApp.use(bodyParser.json());
|
||||
this.expressApp.use(bodyParser.urlencoded({ extended: false }));
|
||||
/*this.expressApp.use(ExpressSession(
|
||||
{
|
||||
secret: 'My Secret Key',
|
||||
resave: false,
|
||||
saveUninitialized: true
|
||||
}));*/
|
||||
}
|
||||
// Configure API endpoints.
|
||||
routes() {
|
||||
let router = express.Router();
|
||||
router.get('/', (req, res) => res.render('index'));
|
||||
this.expressApp.use('/', router);
|
||||
}
|
||||
}
|
||||
exports.default = new App().expressApp;
|
||||
//# sourceMappingURL=App.js.map
|
||||
1
dist/App.js.map
vendored
1
dist/App.js.map
vendored
@ -1 +0,0 @@
|
||||
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AACnC,iCAAiC;AACjC,0CAA0C;AAC1C,oDAAoD;AAEpD,kDAAkD;AAClD,MAAM,GAAG;IAGR,oDAAoD;IACpD;QACC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,gCAAgC;IACxB,UAAU;QACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;QAC9D;;;;;kBAKO;IACR,CAAC;IAED,2BAA2B;IACnB,MAAM;QACb,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;CACD;AAED,kBAAe,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC"}
|
||||
44
dist/server.js
vendored
44
dist/server.js
vendored
@ -1,44 +0,0 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const http = require("http");
|
||||
const debug = require("debug");
|
||||
const App_1 = require("./App");
|
||||
debug('ts-express:server');
|
||||
const port = normalizePort(process.env.PORT || 3000);
|
||||
App_1.default.set('port', port);
|
||||
const server = http.createServer(App_1.default);
|
||||
server.listen(port);
|
||||
server.on('error', onError);
|
||||
server.on('listening', onListening);
|
||||
function normalizePort(val) {
|
||||
let port = (typeof val === 'string') ? parseInt(val, 10) : val;
|
||||
if (isNaN(port))
|
||||
return val;
|
||||
else if (port >= 0)
|
||||
return port;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
function onError(error) {
|
||||
if (error.syscall !== 'listen')
|
||||
throw error;
|
||||
const bind = (typeof port === 'string') ? 'Pipe ' + port : 'Port ' + port;
|
||||
switch (error.code) {
|
||||
case 'EACCES':
|
||||
console.error(`${bind} requires elevated privileges`);
|
||||
process.exit(1);
|
||||
break;
|
||||
case 'EADDRINUSE':
|
||||
console.error(`${bind} is already in use`);
|
||||
process.exit(1);
|
||||
break;
|
||||
default:
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
function onListening() {
|
||||
let addr = server.address();
|
||||
let bind = (typeof addr === 'string') ? `pipe ${addr}` : `port ${addr.port}`;
|
||||
debug(`Listening on ${bind}`);
|
||||
}
|
||||
//# sourceMappingURL=server.js.map
|
||||
1
dist/server.js.map
vendored
1
dist/server.js.map
vendored
@ -1 +0,0 @@
|
||||
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;AAAA,6BAA6B;AAC7B,+BAA+B;AAE/B,+BAAwB;AAExB,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAE3B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACrD,aAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,aAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5B,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAEpC,SAAS,aAAa,CAAC,GAAkB;IACxC,IAAI,IAAI,GAAW,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvE,IAAI,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;SACvB,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;;QAC3B,OAAO,KAAK,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAC,KAA4B;IAC5C,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,KAAK,CAAC;IAE5C,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;IAC1E,QAAO,KAAK,CAAC,IAAI,EAAE;QAClB,KAAK,QAAQ;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,+BAA+B,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACP,KAAK,YAAY;YAChB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACP;YACC,MAAM,KAAK,CAAC;KACb;AACF,CAAC;AAED,SAAS,WAAW;IACnB,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7E,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC"}
|
||||
81
package-lock.json
generated
81
package-lock.json
generated
@ -24,6 +24,11 @@
|
||||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"@fortawesome/fontawesome-free": {
|
||||
"version": "5.13.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz",
|
||||
"integrity": "sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw=="
|
||||
},
|
||||
"@types/babel-types": {
|
||||
"version": "7.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz",
|
||||
@ -222,6 +227,11 @@
|
||||
"type-is": "~1.6.17"
|
||||
}
|
||||
},
|
||||
"bootstrap": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz",
|
||||
"integrity": "sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
@ -304,6 +314,32 @@
|
||||
"is-regex": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"chart.js": {
|
||||
"version": "2.9.3",
|
||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.3.tgz",
|
||||
"integrity": "sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw==",
|
||||
"requires": {
|
||||
"chartjs-color": "^2.1.0",
|
||||
"moment": "^2.10.2"
|
||||
}
|
||||
},
|
||||
"chartjs-color": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
|
||||
"integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
|
||||
"requires": {
|
||||
"chartjs-color-string": "^0.6.0",
|
||||
"color-convert": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"chartjs-color-string": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
|
||||
"integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
|
||||
"requires": {
|
||||
"color-name": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"check-error": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
|
||||
@ -422,6 +458,23 @@
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
|
||||
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
|
||||
},
|
||||
"datatables.net": {
|
||||
"version": "1.10.21",
|
||||
"resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.21.tgz",
|
||||
"integrity": "sha512-/bSZtxmf3GTpYcvEmwZ8q26I1yhSx8qklR2B+s1K8+/51UW/zc2zTYwJMqr/Z+iCYixAc00ildj4g2x0Qamolw==",
|
||||
"requires": {
|
||||
"jquery": ">=1.7"
|
||||
}
|
||||
},
|
||||
"datatables.net-bs4": {
|
||||
"version": "1.10.21",
|
||||
"resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.10.21.tgz",
|
||||
"integrity": "sha512-F9zabYw8ZLXfjvj2S+BdnbkEUsL48bJwWxQFrA47cOXrIvsMhW8nmqPZcIMK4ko3k1i74nbpWLO1t+vueQKoXQ==",
|
||||
"requires": {
|
||||
"datatables.net": "1.10.21",
|
||||
"jquery": ">=1.7"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
@ -878,6 +931,16 @@
|
||||
"iterate-iterator": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"jquery": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
|
||||
"integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
|
||||
},
|
||||
"jquery.easing": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jquery.easing/-/jquery.easing-1.4.1.tgz",
|
||||
"integrity": "sha1-R5gsWDa9dY/UhJSSPEoQHvbpPjs="
|
||||
},
|
||||
"js-stringify": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
|
||||
@ -1035,6 +1098,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.27.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
|
||||
"integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
|
||||
},
|
||||
"morgan": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
|
||||
@ -1626,6 +1694,19 @@
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||
},
|
||||
"startbootstrap-sb-admin-2": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/startbootstrap-sb-admin-2/-/startbootstrap-sb-admin-2-4.1.1.tgz",
|
||||
"integrity": "sha512-bhZb4YrtGnUdY5lZwf3q3uYFpc79KiKqUgHhn7S+xfblcpC7bcPSIKOqFqbahz9DbN+SQFU8kdNbUdN7AkbkaA==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-free": "5.13.1",
|
||||
"bootstrap": "4.5.0",
|
||||
"chart.js": "2.9.3",
|
||||
"datatables.net-bs4": "1.10.21",
|
||||
"jquery": "3.5.1",
|
||||
"jquery.easing": "^1.4.1"
|
||||
}
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
"morgan": "^1.10.0",
|
||||
"pug": "^3.0.0",
|
||||
"pug-bootstrap": "0.0.16",
|
||||
"startbootstrap-sb-admin-2": "^4.1.1",
|
||||
"typescript": "^3.9.6"
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,6 +13,8 @@ class App {
|
||||
this.middleware();
|
||||
this.routes();
|
||||
this.expressApp.set('view engine', 'pug');
|
||||
this.expressApp.use('/sb-admin-2/css', express.static(__dirname + '/../node_modules/startbootstrap-sb-admin-2/css'));
|
||||
this.expressApp.use('/sb-admin-2/js', express.static(__dirname + '/../node_modules/startbootstrap-sb-admin-2/js'));
|
||||
}
|
||||
|
||||
// Configure Express middleware.
|
||||
|
||||
@ -1 +1,7 @@
|
||||
extends sb-admin-2/blank
|
||||
extends sb-admin-2/blank
|
||||
|
||||
prepend sidebar
|
||||
- const appName = 'Conjure Admin';
|
||||
|
||||
block sidebar_menu_buttons
|
||||
+menu_button("Membres", "fa-chalkboard-teacher", "/members")
|
||||
@ -1,19 +1,18 @@
|
||||
//- blank.pug
|
||||
extends ../../node_modules/pug-bootstrap/_bootstrap
|
||||
|
||||
include pug_inc/mixins/mixins
|
||||
include pug_inc/mixins/cards
|
||||
include pug_inc/mixins/buttons
|
||||
include ../mixins
|
||||
|
||||
doctype html
|
||||
append head
|
||||
include pug_inc/meta
|
||||
include pug_inc/link
|
||||
|
||||
html
|
||||
head
|
||||
include pug_inc/meta
|
||||
include pug_inc/link
|
||||
include pug_inc/ga_tracking
|
||||
|
||||
include pug_inc/ga_tracking
|
||||
|
||||
body#page-top
|
||||
block body
|
||||
#page-top
|
||||
#wrapper
|
||||
block sidebar
|
||||
include pug_inc/sidebar
|
||||
@ -26,4 +25,5 @@ html
|
||||
|
||||
include pug_inc/logout_modal
|
||||
|
||||
include pug_inc/scripts
|
||||
append scripts
|
||||
include pug_inc/scripts
|
||||
@ -1,19 +1,19 @@
|
||||
li.nav-item.dropdown.no-arrow
|
||||
a#userDropdown.nav-link.dropdown-toggle(href='#' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false')
|
||||
span.mr-2.d-none.d-lg-inline.text-gray-600.small #{user.prenom} #{user.nom}
|
||||
span.mr-2.d-none.d-lg-inline.text-gray-600.small William Tremblay
|
||||
img.img-profile.rounded-circle(src='https://source.unsplash.com/QAB-WJcbgJk/60x60')
|
||||
// Dropdown - User Information
|
||||
.dropdown-menu.dropdown-menu-right.shadow.animated--grow-in(aria-labelledby='userDropdown')
|
||||
//a.dropdown-item(href='#')
|
||||
// i.fas.fa-user.fa-sm.fa-fw.mr-2.text-gray-400
|
||||
// | Profile
|
||||
//a.dropdown-item(href='#')
|
||||
// i.fas.fa-cogs.fa-sm.fa-fw.mr-2.text-gray-400
|
||||
// | Settings
|
||||
//a.dropdown-item(href='#')
|
||||
// i.fas.fa-list.fa-sm.fa-fw.mr-2.text-gray-400
|
||||
// | Activity Log
|
||||
//.dropdown-divider
|
||||
a.dropdown-item(href='#')
|
||||
i.fas.fa-user.fa-sm.fa-fw.mr-2.text-gray-400
|
||||
| Profile
|
||||
a.dropdown-item(href='#')
|
||||
i.fas.fa-cogs.fa-sm.fa-fw.mr-2.text-gray-400
|
||||
| Settings
|
||||
a.dropdown-item(href='#')
|
||||
i.fas.fa-list.fa-sm.fa-fw.mr-2.text-gray-400
|
||||
| Activity Log
|
||||
.dropdown-divider
|
||||
a.dropdown-item(href='#' data-toggle='modal' data-target='#logoutModal')
|
||||
i.fas.fa-sign-out-alt.fa-sm.fa-fw.mr-2.text-gray-400
|
||||
| Logout
|
||||
@ -5,8 +5,6 @@ link(href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css"
|
||||
link(href="//fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet")
|
||||
|
||||
<!-- Custom styles for this template-->
|
||||
link(href="/css/sb-admin-2.min.css" rel="stylesheet")
|
||||
link(href="sb-admin-2/css/sb-admin-2.min.css" rel="stylesheet")
|
||||
|
||||
script(src='http://code.jquery.com/jquery-3.5.1.slim.min.js' integrity='sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=' crossorigin='anonymous')
|
||||
script(src='/lib/main.js')
|
||||
link(href='/css/style.css' rel='stylesheet')
|
||||
script(src='http://code.jquery.com/jquery-3.5.1.slim.min.js' integrity='sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=' crossorigin='anonymous')
|
||||
@ -7,4 +7,4 @@ script(src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstra
|
||||
script(src="//cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js")
|
||||
|
||||
<!-- Custom scripts for all pages-->
|
||||
script(src="/js/sb-admin-2.min.js")
|
||||
script(src="sb-admin-2/js/sb-admin-2.min.js")
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
ul#accordionSidebar(class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion")
|
||||
|
||||
+sidebar_brand("SGA", "/")
|
||||
+sidebar_brand(appName, "/")
|
||||
|
||||
+sidebar_divider_my0
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user