hoodcms 5.0.7 → 5.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -6
- package/dist/js/admin.js +5 -5
- package/dist/js/app.js +4 -11
- package/dist/js/core/Alerts.d.ts +22 -0
- package/dist/js/core/Alerts.js +151 -0
- package/dist/js/core/BaseSite.d.ts +6 -0
- package/dist/js/core/BaseSite.js +14 -0
- package/dist/js/core/ColorPicker.d.ts +5 -0
- package/dist/js/core/ColorPicker.js +71 -0
- package/dist/js/core/DataList.d.ts +35 -0
- package/dist/js/core/DataList.js +56 -0
- package/dist/js/core/Editors.d.ts +16 -0
- package/dist/js/core/Editors.js +137 -0
- package/dist/js/core/Handlers.d.ts +47 -0
- package/dist/js/core/Handlers.js +160 -0
- package/dist/js/core/Helpers.d.ts +8 -0
- package/dist/js/core/Helpers.js +50 -0
- package/dist/js/core/HoodApi.d.ts +25 -0
- package/dist/js/core/HoodApi.js +22 -0
- package/dist/js/core/Inline.d.ts +27 -0
- package/dist/js/core/Inline.js +63 -0
- package/dist/js/core/Loader.d.ts +5 -0
- package/dist/js/core/Loader.js +13 -0
- package/dist/js/core/Media.d.ts +113 -0
- package/dist/js/core/Media.js +363 -0
- package/dist/js/core/Modal.d.ts +35 -0
- package/dist/js/core/Modal.js +69 -0
- package/dist/js/core/RandomStringGenerator.d.ts +11 -0
- package/dist/js/core/RandomStringGenerator.js +23 -0
- package/dist/js/core/Response.d.ts +20 -0
- package/dist/js/core/Response.js +13 -0
- package/dist/js/core/Uploader.d.ts +7 -0
- package/dist/js/core/Uploader.js +134 -0
- package/dist/js/core/Validator.d.ts +27 -0
- package/dist/js/core/Validator.js +80 -0
- package/dist/js/extensions/jqueryExtensions.d.ts +11 -0
- package/dist/js/extensions/jqueryExtensions.js +99 -0
- package/dist/js/extensions/numberExtensions.d.ts +8 -0
- package/dist/js/extensions/numberExtensions.js +19 -0
- package/dist/js/extensions/stringExtensions.d.ts +12 -0
- package/dist/js/extensions/stringExtensions.js +49 -0
- package/dist/js/index.d.ts +23 -0
- package/dist/js/index.js +23 -0
- package/dist/js/interfaces/KeyValue.d.ts +4 -0
- package/dist/js/interfaces/KeyValue.js +1 -0
- package/dist/js/login.js +1 -1
- package/dist/js/models/Content.d.ts +50 -0
- package/dist/js/models/Content.js +1 -0
- package/dist/js/models/Property.d.ts +9 -0
- package/dist/js/models/Property.js +2 -0
- package/dist/js/models/Users.d.ts +7 -0
- package/dist/js/models/Users.js +2 -0
- package/package.json +58 -55
- package/src/css/admin.css.map +1 -1
- package/src/css/editor.css.map +1 -1
- package/src/css/install.css.map +1 -1
- package/src/css/login.css.map +1 -1
- package/src/js/admin.js +231 -221
- package/src/js/admin.js.map +1 -1
- package/src/js/app.js +12 -30254
- package/src/js/app.js.map +1 -1
- package/src/js/login.js +1 -1
- package/src/scss/admin.scss +2 -6
- package/src/scss/app.scss +2 -2
- package/src/scss/editor.scss +2 -3
- package/src/scss/install.scss +1 -1
- package/src/scss/login.scss +2 -16
- package/src/ts/admin.ts +2 -6
- package/src/ts/app.ts +0 -2
- package/src/ts/core/BaseSite.ts +21 -0
- package/src/ts/core/Handlers.ts +0 -2
- package/src/ts/core/Helpers.ts +4 -0
- package/src/ts/index.ts +26 -0
- package/src/ts/hood.ts +0 -5
package/src/js/admin.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* hoodcms v5.0.
|
|
2
|
+
* hoodcms v5.0.11
|
|
3
3
|
* A fully customisable content management system built in ASP.NET Core 5 & Bootstrap 5.
|
|
4
4
|
* Written by George Whysall, 2021
|
|
5
5
|
* Released under the GPL-3.0 License.
|
|
6
6
|
*/
|
|
7
7
|
(function (global, factory) {
|
|
8
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(
|
|
9
|
-
typeof define === 'function' && define.amd ? define(['
|
|
10
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.
|
|
11
|
-
})(this, (function (
|
|
8
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('bootstrap'), require('sweetalert2'), require('@simonwep/pickr'), require('tinymce/tinymce'), require('chart.js')) :
|
|
9
|
+
typeof define === 'function' && define.amd ? define(['bootstrap', 'sweetalert2', '@simonwep/pickr', 'tinymce/tinymce', 'chart.js'], factory) :
|
|
10
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap, global.swal, global.Pickr, global.tinymce, global.chart_js));
|
|
11
|
+
})(this, (function (bootstrap, swal, Pickr, tinymce, chart_js) { 'use strict';
|
|
12
12
|
|
|
13
13
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
14
|
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
return Object.freeze(n);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
var swal__default = /*#__PURE__*/_interopDefaultLegacy(swal);
|
|
34
33
|
var bootstrap__namespace = /*#__PURE__*/_interopNamespace(bootstrap);
|
|
34
|
+
var swal__default = /*#__PURE__*/_interopDefaultLegacy(swal);
|
|
35
35
|
var Pickr__default = /*#__PURE__*/_interopDefaultLegacy(Pickr);
|
|
36
36
|
var tinymce__default = /*#__PURE__*/_interopDefaultLegacy(tinymce);
|
|
37
37
|
|
|
@@ -253,176 +253,6 @@
|
|
|
253
253
|
return Alerts;
|
|
254
254
|
}());
|
|
255
255
|
|
|
256
|
-
$.fn.exists = function () {
|
|
257
|
-
return $(this).length;
|
|
258
|
-
};
|
|
259
|
-
$.fn.restrictToSlug = function (restrictPattern) {
|
|
260
|
-
if (restrictPattern === void 0) { restrictPattern = /[^0-9a-zA-Z]*/g; }
|
|
261
|
-
var targets = $(this);
|
|
262
|
-
// The characters inside this pattern are accepted
|
|
263
|
-
// and everything else will be 'cleaned'
|
|
264
|
-
// For example 'ABCdEfGhI5' become 'ABCEGI5'
|
|
265
|
-
var restrictHandler = function () {
|
|
266
|
-
var val = $(this).val();
|
|
267
|
-
var newVal = val.replace(restrictPattern, '');
|
|
268
|
-
// This condition is to prevent selection and keyboard navigation issues
|
|
269
|
-
if (val !== newVal) {
|
|
270
|
-
$(this).val(newVal);
|
|
271
|
-
}
|
|
272
|
-
};
|
|
273
|
-
targets.on('keyup', restrictHandler);
|
|
274
|
-
targets.on('paste', restrictHandler);
|
|
275
|
-
targets.on('change', restrictHandler);
|
|
276
|
-
};
|
|
277
|
-
$.fn.restrictToPageSlug = function (restrictPattern) {
|
|
278
|
-
if (restrictPattern === void 0) { restrictPattern = /[^0-9a-zA-Z-//]*/g; }
|
|
279
|
-
var targets = $(this);
|
|
280
|
-
// The characters inside this pattern are accepted
|
|
281
|
-
// and everything else will be 'cleaned'
|
|
282
|
-
var restrictHandler = function () {
|
|
283
|
-
var val = $(this).val();
|
|
284
|
-
var newVal = val.replace(restrictPattern, '');
|
|
285
|
-
if ((newVal.match(new RegExp("/", "g")) || []).length > 4) {
|
|
286
|
-
var pos = newVal.lastIndexOf('/');
|
|
287
|
-
newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);
|
|
288
|
-
Alerts.warning("You can only have up to 4 '/' characters in a url slug.");
|
|
289
|
-
}
|
|
290
|
-
// This condition is to prevent selection and keyboard navigation issues
|
|
291
|
-
if (val !== newVal) {
|
|
292
|
-
$(this).val(newVal);
|
|
293
|
-
}
|
|
294
|
-
};
|
|
295
|
-
targets.on('keyup', restrictHandler);
|
|
296
|
-
targets.on('paste', restrictHandler);
|
|
297
|
-
targets.on('change', restrictHandler);
|
|
298
|
-
};
|
|
299
|
-
$.fn.restrictToMetaSlug = function (restrictPattern) {
|
|
300
|
-
if (restrictPattern === void 0) { restrictPattern = /[^0-9a-zA-Z.]*/g; }
|
|
301
|
-
var targets = $(this);
|
|
302
|
-
// The characters inside this pattern are accepted
|
|
303
|
-
// and everything else will be 'cleaned'
|
|
304
|
-
var restrictHandler = function () {
|
|
305
|
-
var val = $(this).val();
|
|
306
|
-
var newVal = val.replace(restrictPattern, '');
|
|
307
|
-
if ((newVal.match(new RegExp(".", "g")) || []).length > 1) {
|
|
308
|
-
var pos = newVal.lastIndexOf('.');
|
|
309
|
-
newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);
|
|
310
|
-
Alerts.warning("You can only have up to 1 '.' characters in a meta slug.");
|
|
311
|
-
}
|
|
312
|
-
// This condition is to prevent selection and keyboard navigation issues
|
|
313
|
-
if (val !== newVal) {
|
|
314
|
-
$(this).val(newVal);
|
|
315
|
-
}
|
|
316
|
-
};
|
|
317
|
-
targets.on('keyup', restrictHandler);
|
|
318
|
-
targets.on('paste', restrictHandler);
|
|
319
|
-
targets.on('change', restrictHandler);
|
|
320
|
-
};
|
|
321
|
-
$.fn.characterCounter = function () {
|
|
322
|
-
var targets = $(this);
|
|
323
|
-
var characterCounterHandler = function () {
|
|
324
|
-
var counter = $(this).data('counter');
|
|
325
|
-
var max = Number($(this).attr('maxlength'));
|
|
326
|
-
var len = $(this).val().length;
|
|
327
|
-
$(counter).text(max - len);
|
|
328
|
-
var cls = "text-success";
|
|
329
|
-
if (max - len < max / 10)
|
|
330
|
-
cls = "text-danger";
|
|
331
|
-
$(counter).parent().removeClass('text-success').removeClass('text-danger').addClass(cls);
|
|
332
|
-
};
|
|
333
|
-
targets.on('keyup', characterCounterHandler);
|
|
334
|
-
targets.on('paste', characterCounterHandler);
|
|
335
|
-
targets.on('change', characterCounterHandler);
|
|
336
|
-
};
|
|
337
|
-
$.fn.warningAlert = function () {
|
|
338
|
-
var targets = $(this);
|
|
339
|
-
var warningAlertHandler = function (e) {
|
|
340
|
-
e.preventDefault();
|
|
341
|
-
var warningAlertCallback = function (result) {
|
|
342
|
-
if (result.isConfirmed) {
|
|
343
|
-
var url = $(e.currentTarget).attr('href');
|
|
344
|
-
window.location.href = url;
|
|
345
|
-
}
|
|
346
|
-
};
|
|
347
|
-
Alerts.confirm({
|
|
348
|
-
title: $(e.currentTarget).data('title'),
|
|
349
|
-
html: $(e.currentTarget).data('warning'),
|
|
350
|
-
footer: $(e.currentTarget).data('footer'),
|
|
351
|
-
icon: 'warning'
|
|
352
|
-
}, warningAlertCallback);
|
|
353
|
-
return false;
|
|
354
|
-
};
|
|
355
|
-
targets.on('click', warningAlertHandler);
|
|
356
|
-
};
|
|
357
|
-
|
|
358
|
-
Number.prototype.formatCurrency = function (currency) {
|
|
359
|
-
return currency + " " + this.toFixed(2).replace(/./g, function (c, i, a) {
|
|
360
|
-
return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
|
|
361
|
-
});
|
|
362
|
-
};
|
|
363
|
-
Number.prototype.formatKilobytes = function () {
|
|
364
|
-
var n = this / 1024;
|
|
365
|
-
return n.toFixed(0).replace(/./g, function (c, i, a) {
|
|
366
|
-
return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
|
|
367
|
-
}) + "Kb";
|
|
368
|
-
};
|
|
369
|
-
Number.prototype.formatMegabytes = function () {
|
|
370
|
-
var n = this / 1024;
|
|
371
|
-
n = n / 1024;
|
|
372
|
-
return n.toFixed(0).replace(/./g, function (c, i, a) {
|
|
373
|
-
return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
|
|
374
|
-
}) + "Mb";
|
|
375
|
-
};
|
|
376
|
-
|
|
377
|
-
String.prototype.htmlEncode = function () {
|
|
378
|
-
//create a in-memory div, set it's inner text(which jQuery automatically encodes)
|
|
379
|
-
//then grab the encoded contents back out. The div never exists on the page.
|
|
380
|
-
return $('<div/>').text(this).html();
|
|
381
|
-
};
|
|
382
|
-
String.prototype.htmlDecode = function () {
|
|
383
|
-
return $('<div/>').html(this).text();
|
|
384
|
-
};
|
|
385
|
-
String.prototype.contains = function (it) {
|
|
386
|
-
return this.indexOf(it) !== -1;
|
|
387
|
-
};
|
|
388
|
-
String.prototype.pick = function (min, max) {
|
|
389
|
-
var n, chars = '';
|
|
390
|
-
if (typeof max === 'undefined') {
|
|
391
|
-
n = min;
|
|
392
|
-
}
|
|
393
|
-
else {
|
|
394
|
-
n = min + Math.floor(Math.random() * (max - min));
|
|
395
|
-
}
|
|
396
|
-
for (var i = 0; i < n; i++) {
|
|
397
|
-
chars += this.charAt(Math.floor(Math.random() * this.length));
|
|
398
|
-
}
|
|
399
|
-
return chars;
|
|
400
|
-
};
|
|
401
|
-
// Credit to @Christoph: http://stackoverflow.com/a/962890/464744
|
|
402
|
-
String.prototype.shuffle = function () {
|
|
403
|
-
var array = this.split('');
|
|
404
|
-
var tmp, current, top = array.length;
|
|
405
|
-
if (top)
|
|
406
|
-
while (--top) {
|
|
407
|
-
current = Math.floor(Math.random() * (top + 1));
|
|
408
|
-
tmp = array[current];
|
|
409
|
-
array[current] = array[top];
|
|
410
|
-
array[top] = tmp;
|
|
411
|
-
}
|
|
412
|
-
return array.join('');
|
|
413
|
-
};
|
|
414
|
-
String.prototype.toSeoUrl = function () {
|
|
415
|
-
var output = this.replace(/[^a-zA-Z0-9]/g, ' ').replace(/\s+/g, "-").toLowerCase();
|
|
416
|
-
/* remove first dash */
|
|
417
|
-
if (output.charAt(0) === '-')
|
|
418
|
-
output = output.substring(1);
|
|
419
|
-
/* remove last dash */
|
|
420
|
-
var last = output.length - 1;
|
|
421
|
-
if (output.charAt(last) === '-')
|
|
422
|
-
output = output.substring(0, last);
|
|
423
|
-
return output;
|
|
424
|
-
};
|
|
425
|
-
|
|
426
256
|
var ColorPickers = /** @class */ (function () {
|
|
427
257
|
function ColorPickers() {
|
|
428
258
|
}
|
|
@@ -493,21 +323,6 @@
|
|
|
493
323
|
return ColorPickers;
|
|
494
324
|
}());
|
|
495
325
|
|
|
496
|
-
var Response = /** @class */ (function () {
|
|
497
|
-
function Response() {
|
|
498
|
-
}
|
|
499
|
-
Response.process = function (data, autoHide) {
|
|
500
|
-
if (autoHide === void 0) { autoHide = 5000; }
|
|
501
|
-
if (data.success) {
|
|
502
|
-
Alerts.success(data.message, data.title, autoHide);
|
|
503
|
-
}
|
|
504
|
-
else {
|
|
505
|
-
Alerts.error(data.errors, data.title, autoHide);
|
|
506
|
-
}
|
|
507
|
-
};
|
|
508
|
-
return Response;
|
|
509
|
-
}());
|
|
510
|
-
|
|
511
326
|
var Inline = /** @class */ (function () {
|
|
512
327
|
function Inline() {
|
|
513
328
|
}
|
|
@@ -635,6 +450,21 @@
|
|
|
635
450
|
return DataList;
|
|
636
451
|
}());
|
|
637
452
|
|
|
453
|
+
var Response = /** @class */ (function () {
|
|
454
|
+
function Response() {
|
|
455
|
+
}
|
|
456
|
+
Response.process = function (data, autoHide) {
|
|
457
|
+
if (autoHide === void 0) { autoHide = 5000; }
|
|
458
|
+
if (data.success) {
|
|
459
|
+
Alerts.success(data.message, data.title, autoHide);
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
Alerts.error(data.errors, data.title, autoHide);
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
return Response;
|
|
466
|
+
}());
|
|
467
|
+
|
|
638
468
|
var ModalController = /** @class */ (function () {
|
|
639
469
|
function ModalController(options) {
|
|
640
470
|
if (options === void 0) { options = null; }
|
|
@@ -1603,6 +1433,216 @@
|
|
|
1603
1433
|
return HoodApi;
|
|
1604
1434
|
}());
|
|
1605
1435
|
|
|
1436
|
+
var Loader = /** @class */ (function () {
|
|
1437
|
+
function Loader() {
|
|
1438
|
+
new CustomEvent('loader-show');
|
|
1439
|
+
new CustomEvent('loader-hide');
|
|
1440
|
+
}
|
|
1441
|
+
Loader.show = function () {
|
|
1442
|
+
$('body').trigger('loader-show');
|
|
1443
|
+
};
|
|
1444
|
+
Loader.hide = function () {
|
|
1445
|
+
$('body').trigger('loader-hide');
|
|
1446
|
+
};
|
|
1447
|
+
return Loader;
|
|
1448
|
+
}());
|
|
1449
|
+
new Loader();
|
|
1450
|
+
|
|
1451
|
+
var RandomStringGenerator = /** @class */ (function () {
|
|
1452
|
+
function RandomStringGenerator(options) {
|
|
1453
|
+
this.options = {
|
|
1454
|
+
specials: '!@#$&*',
|
|
1455
|
+
alpha: 'abcdefghijklmnopqrstuvwxyz',
|
|
1456
|
+
numeric: '0123456789',
|
|
1457
|
+
numSpecial: 2
|
|
1458
|
+
};
|
|
1459
|
+
this.options = __assign(__assign({}, this.options), options);
|
|
1460
|
+
}
|
|
1461
|
+
RandomStringGenerator.prototype.generate = function (length) {
|
|
1462
|
+
var password = '';
|
|
1463
|
+
var len = Math.ceil((length - this.options.numSpecial) / 2);
|
|
1464
|
+
for (var i = 0; i < len; i++) {
|
|
1465
|
+
password += this.options.alpha.charAt(Math.floor(Math.random() * this.options.alpha.length));
|
|
1466
|
+
password += this.options.numeric.charAt(Math.floor(Math.random() * this.options.numeric.length));
|
|
1467
|
+
}
|
|
1468
|
+
for (var j = 0; j < this.options.numSpecial; j++)
|
|
1469
|
+
password += this.options.specials.charAt(Math.floor(Math.random() * this.options.specials.length));
|
|
1470
|
+
password = password.split('').sort(function () { return 0.5 - Math.random(); }).join('');
|
|
1471
|
+
return password;
|
|
1472
|
+
};
|
|
1473
|
+
return RandomStringGenerator;
|
|
1474
|
+
}());
|
|
1475
|
+
|
|
1476
|
+
$.fn.exists = function () {
|
|
1477
|
+
return $(this).length;
|
|
1478
|
+
};
|
|
1479
|
+
$.fn.restrictToSlug = function (restrictPattern) {
|
|
1480
|
+
if (restrictPattern === void 0) { restrictPattern = /[^0-9a-zA-Z]*/g; }
|
|
1481
|
+
var targets = $(this);
|
|
1482
|
+
// The characters inside this pattern are accepted
|
|
1483
|
+
// and everything else will be 'cleaned'
|
|
1484
|
+
// For example 'ABCdEfGhI5' become 'ABCEGI5'
|
|
1485
|
+
var restrictHandler = function () {
|
|
1486
|
+
var val = $(this).val();
|
|
1487
|
+
var newVal = val.replace(restrictPattern, '');
|
|
1488
|
+
// This condition is to prevent selection and keyboard navigation issues
|
|
1489
|
+
if (val !== newVal) {
|
|
1490
|
+
$(this).val(newVal);
|
|
1491
|
+
}
|
|
1492
|
+
};
|
|
1493
|
+
targets.on('keyup', restrictHandler);
|
|
1494
|
+
targets.on('paste', restrictHandler);
|
|
1495
|
+
targets.on('change', restrictHandler);
|
|
1496
|
+
};
|
|
1497
|
+
$.fn.restrictToPageSlug = function (restrictPattern) {
|
|
1498
|
+
if (restrictPattern === void 0) { restrictPattern = /[^0-9a-zA-Z-//]*/g; }
|
|
1499
|
+
var targets = $(this);
|
|
1500
|
+
// The characters inside this pattern are accepted
|
|
1501
|
+
// and everything else will be 'cleaned'
|
|
1502
|
+
var restrictHandler = function () {
|
|
1503
|
+
var val = $(this).val();
|
|
1504
|
+
var newVal = val.replace(restrictPattern, '');
|
|
1505
|
+
if ((newVal.match(new RegExp("/", "g")) || []).length > 4) {
|
|
1506
|
+
var pos = newVal.lastIndexOf('/');
|
|
1507
|
+
newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);
|
|
1508
|
+
Alerts.warning("You can only have up to 4 '/' characters in a url slug.");
|
|
1509
|
+
}
|
|
1510
|
+
// This condition is to prevent selection and keyboard navigation issues
|
|
1511
|
+
if (val !== newVal) {
|
|
1512
|
+
$(this).val(newVal);
|
|
1513
|
+
}
|
|
1514
|
+
};
|
|
1515
|
+
targets.on('keyup', restrictHandler);
|
|
1516
|
+
targets.on('paste', restrictHandler);
|
|
1517
|
+
targets.on('change', restrictHandler);
|
|
1518
|
+
};
|
|
1519
|
+
$.fn.restrictToMetaSlug = function (restrictPattern) {
|
|
1520
|
+
if (restrictPattern === void 0) { restrictPattern = /[^0-9a-zA-Z.]*/g; }
|
|
1521
|
+
var targets = $(this);
|
|
1522
|
+
// The characters inside this pattern are accepted
|
|
1523
|
+
// and everything else will be 'cleaned'
|
|
1524
|
+
var restrictHandler = function () {
|
|
1525
|
+
var val = $(this).val();
|
|
1526
|
+
var newVal = val.replace(restrictPattern, '');
|
|
1527
|
+
if ((newVal.match(new RegExp(".", "g")) || []).length > 1) {
|
|
1528
|
+
var pos = newVal.lastIndexOf('.');
|
|
1529
|
+
newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);
|
|
1530
|
+
Alerts.warning("You can only have up to 1 '.' characters in a meta slug.");
|
|
1531
|
+
}
|
|
1532
|
+
// This condition is to prevent selection and keyboard navigation issues
|
|
1533
|
+
if (val !== newVal) {
|
|
1534
|
+
$(this).val(newVal);
|
|
1535
|
+
}
|
|
1536
|
+
};
|
|
1537
|
+
targets.on('keyup', restrictHandler);
|
|
1538
|
+
targets.on('paste', restrictHandler);
|
|
1539
|
+
targets.on('change', restrictHandler);
|
|
1540
|
+
};
|
|
1541
|
+
$.fn.characterCounter = function () {
|
|
1542
|
+
var targets = $(this);
|
|
1543
|
+
var characterCounterHandler = function () {
|
|
1544
|
+
var counter = $(this).data('counter');
|
|
1545
|
+
var max = Number($(this).attr('maxlength'));
|
|
1546
|
+
var len = $(this).val().length;
|
|
1547
|
+
$(counter).text(max - len);
|
|
1548
|
+
var cls = "text-success";
|
|
1549
|
+
if (max - len < max / 10)
|
|
1550
|
+
cls = "text-danger";
|
|
1551
|
+
$(counter).parent().removeClass('text-success').removeClass('text-danger').addClass(cls);
|
|
1552
|
+
};
|
|
1553
|
+
targets.on('keyup', characterCounterHandler);
|
|
1554
|
+
targets.on('paste', characterCounterHandler);
|
|
1555
|
+
targets.on('change', characterCounterHandler);
|
|
1556
|
+
};
|
|
1557
|
+
$.fn.warningAlert = function () {
|
|
1558
|
+
var targets = $(this);
|
|
1559
|
+
var warningAlertHandler = function (e) {
|
|
1560
|
+
e.preventDefault();
|
|
1561
|
+
var warningAlertCallback = function (result) {
|
|
1562
|
+
if (result.isConfirmed) {
|
|
1563
|
+
var url = $(e.currentTarget).attr('href');
|
|
1564
|
+
window.location.href = url;
|
|
1565
|
+
}
|
|
1566
|
+
};
|
|
1567
|
+
Alerts.confirm({
|
|
1568
|
+
title: $(e.currentTarget).data('title'),
|
|
1569
|
+
html: $(e.currentTarget).data('warning'),
|
|
1570
|
+
footer: $(e.currentTarget).data('footer'),
|
|
1571
|
+
icon: 'warning'
|
|
1572
|
+
}, warningAlertCallback);
|
|
1573
|
+
return false;
|
|
1574
|
+
};
|
|
1575
|
+
targets.on('click', warningAlertHandler);
|
|
1576
|
+
};
|
|
1577
|
+
|
|
1578
|
+
Number.prototype.formatCurrency = function (currency) {
|
|
1579
|
+
return currency + " " + this.toFixed(2).replace(/./g, function (c, i, a) {
|
|
1580
|
+
return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
|
|
1581
|
+
});
|
|
1582
|
+
};
|
|
1583
|
+
Number.prototype.formatKilobytes = function () {
|
|
1584
|
+
var n = this / 1024;
|
|
1585
|
+
return n.toFixed(0).replace(/./g, function (c, i, a) {
|
|
1586
|
+
return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
|
|
1587
|
+
}) + "Kb";
|
|
1588
|
+
};
|
|
1589
|
+
Number.prototype.formatMegabytes = function () {
|
|
1590
|
+
var n = this / 1024;
|
|
1591
|
+
n = n / 1024;
|
|
1592
|
+
return n.toFixed(0).replace(/./g, function (c, i, a) {
|
|
1593
|
+
return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
|
|
1594
|
+
}) + "Mb";
|
|
1595
|
+
};
|
|
1596
|
+
|
|
1597
|
+
String.prototype.htmlEncode = function () {
|
|
1598
|
+
//create a in-memory div, set it's inner text(which jQuery automatically encodes)
|
|
1599
|
+
//then grab the encoded contents back out. The div never exists on the page.
|
|
1600
|
+
return $('<div/>').text(this).html();
|
|
1601
|
+
};
|
|
1602
|
+
String.prototype.htmlDecode = function () {
|
|
1603
|
+
return $('<div/>').html(this).text();
|
|
1604
|
+
};
|
|
1605
|
+
String.prototype.contains = function (it) {
|
|
1606
|
+
return this.indexOf(it) !== -1;
|
|
1607
|
+
};
|
|
1608
|
+
String.prototype.pick = function (min, max) {
|
|
1609
|
+
var n, chars = '';
|
|
1610
|
+
if (typeof max === 'undefined') {
|
|
1611
|
+
n = min;
|
|
1612
|
+
}
|
|
1613
|
+
else {
|
|
1614
|
+
n = min + Math.floor(Math.random() * (max - min));
|
|
1615
|
+
}
|
|
1616
|
+
for (var i = 0; i < n; i++) {
|
|
1617
|
+
chars += this.charAt(Math.floor(Math.random() * this.length));
|
|
1618
|
+
}
|
|
1619
|
+
return chars;
|
|
1620
|
+
};
|
|
1621
|
+
// Credit to @Christoph: http://stackoverflow.com/a/962890/464744
|
|
1622
|
+
String.prototype.shuffle = function () {
|
|
1623
|
+
var array = this.split('');
|
|
1624
|
+
var tmp, current, top = array.length;
|
|
1625
|
+
if (top)
|
|
1626
|
+
while (--top) {
|
|
1627
|
+
current = Math.floor(Math.random() * (top + 1));
|
|
1628
|
+
tmp = array[current];
|
|
1629
|
+
array[current] = array[top];
|
|
1630
|
+
array[top] = tmp;
|
|
1631
|
+
}
|
|
1632
|
+
return array.join('');
|
|
1633
|
+
};
|
|
1634
|
+
String.prototype.toSeoUrl = function () {
|
|
1635
|
+
var output = this.replace(/[^a-zA-Z0-9]/g, ' ').replace(/\s+/g, "-").toLowerCase();
|
|
1636
|
+
/* remove first dash */
|
|
1637
|
+
if (output.charAt(0) === '-')
|
|
1638
|
+
output = output.substring(1);
|
|
1639
|
+
/* remove last dash */
|
|
1640
|
+
var last = output.length - 1;
|
|
1641
|
+
if (output.charAt(last) === '-')
|
|
1642
|
+
output = output.substring(0, last);
|
|
1643
|
+
return output;
|
|
1644
|
+
};
|
|
1645
|
+
|
|
1606
1646
|
var HomeController = /** @class */ (function () {
|
|
1607
1647
|
function HomeController() {
|
|
1608
1648
|
if ($('#admin-chart-area').length) {
|
|
@@ -2039,31 +2079,6 @@
|
|
|
2039
2079
|
return PropertyController;
|
|
2040
2080
|
}());
|
|
2041
2081
|
|
|
2042
|
-
var RandomStringGenerator = /** @class */ (function () {
|
|
2043
|
-
function RandomStringGenerator(options) {
|
|
2044
|
-
this.options = {
|
|
2045
|
-
specials: '!@#$&*',
|
|
2046
|
-
alpha: 'abcdefghijklmnopqrstuvwxyz',
|
|
2047
|
-
numeric: '0123456789',
|
|
2048
|
-
numSpecial: 2
|
|
2049
|
-
};
|
|
2050
|
-
this.options = __assign(__assign({}, this.options), options);
|
|
2051
|
-
}
|
|
2052
|
-
RandomStringGenerator.prototype.generate = function (length) {
|
|
2053
|
-
var password = '';
|
|
2054
|
-
var len = Math.ceil((length - this.options.numSpecial) / 2);
|
|
2055
|
-
for (var i = 0; i < len; i++) {
|
|
2056
|
-
password += this.options.alpha.charAt(Math.floor(Math.random() * this.options.alpha.length));
|
|
2057
|
-
password += this.options.numeric.charAt(Math.floor(Math.random() * this.options.numeric.length));
|
|
2058
|
-
}
|
|
2059
|
-
for (var j = 0; j < this.options.numSpecial; j++)
|
|
2060
|
-
password += this.options.specials.charAt(Math.floor(Math.random() * this.options.specials.length));
|
|
2061
|
-
password = password.split('').sort(function () { return 0.5 - Math.random(); }).join('');
|
|
2062
|
-
return password;
|
|
2063
|
-
};
|
|
2064
|
-
return RandomStringGenerator;
|
|
2065
|
-
}());
|
|
2066
|
-
|
|
2067
2082
|
var UsersController = /** @class */ (function () {
|
|
2068
2083
|
function UsersController() {
|
|
2069
2084
|
this.initLists();
|
|
@@ -2515,7 +2530,6 @@
|
|
|
2515
2530
|
return PropertyImporter;
|
|
2516
2531
|
}());
|
|
2517
2532
|
|
|
2518
|
-
/// <reference types="jquery.slimscroll" />
|
|
2519
2533
|
var Admin = /** @class */ (function (_super) {
|
|
2520
2534
|
__extends(Admin, _super);
|
|
2521
2535
|
function Admin() {
|
|
@@ -2576,10 +2590,6 @@
|
|
|
2576
2590
|
}(HoodApi));
|
|
2577
2591
|
window.hood = new Admin();
|
|
2578
2592
|
|
|
2579
|
-
exports.Alerts = Alerts;
|
|
2580
|
-
|
|
2581
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2582
|
-
|
|
2583
2593
|
}));
|
|
2584
2594
|
if (typeof this !== 'undefined' && this.hood){ this.hoodCMS = this.Hood = this.hoodCMS = this.HoodCMS = this.hood }
|
|
2585
2595
|
//# sourceMappingURL=admin.js.map
|