hoodcms 6.1.6 → 6.1.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../node_modules/jquery-toast-plugin/dist/jquery.toast.min.js","../../../../src/ts/core/Alerts.ts","../../../../src/ts/core/ColorPicker.ts","../../../../src/ts/core/Inline.ts","../../../../src/ts/core/DataList.ts","../../../../src/ts/core/Response.ts","../../../../src/ts/core/Modal.ts","../../../../src/ts/core/Validator.ts","../../../../src/ts/core/Media.ts","../../../../src/ts/core/Editors.ts","../../../../src/ts/core/Handlers.ts","../../../../src/ts/core/Uploader.ts","../../../../src/ts/core/HoodApi.ts","../../../../src/ts/core/Loader.ts","../../../../src/ts/core/RandomStringGenerator.ts","../../../../src/ts/extensions/jqueryExtensions.ts","../../../../src/ts/extensions/numberExtensions.ts","../../../../src/ts/extensions/stringExtensions.ts","../../../../src/ts/admin/ContentController.ts","../../../../src/ts/admin/ContentTypeController.ts","../../../../src/ts/admin/HomeController.ts","../../../../src/ts/admin/LogsController.ts","../../../../src/ts/admin/MediaController.ts","../../../../src/ts/admin/PropertyController.ts","../../../../src/ts/admin/PropertyImporter.ts","../../../../src/ts/admin/ThemesController.ts","../../../../src/ts/admin/UsersController.ts","../../../../src/ts/admin.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"function\"!=typeof Object.create&&(Object.create=function(t){function o(){}return o.prototype=t,new o}),function(t,o,i,s){\"use strict\";var n={_positionClasses:[\"bottom-left\",\"bottom-right\",\"top-right\",\"top-left\",\"bottom-center\",\"top-center\",\"mid-center\"],_defaultIcons:[\"success\",\"error\",\"info\",\"warning\"],init:function(o,i){this.prepareOptions(o,t.toast.options),this.process()},prepareOptions:function(o,i){var s={};\"string\"==typeof o||o instanceof Array?s.text=o:s=o,this.options=t.extend({},i,s)},process:function(){this.setup(),this.addToDom(),this.position(),this.bindToast(),this.animate()},setup:function(){var o=\"\";if(this._toastEl=this._toastEl||t(\"<div></div>\",{\"class\":\"jq-toast-single\"}),o+='<span class=\"jq-toast-loader\"></span>',this.options.allowToastClose&&(o+='<span class=\"close-jq-toast-single\">&times;</span>'),this.options.text instanceof Array){this.options.heading&&(o+='<h2 class=\"jq-toast-heading\">'+this.options.heading+\"</h2>\"),o+='<ul class=\"jq-toast-ul\">';for(var i=0;i<this.options.text.length;i++)o+='<li class=\"jq-toast-li\" id=\"jq-toast-item-'+i+'\">'+this.options.text[i]+\"</li>\";o+=\"</ul>\"}else this.options.heading&&(o+='<h2 class=\"jq-toast-heading\">'+this.options.heading+\"</h2>\"),o+=this.options.text;this._toastEl.html(o),this.options.bgColor!==!1&&this._toastEl.css(\"background-color\",this.options.bgColor),this.options.textColor!==!1&&this._toastEl.css(\"color\",this.options.textColor),this.options.textAlign&&this._toastEl.css(\"text-align\",this.options.textAlign),this.options.icon!==!1&&(this._toastEl.addClass(\"jq-has-icon\"),-1!==t.inArray(this.options.icon,this._defaultIcons)&&this._toastEl.addClass(\"jq-icon-\"+this.options.icon)),this.options[\"class\"]!==!1&&this._toastEl.addClass(this.options[\"class\"])},position:function(){\"string\"==typeof this.options.position&&-1!==t.inArray(this.options.position,this._positionClasses)?\"bottom-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,bottom:20}):\"top-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,top:20}):\"mid-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,top:t(o).outerHeight()/2-this._container.outerHeight()/2}):this._container.addClass(this.options.position):\"object\"==typeof this.options.position?this._container.css({top:this.options.position.top?this.options.position.top:\"auto\",bottom:this.options.position.bottom?this.options.position.bottom:\"auto\",left:this.options.position.left?this.options.position.left:\"auto\",right:this.options.position.right?this.options.position.right:\"auto\"}):this._container.addClass(\"bottom-left\")},bindToast:function(){var t=this;this._toastEl.on(\"afterShown\",function(){t.processLoader()}),this._toastEl.find(\".close-jq-toast-single\").on(\"click\",function(o){o.preventDefault(),\"fade\"===t.options.showHideTransition?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.fadeOut(function(){t._toastEl.trigger(\"afterHidden\")})):\"slide\"===t.options.showHideTransition?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.slideUp(function(){t._toastEl.trigger(\"afterHidden\")})):(t._toastEl.trigger(\"beforeHide\"),t._toastEl.hide(function(){t._toastEl.trigger(\"afterHidden\")}))}),\"function\"==typeof this.options.beforeShow&&this._toastEl.on(\"beforeShow\",function(){t.options.beforeShow()}),\"function\"==typeof this.options.afterShown&&this._toastEl.on(\"afterShown\",function(){t.options.afterShown()}),\"function\"==typeof this.options.beforeHide&&this._toastEl.on(\"beforeHide\",function(){t.options.beforeHide()}),\"function\"==typeof this.options.afterHidden&&this._toastEl.on(\"afterHidden\",function(){t.options.afterHidden()})},addToDom:function(){var o=t(\".jq-toast-wrap\");if(0===o.length?(o=t(\"<div></div>\",{\"class\":\"jq-toast-wrap\"}),t(\"body\").append(o)):(!this.options.stack||isNaN(parseInt(this.options.stack,10)))&&o.empty(),o.find(\".jq-toast-single:hidden\").remove(),o.append(this._toastEl),this.options.stack&&!isNaN(parseInt(this.options.stack),10)){var i=o.find(\".jq-toast-single\").length,s=i-this.options.stack;s>0&&t(\".jq-toast-wrap\").find(\".jq-toast-single\").slice(0,s).remove()}this._container=o},canAutoHide:function(){return this.options.hideAfter!==!1&&!isNaN(parseInt(this.options.hideAfter,10))},processLoader:function(){if(!this.canAutoHide()||this.options.loader===!1)return!1;var t=this._toastEl.find(\".jq-toast-loader\"),o=(this.options.hideAfter-400)/1e3+\"s\",i=this.options.loaderBg,s=t.attr(\"style\")||\"\";s=s.substring(0,s.indexOf(\"-webkit-transition\")),s+=\"-webkit-transition: width \"+o+\" ease-in; -o-transition: width \"+o+\" ease-in; transition: width \"+o+\" ease-in; background-color: \"+i+\";\",t.attr(\"style\",s).addClass(\"jq-toast-loaded\")},animate:function(){var t=this;if(this._toastEl.hide(),this._toastEl.trigger(\"beforeShow\"),\"fade\"===this.options.showHideTransition.toLowerCase()?this._toastEl.fadeIn(function(){t._toastEl.trigger(\"afterShown\")}):\"slide\"===this.options.showHideTransition.toLowerCase()?this._toastEl.slideDown(function(){t._toastEl.trigger(\"afterShown\")}):this._toastEl.show(function(){t._toastEl.trigger(\"afterShown\")}),this.canAutoHide()){var t=this;o.setTimeout(function(){\"fade\"===t.options.showHideTransition.toLowerCase()?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.fadeOut(function(){t._toastEl.trigger(\"afterHidden\")})):\"slide\"===t.options.showHideTransition.toLowerCase()?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.slideUp(function(){t._toastEl.trigger(\"afterHidden\")})):(t._toastEl.trigger(\"beforeHide\"),t._toastEl.hide(function(){t._toastEl.trigger(\"afterHidden\")}))},this.options.hideAfter)}},reset:function(o){\"all\"===o?t(\".jq-toast-wrap\").remove():this._toastEl.remove()},update:function(t){this.prepareOptions(t,this.options),this.setup(),this.bindToast()}};t.toast=function(t){var o=Object.create(n);return o.init(t,this),{reset:function(t){o.reset(t)},update:function(t){o.update(t)}}},t.toast.options={text:\"\",heading:\"\",showHideTransition:\"fade\",allowToastClose:!0,hideAfter:3e3,loader:!0,loaderBg:\"#9EC600\",stack:5,position:\"bottom-left\",bgColor:!1,textColor:!1,textAlign:\"left\",icon:!1,beforeShow:function(){},afterShown:function(){},beforeHide:function(){},afterHidden:function(){}}}(jQuery,window,document);","import Swal, { SweetAlertOptions, SweetAlertResult } from 'sweetalert2';\r\nimport 'jquery-toast-plugin';\r\n\r\nconst BootstrapSwal = Swal.mixin({\r\n customClass: {\r\n confirmButton: 'btn btn-success m-1 px-3',\r\n cancelButton: 'btn btn-danger m-1 px-3'\r\n },\r\n buttonsStyling: false\r\n});\r\n\r\nexport class Alerts {\r\n\r\n static log(message: any, type: 'message' | 'error' | 'warning' | 'info' = 'message') {\r\n if (!document.body.classList.contains('dev-mode')) {\r\n return;\r\n }\r\n switch (type) {\r\n case 'error':\r\n console.error(message);\r\n break;\r\n case 'message':\r\n console.log(message);\r\n break;\r\n case 'warning':\r\n console.warn(message);\r\n break;\r\n case 'info':\r\n console.info(message);\r\n break;\r\n }\r\n }\r\n\r\n static error(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#d0100b',\r\n textColor: 'white', \r\n hideAfter: hideAfter\r\n });\r\n\r\n }\r\n\r\n static warning(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#ef9007',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static message(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#222222',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static success(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#28a745',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static alert(message: string, title: string = null, icon: string = 'info', hideAfter: number = 10000) {\r\n\r\n switch (icon) {\r\n case 'error':\r\n Alerts.error(message, title, hideAfter);\r\n break;\r\n case 'warning':\r\n Alerts.warning(message, title, hideAfter);\r\n break;\r\n case 'info':\r\n Alerts.message(message, title, hideAfter);\r\n break;\r\n case 'success':\r\n Alerts.success(message, title, hideAfter);\r\n break;\r\n }\r\n\r\n }\r\n\r\n static sweetAlert(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n BootstrapSwal.fire(options).then(function (result: any) {\r\n callback(result);\r\n });\r\n }\r\n\r\n static confirm(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n\r\n let baseOptions: SweetAlertOptions = {\r\n showCancelButton: true,\r\n footer: null,\r\n title: 'Are you sure?',\r\n html: 'Are you sure you want to do this?',\r\n confirmButtonText: 'Ok', \r\n cancelButtonText:'Cancel'\r\n };\r\n\r\n Alerts.sweetAlert({...baseOptions, ...options}, callback);\r\n }\r\n\r\n static prompt(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n\r\n let baseOptions: SweetAlertOptions = {\r\n input: 'text',\r\n inputAttributes: {\r\n autocapitalize: 'off'\r\n },\r\n showCancelButton: true,\r\n icon: 'info',\r\n footer: '<span class=\"text-warning\"><i class=\"fa fa-exclamation-triangle\"></i> This cannot be undone.</span>', \r\n confirmButtonText: 'Ok', \r\n cancelButtonText: 'Cancel'\r\n };\r\n\r\n Alerts.sweetAlert({...baseOptions, ...options}, callback);\r\n }\r\n\r\n log(message: string, type: 'message' | 'error' | 'warning' | 'info' = 'message') {\r\n Alerts.log(message, type);\r\n }\r\n\r\n error(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.error(message, title, hideAfter);\r\n }\r\n\r\n warning(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.warning(message, title, hideAfter);\r\n }\r\n\r\n message(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.message(message, title, hideAfter);\r\n }\r\n\r\n success(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.success(message, title, hideAfter);\r\n }\r\n\r\n alert(message: string, title: string = null, icon: string = 'info', hideAfter: number = 10000) {\r\n Alerts.alert(message, message, icon, hideAfter);\r\n }\r\n\r\n sweetAlert(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.sweetAlert(options, callback);\r\n }\r\n\r\n confirm(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.confirm(options, callback);\r\n }\r\n\r\n prompt(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.prompt(options, callback);\r\n }\r\n\r\n}","import Pickr from '@simonwep/pickr';\r\nimport '@simonwep/pickr';\r\n\r\nexport class ColorPickers {\r\n constructor() {\r\n \r\n }\r\n\r\n loadColorPickers(tag: string = '.color-picker') {\r\n\r\n let updateColorFieldValue = function (color: Pickr.HSVaColor, eventSource: any, instance: any) {\r\n let elemId = $(instance._root.button).parent().data('target');\r\n $(instance._root.button).parent().css({ 'background-color': color.toHEXA().toString() });\r\n let colorHex = instance.getColor().toHEXA();\r\n var result = \"\";\r\n for (let i = colorHex.length - 1; i >= 0; i--) {\r\n result = colorHex[i] + result;\r\n }\r\n $(elemId).val('#' + result);\r\n $(elemId).change();\r\n };\r\n\r\n var pickrs = [];\r\n // Simple example, see optional options for more configuration.\r\n $(tag).each(function (index: number, elem: HTMLElement) {\r\n\r\n let lockOpacity = true;\r\n if ($(this).data('opacity') == 'true') {\r\n lockOpacity = false;\r\n }\r\n\r\n let pickr = Pickr.create({\r\n el: elem.children[0] as HTMLElement,\r\n appClass: 'custom-class',\r\n theme: 'monolith',\r\n useAsButton: true,\r\n default: $(this).data('default') || 'none',\r\n lockOpacity: lockOpacity,\r\n defaultRepresentation: 'HEXA',\r\n position: 'bottom-end',\r\n components: {\r\n opacity: true,\r\n hue: true,\r\n\r\n interaction: {\r\n hex: false,\r\n rgba: false,\r\n hsva: false,\r\n input: true,\r\n clear: true\r\n }\r\n }\r\n })\r\n\r\n .on('init', function (instance: any) {\r\n let elemId = $(instance._root.button).parent().data('target');\r\n let value = $(elemId).val();\r\n $(instance._root.button).parent().on('click', $.proxy(function () {\r\n this.show();\r\n }, instance));\r\n $(elemId).on('click', $.proxy(function () {\r\n this.show();\r\n }, instance));\r\n if (value) {\r\n instance.setColor(value);\r\n updateColorFieldValue(instance.getColor(), null, instance);\r\n }\r\n })\r\n\r\n .on('clear', function (instance: any) {\r\n let elemId = $(instance._root.button).parent().data('target');\r\n instance.setColor('transparent');\r\n updateColorFieldValue(instance.getColor(), null, instance);\r\n $(elemId).val('');\r\n $(elemId).change();\r\n })\r\n\r\n .on('change', updateColorFieldValue);\r\n\r\n pickrs.push(pickr);\r\n\r\n });\r\n\r\n }\r\n}","import { Alerts } from \"./Alerts\";\r\nimport { Response } from \"./Response\";\r\n\r\nexport interface InlineOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\nexport class Inline {\r\n static load(tag: HTMLElement, options: InlineOptions) {\r\n\r\n let $tag = $(tag) as JQuery<HTMLElement>;\r\n $tag.addClass('loading');\r\n if (options.onLoad) {\r\n options.onLoad(tag);\r\n }\r\n\r\n let url: string = $tag.data('url');\r\n $.get(url, function (data: string) {\r\n\r\n if (options.onRender) {\r\n data = options.onRender(data, tag);\r\n }\r\n\r\n $tag.html(data);\r\n $tag.removeClass('loading');\r\n\r\n if (options.onComplete) {\r\n options.onComplete(data, tag);\r\n }\r\n\r\n })\r\n .fail(options.onError ?? Inline.handleError);\r\n }\r\n\r\n static task(url: string, sender: HTMLElement,\r\n complete: (data: Response, sender?: HTMLElement) => void = null,\r\n error: (jqXHR: any, textStatus: any, errorThrown: any) => void = null): void {\r\n\r\n if (sender) {\r\n sender.classList.add('loading');\r\n }\r\n $.get(url, function (response: Response) {\r\n if (sender) {\r\n sender.classList.remove('loading');\r\n }\r\n if (complete) {\r\n complete(response, sender);\r\n }\r\n })\r\n .fail(error ?? Inline.handleError);\r\n\r\n }\r\n\r\n static post(url: string, sender: HTMLElement,\r\n complete: (data: Response, sender?: HTMLElement) => void = null,\r\n error: (jqXHR: any, textStatus: any, errorThrown: any) => void = null): void {\r\n\r\n if (sender) {\r\n sender.classList.add('loading');\r\n }\r\n $.post(url, function (response: Response) {\r\n if (sender) {\r\n sender.classList.remove('loading');\r\n }\r\n if (complete) {\r\n complete(response, sender);\r\n }\r\n })\r\n .fail(error ?? Inline.handleError);\r\n\r\n }\r\n\r\n static handleError(xhr: { status: string | number; }, textStatus: any, errorThrown: any) {\r\n if (xhr.status === 500) {\r\n Alerts.error(\"There was an error processing the content, please contact an administrator if this continues.\", \"Error \" + xhr.status, 10000);\r\n } else if (xhr.status === 404) {\r\n Alerts.error(\"The content could not be found.\", \"Error \" + xhr.status, 10000);\r\n } else if (xhr.status === 401) {\r\n Alerts.error(\"You are not allowed to view this resource, are you logged in correctly?\", \"Error \" + xhr.status, 10000);\r\n window.location = window.location;\r\n }\r\n }\r\n}\r\n\r\n","import { Alerts } from \"./Alerts\";\r\nimport { Inline } from \"./Inline\";\r\n\r\ndeclare global {\r\n interface HTMLElement {\r\n hoodDataList: DataList;\r\n }\r\n}\r\n\r\nexport interface DataListOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\n/**\r\n * Attach a data list feed to an HTML element. The element must have a data-url attribute to connect to a feed.\r\n */\r\n\r\nexport class DataList {\r\n element: HTMLElement;\r\n options: DataListOptions;\r\n\r\n /**\r\n * @param element The datalist element. The element must have a data-url attribute to connect to a feed.\r\n */\r\n constructor(element: HTMLElement, options: DataListOptions) {\r\n\r\n this.element = element;\r\n this.element.hoodDataList = this;\r\n if (typeof (element) == 'undefined' || element == null) {\r\n Alerts.log('Could not DataList to element, element does not exist.', 'error');\r\n return;\r\n }\r\n\r\n this.options = { ...this.options, ...options };\r\n\r\n if ($(this.element).hasClass('query')) {\r\n\r\n let r = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n let pageUrl: URL = null;\r\n if (r.test(this.element.dataset.url)) {\r\n pageUrl = new URL(this.element.dataset.url);\r\n } else {\r\n pageUrl = new URL(window.location.origin + this.element.dataset.url);\r\n }\r\n if ('URLSearchParams' in window) {\r\n var searchParams = new URLSearchParams(window.location.search);\r\n var urlParams = new URLSearchParams(pageUrl.search);\r\n searchParams.forEach((value, key, parent) => {\r\n urlParams.set(key, value);\r\n });\r\n if (urlParams.get(\"page\") == \"0\") {\r\n urlParams.set(\"page\", \"1\");\r\n }\r\n pageUrl.search = urlParams.toString();\r\n } else {\r\n pageUrl.search = window.location.search;\r\n }\r\n\r\n let url = pageUrl.pathname + pageUrl.search;\r\n $(this.element).attr('data-url', url);\r\n $(this.element).data('url', url);\r\n\r\n }\r\n\r\n if (!$(this.element).hasClass('refresh-only')) {\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n this.reload(new URL(listUrl.href));\r\n }\r\n\r\n $(this.element).on('click', '.pagination a, a.hood-inline-list-target', function (this: DataList, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n\r\n var url = document.createElement('a');\r\n url.href = (e.currentTarget as HTMLAnchorElement).href;\r\n\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n listUrl.search = url.search;\r\n\r\n this.reload(new URL(listUrl.href));\r\n\r\n }.bind(this));\r\n\r\n $('body').on('submit', `form.inline[data-target=\"#${this.element.id}\"]`, function (this: DataList, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n\r\n let $form = $(e.currentTarget);\r\n\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n\r\n listUrl.search = \"?\" + $form.serialize();\r\n this.reload(new URL(listUrl.href));\r\n\r\n }.bind(this));\r\n\r\n }\r\n\r\n reload(this: DataList, url: URL = null) {\r\n if (url) {\r\n if (history.pushState && $(this.element).hasClass('query')) {\r\n let newurl = window.location.protocol + \"//\" + window.location.host + window.location.pathname + (url.href.contains('?') ? \"?\" + url.href.substring(url.href.indexOf('?') + 1) : '');\r\n window.history.pushState({ path: newurl }, '', newurl);\r\n }\r\n $(this.element).data('url', url);\r\n }\r\n Inline.load(this.element, { ...this.options });\r\n }\r\n\r\n}\r\n","import { KeyValue } from \"../interfaces/KeyValue\";\r\nimport { Alerts } from \"./Alerts\";\r\nimport { MediaObject } from \"./Media\";\r\n\r\nexport declare interface Response {\r\n\r\n data: any[];\r\n count: number;\r\n\r\n url: string;\r\n\r\n title: string;\r\n message: string;\r\n\r\n success: boolean;\r\n\r\n exception: KeyValue<string, string>[];\r\n errors: string;\r\n error: string;\r\n\r\n media: MediaObject;\r\n mediaJson: string;\r\n\r\n process(autoHide: number): void;\r\n\r\n}\r\n\r\nexport class Response {\r\n constructor() {\r\n\r\n }\r\n\r\n static process(data: Response | any, autoHide: number = 5000) {\r\n if (data.success) {\r\n Alerts.success(data.message, data.title, autoHide);\r\n } else {\r\n Alerts.error(data.errors, data.title, autoHide);\r\n }\r\n }\r\n}\r\n\r\n","import { Modal } from \"bootstrap\";\r\nimport { Inline } from \"./Inline\";\r\n\r\nexport interface ModalOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (sender: HTMLElement, html: string) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (sender: HTMLElement) => void;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onHidden?: (sender: HTMLElement) => void;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n closePrevious?: boolean;\r\n}\r\n\r\n\r\nexport class ModalController {\r\n element: HTMLElement;\r\n modal: Modal;\r\n isOpen: boolean = false;\r\n options: ModalOptions = {\r\n closePrevious: true\r\n }\r\n\r\n constructor(options: ModalOptions = null) {\r\n this.options = { ...this.options, ...options };\r\n }\r\n\r\n show(url: string | URL, sender: HTMLElement = null) {\r\n if (this.options.onLoad) {\r\n this.options.onLoad(this.element);\r\n }\r\n\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.isOpen = true;\r\n\r\n $.get(url as string, function (data: string) {\r\n\r\n if (this.modal && this.options.closePrevious) {\r\n this.close();\r\n }\r\n\r\n if (this.options.onRender) {\r\n data = this.options.onRender(this.element, data);\r\n }\r\n\r\n this.element = this.createElementFromHTML(data);\r\n this.element.classList.add('hood-inline-modal');\r\n\r\n $('body').append(this.element);\r\n this.modal = new Modal(this.element, {});\r\n this.modal.show();\r\n\r\n // Workaround for sweetalert popups.\r\n this.element.addEventListener('shown.bs.modal', function (this: ModalController) {\r\n $(document).off('focusin.modal');\r\n }.bind(this));\r\n this.element.addEventListener('hidden.bs.modal', function (this: ModalController) {\r\n if (this.options.onHidden) {\r\n this.options.onHidden(this.element);\r\n }\r\n this.dispose();\r\n this.isOpen = false;\r\n }.bind(this));\r\n\r\n if (this.options.onComplete) {\r\n this.options.onComplete(this.element);\r\n }\r\n\r\n\r\n }.bind(this))\r\n .fail(function (this: ModalController, xhr: { status: string | number; }, textStatus: any, errorThrown: any) {\r\n this.isOpen = false;\r\n if (this.options.onError) {\r\n this.options.onError(xhr, textStatus, errorThrown);\r\n }\r\n Inline.handleError(xhr, textStatus, errorThrown);\r\n }.bind(this));\r\n }\r\n\r\n close() {\r\n if (this.modal) {\r\n this.modal.hide();\r\n }\r\n }\r\n\r\n dispose() {\r\n this.modal.dispose();\r\n this.element.remove();\r\n }\r\n\r\n createElementFromHTML(htmlString: string): HTMLElement {\r\n var div = document.createElement('div');\r\n div.innerHTML = htmlString.trim();\r\n\r\n // Change this to div.childNodes to support multiple top-level nodes\r\n return div.firstChild as HTMLElement;\r\n }\r\n}","import { Alerts } from \"./Alerts\";\r\nimport { Inline } from \"./Inline\";\r\nimport { Response } from \"./Response\";\r\n\r\nexport interface ValidatorOptions {\r\n\terrorAlert?: string;\r\n\r\n\t/**\r\n\t * Called before the submit of the form data, you can return the data to be serialised.\r\n\t */\r\n\tonSubmit?: (sender: Validator) => void;\r\n\r\n\t/**\r\n\t * Called when submit is complete.\r\n\t */\r\n\tonComplete?: (data: Response, sender?: Validator) => void;\r\n\r\n\t/**\r\n\t * Called when an error occurs.\r\n\t */\r\n\tonError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n\tserializationFunction?: () => string;\r\n\r\n\tuseAjax?: boolean;\r\n}\r\n\r\nexport class Validator {\r\n\telement: HTMLFormElement;\r\n\toptions: ValidatorOptions = {\r\n\t\terrorAlert: \"There are errors on the form, please check your answers and try again.\",\r\n\t\tuseAjax: true,\r\n\t};\r\n\r\n\t/**\r\n\t * @param element The datalist element. The element must have a data-url attribute to connect to a feed.\r\n\t */\r\n\tconstructor(element: HTMLFormElement, options: ValidatorOptions) {\r\n\t\tthis.element = element;\r\n\t\tif (!this.element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.options.serializationFunction = function (this: Validator) {\r\n\t\t\tlet rtn = $(this.element).serialize();\r\n\t\t\treturn rtn;\r\n\t\t}.bind(this);\r\n\r\n\t\tthis.options = { ...this.options, ...options };\r\n\r\n\t\tthis.element.addEventListener(\r\n\t\t\t\"submit\",\r\n\t\t\tfunction (this: Validator, e: Event) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.submitForm();\r\n\t\t\t}.bind(this)\r\n\t\t);\r\n\t\tvar tag = '[data-submit=\"#' + this.element.id + '\"]';\r\n\t\tlet submitButtons = $(tag);\r\n\t\tif (submitButtons) {\r\n\t\t\tsubmitButtons.on(\r\n\t\t\t\t\"click\",\r\n\t\t\t\tfunction (this: Validator, e: Event) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\t\tlet exit = $(e.currentTarget).data(\"exit\");\r\n\t\t\t\t\tif (exit) {\r\n\t\t\t\t\t\t$(this.element).find(\"input#exit\").remove();\r\n\t\t\t\t\t\t$(\"<input id='exit' />\").attr(\"type\", \"hidden\").attr(\"name\", \"exit\").attr(\"value\", \"true\").appendTo(this.element);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.submitForm();\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tsubmitForm() {\r\n\t\tthis.element.classList.add(\"was-validated\");\r\n\t\tif (this.element.checkValidity()) {\r\n\t\t\tthis.element.classList.add(\"loading\");\r\n\r\n\t\t\tlet checkboxes = this.element.querySelector(\"input[type=checkbox]\");\r\n\t\t\tif (checkboxes) {\r\n\t\t\t\tArray.prototype.slice.call(checkboxes).forEach(function (checkbox: HTMLInputElement) {\r\n\t\t\t\t\tif ($(this).is(\":checked\")) {\r\n\t\t\t\t\t\t$(this).val(\"true\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.onSubmit) {\r\n\t\t\t\tthis.options.onSubmit(this);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.useAjax) {\r\n\t\t\t\tlet formData = this.options.serializationFunction();\r\n\r\n\t\t\t\t$.post(\r\n\t\t\t\t\tthis.element.action,\r\n\t\t\t\t\tformData,\r\n\t\t\t\t\tfunction (this: Validator, data: any) {\r\n\t\t\t\t\t\tif (this.options.onComplete) {\r\n\t\t\t\t\t\t\tthis.options.onComplete(data, this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}.bind(this)\r\n\t\t\t\t)\r\n\t\t\t\t\t.fail(this.options.onError ?? Inline.handleError)\r\n\t\t\t\t\t.always(function (this: Validator) {\r\n\t\t\t\t\t\tthis.element.classList.remove(\"loading\");\r\n\t\t\t\t\t}.bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tthis.element.submit();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this.options.errorAlert) {\r\n\t\t\t\tAlerts.error(this.options.errorAlert, null, 5000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\n\r\nimport { Alerts } from \"./Alerts\";\r\nimport { Response } from \"./Response\";\r\nimport { DataList } from \"./DataList\";\r\nimport { ModalController } from \"./Modal\";\r\nimport { Validator } from \"./Validator\";\r\nimport { Inline } from \"./Inline\";\r\nimport { Editor } from \"tinymce\";\r\n\r\nexport declare interface MediaObject {\r\n\r\n id: number;\r\n fileSize: number;\r\n fileType: string;\r\n filename: string;\r\n blobReference: string;\r\n\r\n createdOn: Date;\r\n\r\n url: string;\r\n\r\n thumbUrl: string;\r\n smallUrl: string;\r\n mediumUrl: string;\r\n largeUrl: string;\r\n uniqueId: string;\r\n\r\n genericFileType: 'Image' | 'PDF' | 'Word' | 'Photoshop' | 'Excel' | 'PowerPoint' | 'Directory' | 'Audio' | 'Video' | 'Unknown';\r\n\r\n downloadUrl: string;\r\n downloadUrlHttps: string;\r\n\r\n icon: string;\r\n formattedSize: string;\r\n path: string;\r\n\r\n}\r\n\r\nexport interface MediaOptions {\r\n\r\n /**\r\n * Action for the media service to take when a media item is clicked.\r\n */\r\n action: 'insert' | 'attach' | 'select' | string;\r\n\r\n /**\r\n * Selector for any elements that require a refresh of background-image or src (if applicable). \r\n */\r\n refresh?: string;\r\n\r\n /**\r\n * Insert/Select Only: Input field to insert image url to. \r\n */\r\n size?: string;\r\n\r\n /**\r\n * Select/Gallery Only: Input field to insert image url to. \r\n */\r\n target?: string;\r\n\r\n /**\r\n * Insert Only: Input field to insert image url to. \r\n */\r\n targetEditor?: Editor;\r\n\r\n /**\r\n * Attach Only: Post url to send the selected media id to when clicked. Must accept mediaId as a parameter.\r\n */\r\n url?: string;\r\n\r\n /**\r\n * Called before the action is carried out.\r\n */\r\n beforeAction?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when the action is complete.\r\n */\r\n onAction?: (mediaObject: MediaObject, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the media list is is fetched.\r\n */\r\n onListLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the media list. Must return the data back to datalist to render.\r\n */\r\n onListRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when media list loading and rendering is complete.\r\n */\r\n onListComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\nexport class MediaService {\r\n media: DataList;\r\n element: HTMLElement;\r\n options: MediaOptions = {\r\n action: 'show',\r\n size: 'large'\r\n };\r\n currentBlade: ModalController;\r\n progress: JQuery<HTMLElement>;\r\n progressText: JQuery<HTMLElement>;\r\n uploadButton: HTMLElement;\r\n uploader: HTMLElement;\r\n progressArea: HTMLElement;\r\n dropzone: any;\r\n galleryInitialised: boolean = false;\r\n\r\n constructor(element: HTMLElement, options: MediaOptions) {\r\n this.element = element;\r\n if (!this.element) {\r\n return;\r\n }\r\n\r\n this.options = { ...this.options, ...options };\r\n\r\n $('body').off('click', '.media-delete', this.delete.bind(this));\r\n $('body').on('click', '.media-delete', this.delete.bind(this));\r\n\r\n $(this.element).on('click', '.media-item', this.action.bind(this));\r\n $(this.element).on('click', '.media-create-directory', this.createDirectory.bind(this))\r\n $(this.element).on('click', '.media-delete-directory', this.deleteDirectory.bind(this));\r\n\r\n this.media = new DataList(this.element, {\r\n onLoad: this.options.onListLoad,\r\n onError: this.options.onError,\r\n onRender: this.options.onListRender,\r\n onComplete: function (this: MediaService, html: string, sender: HTMLElement) {\r\n this.initUploader();\r\n\r\n // if this is gallery type, add the \"Add to gallery button\" and hook it to the add function\r\n if (this.options.action == 'gallery' && !this.galleryInitialised) {\r\n $('#media-select-modal .modal-footer').removeClass('d-none');\r\n $('#media-select-modal .modal-footer').on('click', this.galleryAdd.bind(this));\r\n this.galleryInitialised = true;\r\n }\r\n\r\n if (this.options.onListComplete) {\r\n this.options.onListComplete(html, sender)\r\n }\r\n }.bind(this)\r\n });\r\n\r\n }\r\n\r\n initUploader() {\r\n this.uploadButton = document.getElementById('media-add');\r\n this.uploader = document.getElementById('media-upload');\r\n if (!this.uploadButton || !this.uploader)\r\n return;\r\n\r\n this.progressArea = document.getElementById('media-progress');\r\n this.progressText = $('<div class=\"progress-text text-muted mb-3\"><i class=\"fa fa-info-circle me-2\"></i>Uploading file <span></span>...</div>');\r\n this.progress = $('<div class=\"progress\"><div class= \"progress-bar progress-bar-striped\" role=\"progressbar\" style=\"width:0%\" aria-valuenow=\"10\" aria-valuemin=\"0\" aria-valuemax=\"100\" ></div></div>');\r\n\r\n this.progressText.appendTo(this.progressArea);\r\n this.progress.appendTo(this.progressArea);\r\n\r\n var dz: Dropzone = null;\r\n $(\"#media-upload\").dropzone({\r\n url: $(\"#media-upload\").data('url') + \"?directoryId=\" + $(\"#media-list > #upload-directory-id\").val(),\r\n thumbnailWidth: 80,\r\n thumbnailHeight: 80,\r\n parallelUploads: 5,\r\n paramName: 'files',\r\n acceptedFiles: $(\"#media-upload\").data('types') || \".png,.jpg,.jpeg,.gif,.pdf\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: false, // Define the container to display the previews\r\n clickable: \"#media-add\", // Define the element that should be used as click trigger to select files.\r\n dictDefaultMessage: '<span><i class=\"fa fa-cloud-upload fa-4x\"></i><br />Drag and drop files here, or simply click me!</div>',\r\n dictResponseError: 'Error while uploading file!',\r\n init: function () {\r\n dz = this;\r\n }\r\n });\r\n\r\n dz.on(\"error\", function (this: MediaService, file: Dropzone.DropzoneFile, errormessage: any) {\r\n Alerts.warning(errormessage);\r\n }.bind(this));\r\n\r\n dz.on(\"success\", function (this: MediaService, file: Dropzone.DropzoneFile, data: Response) {\r\n Response.process(data);\r\n }.bind(this));\r\n\r\n dz.on(\"addedfile\", function (this: MediaService, file: Dropzone.DropzoneFile) {\r\n this.progress.find('.progress-bar').css({ width: 0 + \"%\" });\r\n this.progressText.find('span').html(0 + \"%\");\r\n }.bind(this));\r\n\r\n // Update the total progress bar\r\n dz.on(\"totaluploadprogress\", function (this: MediaService, totalProgress: number, totalBytes: number, totalBytesSent: number) {\r\n this.progress.find('.progress-bar').css({ width: totalProgress + \"%\" });\r\n this.progressText.find('span').html(Math.round(totalProgress) + \"% - \" + totalBytesSent.formatKilobytes() + \" / \" + totalBytes.formatKilobytes());\r\n }.bind(this));\r\n\r\n dz.on(\"sending\", function (this: MediaService, file: Dropzone.DropzoneFile) {\r\n // Show the total progress bar when upload starts\r\n this.progressArea.classList.remove('collapse');\r\n this.progress.find('.progress-bar').css({ width: 0 + \"%\" });\r\n this.progressText.find('span').html(0 + \"%\");\r\n }.bind(this));\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n dz.on(\"complete\", function (this: MediaService, file: Dropzone.DropzoneFile) {\r\n this.media.reload();\r\n }.bind(this));\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n dz.on(\"queuecomplete\", function (this: MediaService) {\r\n this.progressArea.classList.add('collapse');\r\n this.media.reload();\r\n }.bind(this));\r\n }\r\n\r\n createDirectory(this: MediaService, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createDirectoryModal: ModalController = new ModalController({\r\n onComplete: function (this: MediaService) {\r\n let form = document.getElementById('content-directories-edit-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: MediaService, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (response.success) {\r\n this.media.reload();\r\n createDirectoryModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createDirectoryModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n deleteDirectory(this: MediaService, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n Alerts.confirm({\r\n\r\n }, function (this: MediaService, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: MediaService, response: Response, sender: HTMLElement) {\r\n // Refresh the list, using the parent directory id - stored in the response's data array.\r\n Response.process(response, 5000);\r\n\r\n if (response.data.length > 0) {\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n listUrl.search = `?dir=${response.data[0]}`;\r\n this.media.reload(new URL(listUrl.href));\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n\r\n uploadUrl() {\r\n return $(\"#media-upload\").data('url') + \"?directoryId=\" + $(\"#media-list > #upload-directory-id\").val();\r\n }\r\n\r\n action(this: MediaService, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Load media object from clicked item in the media list\r\n let mediaObject: MediaObject = $(e.currentTarget).data('json') as MediaObject;\r\n\r\n // Perform the chosen action, which is set on the service's options when loaded.\r\n switch (this.options.action) {\r\n case 'select':\r\n this.select(mediaObject, e);\r\n break;\r\n case 'insert':\r\n this.insert(mediaObject, e);\r\n break;\r\n case 'attach':\r\n this.attach(mediaObject, e);\r\n break;\r\n case 'gallery':\r\n this.galleryClick(mediaObject, e);\r\n break;\r\n default:\r\n this.show(mediaObject, e);\r\n break;\r\n }\r\n\r\n }\r\n\r\n show(this: MediaService, mediaObject: MediaObject, sender: JQuery.ClickEvent) {\r\n\r\n // Load the media as a new blade to display.\r\n this.currentBlade = new ModalController();\r\n this.currentBlade.show($(sender.target).data('blade'), sender.target);\r\n\r\n // TODO: On close, reload the list and reinstate the modal??\r\n }\r\n\r\n select(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n Alerts.log(`[MediaService.select] Selecting media object id ${mediaObject.id} - ${mediaObject.filename} and inserting ${this.options.size} url to target: ${this.options.target}`);\r\n if (this.options.target) {\r\n let target = $(this.options.target);\r\n\r\n switch (this.options.size) {\r\n case 'thumb':\r\n target.val(mediaObject.thumbUrl);\r\n break;\r\n case 'small':\r\n target.val(mediaObject.smallUrl);\r\n break;\r\n case 'medium':\r\n target.val(mediaObject.mediumUrl);\r\n break;\r\n case 'large':\r\n target.val(mediaObject.largeUrl);\r\n break;\r\n case 'full':\r\n target.val(mediaObject.url);\r\n break;\r\n }\r\n }\r\n if (this.options.refresh) {\r\n MediaService.refresh(mediaObject, this.options.refresh);\r\n }\r\n\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(mediaObject);\r\n }\r\n }\r\n\r\n insert(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n // basic functionality to insert the correct string from the media response (from uploader) to given input element. \r\n Alerts.log(`[MediaService.insert] Selecting media object id ${mediaObject.id} - ${mediaObject.filename} and inserting ${this.options.size} image to target editor: ${this.options.target}`);\r\n this.options.targetEditor.insertContent('<img alt=\"' + mediaObject.filename + '\" src=\"' + mediaObject.url + '\" class=\"img-fluid\" />');\r\n\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(mediaObject);\r\n }\r\n }\r\n\r\n attach(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n // once file is uploaded to given directory, send media id to the given attach endpoint.\r\n Alerts.log(`[MediaService.attach] Attaching media object id ${mediaObject.id} - ${mediaObject.filename} to url: ${this.options.url}`);\r\n $.post(this.options.url, { mediaId: mediaObject.id }, function (this: MediaService, response: Response) {\r\n Response.process(response, 5000);\r\n MediaService.refresh(response.media, this.options.refresh);\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(mediaObject);\r\n }\r\n }.bind(this));\r\n }\r\n\r\n selectedMedia: MediaObject[] = new Array();\r\n\r\n galleryClick(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n // once file is uploaded to given directory, send media id to the given attach endpoint.\r\n if (!this.isMediaSelected(mediaObject)) {\r\n Alerts.log(`[MediaService.galleryClick] Adding to selected media objects - id ${mediaObject.id} - ${mediaObject.filename}.`);\r\n this.selectedMedia.push(mediaObject);\r\n $(e.currentTarget).parents('.media-item').addClass('active');\r\n } else {\r\n Alerts.log(`[MediaService.galleryClick] Removing media from selection - id ${mediaObject.id} - ${mediaObject.filename}.}`);\r\n this.selectedMedia = this.selectedMedia.filter(function (obj: MediaObject) {\r\n return obj.id !== mediaObject.id;\r\n });\r\n $(e.currentTarget).parents('.media-item').removeClass('active');\r\n }\r\n }\r\n\r\n galleryAdd(this: MediaService, e: JQuery.ClickEvent): void {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // once file is uploaded to given directory, send media id to the given attach endpoint.\r\n Alerts.log(`[MediaService.galleryAdd] Adding ${this.selectedMedia.length} selected media objects to url: ${this.options.url}`);\r\n\r\n let mediaIds = this.selectedMedia.map(function (v: MediaObject) {\r\n return v.id;\r\n });\r\n\r\n // create the url to send to (add media id's to it as query params)\r\n $.post(this.options.url, { media: mediaIds }, function (this: MediaService, data: Response) {\r\n\r\n Response.process(data);\r\n\r\n // refresh the gallery - - \r\n let galleryEl = document.getElementById(this.options.target);\r\n let gallery: DataList = galleryEl.hoodDataList as DataList;\r\n gallery.reload();\r\n\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(data.media);\r\n }\r\n\r\n }.bind(this));\r\n\r\n }\r\n\r\n isMediaSelected(mediaObject: MediaObject): boolean {\r\n let added: boolean = false;\r\n this.selectedMedia.forEach(function (value: MediaObject, index: number, array: MediaObject[]) {\r\n if (value.id == mediaObject.id) {\r\n added = true;\r\n }\r\n });\r\n return added;\r\n }\r\n\r\n static refresh(media: MediaObject, refresh: string): void {\r\n\r\n let icon = media.icon;\r\n\r\n if (media.genericFileType === \"Image\") {\r\n icon = media.mediumUrl;\r\n }\r\n\r\n if (refresh) {\r\n let $image = $(refresh);\r\n $image.css({\r\n 'background-image': 'url(' + icon + ')'\r\n });\r\n $image.find('img').attr('src', icon);\r\n $image.removeClass('loading');\r\n }\r\n\r\n }\r\n\r\n delete(this: MediaService, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n Alerts.confirm({\r\n html: 'This file will be permanently deleted, are you sure?'\r\n }, function (this: MediaService, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: MediaService, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n this.media.reload();\r\n if (this.currentBlade) {\r\n this.currentBlade.close();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n\r\n}\r\n\r\nexport class MediaModal {\r\n modal: ModalController;\r\n list: HTMLElement;\r\n service: MediaService;\r\n element: HTMLElement;\r\n\r\n constructor() {\r\n $('body').on('click', '[data-hood-media=attach],[data-hood-media=select],[data-hood-media=gallery]', this.load.bind(this));\r\n $('body').on('click', '[data-hood-media=clear]', this.clear.bind(this));\r\n $('[data-hood-media=gallery]').each(this.initGallery.bind(this));\r\n }\r\n\r\n initGallery(this: MediaModal, index: number, element: HTMLElement): void {\r\n\r\n // setup the gallery list also, just a simple list jobby, and attach it to the \r\n let el = document.getElementById(element.dataset.hoodMediaTarget);\r\n if (el) {\r\n new DataList(el, {\r\n onComplete: function (this: MediaModal, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading gallery media list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n }\r\n\r\n load(this: MediaModal, e: JQuery.ClickEvent): void {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.element = e.currentTarget;\r\n\r\n if (this.modal && this.modal.isOpen) {\r\n return;\r\n }\r\n\r\n this.modal = new ModalController({\r\n\r\n onComplete: function (this: MediaModal, sender: HTMLElement) {\r\n\r\n this.list = document.getElementById('media-list');\r\n this.service = new MediaService(this.list, {\r\n action: this.element.dataset.hoodMedia,\r\n url: this.element.dataset.hoodMediaUrl,\r\n refresh: this.element.dataset.hoodMediaRefresh,\r\n target: this.element.dataset.hoodMediaTarget,\r\n size: this.element.dataset.hoodMediaSize,\r\n beforeAction: function (this: MediaModal, sender: HTMLElement, mediaObject: MediaObject) {\r\n }.bind(this),\r\n onAction: function (this: MediaModal, sender: HTMLElement, mediaObject: MediaObject) {\r\n\r\n this.modal.close();\r\n\r\n }.bind(this),\r\n onListLoad: (sender: HTMLElement) => {\r\n },\r\n onListRender: (data: string) => {\r\n return data;\r\n },\r\n onListComplete: (data: string) => {\r\n },\r\n onError: (jqXHR: any, textStatus: any, errorThrown: any) => {\r\n },\r\n });\r\n\r\n }.bind(this)\r\n\r\n });\r\n this.modal.show($(e.currentTarget).data('hood-media-list'), e.currentTarget);\r\n }\r\n\r\n clear(this: MediaModal, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n\r\n }, function (this: MediaModal, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: MediaModal, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n MediaService.refresh(response.media, e.currentTarget.dataset.hoodMediaRefresh);\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n}\r\n","import tinymce from 'tinymce/tinymce';\r\n\r\nimport { MediaObject, MediaService } from './Media';\r\nimport { ModalController } from './Modal';\r\n\r\nexport declare interface EditorOptions {\r\n linkClasses?: any;\r\n imageClasses?: any;\r\n}\r\n\r\nexport class Editors {\r\n options: EditorOptions = {\r\n linkClasses: [\r\n { title: 'None', value: '' },\r\n { title: 'Button link', value: 'btn btn-default' },\r\n { title: 'Theme coloured button link', value: 'btn btn-primary' },\r\n { title: 'Popup image/video', value: 'colorbox-iframe' },\r\n { title: 'Button popup link', value: 'btn btn-default colorbox-iframe' },\r\n { title: 'Theme coloured button popup link', value: 'btn btn-primary colorbox-iframe' },\r\n { title: 'Large link', value: 'font-lg' },\r\n { title: 'Large button link', value: 'btn btn-default btn-lg' },\r\n { title: 'Large theme coloured button link', value: 'btn btn-primary btn-lg' },\r\n { title: 'Large popup image/video', value: 'font-lg colorbox-iframe' },\r\n { title: 'Large Button popup link', value: 'btn btn-default btn-lg colorbox-iframe' },\r\n { title: 'Theme coloured button popup link', value: 'btn btn-primary btn-lg colorbox-iframe' }\r\n ],\r\n imageClasses: [\r\n { title: 'None', value: '' },\r\n { title: 'Full Width', value: 'user-image full' },\r\n { title: 'Left Aligned', value: 'user-image left' },\r\n { title: 'Centered', value: 'user-image center' },\r\n { title: 'Right Aligned', value: 'user-image right' },\r\n { title: 'Inline with text, top aligned', value: 'user-image inline top' },\r\n { title: 'Inline with text, middle aligned', value: 'user-image inline' },\r\n { title: 'Inline with text, bottom aligned', value: 'user-image inline bottom' },\r\n { title: 'Pulled Left', value: 'user-image pull-left' },\r\n { title: 'Pulled Right', value: 'user-image pull-right' },\r\n ]\r\n }\r\n\r\n constructor(options?: EditorOptions) {\r\n this.options = { ...this.options, ...options };\r\n }\r\n\r\n richTextEditors() {\r\n\r\n\r\n tinymce.init({\r\n selector: '.tinymce-full',\r\n height: 150,\r\n menubar: false,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste code textcolor'\r\n ],\r\n toolbar: \"fullscreen | styleselect forecolor backcolor | hoodimage link media image | bold italic | alignleft aligncenter alignright | bullist numlist | table | undo redo\",\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n setup: this.setupCommands.bind(this),\r\n image_dimensions: false,\r\n content_css: [\r\n '/dist/css/editor.css'\r\n ],\r\n\r\n });\r\n\r\n tinymce.init({\r\n selector: '.tinymce-simple',\r\n height: 150,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste code'\r\n ],\r\n menubar: false,\r\n toolbar: 'fullscreen | bold italic | bullist numlist | undo redo | link',\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n setup: this.setupCommands.bind(this),\r\n image_dimensions: false\r\n });\r\n\r\n tinymce.init({\r\n selector: '.tinymce-full-content',\r\n height: 500,\r\n menubar: false,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste code textcolor'\r\n ],\r\n toolbar: \"fullscreen | styleselect forecolor backcolor | hoodimage link media image | bold italic | alignleft aligncenter alignright | bullist numlist | table | undo redo\",\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n setup: this.setupCommands.bind(this),\r\n image_dimensions: false\r\n });\r\n\r\n tinymce.init({\r\n selector: '.tinymce-simple-content',\r\n height: 500,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste code'\r\n ],\r\n menubar: false,\r\n toolbar: 'fullscreen | bold italic | bullist numlist | undo redo | link',\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n image_dimensions: false\r\n });\r\n }\r\n\r\n mediaModal: ModalController;\r\n list: HTMLElement;\r\n service: MediaService;\r\n currentEditor: JQuery<HTMLElement>;\r\n\r\n setupCommands(editor: any) {\r\n this.currentEditor = $('#' + editor.id);\r\n if (this.currentEditor.data('hoodMediaList')) {\r\n\r\n editor.ui.registry.addButton('hoodimage', {\r\n text: 'Insert image...',\r\n icon: 'image',\r\n onAction: function (this: Editors, e: any) {\r\n\r\n this.mediaModal = new ModalController({\r\n\r\n onComplete: function (this: Editors, sender: HTMLElement) {\r\n\r\n this.list = document.getElementById('media-list');\r\n this.service = new MediaService(this.list, {\r\n action: 'insert',\r\n url: this.currentEditor.data('hoodMediaList'),\r\n targetEditor: editor,\r\n size: this.currentEditor.data('hoodMediaSize'),\r\n beforeAction: function (this: Editors, sender: HTMLElement, mediaObject: MediaObject) {\r\n }.bind(this),\r\n onAction: function (this: Editors, sender: HTMLElement, mediaObject: MediaObject) {\r\n this.mediaModal.close();\r\n }.bind(this),\r\n onListLoad: (sender: HTMLElement) => {\r\n },\r\n onListRender: (data: string) => {\r\n return data;\r\n },\r\n onListComplete: (data: string) => {\r\n },\r\n onError: (jqXHR: any, textStatus: any, errorThrown: any) => {\r\n },\r\n });\r\n\r\n }.bind(this)\r\n\r\n });\r\n this.mediaModal.show(this.currentEditor.data('hoodMediaList'), e.currentTarget);\r\n\r\n }.bind(this)\r\n });\r\n\r\n }\r\n }\r\n\r\n}","export class Handlers {\r\n constructor() {\r\n }\r\n \r\n /**\r\n * Initialise all default Hood CMS handlers.\r\n */\r\n initDefaultHandlers() {\r\n\r\n this.checkboxToCsvInput();\r\n this.iconSelector();\r\n this.initSelectValues();\r\n this.scrollHandlers();\r\n this.selectText();\r\n this.setValueOnClick();\r\n this.submitOnChange();\r\n\r\n }\r\n\r\n /**\r\n * Sets values of any selects that have the value set in data-selected, useful for \r\n */\r\n initSelectValues(tag: string = 'body') {\r\n $(tag).find('select[data-selected]').each(this.initSelectValuesHandler);\r\n }\r\n\r\n initSelectValuesHandler(this: HTMLElement, index: number, element: HTMLElement) {\r\n let sel = $(this).data('selected');\r\n if (sel !== 'undefined' && sel !== '') {\r\n let selected = String(sel);\r\n $(this).val(selected);\r\n }\r\n }\r\n\r\n /**\r\n * Sets up any Hood Icon selector fields, requires the correct HTML setup.\r\n */\r\n iconSelector(tag: string = 'body') {\r\n $(tag).find('[data-hood-icon]').each(this.iconSelectorHandler);\r\n }\r\n\r\n iconSelectorHandler(this: HTMLElement, index: number, element: HTMLElement) {\r\n let $tag = $(this);\r\n let input = $tag.find('input[data-hood-icon-input]')\r\n let display = $tag.find('[data-hood-icon-display]')\r\n let collapse = $tag.find('.collapse')\r\n\r\n $tag.find('[data-hood-icon-key][data-hood-icon-value]').on('click', function () {\r\n $tag.find('[data-hood-icon-key][data-hood-icon-value]').removeClass('active');\r\n $(this).addClass('active');\r\n let key = $(this).data('hoodIconKey');\r\n let value = $(this).data('hoodIconValue');\r\n $(this)\r\n display.html(value);\r\n input.val(key);\r\n if (collapse) {\r\n collapse.removeClass('show');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Submits the form when input is changed, mark inputs with .submit-on-change class.\r\n */\r\n selectText(tag: string = 'body') {\r\n $(tag).on('click', '.select-text', this.selectTextHandler);\r\n }\r\n\r\n selectTextHandler(this: HTMLInputElement) {\r\n let $this = $(this);\r\n $this.select();\r\n // Work around Chrome's little problem\r\n $this.mouseup(function () {\r\n // Prevent further mouseup intervention\r\n $this.unbind(\"mouseup\");\r\n return false;\r\n });\r\n }\r\n\r\n /**\r\n * Attaches handlers for default scrolling functions, scroll to top, scroll to target (with header.header offset calculated)\r\n * and scroll to target direct (with no calculated offset).\r\n */\r\n scrollHandlers(tag: string = 'body') {\r\n $(tag).on('click', '.scroll-top, .scroll-to-top', this.scrollTop);\r\n $(tag).on('click', '.scroll-target, .scroll-to-target', this.scrollTarget);\r\n $(tag).on('click', '.scroll-target-direct, .scroll-to-target-direct', this.scrollTargetDirect);\r\n }\r\n\r\n scrollTop(this: HTMLAnchorElement, e: JQuery.ClickEvent) {\r\n if (e) e.preventDefault();\r\n $('html, body').animate({ scrollTop: 0 }, 800);\r\n return false;\r\n }\r\n\r\n scrollTarget(this: HTMLAnchorElement, e: JQuery.ClickEvent) {\r\n if (e) e.preventDefault();\r\n let url = $(this).attr('href').split('#')[0];\r\n if (url !== window.location.pathname && url !== \"\") {\r\n return;\r\n }\r\n let target = this.hash;\r\n let $target = $(target);\r\n let $header = $('header.header');\r\n let headerOffset = 0;\r\n if ($header) {\r\n headerOffset = $header.height();\r\n }\r\n if ($(this).data('offset'))\r\n $('html, body').stop().animate({\r\n 'scrollTop': $target.offset().top - $(this).data('offset')\r\n }, 900, 'swing');\r\n else\r\n $('html, body').stop().animate({\r\n 'scrollTop': $target.offset().top - headerOffset\r\n }, 900, 'swing');\r\n }\r\n\r\n scrollTargetDirect(this: HTMLAnchorElement) {\r\n let scrollTop = $('body').scrollTop();\r\n let top = $($(this).attr('href')).offset().top;\r\n\r\n $('html, body').animate({\r\n scrollTop: top\r\n }, Math.abs(top - scrollTop));\r\n return false;\r\n }\r\n\r\n /**\r\n * Compiles any selected checkboxes with matching data-hood-csv-input tags,\r\n * then saves the CSV list of the values to the input given in the tag.\r\n */\r\n checkboxToCsvInput(tag: string = 'body') {\r\n $(tag).on('change', 'input[type=checkbox][data-hood-csv-input]', this.checkboxToCsvInputHandler);\r\n }\r\n\r\n checkboxToCsvInputHandler(this: HTMLInputElement, e: JQuery.ChangeEvent<HTMLElement>) {\r\n if (e) e.preventDefault();\r\n // when i change - create an array, with any other checked of the same data-input checkboxes. and add to the data-input referenced tag.\r\n let items = new Array();\r\n $('input[data-hood-csv-input=\"' + $(this).data('hoodCsvInput') + '\"]').each(function () {\r\n if ($(this).is(\":checked\"))\r\n items.push($(this).val());\r\n });\r\n let id = '#' + $(this).data('input');\r\n let vals = JSON.stringify(items);\r\n $(id).val(vals);\r\n }\r\n\r\n /**\r\n * Submits the form when input is changed, mark inputs with .submit-on-change class.\r\n */\r\n submitOnChange(tag: string = 'body') {\r\n $(tag).on('change', '.submit-on-change', this.submitOnChangeHandler);\r\n }\r\n\r\n submitOnChangeHandler(this: HTMLFormElement, e: JQuery.ChangeEvent) {\r\n if (e) e.preventDefault();\r\n $(this).parents('form').submit();\r\n }\r\n\r\n /**\r\n * Sets the value of the input [data-target] when clicked to the value in [data-value]\r\n */\r\n setValueOnClick(tag: string = 'body') {\r\n $(tag).on('click', '.click-select[data-target][data-value]', this.setValueOnClickHandler);\r\n }\r\n\r\n setValueOnClickHandler(this: HTMLElement) {\r\n let $this = $(this);\r\n let targetId = '#' + $this.data('target');\r\n $(targetId).val($this.data('value'));\r\n $(targetId).trigger('change');\r\n $('.click-select.clean[data-target=\"' + $this.data('target') + '\"]').each(function () { $(this).removeClass('active'); });\r\n $('.click-select.clean[data-target=\"' + $this.data('target') + '\"][data-value=\"' + $this.data('value') + '\"]').each(function () { $(this).addClass('active'); });\r\n }\r\n\r\n}","import { Response } from './Response';\r\nimport { Alerts } from './Alerts';\r\n\r\nexport class Uploader {\r\n constructor() {\r\n if ($('.image-uploader').length || $('.gallery-uploader').length) {\r\n $(\".upload-progress-bar\").hide();\r\n $('.image-uploader').each(this.singleImage);\r\n $('.gallery-uploader').each(this.gallery);\r\n }\r\n }\r\n\r\n refreshImage(sender: JQuery<HTMLElement>, data: Response) {\r\n $(sender.data('preview')).css({\r\n 'background-image': 'url(' + data.media.smallUrl + ')'\r\n });\r\n $(sender.data('preview')).find('img').attr('src', data.media.smallUrl);\r\n }\r\n\r\n singleImage(this: HTMLElement) {\r\n\r\n let tag = '#' + $(this).attr('id');\r\n let $tag = $(tag);\r\n\r\n let jsontag = '#' + $(this).attr('json');\r\n\r\n let avatarDropzone: Dropzone = null;\r\n $tag.dropzone({\r\n url: $tag.data('url'),\r\n maxFiles: 1,\r\n paramName: 'file',\r\n parallelUploads: 1,\r\n acceptedFiles: $tag.data('types') || \".png,.jpg,.jpeg,.gif\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: false, // Define the container to display the previews\r\n clickable: tag,\r\n init: function () {\r\n avatarDropzone = this;\r\n }\r\n });\r\n\r\n avatarDropzone.on(\"addedfile\", function () {\r\n });\r\n\r\n avatarDropzone.on(\"totaluploadprogress\", function (progress) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '') + \" .progress-bar\").css({ width: progress + \"%\" });\r\n });\r\n\r\n avatarDropzone.on(\"sending\", function (file) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '')).show();\r\n $($tag.data('preview')).addClass('loading');\r\n });\r\n\r\n avatarDropzone.on(\"queuecomplete\", function (progress) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '')).hide();\r\n });\r\n\r\n avatarDropzone.on(\"success\", function (file, response: Response) {\r\n if (response.success) {\r\n if (response.media) {\r\n $(jsontag).val(JSON.stringify(response.media));\r\n $($tag.data('preview')).css({\r\n 'background-image': 'url(' + response.media.smallUrl + ')'\r\n });\r\n $($tag.data('preview')).find('img').attr('src', response.media.smallUrl);\r\n }\r\n Alerts.success(\"New image added!\");\r\n } else {\r\n Alerts.error(\"There was a problem adding the image: \" + response.error);\r\n }\r\n avatarDropzone.removeFile(file);\r\n $($tag.data('preview')).removeClass('loading');\r\n });\r\n\r\n }\r\n\r\n gallery(this: HTMLElement) {\r\n\r\n let tag = '#' + $(this).attr('id');\r\n let $tag = $(tag);\r\n\r\n let previewNode = document.querySelector(tag + \"-template\");\r\n previewNode.id = \"\";\r\n let previewTemplate = (<HTMLElement>previewNode.parentNode).innerHTML;\r\n previewNode.parentNode.removeChild(previewNode);\r\n\r\n let galleryDropzone: Dropzone = null;\r\n\r\n $tag.dropzone({\r\n url: $tag.data('url'),\r\n thumbnailWidth: 80,\r\n thumbnailHeight: 80,\r\n parallelUploads: 5,\r\n previewTemplate: previewTemplate,\r\n paramName: 'files',\r\n acceptedFiles: $tag.data('types') || \".png,.jpg,.jpeg,.gif\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: \"#previews\", // Define the container to display the previews\r\n clickable: \".fileinput-button\",\r\n init: function () {\r\n galleryDropzone = this;\r\n }\r\n });\r\n\r\n $(tag + \" .cancel\").hide();\r\n\r\n galleryDropzone.on(\"addedfile\", function (file) {\r\n $(file.previewElement.querySelector(\".complete\")).hide();\r\n $(file.previewElement.querySelector(\".cancel\")).show();\r\n $(tag + \" .cancel\").show();\r\n });\r\n\r\n // Update the total progress bar\r\n galleryDropzone.on(\"totaluploadprogress\", function (totalProgress: number, totalBytes: number, totalBytesSent: number) {\r\n let progressBar = document.querySelector(\"#total-progress .progress-bar\") as HTMLElement;\r\n progressBar.style.width = totalProgress + \"%\";\r\n });\r\n\r\n galleryDropzone.on(\"sending\", function (file: Dropzone.DropzoneFile) {\r\n // Show the total progress bar when upload starts\r\n let progressBar = document.querySelector(\"#total-progress\") as HTMLElement;\r\n progressBar.style.opacity = \"1\";\r\n });\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n galleryDropzone.on(\"complete\", function (file) {\r\n $(file.previewElement.querySelector(\".cancel\")).hide();\r\n $(file.previewElement.querySelector(\".progress\")).hide();\r\n $(file.previewElement.querySelector(\".complete\")).show();\r\n\r\n console.error(\"Uploader.Gallery.Dropzone.OnComplete - Inline.Refresh('.gallery') is not implemented.\");\r\n //Inline.Refresh('.gallery');\r\n });\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n galleryDropzone.on(\"queuecomplete\", function (progress) {\r\n let totalProgress = document.querySelector(\"#total-progress\") as HTMLElement;\r\n totalProgress.style.opacity = \"0\";\r\n $(tag + \" .cancel\").hide();\r\n });\r\n\r\n galleryDropzone.on(\"success\", function (file, response: Response) {\r\n\r\n console.error(\"Uploader.Gallery.Dropzone.OnSuccess - Inline.Refresh('.gallery') is not implemented.\");\r\n //Inline.Refresh('.gallery');\r\n\r\n if (response.success) {\r\n Alerts.success(\"New images added!\");\r\n } else {\r\n Alerts.error(\"There was a problem adding the profile image: \" + response.error);\r\n }\r\n });\r\n\r\n // Setup the buttons for all transfers\r\n // The \"add files\" button doesn't need to be setup because the config\r\n // `clickable` has already been specified.\r\n $(\".actions .cancel\").click(function () {\r\n galleryDropzone.removeAllFiles(true);\r\n });\r\n }\r\n\r\n}","/// <reference types=\"google.maps\" />\r\n\r\nimport { Response } from \"./Response\";\r\nimport { Alerts } from \"./Alerts\";\r\nimport { Handlers } from \"./Handlers\";\r\nimport { Uploader } from \"./Uploader\";\r\nimport { Validator } from \"./Validator\";\r\n\r\ndeclare global {\r\n interface Hood {\r\n alerts: Alerts;\r\n uploader: Uploader;\r\n handlers: Handlers;\r\n }\r\n\r\n interface Window {\r\n hood: Hood;\r\n }\r\n}\r\n\r\n/**\r\n * Base class for extending a Hood CMS website, ensure you call HoodApi.initialise() to setup loaders and contact form defaults.\r\n */\r\nexport class HoodApi {\r\n alerts: Alerts = new Alerts();\r\n handlers: Handlers = new Handlers();\r\n uploader: Uploader = new Uploader();\r\n\r\n constructor() {\r\n }\r\n\r\n // Initialise Hood CMS site defaults, can be overridden or individual setup items can be called instead of the initialise function. \r\n initialise() {\r\n // Initialise loaders (default, adds loading to body tag)\r\n this.setupLoaders();\r\n\r\n // Hook up default handlers.\r\n this.handlers.initDefaultHandlers();\r\n\r\n // Init hood contact forms. \r\n this.initContactForms();\r\n }\r\n\r\n /**\r\n * Default Hood CMS loaders, can be used however, this simply adds a \"loading\" class to the body tag on show/hide.\r\n */\r\n setupLoaders(): void {\r\n $('body').on('loader-show', function () { document.body.classList.add('loading') })\r\n $('body').on('loader-hide', function () { document.body.classList.remove('loading') })\r\n }\r\n\r\n /**\r\n * Default initialisation function for Google Maps, should be called as the callback from the Google Maps API script tag.\r\n */\r\n initGoogleMaps(tag: string = '.google-map') {\r\n\r\n $(tag).each(function () {\r\n\r\n var myLatLng = new google.maps.LatLng($(this).data('lat'), $(this).data('long'));\r\n\r\n console.log('Loading map at: ' + $(this).data('lat') + ', ' + $(this).data('long'));\r\n\r\n var map = new google.maps.Map(this, {\r\n zoom: $(this).data('zoom') || 15,\r\n center: myLatLng,\r\n scrollwheel: false\r\n });\r\n\r\n var marker = new google.maps.Marker({\r\n position: myLatLng,\r\n map: map,\r\n title: $(this).data('marker')\r\n });\r\n\r\n $(window).on('resize', function () {\r\n google.maps.event.trigger(map, 'resize');\r\n });\r\n google.maps.event.trigger(map, 'resize');\r\n\r\n });\r\n\r\n }\r\n \r\n /**\r\n * Initialisation function for contact forms on the site, will add validator, and submit/functionality to any forms matching the given tag selector string.\r\n */\r\n initContactForms(tag: string = '.contact-form') {\r\n\r\n let $form = $(tag);\r\n\r\n $form.find('.thank-you').hide();\r\n $form.find('.form-content').show();\r\n\r\n let form: HTMLFormElement = $(tag)[0] as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: HoodApi, response: Response) {\r\n if (response.success) {\r\n\r\n if ($form.attr('data-redirect'))\r\n window.location.href = $form.attr('data-redirect');\r\n\r\n if ($form.attr('data-alert-message'))\r\n Alerts.success($form.attr('data-alert-message'));\r\n\r\n $form.find('.form').hide();\r\n $form.find('.thank-you').show();\r\n } else {\r\n if ($form.attr('data-alert-error'))\r\n Alerts.error($form.attr('data-alert-error'));\r\n else {\r\n console.error(response.errors);\r\n Alerts.error(\"There are errors on the form, please check your answers and try again.\");\r\n }\r\n }\r\n\r\n }.bind(this)\r\n });\r\n\r\n }\r\n\r\n}","export class Loader {\r\n constructor() {\r\n new CustomEvent('loader-show');\r\n new CustomEvent('loader-hide');\r\n }\r\n\r\n static show(): void {\r\n $('body').trigger('loader-show');\r\n }\r\n\r\n static hide(): void {\r\n $('body').trigger('loader-hide');\r\n }\r\n}\r\n\r\nnew Loader()","export declare interface RandomStringGeneratorOptions {\r\n specials?: string;\r\n alpha?: string;\r\n numeric?: string;\r\n numSpecial?: number;\r\n}\r\n\r\nexport class RandomStringGenerator {\r\n options: RandomStringGeneratorOptions = {\r\n specials: '!@#$&*',\r\n alpha: 'abcdefghijklmnopqrstuvwxyz',\r\n numeric: '0123456789',\r\n numSpecial: 2\r\n };\r\n\r\n constructor(options?: RandomStringGeneratorOptions) {\r\n this.options = { ...this.options, ...options };\r\n }\r\n\r\n generate(length: number): string {\r\n\r\n let password = '';\r\n\r\n let len = Math.ceil((length - this.options.numSpecial) / 2);\r\n\r\n for (let i = 0; i < len; i++) {\r\n password += this.options.alpha.charAt(Math.floor(Math.random() * this.options.alpha.length));\r\n password += this.options.numeric.charAt(Math.floor(Math.random() * this.options.numeric.length));\r\n }\r\n\r\n for (let j = 0; j < this.options.numSpecial; j++)\r\n password += this.options.specials.charAt(Math.floor(Math.random() * this.options.specials.length));\r\n\r\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\r\n\r\n return password;\r\n\r\n }\r\n}","import { SweetAlertResult } from 'sweetalert2';\r\nimport { Alerts } from '../core/Alerts';\r\n\r\ndeclare global {\r\n interface JQuery {\r\n exists(): number;\r\n restrictToSlug(restrictPattern?: RegExp): void;\r\n restrictToPageSlug(restrictPattern?: RegExp): void;\r\n restrictToMetaSlug(restrictPattern?: RegExp): void;\r\n characterCounter(): void;\r\n warningAlert(): void;\r\n }\r\n}\r\n\r\n$.fn.exists = function () {\r\n return $(this).length;\r\n};\r\n\r\n$.fn.restrictToSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n // For example 'ABCdEfGhI5' become 'ABCEGI5'\r\n\r\n var restrictHandler = function () {\r\n var val = $(this).val() as string;\r\n var newVal = val.replace(restrictPattern, '');\r\n\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n$.fn.restrictToPageSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z-//]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n\r\n let restrictHandler = function () {\r\n var val = $(this).val() as string;\r\n var newVal = val.replace(restrictPattern, '');\r\n if ((newVal.match(new RegExp(\"/\", \"g\")) || []).length > 4) {\r\n var pos = newVal.lastIndexOf('/');\r\n newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);\r\n Alerts.warning(\"You can only have up to 4 '/' characters in a url slug.\");\r\n }\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n$.fn.restrictToMetaSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z.]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n\r\n let restrictHandler = function () {\r\n let val = $(this).val() as string;\r\n let newVal = val.replace(restrictPattern, '');\r\n if ((newVal.match(new RegExp(\".\", \"g\")) || []).length > 1) {\r\n let pos = newVal.lastIndexOf('.');\r\n newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);\r\n Alerts.warning(\"You can only have up to 1 '.' characters in a meta slug.\");\r\n }\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n\r\n$.fn.characterCounter = function () {\r\n let targets = $(this);\r\n let characterCounterHandler = function () {\r\n let counter = $(this).data('counter');\r\n let max = Number($(this).attr('maxlength'));\r\n let len = ($(this).val() as string).length;\r\n $(counter).text(max - len);\r\n let cls = \"text-success\";\r\n if (max - len < max / 10)\r\n cls = \"text-danger\";\r\n $(counter).parent().removeClass('text-success').removeClass('text-danger').addClass(cls);\r\n };\r\n targets.on('keyup', characterCounterHandler);\r\n targets.on('paste', characterCounterHandler);\r\n targets.on('change', characterCounterHandler);\r\n};\r\n\r\n$.fn.warningAlert = function () {\r\n let targets = $(this);\r\n let warningAlertHandler = function (this: HTMLElement, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n let warningAlertCallback = function (result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n let url = $(e.currentTarget).attr('href');\r\n window.location.href = url;\r\n }\r\n };\r\n Alerts.confirm(\r\n {\r\n title: $(e.currentTarget).data('title'),\r\n html: $(e.currentTarget).data('warning'),\r\n footer: $(e.currentTarget).data('footer'),\r\n icon: 'warning'\r\n },\r\n warningAlertCallback\r\n );\r\n return false;\r\n };\r\n targets.on('click', warningAlertHandler);\r\n};\r\n\r\n","declare global {\r\n interface Number {\r\n formatCurrency(currency: string): string;\r\n formatKilobytes(): string;\r\n formatMegabytes(): string;\r\n }\r\n}\r\n\r\n\r\nNumber.prototype.formatCurrency = function (currency: string) {\r\n return currency + \" \" + this.toFixed(2).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n });\r\n}\r\nNumber.prototype.formatKilobytes = function() {\r\n let n = this / 1024;\r\n return n.toFixed(0).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n }) + \"Kb\";\r\n}\r\nNumber.prototype.formatMegabytes = function() {\r\n let n = this / 1024; \r\n n = n / 1024;\r\n return n.toFixed(0).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n }) + \"Mb\";\r\n}\r\n\r\nexport { }\r\n","declare global {\r\n interface String {\r\n isUrlExternal(): boolean;\r\n htmlEncode(): string;\r\n htmlDecode(): string;\r\n contains(it: string): boolean;\r\n pick(min: number, max: number): string;\r\n shuffle(): string;\r\n toSeoUrl(): string;\r\n }\r\n}\r\n\r\nString.prototype.htmlEncode = function () {\r\n //create a in-memory div, set it's inner text(which jQuery automatically encodes)\r\n //then grab the encoded contents back out. The div never exists on the page.\r\n return $('<div/>').text(this).html();\r\n};\r\n\r\nString.prototype.htmlDecode = function () {\r\n return $('<div/>').html(this).text();\r\n};\r\n\r\nString.prototype.contains = function (it: string) {\r\n return this.indexOf(it) !== -1;\r\n};\r\n\r\nString.prototype.pick = function (min: number, max: number) {\r\n var n, chars = '';\r\n\r\n if (typeof max === 'undefined') {\r\n n = min;\r\n } else {\r\n n = min + Math.floor(Math.random() * (max - min));\r\n }\r\n\r\n for (var i = 0; i < n; i++) {\r\n chars += this.charAt(Math.floor(Math.random() * this.length));\r\n }\r\n\r\n return chars;\r\n};\r\n\r\n// Credit to @Christoph: http://stackoverflow.com/a/962890/464744\r\nString.prototype.shuffle = function () {\r\n var array = this.split('');\r\n var tmp, current, top = array.length;\r\n\r\n if (top) while (--top) {\r\n current = Math.floor(Math.random() * (top + 1));\r\n tmp = array[current];\r\n array[current] = array[top];\r\n array[top] = tmp;\r\n }\r\n\r\n return array.join('');\r\n};\r\n\r\nString.prototype.toSeoUrl = function () {\r\n var output = this.replace(/[^a-zA-Z0-9]/g, ' ').replace(/\\s+/g, \"-\").toLowerCase();\r\n /* remove first dash */\r\n if (output.charAt(0) === '-') output = output.substring(1);\r\n /* remove last dash */\r\n var last = output.length - 1;\r\n if (output.charAt(last) === '-') output = output.substring(0, last);\r\n return output;\r\n};\r\n\r\nexport { }\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Response } from \"../core/Response\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class ContentController {\r\n\r\n constructor() {\r\n this.manage();\r\n\r\n $('body').on('click', '.content-create', this.create.bind(this));\r\n $('body').on('click', '.content-delete', this.delete.bind(this));\r\n $('body').on('click', '.content-set-status', this.setStatus.bind(this));\r\n\r\n $('body').on('click', '.content-categories-delete', this.deleteCategory.bind(this));\r\n $('body').on('click', '.content-categories-create,.content-categories-edit', this.createOrEditCategory.bind(this));\r\n $('body').on('change', '.content-categories-check', this.toggleCategory.bind(this));\r\n\r\n $('body').on('click', '.content-media-delete', this.removeMedia.bind(this));\r\n\r\n $('body').on('keyup', '#Slug', function (this: HTMLElement) {\r\n let slugValue: string = $(this).val() as string;\r\n $('.slug-display').html(slugValue);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Content list element, #content-list\r\n */\r\n element: HTMLElement;\r\n\r\n /**\r\n * Content DataList object.\r\n */\r\n list: DataList;\r\n\r\n /**\r\n * Content list element, #content-list\r\n */\r\n categoryElement: HTMLElement;\r\n\r\n /**\r\n * Content DataList object.\r\n */\r\n categoryList: DataList;\r\n\r\n manage(this: ContentController): void {\r\n\r\n this.element = document.getElementById('content-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: ContentController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading content list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n this.categoryElement = document.getElementById('content-categories-list');\r\n if (this.categoryElement) {\r\n this.categoryList = new DataList(this.categoryElement, {\r\n onComplete: function (this: ContentController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading category list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n }\r\n\r\n create(this: ContentController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createContentModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentController) {\r\n let form = document.getElementById('content-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createContentModal.close();\r\n } \r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createContentModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The content will be permanently removed.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the content list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n setStatus(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The change will happen immediately.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n clone(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"This will duplicate the content and everything inside it.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n createOrEditCategory(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createCategoryModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentController) {\r\n let form = document.getElementById('content-categories-edit-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n this.categoryList.reload();\r\n createCategoryModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createCategoryModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n deleteCategory(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n // category deleted...\r\n Response.process(data, 5000);\r\n\r\n this.categoryList.reload();\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n\r\n toggleCategory(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n $.post($(e.currentTarget).data('url'), { categoryId: $(e.currentTarget).val(), add: $(e.currentTarget).is(':checked') }, function (this: ContentController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.categoryList) {\r\n this.categoryList.reload();\r\n }\r\n\r\n }.bind(this));\r\n \r\n }\r\n\r\n removeMedia(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The media will be removed from the property, but will still be in the media collection.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n // reload the property media gallery, should be attached to #property-gallery-list\r\n let mediaGalleryEl = document.getElementById('content-gallery-list');\r\n if (mediaGalleryEl.hoodDataList) {\r\n mediaGalleryEl.hoodDataList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Response } from \"../core/Response\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class ContentTypeController {\r\n\r\n constructor() {\r\n this.manage();\r\n\r\n $('body').on('click', '.content-type-create', this.create.bind(this));\r\n $('body').on('click', '.content-type-delete', this.delete.bind(this));\r\n $('body').on('click', '.content-type-set-status', this.setStatus.bind(this));\r\n\r\n $('body').on('click', '.content-custom-field-create', this.createField.bind(this));\r\n $('body').on('click', '.content-custom-field-delete', this.deleteField.bind(this));\r\n\r\n $('body').on('keyup', '#Slug', function (this: HTMLElement) {\r\n let slugValue: string = $(this).val() as string;\r\n $('.slug-display').html(slugValue);\r\n });\r\n\r\n }\r\n\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n fieldsElement: HTMLElement;\r\n fieldsList: DataList;\r\n\r\n manage(this: ContentTypeController): void {\r\n\r\n this.element = document.getElementById('content-type-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: ContentTypeController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading content type list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n this.fieldsElement = document.getElementById('content-custom-field-list');\r\n if (this.fieldsElement) {\r\n this.fieldsList = new DataList(this.fieldsElement, {\r\n onComplete: function (this: ContentTypeController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading content type list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n create(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createContentModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentTypeController) {\r\n let form = document.getElementById('content-type-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentTypeController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createContentModal.close();\r\n } \r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createContentModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The content type will be permanently removed. Content will remain, but will be unusable and marked as the old content type.\"\r\n }, function (this: ContentTypeController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentTypeController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the content list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n setStatus(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The change will happen immediately.\"\r\n }, function (this: ContentTypeController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentTypeController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n\r\n createField(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createContentModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentTypeController) {\r\n let form = document.getElementById('content-custom-field-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentTypeController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.fieldsList) {\r\n this.fieldsList.reload();\r\n }\r\n\r\n if (response.success) {\r\n createContentModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createContentModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n deleteField(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The field will be permanently removed. However fields will still be attached to content.\"\r\n }, function (this: ContentTypeController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentTypeController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.fieldsList) {\r\n this.fieldsList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n\r\n}\r\n","import { KeyValue } from \"../interfaces/KeyValue\";\r\nimport { ContentStatistics } from \"../models/Content\";\r\nimport { PropertyStatistics } from \"../models/Property\";\r\nimport { UserStatistics } from \"../models/Users\";\r\nimport { Chart } from 'chart.js';\r\n\r\nexport class HomeController {\r\n canvas: HTMLCanvasElement;\r\n ctx: CanvasRenderingContext2D;\r\n chart: any;\r\n\r\n constructor() {\r\n\r\n if ($('#admin-chart-area').length) {\r\n let $this = this;\r\n $this.LoadChart();\r\n $('body').on('change', '#history', function () {\r\n $this.LoadChart();\r\n });\r\n }\r\n\r\n }\r\n\r\n LoadChart(): void {\r\n let $this = this;\r\n $.get('/admin/stats/', function (data) {\r\n $('#admin-chart-area').empty();;\r\n $('#admin-chart-area').html('<canvas id=\"admin-stats-chart\"></canvas>');\r\n $this.LoadStats(data);\r\n $this.DrawChart(data);\r\n });\r\n }\r\n\r\n DrawChart(data: Statistics): void {\r\n\r\n let datasets = [];\r\n let dataLabels = [];\r\n\r\n let contentColour = '#fabd07';\r\n let propertyColour = '#20c997';\r\n let userColour = '#fd7e14';\r\n\r\n // 12 months\r\n let labels: string[] = [];\r\n\r\n // Content by day\r\n let contentSet: number[] = [];\r\n\r\n data.content.months.forEach(function (element: KeyValue<string, number>) {\r\n contentSet.push(element.value);\r\n labels.push(element.key);\r\n });\r\n\r\n datasets.push({\r\n label: 'New Content',\r\n data: contentSet,\r\n borderColor: contentColour,\r\n backgroundColor: contentColour,\r\n pointBackgroundColor: contentColour,\r\n pointBorderColor: '#ffffff'\r\n });\r\n\r\n // users by day\r\n contentSet = [];\r\n data.users.months.forEach(function (element: KeyValue<string, number>) {\r\n contentSet.push(element.value);\r\n });\r\n\r\n datasets.push({\r\n label: 'New Users',\r\n data: contentSet,\r\n borderColor: userColour,\r\n backgroundColor: userColour,\r\n pointBackgroundColor: userColour,\r\n pointBorderColor: '#ffffff'\r\n });\r\n\r\n // Properties by day\r\n contentSet = [];\r\n data.properties.months.forEach(function (element: KeyValue<string, number>) {\r\n contentSet.push(element.value);\r\n });\r\n\r\n datasets.push({\r\n label: 'New Properties',\r\n data: contentSet,\r\n borderColor: propertyColour,\r\n backgroundColor: propertyColour,\r\n pointBackgroundColor: propertyColour,\r\n pointBorderColor: '#ffffff'\r\n });\r\n\r\n dataLabels = labels;\r\n\r\n this.canvas = <HTMLCanvasElement>document.getElementById(\"admin-stats-chart\");\r\n this.ctx = this.canvas.getContext('2d');\r\n this.chart = new Chart(this.ctx, {\r\n type: 'bar',\r\n data: {\r\n labels: dataLabels,\r\n datasets: datasets\r\n },\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n ticks: {\r\n beginAtZero: true\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n LoadStats(data: Statistics): void {\r\n if (data.content) {\r\n $('.content-totalPosts').text(data.content.totalPosts);\r\n $('.content-totalPublished').text(data.content.totalPublished);\r\n if (data.content.byType) {\r\n for (let i = 0; i < data.content.byType.length; i++) {\r\n $('.content-' + data.content.byType[i].name + '-total').text(data.content.byType[i].total);\r\n }\r\n }\r\n }\r\n if (data.users) {\r\n $('.users-totalUsers').text(data.users.totalUsers);\r\n $('.users-totalAdmins').text(data.users.totalAdmins);\r\n }\r\n if (data.properties) {\r\n $('.properties-totalPosts').text(data.properties.totalProperties);\r\n $('.properties-totalPublished').text(data.properties.totalPublished);\r\n }\r\n }\r\n}\r\n\r\nexport class Statistics {\r\n content: ContentStatistics;\r\n users: UserStatistics;\r\n properties: PropertyStatistics;\r\n}\r\n","import { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\n\r\nexport class LogsController {\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n constructor() {\r\n this.element = document.getElementById('log-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: LogsController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading logs list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n }\r\n}","import { MediaObject, MediaService } from \"../core/Media\";\r\nimport { Alerts } from \"../core/Alerts\";\r\n\r\nexport class MediaController {\r\n\r\n constructor() {\r\n this.manage();\r\n }\r\n\r\n list: HTMLElement;\r\n service: MediaService;\r\n\r\n manage(): void {\r\n this.list = document.getElementById('media-list');\r\n this.service = new MediaService(this.list, {\r\n action: 'show',\r\n onAction: function (this: MediaController, mediaObject: MediaObject) {\r\n Alerts.log(`Showing media object id ${mediaObject.id} - ${mediaObject.filename}`);\r\n }.bind(this),\r\n onListLoad: function () {\r\n Alerts.log('Commencing media list fetch.');\r\n },\r\n onError: function (jqXHR: any, textStatus: any, errorThrown: any) {\r\n Alerts.log(`Error loading media list: ${textStatus}`);\r\n },\r\n onListRender: function (data: string) {\r\n Alerts.log('Fetched media list data.');\r\n return data;\r\n },\r\n onListComplete: function () {\r\n Alerts.log('Finished loading media list...', 'info');\r\n }\r\n });\r\n }\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Response } from \"../core/Response\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class PropertyController {\r\n\r\n constructor() {\r\n this.manage();\r\n\r\n $('body').on('click', '.property-create', this.create.bind(this));\r\n $('body').on('click', '.property-delete', this.delete.bind(this));\r\n $('body').on('click', '.property-set-status', this.setStatus.bind(this));\r\n\r\n $('body').on('click', '.property-media-delete', this.removeMedia.bind(this));\r\n $('body').on('click', '.property-floorplan-delete', this.removeMedia.bind(this));\r\n\r\n $('body').on('keyup', '#Slug', function (this: HTMLElement) {\r\n let slugValue: string = $(this).val() as string;\r\n $('.slug-display').html(slugValue);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Property list element, #property-list\r\n */\r\n element: HTMLElement;\r\n\r\n /**\r\n * Property DataList object.\r\n */\r\n list: DataList;\r\n\r\n manage(this: PropertyController): void {\r\n\r\n this.element = document.getElementById('property-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: PropertyController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading property list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n }\r\n\r\n create(this: PropertyController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createPropertyModal: ModalController = new ModalController({\r\n onComplete: function (this: PropertyController) {\r\n let form = document.getElementById('property-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: PropertyController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createPropertyModal.close();\r\n } \r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createPropertyModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: PropertyController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The property will be permanently removed.\"\r\n }, function (this: PropertyController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: PropertyController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the property list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n setStatus(this: PropertyController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The change will happen immediately.\"\r\n }, function (this: PropertyController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: PropertyController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n removeMedia(this: PropertyController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The media will be removed from the property, but will still be in the media collection.\"\r\n }, function (this: PropertyController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: PropertyController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n // reload the property media gallery, should be attached to #property-gallery-list\r\n let mediaGalleryEl = document.getElementById('property-gallery-list');\r\n if (mediaGalleryEl.hoodDataList) {\r\n mediaGalleryEl.hoodDataList.reload();\r\n }\r\n\r\n // reload the property media gallery, should be attached to #property-gallery-list\r\n let mfpGalleryEl = document.getElementById('property-floorplan-list');\r\n if (mfpGalleryEl && mfpGalleryEl.hoodDataList) {\r\n mfpGalleryEl.hoodDataList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n}\r\n","import { Inline } from \"../core/Inline\";\r\n\r\nexport declare interface PropertyImporterResult {\r\n\r\n ftp: FTPImporterStatistics;\r\n importer: PropertyImporterStatistics;\r\n\r\n}\r\n\r\nexport declare interface FTPImporterStatistics {\r\n\r\n bytesTransferred: number;\r\n complete: number;\r\n statusMessage: string;\r\n\r\n}\r\n\r\nexport declare interface PropertyImporterStatistics {\r\n\r\n running: boolean;\r\n\r\n processed: number;\r\n statusMessage: string;\r\n\r\n toAdd: number;\r\n toDelete: number;\r\n toUpdate: number;\r\n total: number;\r\n\r\n added: number;\r\n deleted: number;\r\n updated: number;\r\n\r\n complete: number;\r\n\r\n errors: string[];\r\n warnings: string[];\r\n\r\n}\r\n\r\nexport class PropertyImporter {\r\n updateInterval: number;\r\n\r\n constructor() {\r\n if ($('#import-property-start').length > 0) {\r\n this.update();\r\n $('#import-property-start').click(function (this: PropertyImporter) {\r\n $.ajax({\r\n url: $('#import-property-start').data('url'),\r\n type: \"POST\",\r\n error: Inline.handleError,\r\n success: function (this: PropertyImporter) {\r\n this.update();\r\n }.bind(this)\r\n });\r\n }.bind(this));\r\n $('#import-property-cancel').click(function (this: PropertyImporter) {\r\n $.ajax({\r\n url: $('#import-property-cancel').data('url'),\r\n type: \"POST\",\r\n error: Inline.handleError,\r\n success: function (this: PropertyImporter) {\r\n this.update();\r\n }.bind(this)\r\n });\r\n }.bind(this));\r\n }\r\n }\r\n\r\n update() {\r\n $.ajax({\r\n url: $('#import-property-status').data('url'),\r\n type: \"POST\",\r\n error: Inline.handleError,\r\n success: function (this: PropertyImporter, result: PropertyImporterResult) {\r\n\r\n if (result.importer.running) {\r\n this.showInfo();\r\n clearInterval(this.updateInterval);\r\n this.updateInterval = window.setTimeout(this.update, 250);\r\n } else {\r\n clearInterval(this.updateInterval);\r\n this.hideInfo();\r\n }\r\n\r\n $('.tp').html(result.importer.total.toString());\r\n $('#pu').html(result.importer.updated.toString());\r\n $('#pa').html(result.importer.added.toString());\r\n $('#pp').html(result.importer.processed.toString());\r\n $('#pd').html(result.importer.deleted.toString());\r\n $('#ToAdd').html(result.importer.toAdd.toString());\r\n $('#ToUpdate').html(result.importer.toUpdate.toString());\r\n $('#ToDelete').html(result.importer.toDelete.toString());\r\n $('#pt').html(result.importer.statusMessage.toString());\r\n\r\n let ftpPercentComplete = Math.round(result.ftp.complete * 100) / 100;\r\n $('#fp').html(ftpPercentComplete.toString());\r\n\r\n $('#ft').html(result.ftp.statusMessage);\r\n\r\n let percentComplete = Math.round(result.importer.complete * 100) / 100;\r\n $('.pc').html(percentComplete.toString());\r\n\r\n $('#progressbar').css({\r\n width: result.importer.complete + \"%\"\r\n });\r\n\r\n if (result.importer.errors.length) {\r\n let errorHtml = \"\";\r\n for (let i = result.importer.errors.length - 1; i >= 0; i--) {\r\n errorHtml += '<div class=\"text-danger\">' + result.importer.errors[i] + '</div>';\r\n }\r\n $('#import-property-errors').html(errorHtml);\r\n } else {\r\n $('#import-property-errors').html(\"<div>No errors reported.</div>\");\r\n }\r\n\r\n if (result.importer.warnings.length) {\r\n let warningHtml = \"\";\r\n for (let j = result.importer.warnings.length - 1; j >= 0; j--) {\r\n warningHtml += '<div class=\"text-warning\">' + result.importer.warnings[j] + '</div>';\r\n }\r\n $('#import-property-warnings').html(warningHtml);\r\n } else {\r\n $('#import-property-warnings').html(\"<div>No warnings reported.</div>\");\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n hideInfo() {\r\n $('#import-property-start').removeAttr('disabled');\r\n $('#import-property-cancel').attr('disabled', 'disabled');\r\n $('#import-property-progress').removeClass('d-block');\r\n $('#import-property-progress').addClass('d-none');\r\n }\r\n\r\n showInfo() {\r\n $('#import-property-cancel').removeAttr('disabled');\r\n $('#import-property-start').attr('disabled', 'disabled');\r\n $('#import-property-progress').addClass('d-block');\r\n $('#import-property-progress').removeClass('d-none');\r\n }\r\n\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { Response } from \"../core/Response\";\r\n\r\nexport class ThemesController {\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n constructor() {\r\n $('body').on('click', '.activate-theme', this.activate.bind(this));\r\n\r\n this.element = document.getElementById('themes-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: ThemesController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading users list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n }\r\n\r\n activate(this: ThemesController, e: JQuery.ClickEvent): void {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The site will change themes, and the selected theme will be live right away.\"\r\n }, function (this: ThemesController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ThemesController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n setTimeout(function (this: ThemesController) {\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this), 2000);\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n}","import { SweetAlertResult } from \"sweetalert2\";\r\nimport swal from 'sweetalert2';\r\n\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { RandomStringGenerator } from \"../core/RandomStringGenerator\";\r\nimport { Response } from \"../core/Response\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class UsersController {\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n constructor() {\r\n this.initLists();\r\n\r\n $('body').on('click', '.user-create', this.create.bind(this));\r\n $('body').on('click', '.user-delete', this.delete.bind(this));\r\n $('body').on('change', '#user-create-form #GeneratePassword', this.generatePassword);\r\n\r\n $('body').on('change', '.user-role-check', this.toggleUserRole);\r\n\r\n $('body').on('click', '.user-reset-password', this.resetPassword);\r\n\r\n $('body').on('click', '.user-notes-add', this.addNote.bind(this));\r\n $('body').on('click', '.user-notes-delete', this.deleteNote.bind(this));\r\n\r\n }\r\n\r\n initLists(this: UsersController): void {\r\n\r\n this.element = document.getElementById('user-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: UsersController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading users list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n this.notesEl = document.getElementById('user-notes');\r\n if (this.notesEl) {\r\n this.notesList = new DataList(this.notesEl, {\r\n onComplete: function (this: UsersController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading user notes list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n }\r\n\r\n create(this: UsersController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createUserModal: ModalController = new ModalController({\r\n onComplete: function (this: UsersController) {\r\n let form = document.getElementById('user-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: UsersController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createUserModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createUserModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The user will be permanently removed.\"\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: UsersController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the content list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n generatePassword() {\r\n if ($(this).is(':checked')) {\r\n let generator = new RandomStringGenerator({ numSpecial: 1 });\r\n $('#user-create-form #Password').val(generator.generate(8));\r\n $('#user-create-form #Password').attr('type', 'text');\r\n } else {\r\n $('#user-create-form #Password').val('');\r\n $('#user-create-form #Password').attr('type', 'password');\r\n }\r\n }\r\n\r\n toggleUserRole() {\r\n if ($(this).is(':checked')) {\r\n $.post($(this).data('url'), { role: $(this).val(), add: true }, function (data: Response) {\r\n Response.process(data);\r\n });\r\n } else {\r\n $.post($(this).data('url'), { role: $(this).val(), add: false }, function (data: Response) {\r\n Response.process(data);\r\n });\r\n }\r\n }\r\n\r\n resetPassword(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.prompt({\r\n // Confirm options...\r\n title: \"Reset Password\",\r\n html: \"Please enter a new password for the user...\",\r\n preConfirm: (inputValue) => {\r\n if (inputValue === false) return false;\r\n if (inputValue === \"\") {\r\n swal.showValidationMessage(\"You didn't supply a new password, we can't reset the password without it!\");\r\n return false;\r\n }\r\n }\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n\r\n if (result.isDismissed) {\r\n return false;\r\n }\r\n\r\n $.post(e.currentTarget.href, { password: result.value }, function (data: Response) {\r\n Response.process(data, 5000);\r\n });\r\n\r\n }.bind(this))\r\n\r\n }\r\n\r\n notesEl: HTMLElement;\r\n notesList: DataList;\r\n\r\n addNote(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.prompt({\r\n // Confirm options...\r\n title: \"Add a note\",\r\n html: \"Enter and store a note about this user.\",\r\n input: 'textarea',\r\n preConfirm: (inputValue) => {\r\n if (inputValue === false) return false;\r\n if (inputValue === \"\") {\r\n swal.showValidationMessage(\"You didn't enter a note!\");\r\n return false;\r\n }\r\n }\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n\r\n if (result.isDismissed) {\r\n return false;\r\n }\r\n\r\n $.post(e.currentTarget.href, { note: result.value }, function (this: UsersController, data: Response) {\r\n Response.process(data, 5000);\r\n\r\n\r\n if (this.notesList) {\r\n this.notesList.reload();\r\n }\r\n\r\n }.bind(this));\r\n\r\n }.bind(this))\r\n\r\n }\r\n\r\n deleteNote(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The note will be permanently removed.\"\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: UsersController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.notesList) {\r\n this.notesList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n} ","/// <reference types=\"jquery.slimscroll\" />\r\nimport * as bootstrap from 'bootstrap';\r\n\r\nimport './index';\r\n\r\nimport { HomeController } from \"./admin/HomeController\";\r\nimport { MediaController } from './admin/MediaController';\r\nimport { ContentController } from './admin/ContentController';\r\nimport { PropertyController } from './admin/PropertyController';\r\nimport { UsersController } from './admin/UsersController';\r\nimport { ThemesController } from './admin/ThemesController';\r\nimport { ContentTypeController } from './admin/ContentTypeController';\r\nimport { LogsController } from './admin/LogsController';\r\nimport { PropertyImporter } from './admin/PropertyImporter';\r\nimport { HoodApi } from './core/HoodApi';\r\nimport { ColorPickers, Editors, MediaModal } from './index';\r\n\r\nclass Admin extends HoodApi {\r\n editors: Editors = new Editors();\r\n colorPickers: ColorPickers = new ColorPickers();\r\n mediaModal: MediaModal = new MediaModal();\r\n\r\n home: HomeController;\r\n media: MediaController;\r\n content: ContentController;\r\n contentType: ContentTypeController;\r\n logs: LogsController;\r\n property: PropertyController;\r\n propertyImporter: PropertyImporter;\r\n themes: ThemesController;\r\n users: UsersController;\r\n\r\n constructor() {\r\n super();\r\n\r\n // Hook up default handlers.\r\n this.handlers.initDefaultHandlers();\r\n\r\n // Admin Controllers\r\n this.home = new HomeController();\r\n this.media = new MediaController();\r\n this.content = new ContentController();\r\n this.contentType = new ContentTypeController();\r\n this.logs = new LogsController();\r\n this.property = new PropertyController();\r\n this.propertyImporter = new PropertyImporter();\r\n this.themes = new ThemesController();\r\n this.users = new UsersController();\r\n\r\n // Hook up rich text editors\r\n this.editors.richTextEditors();\r\n\r\n // Hook up colour pickers\r\n this.colorPickers.loadColorPickers();\r\n\r\n if ($('#page-tabs').length > 0) {\r\n this.checkAndLoadTabs('#page-tabs');\r\n }\r\n\r\n // Admin Handlers\r\n $('.restrict-to-slug').restrictToSlug();\r\n $('.restrict-to-page-slug').restrictToPageSlug();\r\n $('.restrict-to-meta-slug').restrictToMetaSlug();\r\n $('.character-counter').characterCounter();\r\n $('.character-counter').trigger('change');\r\n $('.warning-alert').warningAlert();\r\n\r\n $('.mobile-sidebar-toggle').on('click', function () {\r\n $('nav.sidebar').toggleClass('open');\r\n });\r\n \r\n $('.right-sidebar-toggle').on('click', function () {\r\n $('#right-sidebar').toggleClass('sidebar-open');\r\n });\r\n\r\n $(\".alert.auto-dismiss\").fadeTo(5000, 500).slideUp(500, function () {\r\n $(\".alert.auto-dismiss\").slideUp(500);\r\n });\r\n\r\n }\r\n\r\n checkAndLoadTabs(tag: string): void {\r\n\r\n $(tag + ' a[data-bs-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\r\n let store: any = JSON.parse(localStorage.getItem('tabs-' + tag)) || {};\r\n store['tab-' + $(tag).data('hoodTabs')] = $(e.target).attr('href');\r\n localStorage.setItem('tabs-' + tag, JSON.stringify(store));\r\n });\r\n\r\n let store: any = JSON.parse(localStorage.getItem('tabs-' + tag)) || {};\r\n let activeTab = store['tab-' + $(tag).data('hoodTabs')];\r\n let triggerEl = $(tag + ' a[data-bs-toggle=\"tab\"]')[0];\r\n if (activeTab) {\r\n triggerEl = document.querySelector(tag + ' a[href=\"' + activeTab + '\"]')\r\n }\r\n let tabTrigger = new bootstrap.Tab(triggerEl);\r\n tabTrigger.show();\r\n\r\n }\r\n\r\n\r\n}\r\n\r\nwindow.hood = new Admin();\r\n"],"names":["Swal","Pickr","Modal","tinymce","Chart","swal","bootstrap"],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../node_modules/jquery-toast-plugin/dist/jquery.toast.min.js","../../../../src/ts/core/Alerts.ts","../../../../src/ts/core/ColorPicker.ts","../../../../src/ts/core/Inline.ts","../../../../src/ts/core/DataList.ts","../../../../src/ts/core/Response.ts","../../../../src/ts/core/Modal.ts","../../../../src/ts/core/Validator.ts","../../../../src/ts/core/Media.ts","../../../../src/ts/core/Editors.ts","../../../../src/ts/core/Handlers.ts","../../../../src/ts/core/Uploader.ts","../../../../src/ts/core/HoodApi.ts","../../../../src/ts/core/Loader.ts","../../../../src/ts/core/RandomStringGenerator.ts","../../../../src/ts/extensions/jqueryExtensions.ts","../../../../src/ts/extensions/numberExtensions.ts","../../../../src/ts/extensions/stringExtensions.ts","../../../../src/ts/admin/ContentController.ts","../../../../src/ts/admin/ContentTypeController.ts","../../../../src/ts/admin/HomeController.ts","../../../../src/ts/admin/LogsController.ts","../../../../src/ts/admin/MediaController.ts","../../../../src/ts/admin/PropertyController.ts","../../../../src/ts/admin/PropertyImporter.ts","../../../../src/ts/admin/ThemesController.ts","../../../../src/ts/admin/UsersController.ts","../../../../src/ts/admin.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"function\"!=typeof Object.create&&(Object.create=function(t){function o(){}return o.prototype=t,new o}),function(t,o,i,s){\"use strict\";var n={_positionClasses:[\"bottom-left\",\"bottom-right\",\"top-right\",\"top-left\",\"bottom-center\",\"top-center\",\"mid-center\"],_defaultIcons:[\"success\",\"error\",\"info\",\"warning\"],init:function(o,i){this.prepareOptions(o,t.toast.options),this.process()},prepareOptions:function(o,i){var s={};\"string\"==typeof o||o instanceof Array?s.text=o:s=o,this.options=t.extend({},i,s)},process:function(){this.setup(),this.addToDom(),this.position(),this.bindToast(),this.animate()},setup:function(){var o=\"\";if(this._toastEl=this._toastEl||t(\"<div></div>\",{\"class\":\"jq-toast-single\"}),o+='<span class=\"jq-toast-loader\"></span>',this.options.allowToastClose&&(o+='<span class=\"close-jq-toast-single\">&times;</span>'),this.options.text instanceof Array){this.options.heading&&(o+='<h2 class=\"jq-toast-heading\">'+this.options.heading+\"</h2>\"),o+='<ul class=\"jq-toast-ul\">';for(var i=0;i<this.options.text.length;i++)o+='<li class=\"jq-toast-li\" id=\"jq-toast-item-'+i+'\">'+this.options.text[i]+\"</li>\";o+=\"</ul>\"}else this.options.heading&&(o+='<h2 class=\"jq-toast-heading\">'+this.options.heading+\"</h2>\"),o+=this.options.text;this._toastEl.html(o),this.options.bgColor!==!1&&this._toastEl.css(\"background-color\",this.options.bgColor),this.options.textColor!==!1&&this._toastEl.css(\"color\",this.options.textColor),this.options.textAlign&&this._toastEl.css(\"text-align\",this.options.textAlign),this.options.icon!==!1&&(this._toastEl.addClass(\"jq-has-icon\"),-1!==t.inArray(this.options.icon,this._defaultIcons)&&this._toastEl.addClass(\"jq-icon-\"+this.options.icon)),this.options[\"class\"]!==!1&&this._toastEl.addClass(this.options[\"class\"])},position:function(){\"string\"==typeof this.options.position&&-1!==t.inArray(this.options.position,this._positionClasses)?\"bottom-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,bottom:20}):\"top-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,top:20}):\"mid-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,top:t(o).outerHeight()/2-this._container.outerHeight()/2}):this._container.addClass(this.options.position):\"object\"==typeof this.options.position?this._container.css({top:this.options.position.top?this.options.position.top:\"auto\",bottom:this.options.position.bottom?this.options.position.bottom:\"auto\",left:this.options.position.left?this.options.position.left:\"auto\",right:this.options.position.right?this.options.position.right:\"auto\"}):this._container.addClass(\"bottom-left\")},bindToast:function(){var t=this;this._toastEl.on(\"afterShown\",function(){t.processLoader()}),this._toastEl.find(\".close-jq-toast-single\").on(\"click\",function(o){o.preventDefault(),\"fade\"===t.options.showHideTransition?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.fadeOut(function(){t._toastEl.trigger(\"afterHidden\")})):\"slide\"===t.options.showHideTransition?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.slideUp(function(){t._toastEl.trigger(\"afterHidden\")})):(t._toastEl.trigger(\"beforeHide\"),t._toastEl.hide(function(){t._toastEl.trigger(\"afterHidden\")}))}),\"function\"==typeof this.options.beforeShow&&this._toastEl.on(\"beforeShow\",function(){t.options.beforeShow()}),\"function\"==typeof this.options.afterShown&&this._toastEl.on(\"afterShown\",function(){t.options.afterShown()}),\"function\"==typeof this.options.beforeHide&&this._toastEl.on(\"beforeHide\",function(){t.options.beforeHide()}),\"function\"==typeof this.options.afterHidden&&this._toastEl.on(\"afterHidden\",function(){t.options.afterHidden()})},addToDom:function(){var o=t(\".jq-toast-wrap\");if(0===o.length?(o=t(\"<div></div>\",{\"class\":\"jq-toast-wrap\"}),t(\"body\").append(o)):(!this.options.stack||isNaN(parseInt(this.options.stack,10)))&&o.empty(),o.find(\".jq-toast-single:hidden\").remove(),o.append(this._toastEl),this.options.stack&&!isNaN(parseInt(this.options.stack),10)){var i=o.find(\".jq-toast-single\").length,s=i-this.options.stack;s>0&&t(\".jq-toast-wrap\").find(\".jq-toast-single\").slice(0,s).remove()}this._container=o},canAutoHide:function(){return this.options.hideAfter!==!1&&!isNaN(parseInt(this.options.hideAfter,10))},processLoader:function(){if(!this.canAutoHide()||this.options.loader===!1)return!1;var t=this._toastEl.find(\".jq-toast-loader\"),o=(this.options.hideAfter-400)/1e3+\"s\",i=this.options.loaderBg,s=t.attr(\"style\")||\"\";s=s.substring(0,s.indexOf(\"-webkit-transition\")),s+=\"-webkit-transition: width \"+o+\" ease-in; -o-transition: width \"+o+\" ease-in; transition: width \"+o+\" ease-in; background-color: \"+i+\";\",t.attr(\"style\",s).addClass(\"jq-toast-loaded\")},animate:function(){var t=this;if(this._toastEl.hide(),this._toastEl.trigger(\"beforeShow\"),\"fade\"===this.options.showHideTransition.toLowerCase()?this._toastEl.fadeIn(function(){t._toastEl.trigger(\"afterShown\")}):\"slide\"===this.options.showHideTransition.toLowerCase()?this._toastEl.slideDown(function(){t._toastEl.trigger(\"afterShown\")}):this._toastEl.show(function(){t._toastEl.trigger(\"afterShown\")}),this.canAutoHide()){var t=this;o.setTimeout(function(){\"fade\"===t.options.showHideTransition.toLowerCase()?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.fadeOut(function(){t._toastEl.trigger(\"afterHidden\")})):\"slide\"===t.options.showHideTransition.toLowerCase()?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.slideUp(function(){t._toastEl.trigger(\"afterHidden\")})):(t._toastEl.trigger(\"beforeHide\"),t._toastEl.hide(function(){t._toastEl.trigger(\"afterHidden\")}))},this.options.hideAfter)}},reset:function(o){\"all\"===o?t(\".jq-toast-wrap\").remove():this._toastEl.remove()},update:function(t){this.prepareOptions(t,this.options),this.setup(),this.bindToast()}};t.toast=function(t){var o=Object.create(n);return o.init(t,this),{reset:function(t){o.reset(t)},update:function(t){o.update(t)}}},t.toast.options={text:\"\",heading:\"\",showHideTransition:\"fade\",allowToastClose:!0,hideAfter:3e3,loader:!0,loaderBg:\"#9EC600\",stack:5,position:\"bottom-left\",bgColor:!1,textColor:!1,textAlign:\"left\",icon:!1,beforeShow:function(){},afterShown:function(){},beforeHide:function(){},afterHidden:function(){}}}(jQuery,window,document);","import Swal, { SweetAlertOptions, SweetAlertResult } from 'sweetalert2';\r\nimport 'jquery-toast-plugin';\r\n\r\nconst BootstrapSwal = Swal.mixin({\r\n customClass: {\r\n confirmButton: 'btn btn-success m-1 px-3',\r\n cancelButton: 'btn btn-danger m-1 px-3'\r\n },\r\n buttonsStyling: false\r\n});\r\n\r\nexport class Alerts {\r\n\r\n static log(message: any, type: 'message' | 'error' | 'warning' | 'info' = 'message') {\r\n if (!document.body.classList.contains('dev-mode')) {\r\n return;\r\n }\r\n switch (type) {\r\n case 'error':\r\n console.error(message);\r\n break;\r\n case 'message':\r\n console.log(message);\r\n break;\r\n case 'warning':\r\n console.warn(message);\r\n break;\r\n case 'info':\r\n console.info(message);\r\n break;\r\n }\r\n }\r\n\r\n static error(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#d0100b',\r\n textColor: 'white', \r\n hideAfter: hideAfter\r\n });\r\n\r\n }\r\n\r\n static warning(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#ef9007',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static message(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#222222',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static success(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#28a745',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static alert(message: string, title: string = null, icon: string = 'info', hideAfter: number = 10000) {\r\n\r\n switch (icon) {\r\n case 'error':\r\n Alerts.error(message, title, hideAfter);\r\n break;\r\n case 'warning':\r\n Alerts.warning(message, title, hideAfter);\r\n break;\r\n case 'info':\r\n Alerts.message(message, title, hideAfter);\r\n break;\r\n case 'success':\r\n Alerts.success(message, title, hideAfter);\r\n break;\r\n }\r\n\r\n }\r\n\r\n static sweetAlert(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n BootstrapSwal.fire(options).then(function (result: any) {\r\n callback(result);\r\n });\r\n }\r\n\r\n static confirm(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n\r\n let baseOptions: SweetAlertOptions = {\r\n showCancelButton: true,\r\n footer: null,\r\n title: 'Are you sure?',\r\n html: 'Are you sure you want to do this?',\r\n confirmButtonText: 'Ok', \r\n cancelButtonText:'Cancel'\r\n };\r\n\r\n Alerts.sweetAlert({...baseOptions, ...options}, callback);\r\n }\r\n\r\n static prompt(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n\r\n let baseOptions: SweetAlertOptions = {\r\n input: 'text',\r\n inputAttributes: {\r\n autocapitalize: 'off'\r\n },\r\n showCancelButton: true,\r\n icon: 'info',\r\n footer: '<span class=\"text-warning\"><i class=\"fa fa-exclamation-triangle\"></i> This cannot be undone.</span>', \r\n confirmButtonText: 'Ok', \r\n cancelButtonText: 'Cancel'\r\n };\r\n\r\n Alerts.sweetAlert({...baseOptions, ...options}, callback);\r\n }\r\n\r\n log(message: string, type: 'message' | 'error' | 'warning' | 'info' = 'message') {\r\n Alerts.log(message, type);\r\n }\r\n\r\n error(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.error(message, title, hideAfter);\r\n }\r\n\r\n warning(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.warning(message, title, hideAfter);\r\n }\r\n\r\n message(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.message(message, title, hideAfter);\r\n }\r\n\r\n success(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.success(message, title, hideAfter);\r\n }\r\n\r\n alert(message: string, title: string = null, icon: string = 'info', hideAfter: number = 10000) {\r\n Alerts.alert(message, message, icon, hideAfter);\r\n }\r\n\r\n sweetAlert(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.sweetAlert(options, callback);\r\n }\r\n\r\n confirm(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.confirm(options, callback);\r\n }\r\n\r\n prompt(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.prompt(options, callback);\r\n }\r\n\r\n}","import Pickr from '@simonwep/pickr';\r\nimport '@simonwep/pickr';\r\n\r\nexport class ColorPickers {\r\n constructor() {\r\n \r\n }\r\n\r\n loadColorPickers(tag: string = '.color-picker') {\r\n\r\n let updateColorFieldValue = function (color: Pickr.HSVaColor, eventSource: any, instance: any) {\r\n let elemId = $(instance._root.button).parent().data('target');\r\n $(instance._root.button).parent().css({ 'background-color': color.toHEXA().toString() });\r\n let colorHex = instance.getColor().toHEXA();\r\n var result = \"\";\r\n for (let i = colorHex.length - 1; i >= 0; i--) {\r\n result = colorHex[i] + result;\r\n }\r\n $(elemId).val('#' + result);\r\n $(elemId).change();\r\n };\r\n\r\n var pickrs = [];\r\n // Simple example, see optional options for more configuration.\r\n $(tag).each(function (index: number, elem: HTMLElement) {\r\n\r\n let lockOpacity = true;\r\n if ($(this).data('opacity') == 'true') {\r\n lockOpacity = false;\r\n }\r\n\r\n let pickr = Pickr.create({\r\n el: elem.children[0] as HTMLElement,\r\n appClass: 'custom-class',\r\n theme: 'monolith',\r\n useAsButton: true,\r\n default: $(this).data('default') || 'none',\r\n lockOpacity: lockOpacity,\r\n defaultRepresentation: 'HEXA',\r\n position: 'bottom-end',\r\n components: {\r\n opacity: true,\r\n hue: true,\r\n\r\n interaction: {\r\n hex: false,\r\n rgba: false,\r\n hsva: false,\r\n input: true,\r\n clear: true\r\n }\r\n }\r\n })\r\n\r\n .on('init', function (instance: any) {\r\n let elemId = $(instance._root.button).parent().data('target');\r\n let value = $(elemId).val();\r\n $(instance._root.button).parent().on('click', $.proxy(function () {\r\n this.show();\r\n }, instance));\r\n $(elemId).on('click', $.proxy(function () {\r\n this.show();\r\n }, instance));\r\n if (value) {\r\n instance.setColor(value);\r\n updateColorFieldValue(instance.getColor(), null, instance);\r\n }\r\n })\r\n\r\n .on('clear', function (instance: any) {\r\n let elemId = $(instance._root.button).parent().data('target');\r\n instance.setColor('transparent');\r\n updateColorFieldValue(instance.getColor(), null, instance);\r\n $(elemId).val('');\r\n $(elemId).change();\r\n })\r\n\r\n .on('change', updateColorFieldValue);\r\n\r\n pickrs.push(pickr);\r\n\r\n });\r\n\r\n }\r\n}","import { Alerts } from \"./Alerts\";\r\nimport { Response } from \"./Response\";\r\n\r\nexport interface InlineOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\nexport class Inline {\r\n static load(tag: HTMLElement, options: InlineOptions) {\r\n\r\n let $tag = $(tag) as JQuery<HTMLElement>;\r\n $tag.addClass('loading');\r\n if (options.onLoad) {\r\n options.onLoad(tag);\r\n }\r\n\r\n let url: string = $tag.data('url');\r\n $.get(url, function (data: string) {\r\n\r\n if (options.onRender) {\r\n data = options.onRender(data, tag);\r\n }\r\n\r\n $tag.html(data);\r\n $tag.removeClass('loading');\r\n\r\n if (options.onComplete) {\r\n options.onComplete(data, tag);\r\n }\r\n\r\n })\r\n .fail(options.onError ?? Inline.handleError);\r\n }\r\n\r\n static task(url: string, sender: HTMLElement,\r\n complete: (data: Response, sender?: HTMLElement) => void = null,\r\n error: (jqXHR: any, textStatus: any, errorThrown: any) => void = null): void {\r\n\r\n if (sender) {\r\n sender.classList.add('loading');\r\n }\r\n $.get(url, function (response: Response) {\r\n if (sender) {\r\n sender.classList.remove('loading');\r\n }\r\n if (complete) {\r\n complete(response, sender);\r\n }\r\n })\r\n .fail(error ?? Inline.handleError);\r\n\r\n }\r\n\r\n static post(url: string, sender: HTMLElement,\r\n complete: (data: Response, sender?: HTMLElement) => void = null,\r\n error: (jqXHR: any, textStatus: any, errorThrown: any) => void = null): void {\r\n\r\n if (sender) {\r\n sender.classList.add('loading');\r\n }\r\n $.post(url, function (response: Response) {\r\n if (sender) {\r\n sender.classList.remove('loading');\r\n }\r\n if (complete) {\r\n complete(response, sender);\r\n }\r\n })\r\n .fail(error ?? Inline.handleError);\r\n\r\n }\r\n\r\n static handleError(xhr: { status: string | number; }, textStatus: any, errorThrown: any) {\r\n if (xhr.status === 500) {\r\n Alerts.error(\"There was an error processing the content, please contact an administrator if this continues.\", \"Error \" + xhr.status, 10000);\r\n } else if (xhr.status === 404) {\r\n Alerts.error(\"The content could not be found.\", \"Error \" + xhr.status, 10000);\r\n } else if (xhr.status === 401) {\r\n Alerts.error(\"You are not allowed to view this resource, are you logged in correctly?\", \"Error \" + xhr.status, 10000);\r\n window.location = window.location;\r\n }\r\n }\r\n}\r\n\r\n","import { Alerts } from \"./Alerts\";\r\nimport { Inline } from \"./Inline\";\r\n\r\ndeclare global {\r\n interface HTMLElement {\r\n hoodDataList: DataList;\r\n }\r\n}\r\n\r\nexport interface DataListOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\n/**\r\n * Attach a data list feed to an HTML element. The element must have a data-url attribute to connect to a feed.\r\n */\r\n\r\nexport class DataList {\r\n element: HTMLElement;\r\n options: DataListOptions;\r\n\r\n /**\r\n * @param element The datalist element. The element must have a data-url attribute to connect to a feed.\r\n */\r\n constructor(element: HTMLElement, options: DataListOptions) {\r\n\r\n this.element = element;\r\n this.element.hoodDataList = this;\r\n if (typeof (element) == 'undefined' || element == null) {\r\n Alerts.log('Could not DataList to element, element does not exist.', 'error');\r\n return;\r\n }\r\n\r\n this.options = { ...this.options, ...options };\r\n\r\n if ($(this.element).hasClass('query')) {\r\n\r\n let r = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n let pageUrl: URL = null;\r\n if (r.test(this.element.dataset.url)) {\r\n pageUrl = new URL(this.element.dataset.url);\r\n } else {\r\n pageUrl = new URL(window.location.origin + this.element.dataset.url);\r\n }\r\n if ('URLSearchParams' in window) {\r\n var searchParams = new URLSearchParams(window.location.search);\r\n var urlParams = new URLSearchParams(pageUrl.search);\r\n searchParams.forEach((value, key, parent) => {\r\n urlParams.set(key, value);\r\n });\r\n if (urlParams.get(\"page\") == \"0\") {\r\n urlParams.set(\"page\", \"1\");\r\n }\r\n pageUrl.search = urlParams.toString();\r\n } else {\r\n pageUrl.search = window.location.search;\r\n }\r\n\r\n let url = pageUrl.pathname + pageUrl.search;\r\n $(this.element).attr('data-url', url);\r\n $(this.element).data('url', url);\r\n\r\n }\r\n\r\n if (!$(this.element).hasClass('refresh-only')) {\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n this.reload(new URL(listUrl.href));\r\n }\r\n\r\n $(this.element).on('click', '.pagination a, a.hood-inline-list-target', function (this: DataList, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n\r\n var url = document.createElement('a');\r\n url.href = (e.currentTarget as HTMLAnchorElement).href;\r\n\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n listUrl.search = url.search;\r\n\r\n this.reload(new URL(listUrl.href));\r\n\r\n }.bind(this));\r\n\r\n $('body').on('submit', `form.inline[data-target=\"#${this.element.id}\"]`, function (this: DataList, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n\r\n let $form = $(e.currentTarget);\r\n\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n\r\n listUrl.search = \"?\" + $form.serialize();\r\n this.reload(new URL(listUrl.href));\r\n\r\n }.bind(this));\r\n\r\n }\r\n\r\n reload(this: DataList, url: URL = null) {\r\n if (url) {\r\n if (history.pushState && $(this.element).hasClass('query')) {\r\n let newurl = window.location.protocol + \"//\" + window.location.host + window.location.pathname + (url.href.contains('?') ? \"?\" + url.href.substring(url.href.indexOf('?') + 1) : '');\r\n window.history.pushState({ path: newurl }, '', newurl);\r\n }\r\n $(this.element).data('url', url);\r\n }\r\n Inline.load(this.element, { ...this.options });\r\n }\r\n\r\n}\r\n","import { KeyValue } from \"../interfaces/KeyValue\";\r\nimport { Alerts } from \"./Alerts\";\r\nimport { MediaObject } from \"./Media\";\r\n\r\nexport declare interface Response {\r\n\r\n data: any[];\r\n count: number;\r\n\r\n url: string;\r\n\r\n title: string;\r\n message: string;\r\n\r\n success: boolean;\r\n\r\n exception: KeyValue<string, string>[];\r\n errors: string;\r\n error: string;\r\n\r\n media: MediaObject;\r\n mediaJson: string;\r\n\r\n process(autoHide: number): void;\r\n\r\n}\r\n\r\nexport class Response {\r\n constructor() {\r\n\r\n }\r\n\r\n static process(data: Response | any, autoHide: number = 5000) {\r\n if (data.success) {\r\n Alerts.success(data.message, data.title, autoHide);\r\n } else {\r\n Alerts.error(data.errors, data.title, autoHide);\r\n }\r\n }\r\n}\r\n\r\n","import { Modal } from \"bootstrap\";\r\nimport { Inline } from \"./Inline\";\r\n\r\nexport interface ModalOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (sender: HTMLElement, html: string) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (sender: HTMLElement) => void;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onHidden?: (sender: HTMLElement) => void;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n closePrevious?: boolean;\r\n}\r\n\r\n\r\nexport class ModalController {\r\n element: HTMLElement;\r\n modal: Modal;\r\n isOpen: boolean = false;\r\n options: ModalOptions = {\r\n closePrevious: true\r\n }\r\n\r\n constructor(options: ModalOptions = null) {\r\n this.options = { ...this.options, ...options };\r\n }\r\n\r\n show(url: string | URL, sender: HTMLElement = null) {\r\n if (this.options.onLoad) {\r\n this.options.onLoad(this.element);\r\n }\r\n\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.isOpen = true;\r\n\r\n $.get(url as string, function (data: string) {\r\n\r\n if (this.modal && this.options.closePrevious) {\r\n this.close();\r\n }\r\n\r\n if (this.options.onRender) {\r\n data = this.options.onRender(this.element, data);\r\n }\r\n\r\n this.element = this.createElementFromHTML(data);\r\n this.element.classList.add('hood-inline-modal');\r\n\r\n $('body').append(this.element);\r\n this.modal = new Modal(this.element, {});\r\n this.modal.show();\r\n\r\n // Workaround for sweetalert popups.\r\n this.element.addEventListener('shown.bs.modal', function (this: ModalController) {\r\n $(document).off('focusin.modal');\r\n }.bind(this));\r\n this.element.addEventListener('hidden.bs.modal', function (this: ModalController) {\r\n if (this.options.onHidden) {\r\n this.options.onHidden(this.element);\r\n }\r\n this.dispose();\r\n this.isOpen = false;\r\n }.bind(this));\r\n\r\n if (this.options.onComplete) {\r\n this.options.onComplete(this.element);\r\n }\r\n\r\n\r\n }.bind(this))\r\n .fail(function (this: ModalController, xhr: { status: string | number; }, textStatus: any, errorThrown: any) {\r\n this.isOpen = false;\r\n if (this.options.onError) {\r\n this.options.onError(xhr, textStatus, errorThrown);\r\n }\r\n Inline.handleError(xhr, textStatus, errorThrown);\r\n }.bind(this));\r\n }\r\n\r\n close() {\r\n if (this.modal) {\r\n this.modal.hide();\r\n }\r\n }\r\n\r\n dispose() {\r\n this.modal.dispose();\r\n this.element.remove();\r\n }\r\n\r\n createElementFromHTML(htmlString: string): HTMLElement {\r\n var div = document.createElement('div');\r\n div.innerHTML = htmlString.trim();\r\n\r\n // Change this to div.childNodes to support multiple top-level nodes\r\n return div.firstChild as HTMLElement;\r\n }\r\n}","import { Alerts } from \"./Alerts\";\r\nimport { Inline } from \"./Inline\";\r\nimport { Response } from \"./Response\";\r\n\r\nexport interface ValidatorOptions {\r\n\terrorAlert?: string;\r\n\r\n\t/**\r\n\t * Called before the submit of the form data, you can return the data to be serialised.\r\n\t */\r\n\tonSubmit?: (sender: Validator) => void;\r\n\r\n\t/**\r\n\t * Called when submit is complete.\r\n\t */\r\n\tonComplete?: (data: Response, sender?: Validator) => void;\r\n\r\n\t/**\r\n\t * Called when an error occurs.\r\n\t */\r\n\tonError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n\tserializationFunction?: () => string;\r\n\r\n\tuseAjax?: boolean;\r\n}\r\n\r\nexport class Validator {\r\n\telement: HTMLFormElement;\r\n\toptions: ValidatorOptions = {\r\n\t\terrorAlert: \"There are errors on the form, please check your answers and try again.\",\r\n\t\tuseAjax: true,\r\n\t};\r\n\r\n\t/**\r\n\t * @param element The datalist element. The element must have a data-url attribute to connect to a feed.\r\n\t */\r\n\tconstructor(element: HTMLFormElement, options: ValidatorOptions) {\r\n\t\tthis.element = element;\r\n\t\tif (!this.element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.options.serializationFunction = function (this: Validator) {\r\n\t\t\tlet rtn = $(this.element).serialize();\r\n\t\t\treturn rtn;\r\n\t\t}.bind(this);\r\n\r\n\t\tthis.options = { ...this.options, ...options };\r\n\r\n\t\tthis.element.addEventListener(\r\n\t\t\t\"submit\",\r\n\t\t\tfunction (this: Validator, e: Event) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.submitForm();\r\n\t\t\t}.bind(this)\r\n\t\t);\r\n\t\tvar tag = '[data-submit=\"#' + this.element.id + '\"]';\r\n\t\tlet submitButtons = $(tag);\r\n\t\tif (submitButtons) {\r\n\t\t\tsubmitButtons.on(\r\n\t\t\t\t\"click\",\r\n\t\t\t\tfunction (this: Validator, e: Event) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\t\tlet exit = $(e.currentTarget).data(\"exit\");\r\n\t\t\t\t\tif (exit) {\r\n\t\t\t\t\t\t$(this.element).find(\"input#exit\").remove();\r\n\t\t\t\t\t\t$(\"<input id='exit' />\").attr(\"type\", \"hidden\").attr(\"name\", \"exit\").attr(\"value\", \"true\").appendTo(this.element);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.submitForm();\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tsubmitForm() {\r\n\t\tthis.element.classList.add(\"was-validated\");\r\n\t\tif (this.element.checkValidity()) {\r\n\t\t\tthis.element.classList.add(\"loading\");\r\n\r\n\t\t\tlet checkboxes = this.element.querySelector(\"input[type=checkbox]\");\r\n\t\t\tif (checkboxes) {\r\n\t\t\t\tArray.prototype.slice.call(checkboxes).forEach(function (checkbox: HTMLInputElement) {\r\n\t\t\t\t\tif ($(this).is(\":checked\")) {\r\n\t\t\t\t\t\t$(this).val(\"true\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.onSubmit) {\r\n\t\t\t\tthis.options.onSubmit(this);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.useAjax) {\r\n\t\t\t\tlet formData = this.options.serializationFunction();\r\n\r\n\t\t\t\t$.post(\r\n\t\t\t\t\tthis.element.action,\r\n\t\t\t\t\tformData,\r\n\t\t\t\t\tfunction (this: Validator, data: any) {\r\n\t\t\t\t\t\tif (this.options.onComplete) {\r\n\t\t\t\t\t\t\tthis.options.onComplete(data, this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}.bind(this)\r\n\t\t\t\t)\r\n\t\t\t\t\t.fail(this.options.onError ?? Inline.handleError)\r\n\t\t\t\t\t.always(function (this: Validator) {\r\n\t\t\t\t\t\tthis.element.classList.remove(\"loading\");\r\n\t\t\t\t\t}.bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tthis.element.submit();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this.options.errorAlert) {\r\n\t\t\t\tAlerts.error(this.options.errorAlert, null, 5000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\n\r\nimport { Alerts } from \"./Alerts\";\r\nimport { Response } from \"./Response\";\r\nimport { DataList } from \"./DataList\";\r\nimport { ModalController } from \"./Modal\";\r\nimport { Validator } from \"./Validator\";\r\nimport { Inline } from \"./Inline\";\r\nimport { Editor } from \"tinymce\";\r\n\r\nexport declare interface MediaObject {\r\n\r\n id: number;\r\n fileSize: number;\r\n fileType: string;\r\n filename: string;\r\n blobReference: string;\r\n\r\n createdOn: Date;\r\n\r\n url: string;\r\n\r\n thumbUrl: string;\r\n smallUrl: string;\r\n mediumUrl: string;\r\n largeUrl: string;\r\n uniqueId: string;\r\n\r\n genericFileType: 'Image' | 'PDF' | 'Word' | 'Photoshop' | 'Excel' | 'PowerPoint' | 'Directory' | 'Audio' | 'Video' | 'Unknown';\r\n\r\n downloadUrl: string;\r\n downloadUrlHttps: string;\r\n\r\n icon: string;\r\n formattedSize: string;\r\n path: string;\r\n\r\n}\r\n\r\nexport interface MediaOptions {\r\n\r\n /**\r\n * Action for the media service to take when a media item is clicked.\r\n */\r\n action: 'insert' | 'attach' | 'select' | string;\r\n\r\n /**\r\n * Selector for any elements that require a refresh of background-image or src (if applicable). \r\n */\r\n refresh?: string;\r\n\r\n /**\r\n * Insert/Select Only: Input field to insert image url to. \r\n */\r\n size?: string;\r\n\r\n /**\r\n * Select/Gallery Only: Input field to insert image url to. \r\n */\r\n target?: string;\r\n\r\n /**\r\n * Insert Only: Input field to insert image url to. \r\n */\r\n targetEditor?: Editor;\r\n\r\n /**\r\n * Attach Only: Post url to send the selected media id to when clicked. Must accept mediaId as a parameter.\r\n */\r\n url?: string;\r\n\r\n /**\r\n * Called before the action is carried out.\r\n */\r\n beforeAction?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when the action is complete.\r\n */\r\n onAction?: (mediaObject: MediaObject, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the media list is is fetched.\r\n */\r\n onListLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the media list. Must return the data back to datalist to render.\r\n */\r\n onListRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when media list loading and rendering is complete.\r\n */\r\n onListComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\nexport class MediaService {\r\n media: DataList;\r\n element: HTMLElement;\r\n options: MediaOptions = {\r\n action: 'show',\r\n size: 'large'\r\n };\r\n currentBlade: ModalController;\r\n progress: JQuery<HTMLElement>;\r\n progressText: JQuery<HTMLElement>;\r\n uploadButton: HTMLElement;\r\n uploader: HTMLElement;\r\n progressArea: HTMLElement;\r\n dropzone: any;\r\n galleryInitialised: boolean = false;\r\n\r\n constructor(element: HTMLElement, options: MediaOptions) {\r\n this.element = element;\r\n if (!this.element) {\r\n return;\r\n }\r\n\r\n this.options = { ...this.options, ...options };\r\n\r\n $('body').off('click', '.media-delete', this.delete.bind(this));\r\n $('body').on('click', '.media-delete', this.delete.bind(this));\r\n\r\n $(this.element).on('click', '.media-item', this.action.bind(this));\r\n $(this.element).on('click', '.media-create-directory', this.createDirectory.bind(this))\r\n $(this.element).on('click', '.media-delete-directory', this.deleteDirectory.bind(this));\r\n\r\n this.media = new DataList(this.element, {\r\n onLoad: this.options.onListLoad,\r\n onError: this.options.onError,\r\n onRender: this.options.onListRender,\r\n onComplete: function (this: MediaService, html: string, sender: HTMLElement) {\r\n this.initUploader();\r\n\r\n // if this is gallery type, add the \"Add to gallery button\" and hook it to the add function\r\n if (this.options.action == 'gallery' && !this.galleryInitialised) {\r\n $('#media-select-modal .modal-footer').removeClass('d-none');\r\n $('#media-select-modal .modal-footer').on('click', this.galleryAdd.bind(this));\r\n this.galleryInitialised = true;\r\n }\r\n\r\n if (this.options.onListComplete) {\r\n this.options.onListComplete(html, sender)\r\n }\r\n }.bind(this)\r\n });\r\n\r\n }\r\n\r\n initUploader() {\r\n this.uploadButton = document.getElementById('media-add');\r\n this.uploader = document.getElementById('media-upload');\r\n if (!this.uploadButton || !this.uploader)\r\n return;\r\n\r\n this.progressArea = document.getElementById('media-progress');\r\n this.progressText = $('<div class=\"progress-text text-muted mb-3\"><i class=\"fa fa-info-circle me-2\"></i>Uploading file <span></span>...</div>');\r\n this.progress = $('<div class=\"progress\"><div class= \"progress-bar progress-bar-striped\" role=\"progressbar\" style=\"width:0%\" aria-valuenow=\"10\" aria-valuemin=\"0\" aria-valuemax=\"100\" ></div></div>');\r\n\r\n this.progressText.appendTo(this.progressArea);\r\n this.progress.appendTo(this.progressArea);\r\n\r\n var dz: Dropzone = null;\r\n $(\"#media-upload\").dropzone({\r\n url: $(\"#media-upload\").data('url') + \"?directoryId=\" + $(\"#media-list > #upload-directory-id\").val(),\r\n thumbnailWidth: 80,\r\n thumbnailHeight: 80,\r\n parallelUploads: 5,\r\n paramName: 'files',\r\n acceptedFiles: $(\"#media-upload\").data('types') || \".png,.jpg,.jpeg,.gif,.pdf\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: false, // Define the container to display the previews\r\n clickable: \"#media-add\", // Define the element that should be used as click trigger to select files.\r\n dictDefaultMessage: '<span><i class=\"fa fa-cloud-upload fa-4x\"></i><br />Drag and drop files here, or simply click me!</div>',\r\n dictResponseError: 'Error while uploading file!',\r\n init: function () {\r\n dz = this;\r\n }\r\n });\r\n\r\n dz.on(\"error\", function (this: MediaService, file: Dropzone.DropzoneFile, errormessage: any) {\r\n Alerts.warning(errormessage);\r\n }.bind(this));\r\n\r\n dz.on(\"success\", function (this: MediaService, file: Dropzone.DropzoneFile, data: Response) {\r\n Response.process(data);\r\n }.bind(this));\r\n\r\n dz.on(\"addedfile\", function (this: MediaService, file: Dropzone.DropzoneFile) {\r\n this.progress.find('.progress-bar').css({ width: 0 + \"%\" });\r\n this.progressText.find('span').html(0 + \"%\");\r\n }.bind(this));\r\n\r\n // Update the total progress bar\r\n dz.on(\"totaluploadprogress\", function (this: MediaService, totalProgress: number, totalBytes: number, totalBytesSent: number) {\r\n this.progress.find('.progress-bar').css({ width: totalProgress + \"%\" });\r\n this.progressText.find('span').html(Math.round(totalProgress) + \"% - \" + totalBytesSent.formatKilobytes() + \" / \" + totalBytes.formatKilobytes());\r\n }.bind(this));\r\n\r\n dz.on(\"sending\", function (this: MediaService, file: Dropzone.DropzoneFile) {\r\n // Show the total progress bar when upload starts\r\n this.progressArea.classList.remove('collapse');\r\n this.progress.find('.progress-bar').css({ width: 0 + \"%\" });\r\n this.progressText.find('span').html(0 + \"%\");\r\n }.bind(this));\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n dz.on(\"complete\", function (this: MediaService, file: Dropzone.DropzoneFile) {\r\n this.media.reload();\r\n }.bind(this));\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n dz.on(\"queuecomplete\", function (this: MediaService) {\r\n this.progressArea.classList.add('collapse');\r\n this.media.reload();\r\n }.bind(this));\r\n }\r\n\r\n createDirectory(this: MediaService, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createDirectoryModal: ModalController = new ModalController({\r\n onComplete: function (this: MediaService) {\r\n let form = document.getElementById('content-directories-edit-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: MediaService, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (response.success) {\r\n this.media.reload();\r\n createDirectoryModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createDirectoryModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n deleteDirectory(this: MediaService, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n Alerts.confirm({\r\n\r\n }, function (this: MediaService, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: MediaService, response: Response, sender: HTMLElement) {\r\n // Refresh the list, using the parent directory id - stored in the response's data array.\r\n Response.process(response, 5000);\r\n\r\n if (response.data.length > 0) {\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n listUrl.search = `?dir=${response.data[0]}`;\r\n this.media.reload(new URL(listUrl.href));\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n\r\n uploadUrl() {\r\n return $(\"#media-upload\").data('url') + \"?directoryId=\" + $(\"#media-list > #upload-directory-id\").val();\r\n }\r\n\r\n action(this: MediaService, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Load media object from clicked item in the media list\r\n let mediaObject: MediaObject = $(e.currentTarget).data('json') as MediaObject;\r\n\r\n // Perform the chosen action, which is set on the service's options when loaded.\r\n switch (this.options.action) {\r\n case 'select':\r\n this.select(mediaObject, e);\r\n break;\r\n case 'insert':\r\n this.insert(mediaObject, e);\r\n break;\r\n case 'attach':\r\n this.attach(mediaObject, e);\r\n break;\r\n case 'gallery':\r\n this.galleryClick(mediaObject, e);\r\n break;\r\n default:\r\n this.show(mediaObject, e);\r\n break;\r\n }\r\n\r\n }\r\n\r\n show(this: MediaService, mediaObject: MediaObject, sender: JQuery.ClickEvent) {\r\n\r\n // Load the media as a new blade to display.\r\n this.currentBlade = new ModalController();\r\n this.currentBlade.show($(sender.target).data('blade'), sender.target);\r\n\r\n // TODO: On close, reload the list and reinstate the modal??\r\n }\r\n\r\n select(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n Alerts.log(`[MediaService.select] Selecting media object id ${mediaObject.id} - ${mediaObject.filename} and inserting ${this.options.size} url to target: ${this.options.target}`);\r\n if (this.options.target) {\r\n let target = $(this.options.target);\r\n\r\n switch (this.options.size) {\r\n case 'thumb':\r\n target.val(mediaObject.thumbUrl);\r\n break;\r\n case 'small':\r\n target.val(mediaObject.smallUrl);\r\n break;\r\n case 'medium':\r\n target.val(mediaObject.mediumUrl);\r\n break;\r\n case 'large':\r\n target.val(mediaObject.largeUrl);\r\n break;\r\n case 'full':\r\n target.val(mediaObject.url);\r\n break;\r\n }\r\n }\r\n if (this.options.refresh) {\r\n MediaService.refresh(mediaObject, this.options.refresh);\r\n }\r\n\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(mediaObject);\r\n }\r\n }\r\n\r\n insert(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n // basic functionality to insert the correct string from the media response (from uploader) to given input element. \r\n Alerts.log(`[MediaService.insert] Selecting media object id ${mediaObject.id} - ${mediaObject.filename} and inserting ${this.options.size} image to target editor: ${this.options.target}`);\r\n this.options.targetEditor.insertContent('<img alt=\"' + mediaObject.filename + '\" src=\"' + mediaObject.url + '\" class=\"img-fluid\" />');\r\n\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(mediaObject);\r\n }\r\n }\r\n\r\n attach(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n // once file is uploaded to given directory, send media id to the given attach endpoint.\r\n Alerts.log(`[MediaService.attach] Attaching media object id ${mediaObject.id} - ${mediaObject.filename} to url: ${this.options.url}`);\r\n $.post(this.options.url, { mediaId: mediaObject.id }, function (this: MediaService, response: Response) {\r\n Response.process(response, 5000);\r\n MediaService.refresh(response.media, this.options.refresh);\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(mediaObject);\r\n }\r\n }.bind(this));\r\n }\r\n\r\n selectedMedia: MediaObject[] = new Array();\r\n\r\n galleryClick(this: MediaService, mediaObject: MediaObject, e: JQuery.ClickEvent): void {\r\n // once file is uploaded to given directory, send media id to the given attach endpoint.\r\n if (!this.isMediaSelected(mediaObject)) {\r\n Alerts.log(`[MediaService.galleryClick] Adding to selected media objects - id ${mediaObject.id} - ${mediaObject.filename}.`);\r\n this.selectedMedia.push(mediaObject);\r\n $(e.currentTarget).parents('.media-item').addClass('active');\r\n } else {\r\n Alerts.log(`[MediaService.galleryClick] Removing media from selection - id ${mediaObject.id} - ${mediaObject.filename}.}`);\r\n this.selectedMedia = this.selectedMedia.filter(function (obj: MediaObject) {\r\n return obj.id !== mediaObject.id;\r\n });\r\n $(e.currentTarget).parents('.media-item').removeClass('active');\r\n }\r\n }\r\n\r\n galleryAdd(this: MediaService, e: JQuery.ClickEvent): void {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // once file is uploaded to given directory, send media id to the given attach endpoint.\r\n Alerts.log(`[MediaService.galleryAdd] Adding ${this.selectedMedia.length} selected media objects to url: ${this.options.url}`);\r\n\r\n let mediaIds = this.selectedMedia.map(function (v: MediaObject) {\r\n return v.id;\r\n });\r\n\r\n // create the url to send to (add media id's to it as query params)\r\n $.post(this.options.url, { media: mediaIds }, function (this: MediaService, data: Response) {\r\n\r\n Response.process(data);\r\n\r\n // refresh the gallery - - \r\n let galleryEl = document.getElementById(this.options.target);\r\n let gallery: DataList = galleryEl.hoodDataList as DataList;\r\n gallery.reload();\r\n\r\n // Run the callback for onAction\r\n if (this.options.onAction) {\r\n this.options.onAction(data.media);\r\n }\r\n\r\n }.bind(this));\r\n\r\n }\r\n\r\n isMediaSelected(mediaObject: MediaObject): boolean {\r\n let added: boolean = false;\r\n this.selectedMedia.forEach(function (value: MediaObject, index: number, array: MediaObject[]) {\r\n if (value.id == mediaObject.id) {\r\n added = true;\r\n }\r\n });\r\n return added;\r\n }\r\n\r\n static refresh(media: MediaObject, refresh: string): void {\r\n\r\n let icon = media.icon;\r\n\r\n if (media.genericFileType === \"Image\") {\r\n icon = media.mediumUrl;\r\n }\r\n\r\n if (refresh) {\r\n let $image = $(refresh);\r\n $image.css({\r\n 'background-image': 'url(' + icon + ')'\r\n });\r\n $image.find('img').attr('src', icon);\r\n $image.removeClass('loading');\r\n }\r\n\r\n }\r\n\r\n delete(this: MediaService, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n Alerts.confirm({\r\n html: 'This file will be permanently deleted, are you sure?'\r\n }, function (this: MediaService, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: MediaService, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n this.media.reload();\r\n if (this.currentBlade) {\r\n this.currentBlade.close();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n\r\n}\r\n\r\nexport class MediaModal {\r\n modal: ModalController;\r\n list: HTMLElement;\r\n service: MediaService;\r\n element: HTMLElement;\r\n\r\n constructor() {\r\n $('body').on('click', '[data-hood-media=attach],[data-hood-media=select],[data-hood-media=gallery]', this.load.bind(this));\r\n $('body').on('click', '[data-hood-media=clear]', this.clear.bind(this));\r\n $('[data-hood-media=gallery]').each(this.initGallery.bind(this));\r\n }\r\n\r\n initGallery(this: MediaModal, index: number, element: HTMLElement): void {\r\n\r\n // setup the gallery list also, just a simple list jobby, and attach it to the \r\n let el = document.getElementById(element.dataset.hoodMediaTarget);\r\n if (el) {\r\n new DataList(el, {\r\n onComplete: function (this: MediaModal, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading gallery media list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n }\r\n\r\n load(this: MediaModal, e: JQuery.ClickEvent): void {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.element = e.currentTarget;\r\n\r\n if (this.modal && this.modal.isOpen) {\r\n return;\r\n }\r\n\r\n this.modal = new ModalController({\r\n\r\n onComplete: function (this: MediaModal, sender: HTMLElement) {\r\n\r\n this.list = document.getElementById('media-list');\r\n this.service = new MediaService(this.list, {\r\n action: this.element.dataset.hoodMedia,\r\n url: this.element.dataset.hoodMediaUrl,\r\n refresh: this.element.dataset.hoodMediaRefresh,\r\n target: this.element.dataset.hoodMediaTarget,\r\n size: this.element.dataset.hoodMediaSize,\r\n beforeAction: function (this: MediaModal, sender: HTMLElement, mediaObject: MediaObject) {\r\n }.bind(this),\r\n onAction: function (this: MediaModal, sender: HTMLElement, mediaObject: MediaObject) {\r\n\r\n this.modal.close();\r\n\r\n }.bind(this),\r\n onListLoad: (sender: HTMLElement) => {\r\n },\r\n onListRender: (data: string) => {\r\n return data;\r\n },\r\n onListComplete: (data: string) => {\r\n },\r\n onError: (jqXHR: any, textStatus: any, errorThrown: any) => {\r\n },\r\n });\r\n\r\n }.bind(this)\r\n\r\n });\r\n this.modal.show($(e.currentTarget).data('hood-media-list'), e.currentTarget);\r\n }\r\n\r\n clear(this: MediaModal, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n\r\n }, function (this: MediaModal, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: MediaModal, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n MediaService.refresh(response.media, e.currentTarget.dataset.hoodMediaRefresh);\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n}\r\n","import tinymce from 'tinymce/tinymce';\r\n\r\nimport { MediaObject, MediaService } from './Media';\r\nimport { ModalController } from './Modal';\r\n\r\nexport declare interface EditorOptions {\r\n linkClasses?: any;\r\n imageClasses?: any;\r\n}\r\n\r\nexport class Editors {\r\n options: EditorOptions = {\r\n linkClasses: [\r\n { title: 'None', value: '' },\r\n { title: 'Button link', value: 'btn btn-default' },\r\n { title: 'Theme coloured button link', value: 'btn btn-primary' },\r\n { title: 'Popup image/video', value: 'colorbox-iframe' },\r\n { title: 'Button popup link', value: 'btn btn-default colorbox-iframe' },\r\n { title: 'Theme coloured button popup link', value: 'btn btn-primary colorbox-iframe' },\r\n { title: 'Large link', value: 'font-lg' },\r\n { title: 'Large button link', value: 'btn btn-default btn-lg' },\r\n { title: 'Large theme coloured button link', value: 'btn btn-primary btn-lg' },\r\n { title: 'Large popup image/video', value: 'font-lg colorbox-iframe' },\r\n { title: 'Large Button popup link', value: 'btn btn-default btn-lg colorbox-iframe' },\r\n { title: 'Theme coloured button popup link', value: 'btn btn-primary btn-lg colorbox-iframe' }\r\n ],\r\n imageClasses: [\r\n { title: 'None', value: '' },\r\n { title: 'Full Width', value: 'user-image full' },\r\n { title: 'Left Aligned', value: 'user-image left' },\r\n { title: 'Centered', value: 'user-image center' },\r\n { title: 'Right Aligned', value: 'user-image right' },\r\n { title: 'Inline with text, top aligned', value: 'user-image inline top' },\r\n { title: 'Inline with text, middle aligned', value: 'user-image inline' },\r\n { title: 'Inline with text, bottom aligned', value: 'user-image inline bottom' },\r\n { title: 'Pulled Left', value: 'user-image pull-left' },\r\n { title: 'Pulled Right', value: 'user-image pull-right' },\r\n ]\r\n }\r\n\r\n constructor(options?: EditorOptions) {\r\n this.options = { ...this.options, ...options };\r\n }\r\n\r\n richTextEditors() {\r\n\r\n\r\n tinymce.init({\r\n selector: '.tinymce-full',\r\n height: 150,\r\n menubar: false,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste textcolor'\r\n ],\r\n toolbar: \"fullscreen code | styleselect forecolor backcolor | hoodimage link media image | bold italic | alignleft aligncenter alignright | bullist numlist | table | undo redo\",\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n setup: this.setupCommands.bind(this),\r\n image_dimensions: false,\r\n content_css: [\r\n '/dist/css/editor.css'\r\n ],\r\n\r\n });\r\n\r\n tinymce.init({\r\n selector: '.tinymce-simple',\r\n height: 150,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste code'\r\n ],\r\n menubar: false,\r\n toolbar: 'fullscreen | bold italic | bullist numlist | undo redo | link',\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n setup: this.setupCommands.bind(this),\r\n image_dimensions: false\r\n });\r\n\r\n tinymce.init({\r\n selector: '.tinymce-full-content',\r\n height: 500,\r\n menubar: false,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste textcolor'\r\n ],\r\n toolbar: \"fullscreen code | styleselect forecolor backcolor | hoodimage link media image | bold italic | alignleft aligncenter alignright | bullist numlist | table | undo redo\",\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n setup: this.setupCommands.bind(this),\r\n image_dimensions: false\r\n });\r\n\r\n tinymce.init({\r\n selector: '.tinymce-simple-content',\r\n height: 500,\r\n plugins: [\r\n 'advlist autolink lists link image charmap print preview anchor media',\r\n 'searchreplace visualblocks code fullscreen',\r\n 'insertdatetime media contextmenu paste'\r\n ],\r\n menubar: false,\r\n toolbar: 'fullscreen | bold italic | bullist numlist | undo redo | link',\r\n link_class_list: this.options.linkClasses,\r\n image_class_list: this.options.imageClasses,\r\n image_dimensions: false\r\n });\r\n }\r\n\r\n mediaModal: ModalController;\r\n list: HTMLElement;\r\n service: MediaService;\r\n currentEditor: JQuery<HTMLElement>;\r\n\r\n setupCommands(editor: any) {\r\n this.currentEditor = $('#' + editor.id);\r\n if (this.currentEditor.data('hoodMediaList')) {\r\n\r\n editor.ui.registry.addButton('hoodimage', {\r\n text: 'Insert image...',\r\n icon: 'image',\r\n onAction: function (this: Editors, e: any) {\r\n\r\n this.mediaModal = new ModalController({\r\n\r\n onComplete: function (this: Editors, sender: HTMLElement) {\r\n\r\n this.list = document.getElementById('media-list');\r\n this.service = new MediaService(this.list, {\r\n action: 'insert',\r\n url: this.currentEditor.data('hoodMediaList'),\r\n targetEditor: editor,\r\n size: this.currentEditor.data('hoodMediaSize'),\r\n beforeAction: function (this: Editors, sender: HTMLElement, mediaObject: MediaObject) {\r\n }.bind(this),\r\n onAction: function (this: Editors, sender: HTMLElement, mediaObject: MediaObject) {\r\n this.mediaModal.close();\r\n }.bind(this),\r\n onListLoad: (sender: HTMLElement) => {\r\n },\r\n onListRender: (data: string) => {\r\n return data;\r\n },\r\n onListComplete: (data: string) => {\r\n },\r\n onError: (jqXHR: any, textStatus: any, errorThrown: any) => {\r\n },\r\n });\r\n\r\n }.bind(this)\r\n\r\n });\r\n this.mediaModal.show(this.currentEditor.data('hoodMediaList'), e.currentTarget);\r\n\r\n }.bind(this)\r\n });\r\n\r\n }\r\n }\r\n\r\n}","export class Handlers {\r\n constructor() {\r\n }\r\n \r\n /**\r\n * Initialise all default Hood CMS handlers.\r\n */\r\n initDefaultHandlers() {\r\n\r\n this.checkboxToCsvInput();\r\n this.iconSelector();\r\n this.initSelectValues();\r\n this.scrollHandlers();\r\n this.selectText();\r\n this.setValueOnClick();\r\n this.submitOnChange();\r\n\r\n }\r\n\r\n /**\r\n * Sets values of any selects that have the value set in data-selected, useful for \r\n */\r\n initSelectValues(tag: string = 'body') {\r\n $(tag).find('select[data-selected]').each(this.initSelectValuesHandler);\r\n }\r\n\r\n initSelectValuesHandler(this: HTMLElement, index: number, element: HTMLElement) {\r\n let sel = $(this).data('selected');\r\n if (sel !== 'undefined' && sel !== '') {\r\n let selected = String(sel);\r\n $(this).val(selected);\r\n }\r\n }\r\n\r\n /**\r\n * Sets up any Hood Icon selector fields, requires the correct HTML setup.\r\n */\r\n iconSelector(tag: string = 'body') {\r\n $(tag).find('[data-hood-icon]').each(this.iconSelectorHandler);\r\n }\r\n\r\n iconSelectorHandler(this: HTMLElement, index: number, element: HTMLElement) {\r\n let $tag = $(this);\r\n let input = $tag.find('input[data-hood-icon-input]')\r\n let display = $tag.find('[data-hood-icon-display]')\r\n let collapse = $tag.find('.collapse')\r\n\r\n $tag.find('[data-hood-icon-key][data-hood-icon-value]').on('click', function () {\r\n $tag.find('[data-hood-icon-key][data-hood-icon-value]').removeClass('active');\r\n $(this).addClass('active');\r\n let key = $(this).data('hoodIconKey');\r\n let value = $(this).data('hoodIconValue');\r\n $(this)\r\n display.html(value);\r\n input.val(key);\r\n if (collapse) {\r\n collapse.removeClass('show');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Submits the form when input is changed, mark inputs with .submit-on-change class.\r\n */\r\n selectText(tag: string = 'body') {\r\n $(tag).on('click', '.select-text', this.selectTextHandler);\r\n }\r\n\r\n selectTextHandler(this: HTMLInputElement) {\r\n let $this = $(this);\r\n $this.select();\r\n // Work around Chrome's little problem\r\n $this.mouseup(function () {\r\n // Prevent further mouseup intervention\r\n $this.unbind(\"mouseup\");\r\n return false;\r\n });\r\n }\r\n\r\n /**\r\n * Attaches handlers for default scrolling functions, scroll to top, scroll to target (with header.header offset calculated)\r\n * and scroll to target direct (with no calculated offset).\r\n */\r\n scrollHandlers(tag: string = 'body') {\r\n $(tag).on('click', '.scroll-top, .scroll-to-top', this.scrollTop);\r\n $(tag).on('click', '.scroll-target, .scroll-to-target', this.scrollTarget);\r\n $(tag).on('click', '.scroll-target-direct, .scroll-to-target-direct', this.scrollTargetDirect);\r\n }\r\n\r\n scrollTop(this: HTMLAnchorElement, e: JQuery.ClickEvent) {\r\n if (e) e.preventDefault();\r\n $('html, body').animate({ scrollTop: 0 }, 800);\r\n return false;\r\n }\r\n\r\n scrollTarget(this: HTMLAnchorElement, e: JQuery.ClickEvent) {\r\n if (e) e.preventDefault();\r\n let url = $(this).attr('href').split('#')[0];\r\n if (url !== window.location.pathname && url !== \"\") {\r\n return;\r\n }\r\n let target = this.hash;\r\n let $target = $(target);\r\n let $header = $('header.header');\r\n let headerOffset = 0;\r\n if ($header) {\r\n headerOffset = $header.height();\r\n }\r\n if ($(this).data('offset'))\r\n $('html, body').stop().animate({\r\n 'scrollTop': $target.offset().top - $(this).data('offset')\r\n }, 900, 'swing');\r\n else\r\n $('html, body').stop().animate({\r\n 'scrollTop': $target.offset().top - headerOffset\r\n }, 900, 'swing');\r\n }\r\n\r\n scrollTargetDirect(this: HTMLAnchorElement) {\r\n let scrollTop = $('body').scrollTop();\r\n let top = $($(this).attr('href')).offset().top;\r\n\r\n $('html, body').animate({\r\n scrollTop: top\r\n }, Math.abs(top - scrollTop));\r\n return false;\r\n }\r\n\r\n /**\r\n * Compiles any selected checkboxes with matching data-hood-csv-input tags,\r\n * then saves the CSV list of the values to the input given in the tag.\r\n */\r\n checkboxToCsvInput(tag: string = 'body') {\r\n $(tag).on('change', 'input[type=checkbox][data-hood-csv-input]', this.checkboxToCsvInputHandler);\r\n }\r\n\r\n checkboxToCsvInputHandler(this: HTMLInputElement, e: JQuery.ChangeEvent<HTMLElement>) {\r\n if (e) e.preventDefault();\r\n // when i change - create an array, with any other checked of the same data-input checkboxes. and add to the data-input referenced tag.\r\n let items = new Array();\r\n $('input[data-hood-csv-input=\"' + $(this).data('hoodCsvInput') + '\"]').each(function () {\r\n if ($(this).is(\":checked\"))\r\n items.push($(this).val());\r\n });\r\n let id = '#' + $(this).data('input');\r\n let vals = JSON.stringify(items);\r\n $(id).val(vals);\r\n }\r\n\r\n /**\r\n * Submits the form when input is changed, mark inputs with .submit-on-change class.\r\n */\r\n submitOnChange(tag: string = 'body') {\r\n $(tag).on('change', '.submit-on-change', this.submitOnChangeHandler);\r\n }\r\n\r\n submitOnChangeHandler(this: HTMLFormElement, e: JQuery.ChangeEvent) {\r\n if (e) e.preventDefault();\r\n $(this).parents('form').submit();\r\n }\r\n\r\n /**\r\n * Sets the value of the input [data-target] when clicked to the value in [data-value]\r\n */\r\n setValueOnClick(tag: string = 'body') {\r\n $(tag).on('click', '.click-select[data-target][data-value]', this.setValueOnClickHandler);\r\n }\r\n\r\n setValueOnClickHandler(this: HTMLElement) {\r\n let $this = $(this);\r\n let targetId = '#' + $this.data('target');\r\n $(targetId).val($this.data('value'));\r\n $(targetId).trigger('change');\r\n $('.click-select.clean[data-target=\"' + $this.data('target') + '\"]').each(function () { $(this).removeClass('active'); });\r\n $('.click-select.clean[data-target=\"' + $this.data('target') + '\"][data-value=\"' + $this.data('value') + '\"]').each(function () { $(this).addClass('active'); });\r\n }\r\n\r\n}","import { Response } from './Response';\r\nimport { Alerts } from './Alerts';\r\n\r\nexport class Uploader {\r\n constructor() {\r\n if ($('.image-uploader').length || $('.gallery-uploader').length) {\r\n $(\".upload-progress-bar\").hide();\r\n $('.image-uploader').each(this.singleImage);\r\n $('.gallery-uploader').each(this.gallery);\r\n }\r\n }\r\n\r\n refreshImage(sender: JQuery<HTMLElement>, data: Response) {\r\n $(sender.data('preview')).css({\r\n 'background-image': 'url(' + data.media.smallUrl + ')'\r\n });\r\n $(sender.data('preview')).find('img').attr('src', data.media.smallUrl);\r\n }\r\n\r\n singleImage(this: HTMLElement) {\r\n\r\n let tag = '#' + $(this).attr('id');\r\n let $tag = $(tag);\r\n\r\n let jsontag = '#' + $(this).attr('json');\r\n\r\n let avatarDropzone: Dropzone = null;\r\n $tag.dropzone({\r\n url: $tag.data('url'),\r\n maxFiles: 1,\r\n paramName: 'file',\r\n parallelUploads: 1,\r\n acceptedFiles: $tag.data('types') || \".png,.jpg,.jpeg,.gif\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: false, // Define the container to display the previews\r\n clickable: tag,\r\n init: function () {\r\n avatarDropzone = this;\r\n }\r\n });\r\n\r\n avatarDropzone.on(\"addedfile\", function () {\r\n });\r\n\r\n avatarDropzone.on(\"totaluploadprogress\", function (progress) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '') + \" .progress-bar\").css({ width: progress + \"%\" });\r\n });\r\n\r\n avatarDropzone.on(\"sending\", function (file) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '')).show();\r\n $($tag.data('preview')).addClass('loading');\r\n });\r\n\r\n avatarDropzone.on(\"queuecomplete\", function (progress) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '')).hide();\r\n });\r\n\r\n avatarDropzone.on(\"success\", function (file, response: Response) {\r\n if (response.success) {\r\n if (response.media) {\r\n $(jsontag).val(JSON.stringify(response.media));\r\n $($tag.data('preview')).css({\r\n 'background-image': 'url(' + response.media.smallUrl + ')'\r\n });\r\n $($tag.data('preview')).find('img').attr('src', response.media.smallUrl);\r\n }\r\n Alerts.success(\"New image added!\");\r\n } else {\r\n Alerts.error(\"There was a problem adding the image: \" + response.error);\r\n }\r\n avatarDropzone.removeFile(file);\r\n $($tag.data('preview')).removeClass('loading');\r\n });\r\n\r\n }\r\n\r\n gallery(this: HTMLElement) {\r\n\r\n let tag = '#' + $(this).attr('id');\r\n let $tag = $(tag);\r\n\r\n let previewNode = document.querySelector(tag + \"-template\");\r\n previewNode.id = \"\";\r\n let previewTemplate = (<HTMLElement>previewNode.parentNode).innerHTML;\r\n previewNode.parentNode.removeChild(previewNode);\r\n\r\n let galleryDropzone: Dropzone = null;\r\n\r\n $tag.dropzone({\r\n url: $tag.data('url'),\r\n thumbnailWidth: 80,\r\n thumbnailHeight: 80,\r\n parallelUploads: 5,\r\n previewTemplate: previewTemplate,\r\n paramName: 'files',\r\n acceptedFiles: $tag.data('types') || \".png,.jpg,.jpeg,.gif\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: \"#previews\", // Define the container to display the previews\r\n clickable: \".fileinput-button\",\r\n init: function () {\r\n galleryDropzone = this;\r\n }\r\n });\r\n\r\n $(tag + \" .cancel\").hide();\r\n\r\n galleryDropzone.on(\"addedfile\", function (file) {\r\n $(file.previewElement.querySelector(\".complete\")).hide();\r\n $(file.previewElement.querySelector(\".cancel\")).show();\r\n $(tag + \" .cancel\").show();\r\n });\r\n\r\n // Update the total progress bar\r\n galleryDropzone.on(\"totaluploadprogress\", function (totalProgress: number, totalBytes: number, totalBytesSent: number) {\r\n let progressBar = document.querySelector(\"#total-progress .progress-bar\") as HTMLElement;\r\n progressBar.style.width = totalProgress + \"%\";\r\n });\r\n\r\n galleryDropzone.on(\"sending\", function (file: Dropzone.DropzoneFile) {\r\n // Show the total progress bar when upload starts\r\n let progressBar = document.querySelector(\"#total-progress\") as HTMLElement;\r\n progressBar.style.opacity = \"1\";\r\n });\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n galleryDropzone.on(\"complete\", function (file) {\r\n $(file.previewElement.querySelector(\".cancel\")).hide();\r\n $(file.previewElement.querySelector(\".progress\")).hide();\r\n $(file.previewElement.querySelector(\".complete\")).show();\r\n\r\n console.error(\"Uploader.Gallery.Dropzone.OnComplete - Inline.Refresh('.gallery') is not implemented.\");\r\n //Inline.Refresh('.gallery');\r\n });\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n galleryDropzone.on(\"queuecomplete\", function (progress) {\r\n let totalProgress = document.querySelector(\"#total-progress\") as HTMLElement;\r\n totalProgress.style.opacity = \"0\";\r\n $(tag + \" .cancel\").hide();\r\n });\r\n\r\n galleryDropzone.on(\"success\", function (file, response: Response) {\r\n\r\n console.error(\"Uploader.Gallery.Dropzone.OnSuccess - Inline.Refresh('.gallery') is not implemented.\");\r\n //Inline.Refresh('.gallery');\r\n\r\n if (response.success) {\r\n Alerts.success(\"New images added!\");\r\n } else {\r\n Alerts.error(\"There was a problem adding the profile image: \" + response.error);\r\n }\r\n });\r\n\r\n // Setup the buttons for all transfers\r\n // The \"add files\" button doesn't need to be setup because the config\r\n // `clickable` has already been specified.\r\n $(\".actions .cancel\").click(function () {\r\n galleryDropzone.removeAllFiles(true);\r\n });\r\n }\r\n\r\n}","/// <reference types=\"google.maps\" />\r\n\r\nimport { Response } from \"./Response\";\r\nimport { Alerts } from \"./Alerts\";\r\nimport { Handlers } from \"./Handlers\";\r\nimport { Uploader } from \"./Uploader\";\r\nimport { Validator } from \"./Validator\";\r\n\r\ndeclare global {\r\n interface Hood {\r\n alerts: Alerts;\r\n uploader: Uploader;\r\n handlers: Handlers;\r\n }\r\n\r\n interface Window {\r\n hood: Hood;\r\n }\r\n}\r\n\r\n/**\r\n * Base class for extending a Hood CMS website, ensure you call HoodApi.initialise() to setup loaders and contact form defaults.\r\n */\r\nexport class HoodApi {\r\n alerts: Alerts = new Alerts();\r\n handlers: Handlers = new Handlers();\r\n uploader: Uploader = new Uploader();\r\n\r\n constructor() {\r\n }\r\n\r\n // Initialise Hood CMS site defaults, can be overridden or individual setup items can be called instead of the initialise function. \r\n initialise() {\r\n // Initialise loaders (default, adds loading to body tag)\r\n this.setupLoaders();\r\n\r\n // Hook up default handlers.\r\n this.handlers.initDefaultHandlers();\r\n\r\n // Init hood contact forms. \r\n this.initContactForms();\r\n }\r\n\r\n /**\r\n * Default Hood CMS loaders, can be used however, this simply adds a \"loading\" class to the body tag on show/hide.\r\n */\r\n setupLoaders(): void {\r\n $('body').on('loader-show', function () { document.body.classList.add('loading') })\r\n $('body').on('loader-hide', function () { document.body.classList.remove('loading') })\r\n }\r\n\r\n /**\r\n * Default initialisation function for Google Maps, should be called as the callback from the Google Maps API script tag.\r\n */\r\n initGoogleMaps(tag: string = '.google-map') {\r\n\r\n $(tag).each(function () {\r\n\r\n var myLatLng = new google.maps.LatLng($(this).data('lat'), $(this).data('long'));\r\n\r\n console.log('Loading map at: ' + $(this).data('lat') + ', ' + $(this).data('long'));\r\n\r\n var map = new google.maps.Map(this, {\r\n zoom: $(this).data('zoom') || 15,\r\n center: myLatLng,\r\n scrollwheel: false\r\n });\r\n\r\n var marker = new google.maps.Marker({\r\n position: myLatLng,\r\n map: map,\r\n title: $(this).data('marker')\r\n });\r\n\r\n $(window).on('resize', function () {\r\n google.maps.event.trigger(map, 'resize');\r\n });\r\n google.maps.event.trigger(map, 'resize');\r\n\r\n });\r\n\r\n }\r\n \r\n /**\r\n * Initialisation function for contact forms on the site, will add validator, and submit/functionality to any forms matching the given tag selector string.\r\n */\r\n initContactForms(tag: string = '.contact-form') {\r\n\r\n let $form = $(tag);\r\n\r\n $form.find('.thank-you').hide();\r\n $form.find('.form-content').show();\r\n\r\n let form: HTMLFormElement = $(tag)[0] as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: HoodApi, response: Response) {\r\n if (response.success) {\r\n\r\n if ($form.attr('data-redirect'))\r\n window.location.href = $form.attr('data-redirect');\r\n\r\n if ($form.attr('data-alert-message'))\r\n Alerts.success($form.attr('data-alert-message'));\r\n\r\n $form.find('.form').hide();\r\n $form.find('.thank-you').show();\r\n } else {\r\n if ($form.attr('data-alert-error'))\r\n Alerts.error($form.attr('data-alert-error'));\r\n else {\r\n console.error(response.errors);\r\n Alerts.error(\"There are errors on the form, please check your answers and try again.\");\r\n }\r\n }\r\n\r\n }.bind(this)\r\n });\r\n\r\n }\r\n\r\n}","export class Loader {\r\n constructor() {\r\n new CustomEvent('loader-show');\r\n new CustomEvent('loader-hide');\r\n }\r\n\r\n static show(): void {\r\n $('body').trigger('loader-show');\r\n }\r\n\r\n static hide(): void {\r\n $('body').trigger('loader-hide');\r\n }\r\n}\r\n\r\nnew Loader()","export declare interface RandomStringGeneratorOptions {\r\n specials?: string;\r\n alpha?: string;\r\n numeric?: string;\r\n numSpecial?: number;\r\n}\r\n\r\nexport class RandomStringGenerator {\r\n options: RandomStringGeneratorOptions = {\r\n specials: '!@#$&*',\r\n alpha: 'abcdefghijklmnopqrstuvwxyz',\r\n numeric: '0123456789',\r\n numSpecial: 2\r\n };\r\n\r\n constructor(options?: RandomStringGeneratorOptions) {\r\n this.options = { ...this.options, ...options };\r\n }\r\n\r\n generate(length: number): string {\r\n\r\n let password = '';\r\n\r\n let len = Math.ceil((length - this.options.numSpecial) / 2);\r\n\r\n for (let i = 0; i < len; i++) {\r\n password += this.options.alpha.charAt(Math.floor(Math.random() * this.options.alpha.length));\r\n password += this.options.numeric.charAt(Math.floor(Math.random() * this.options.numeric.length));\r\n }\r\n\r\n for (let j = 0; j < this.options.numSpecial; j++)\r\n password += this.options.specials.charAt(Math.floor(Math.random() * this.options.specials.length));\r\n\r\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\r\n\r\n return password;\r\n\r\n }\r\n}","import { SweetAlertResult } from 'sweetalert2';\r\nimport { Alerts } from '../core/Alerts';\r\n\r\ndeclare global {\r\n interface JQuery {\r\n exists(): number;\r\n restrictToSlug(restrictPattern?: RegExp): void;\r\n restrictToPageSlug(restrictPattern?: RegExp): void;\r\n restrictToMetaSlug(restrictPattern?: RegExp): void;\r\n characterCounter(): void;\r\n warningAlert(): void;\r\n }\r\n}\r\n\r\n$.fn.exists = function () {\r\n return $(this).length;\r\n};\r\n\r\n$.fn.restrictToSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n // For example 'ABCdEfGhI5' become 'ABCEGI5'\r\n\r\n var restrictHandler = function () {\r\n var val = $(this).val() as string;\r\n var newVal = val.replace(restrictPattern, '');\r\n\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n$.fn.restrictToPageSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z-//]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n\r\n let restrictHandler = function () {\r\n var val = $(this).val() as string;\r\n var newVal = val.replace(restrictPattern, '');\r\n if ((newVal.match(new RegExp(\"/\", \"g\")) || []).length > 4) {\r\n var pos = newVal.lastIndexOf('/');\r\n newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);\r\n Alerts.warning(\"You can only have up to 4 '/' characters in a url slug.\");\r\n }\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n$.fn.restrictToMetaSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z.]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n\r\n let restrictHandler = function () {\r\n let val = $(this).val() as string;\r\n let newVal = val.replace(restrictPattern, '');\r\n if ((newVal.match(new RegExp(\".\", \"g\")) || []).length > 1) {\r\n let pos = newVal.lastIndexOf('.');\r\n newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);\r\n Alerts.warning(\"You can only have up to 1 '.' characters in a meta slug.\");\r\n }\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n\r\n$.fn.characterCounter = function () {\r\n let targets = $(this);\r\n let characterCounterHandler = function () {\r\n let counter = $(this).data('counter');\r\n let max = Number($(this).attr('maxlength'));\r\n let len = ($(this).val() as string).length;\r\n $(counter).text(max - len);\r\n let cls = \"text-success\";\r\n if (max - len < max / 10)\r\n cls = \"text-danger\";\r\n $(counter).parent().removeClass('text-success').removeClass('text-danger').addClass(cls);\r\n };\r\n targets.on('keyup', characterCounterHandler);\r\n targets.on('paste', characterCounterHandler);\r\n targets.on('change', characterCounterHandler);\r\n};\r\n\r\n$.fn.warningAlert = function () {\r\n let targets = $(this);\r\n let warningAlertHandler = function (this: HTMLElement, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n let warningAlertCallback = function (result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n let url = $(e.currentTarget).attr('href');\r\n window.location.href = url;\r\n }\r\n };\r\n Alerts.confirm(\r\n {\r\n title: $(e.currentTarget).data('title'),\r\n html: $(e.currentTarget).data('warning'),\r\n footer: $(e.currentTarget).data('footer'),\r\n icon: 'warning'\r\n },\r\n warningAlertCallback\r\n );\r\n return false;\r\n };\r\n targets.on('click', warningAlertHandler);\r\n};\r\n\r\n","declare global {\r\n interface Number {\r\n formatCurrency(currency: string): string;\r\n formatKilobytes(): string;\r\n formatMegabytes(): string;\r\n }\r\n}\r\n\r\n\r\nNumber.prototype.formatCurrency = function (currency: string) {\r\n return currency + \" \" + this.toFixed(2).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n });\r\n}\r\nNumber.prototype.formatKilobytes = function() {\r\n let n = this / 1024;\r\n return n.toFixed(0).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n }) + \"Kb\";\r\n}\r\nNumber.prototype.formatMegabytes = function() {\r\n let n = this / 1024; \r\n n = n / 1024;\r\n return n.toFixed(0).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n }) + \"Mb\";\r\n}\r\n\r\nexport { }\r\n","declare global {\r\n interface String {\r\n isUrlExternal(): boolean;\r\n htmlEncode(): string;\r\n htmlDecode(): string;\r\n contains(it: string): boolean;\r\n pick(min: number, max: number): string;\r\n shuffle(): string;\r\n toSeoUrl(): string;\r\n }\r\n}\r\n\r\nString.prototype.htmlEncode = function () {\r\n //create a in-memory div, set it's inner text(which jQuery automatically encodes)\r\n //then grab the encoded contents back out. The div never exists on the page.\r\n return $('<div/>').text(this).html();\r\n};\r\n\r\nString.prototype.htmlDecode = function () {\r\n return $('<div/>').html(this).text();\r\n};\r\n\r\nString.prototype.contains = function (it: string) {\r\n return this.indexOf(it) !== -1;\r\n};\r\n\r\nString.prototype.pick = function (min: number, max: number) {\r\n var n, chars = '';\r\n\r\n if (typeof max === 'undefined') {\r\n n = min;\r\n } else {\r\n n = min + Math.floor(Math.random() * (max - min));\r\n }\r\n\r\n for (var i = 0; i < n; i++) {\r\n chars += this.charAt(Math.floor(Math.random() * this.length));\r\n }\r\n\r\n return chars;\r\n};\r\n\r\n// Credit to @Christoph: http://stackoverflow.com/a/962890/464744\r\nString.prototype.shuffle = function () {\r\n var array = this.split('');\r\n var tmp, current, top = array.length;\r\n\r\n if (top) while (--top) {\r\n current = Math.floor(Math.random() * (top + 1));\r\n tmp = array[current];\r\n array[current] = array[top];\r\n array[top] = tmp;\r\n }\r\n\r\n return array.join('');\r\n};\r\n\r\nString.prototype.toSeoUrl = function () {\r\n var output = this.replace(/[^a-zA-Z0-9]/g, ' ').replace(/\\s+/g, \"-\").toLowerCase();\r\n /* remove first dash */\r\n if (output.charAt(0) === '-') output = output.substring(1);\r\n /* remove last dash */\r\n var last = output.length - 1;\r\n if (output.charAt(last) === '-') output = output.substring(0, last);\r\n return output;\r\n};\r\n\r\nexport { }\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Response } from \"../core/Response\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class ContentController {\r\n\r\n constructor() {\r\n this.manage();\r\n\r\n $('body').on('click', '.content-create', this.create.bind(this));\r\n $('body').on('click', '.content-delete', this.delete.bind(this));\r\n $('body').on('click', '.content-set-status', this.setStatus.bind(this));\r\n\r\n $('body').on('click', '.content-categories-delete', this.deleteCategory.bind(this));\r\n $('body').on('click', '.content-categories-create,.content-categories-edit', this.createOrEditCategory.bind(this));\r\n $('body').on('change', '.content-categories-check', this.toggleCategory.bind(this));\r\n\r\n $('body').on('click', '.content-media-delete', this.removeMedia.bind(this));\r\n\r\n $('body').on('keyup', '#Slug', function (this: HTMLElement) {\r\n let slugValue: string = $(this).val() as string;\r\n $('.slug-display').html(slugValue);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Content list element, #content-list\r\n */\r\n element: HTMLElement;\r\n\r\n /**\r\n * Content DataList object.\r\n */\r\n list: DataList;\r\n\r\n /**\r\n * Content list element, #content-list\r\n */\r\n categoryElement: HTMLElement;\r\n\r\n /**\r\n * Content DataList object.\r\n */\r\n categoryList: DataList;\r\n\r\n manage(this: ContentController): void {\r\n\r\n this.element = document.getElementById('content-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: ContentController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading content list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n this.categoryElement = document.getElementById('content-categories-list');\r\n if (this.categoryElement) {\r\n this.categoryList = new DataList(this.categoryElement, {\r\n onComplete: function (this: ContentController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading category list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n }\r\n\r\n create(this: ContentController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createContentModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentController) {\r\n let form = document.getElementById('content-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createContentModal.close();\r\n } \r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createContentModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The content will be permanently removed.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the content list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n setStatus(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The change will happen immediately.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n clone(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"This will duplicate the content and everything inside it.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n createOrEditCategory(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createCategoryModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentController) {\r\n let form = document.getElementById('content-categories-edit-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n this.categoryList.reload();\r\n createCategoryModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createCategoryModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n deleteCategory(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n // category deleted...\r\n Response.process(data, 5000);\r\n\r\n this.categoryList.reload();\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n }\r\n\r\n toggleCategory(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n $.post($(e.currentTarget).data('url'), { categoryId: $(e.currentTarget).val(), add: $(e.currentTarget).is(':checked') }, function (this: ContentController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.categoryList) {\r\n this.categoryList.reload();\r\n }\r\n\r\n }.bind(this));\r\n \r\n }\r\n\r\n removeMedia(this: ContentController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The media will be removed from the property, but will still be in the media collection.\"\r\n }, function (this: ContentController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n // reload the property media gallery, should be attached to #property-gallery-list\r\n let mediaGalleryEl = document.getElementById('content-gallery-list');\r\n if (mediaGalleryEl.hoodDataList) {\r\n mediaGalleryEl.hoodDataList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Response } from \"../core/Response\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class ContentTypeController {\r\n\r\n constructor() {\r\n this.manage();\r\n\r\n $('body').on('click', '.content-type-create', this.create.bind(this));\r\n $('body').on('click', '.content-type-delete', this.delete.bind(this));\r\n $('body').on('click', '.content-type-set-status', this.setStatus.bind(this));\r\n\r\n $('body').on('click', '.content-custom-field-create', this.createField.bind(this));\r\n $('body').on('click', '.content-custom-field-delete', this.deleteField.bind(this));\r\n\r\n $('body').on('keyup', '#Slug', function (this: HTMLElement) {\r\n let slugValue: string = $(this).val() as string;\r\n $('.slug-display').html(slugValue);\r\n });\r\n\r\n }\r\n\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n fieldsElement: HTMLElement;\r\n fieldsList: DataList;\r\n\r\n manage(this: ContentTypeController): void {\r\n\r\n this.element = document.getElementById('content-type-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: ContentTypeController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading content type list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n this.fieldsElement = document.getElementById('content-custom-field-list');\r\n if (this.fieldsElement) {\r\n this.fieldsList = new DataList(this.fieldsElement, {\r\n onComplete: function (this: ContentTypeController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading content type list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n create(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createContentModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentTypeController) {\r\n let form = document.getElementById('content-type-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentTypeController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createContentModal.close();\r\n } \r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createContentModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The content type will be permanently removed. Content will remain, but will be unusable and marked as the old content type.\"\r\n }, function (this: ContentTypeController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentTypeController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the content list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n setStatus(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The change will happen immediately.\"\r\n }, function (this: ContentTypeController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentTypeController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n\r\n createField(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createContentModal: ModalController = new ModalController({\r\n onComplete: function (this: ContentTypeController) {\r\n let form = document.getElementById('content-custom-field-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: ContentTypeController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.fieldsList) {\r\n this.fieldsList.reload();\r\n }\r\n\r\n if (response.success) {\r\n createContentModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createContentModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n deleteField(this: ContentTypeController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The field will be permanently removed. However fields will still be attached to content.\"\r\n }, function (this: ContentTypeController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ContentTypeController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.fieldsList) {\r\n this.fieldsList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n\r\n}\r\n","import { KeyValue } from \"../interfaces/KeyValue\";\r\nimport { ContentStatistics } from \"../models/Content\";\r\nimport { PropertyStatistics } from \"../models/Property\";\r\nimport { UserStatistics } from \"../models/Users\";\r\nimport { Chart } from 'chart.js';\r\n\r\nexport class HomeController {\r\n canvas: HTMLCanvasElement;\r\n ctx: CanvasRenderingContext2D;\r\n chart: any;\r\n\r\n constructor() {\r\n\r\n if ($('#admin-chart-area').length) {\r\n let $this = this;\r\n $this.LoadChart();\r\n $('body').on('change', '#history', function () {\r\n $this.LoadChart();\r\n });\r\n }\r\n\r\n }\r\n\r\n LoadChart(): void {\r\n let $this = this;\r\n $.get('/admin/stats/', function (data) {\r\n $('#admin-chart-area').empty();;\r\n $('#admin-chart-area').html('<canvas id=\"admin-stats-chart\"></canvas>');\r\n $this.LoadStats(data);\r\n $this.DrawChart(data);\r\n });\r\n }\r\n\r\n DrawChart(data: Statistics): void {\r\n\r\n let datasets = [];\r\n let dataLabels = [];\r\n\r\n let contentColour = '#fabd07';\r\n let propertyColour = '#20c997';\r\n let userColour = '#fd7e14';\r\n\r\n // 12 months\r\n let labels: string[] = [];\r\n\r\n // Content by day\r\n let contentSet: number[] = [];\r\n\r\n data.content.months.forEach(function (element: KeyValue<string, number>) {\r\n contentSet.push(element.value);\r\n labels.push(element.key);\r\n });\r\n\r\n datasets.push({\r\n label: 'New Content',\r\n data: contentSet,\r\n borderColor: contentColour,\r\n backgroundColor: contentColour,\r\n pointBackgroundColor: contentColour,\r\n pointBorderColor: '#ffffff'\r\n });\r\n\r\n // users by day\r\n contentSet = [];\r\n data.users.months.forEach(function (element: KeyValue<string, number>) {\r\n contentSet.push(element.value);\r\n });\r\n\r\n datasets.push({\r\n label: 'New Users',\r\n data: contentSet,\r\n borderColor: userColour,\r\n backgroundColor: userColour,\r\n pointBackgroundColor: userColour,\r\n pointBorderColor: '#ffffff'\r\n });\r\n\r\n // Properties by day\r\n contentSet = [];\r\n data.properties.months.forEach(function (element: KeyValue<string, number>) {\r\n contentSet.push(element.value);\r\n });\r\n\r\n datasets.push({\r\n label: 'New Properties',\r\n data: contentSet,\r\n borderColor: propertyColour,\r\n backgroundColor: propertyColour,\r\n pointBackgroundColor: propertyColour,\r\n pointBorderColor: '#ffffff'\r\n });\r\n\r\n dataLabels = labels;\r\n\r\n this.canvas = <HTMLCanvasElement>document.getElementById(\"admin-stats-chart\");\r\n this.ctx = this.canvas.getContext('2d');\r\n this.chart = new Chart(this.ctx, {\r\n type: 'bar',\r\n data: {\r\n labels: dataLabels,\r\n datasets: datasets\r\n },\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n ticks: {\r\n beginAtZero: true\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n LoadStats(data: Statistics): void {\r\n if (data.content) {\r\n $('.content-totalPosts').text(data.content.totalPosts);\r\n $('.content-totalPublished').text(data.content.totalPublished);\r\n if (data.content.byType) {\r\n for (let i = 0; i < data.content.byType.length; i++) {\r\n $('.content-' + data.content.byType[i].name + '-total').text(data.content.byType[i].total);\r\n }\r\n }\r\n }\r\n if (data.users) {\r\n $('.users-totalUsers').text(data.users.totalUsers);\r\n $('.users-totalAdmins').text(data.users.totalAdmins);\r\n }\r\n if (data.properties) {\r\n $('.properties-totalPosts').text(data.properties.totalProperties);\r\n $('.properties-totalPublished').text(data.properties.totalPublished);\r\n }\r\n }\r\n}\r\n\r\nexport class Statistics {\r\n content: ContentStatistics;\r\n users: UserStatistics;\r\n properties: PropertyStatistics;\r\n}\r\n","import { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\n\r\nexport class LogsController {\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n constructor() {\r\n this.element = document.getElementById('log-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: LogsController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading logs list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n }\r\n}","import { MediaObject, MediaService } from \"../core/Media\";\r\nimport { Alerts } from \"../core/Alerts\";\r\n\r\nexport class MediaController {\r\n\r\n constructor() {\r\n this.manage();\r\n }\r\n\r\n list: HTMLElement;\r\n service: MediaService;\r\n\r\n manage(): void {\r\n this.list = document.getElementById('media-list');\r\n this.service = new MediaService(this.list, {\r\n action: 'show',\r\n onAction: function (this: MediaController, mediaObject: MediaObject) {\r\n Alerts.log(`Showing media object id ${mediaObject.id} - ${mediaObject.filename}`);\r\n }.bind(this),\r\n onListLoad: function () {\r\n Alerts.log('Commencing media list fetch.');\r\n },\r\n onError: function (jqXHR: any, textStatus: any, errorThrown: any) {\r\n Alerts.log(`Error loading media list: ${textStatus}`);\r\n },\r\n onListRender: function (data: string) {\r\n Alerts.log('Fetched media list data.');\r\n return data;\r\n },\r\n onListComplete: function () {\r\n Alerts.log('Finished loading media list...', 'info');\r\n }\r\n });\r\n }\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Response } from \"../core/Response\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class PropertyController {\r\n\r\n constructor() {\r\n this.manage();\r\n\r\n $('body').on('click', '.property-create', this.create.bind(this));\r\n $('body').on('click', '.property-delete', this.delete.bind(this));\r\n $('body').on('click', '.property-set-status', this.setStatus.bind(this));\r\n\r\n $('body').on('click', '.property-media-delete', this.removeMedia.bind(this));\r\n $('body').on('click', '.property-floorplan-delete', this.removeMedia.bind(this));\r\n\r\n $('body').on('keyup', '#Slug', function (this: HTMLElement) {\r\n let slugValue: string = $(this).val() as string;\r\n $('.slug-display').html(slugValue);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Property list element, #property-list\r\n */\r\n element: HTMLElement;\r\n\r\n /**\r\n * Property DataList object.\r\n */\r\n list: DataList;\r\n\r\n manage(this: PropertyController): void {\r\n\r\n this.element = document.getElementById('property-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: PropertyController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading property list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n }\r\n\r\n create(this: PropertyController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createPropertyModal: ModalController = new ModalController({\r\n onComplete: function (this: PropertyController) {\r\n let form = document.getElementById('property-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: PropertyController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createPropertyModal.close();\r\n } \r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createPropertyModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: PropertyController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The property will be permanently removed.\"\r\n }, function (this: PropertyController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: PropertyController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the property list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n setStatus(this: PropertyController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The change will happen immediately.\"\r\n }, function (this: PropertyController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: PropertyController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n removeMedia(this: PropertyController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The media will be removed from the property, but will still be in the media collection.\"\r\n }, function (this: PropertyController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: PropertyController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n // reload the property media gallery, should be attached to #property-gallery-list\r\n let mediaGalleryEl = document.getElementById('property-gallery-list');\r\n if (mediaGalleryEl.hoodDataList) {\r\n mediaGalleryEl.hoodDataList.reload();\r\n }\r\n\r\n // reload the property media gallery, should be attached to #property-gallery-list\r\n let mfpGalleryEl = document.getElementById('property-floorplan-list');\r\n if (mfpGalleryEl && mfpGalleryEl.hoodDataList) {\r\n mfpGalleryEl.hoodDataList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n}\r\n","import { Inline } from \"../core/Inline\";\r\n\r\nexport declare interface PropertyImporterResult {\r\n\r\n ftp: FTPImporterStatistics;\r\n importer: PropertyImporterStatistics;\r\n\r\n}\r\n\r\nexport declare interface FTPImporterStatistics {\r\n\r\n bytesTransferred: number;\r\n complete: number;\r\n statusMessage: string;\r\n\r\n}\r\n\r\nexport declare interface PropertyImporterStatistics {\r\n\r\n running: boolean;\r\n\r\n processed: number;\r\n statusMessage: string;\r\n\r\n toAdd: number;\r\n toDelete: number;\r\n toUpdate: number;\r\n total: number;\r\n\r\n added: number;\r\n deleted: number;\r\n updated: number;\r\n\r\n complete: number;\r\n\r\n errors: string[];\r\n warnings: string[];\r\n\r\n}\r\n\r\nexport class PropertyImporter {\r\n updateInterval: number;\r\n\r\n constructor() {\r\n if ($('#import-property-start').length > 0) {\r\n this.update();\r\n $('#import-property-start').click(function (this: PropertyImporter) {\r\n $.ajax({\r\n url: $('#import-property-start').data('url'),\r\n type: \"POST\",\r\n error: Inline.handleError,\r\n success: function (this: PropertyImporter) {\r\n this.update();\r\n }.bind(this)\r\n });\r\n }.bind(this));\r\n $('#import-property-cancel').click(function (this: PropertyImporter) {\r\n $.ajax({\r\n url: $('#import-property-cancel').data('url'),\r\n type: \"POST\",\r\n error: Inline.handleError,\r\n success: function (this: PropertyImporter) {\r\n this.update();\r\n }.bind(this)\r\n });\r\n }.bind(this));\r\n }\r\n }\r\n\r\n update() {\r\n $.ajax({\r\n url: $('#import-property-status').data('url'),\r\n type: \"POST\",\r\n error: Inline.handleError,\r\n success: function (this: PropertyImporter, result: PropertyImporterResult) {\r\n\r\n if (result.importer.running) {\r\n this.showInfo();\r\n clearInterval(this.updateInterval);\r\n this.updateInterval = window.setTimeout(this.update, 250);\r\n } else {\r\n clearInterval(this.updateInterval);\r\n this.hideInfo();\r\n }\r\n\r\n $('.tp').html(result.importer.total.toString());\r\n $('#pu').html(result.importer.updated.toString());\r\n $('#pa').html(result.importer.added.toString());\r\n $('#pp').html(result.importer.processed.toString());\r\n $('#pd').html(result.importer.deleted.toString());\r\n $('#ToAdd').html(result.importer.toAdd.toString());\r\n $('#ToUpdate').html(result.importer.toUpdate.toString());\r\n $('#ToDelete').html(result.importer.toDelete.toString());\r\n $('#pt').html(result.importer.statusMessage.toString());\r\n\r\n let ftpPercentComplete = Math.round(result.ftp.complete * 100) / 100;\r\n $('#fp').html(ftpPercentComplete.toString());\r\n\r\n $('#ft').html(result.ftp.statusMessage);\r\n\r\n let percentComplete = Math.round(result.importer.complete * 100) / 100;\r\n $('.pc').html(percentComplete.toString());\r\n\r\n $('#progressbar').css({\r\n width: result.importer.complete + \"%\"\r\n });\r\n\r\n if (result.importer.errors.length) {\r\n let errorHtml = \"\";\r\n for (let i = result.importer.errors.length - 1; i >= 0; i--) {\r\n errorHtml += '<div class=\"text-danger\">' + result.importer.errors[i] + '</div>';\r\n }\r\n $('#import-property-errors').html(errorHtml);\r\n } else {\r\n $('#import-property-errors').html(\"<div>No errors reported.</div>\");\r\n }\r\n\r\n if (result.importer.warnings.length) {\r\n let warningHtml = \"\";\r\n for (let j = result.importer.warnings.length - 1; j >= 0; j--) {\r\n warningHtml += '<div class=\"text-warning\">' + result.importer.warnings[j] + '</div>';\r\n }\r\n $('#import-property-warnings').html(warningHtml);\r\n } else {\r\n $('#import-property-warnings').html(\"<div>No warnings reported.</div>\");\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n hideInfo() {\r\n $('#import-property-start').removeAttr('disabled');\r\n $('#import-property-cancel').attr('disabled', 'disabled');\r\n $('#import-property-progress').removeClass('d-block');\r\n $('#import-property-progress').addClass('d-none');\r\n }\r\n\r\n showInfo() {\r\n $('#import-property-cancel').removeAttr('disabled');\r\n $('#import-property-start').attr('disabled', 'disabled');\r\n $('#import-property-progress').addClass('d-block');\r\n $('#import-property-progress').removeClass('d-none');\r\n }\r\n\r\n}\r\n","import { SweetAlertResult } from \"sweetalert2\";\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { Response } from \"../core/Response\";\r\n\r\nexport class ThemesController {\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n constructor() {\r\n $('body').on('click', '.activate-theme', this.activate.bind(this));\r\n\r\n this.element = document.getElementById('themes-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: ThemesController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading users list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n }\r\n\r\n activate(this: ThemesController, e: JQuery.ClickEvent): void {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The site will change themes, and the selected theme will be live right away.\"\r\n }, function (this: ThemesController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: ThemesController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n setTimeout(function (this: ThemesController) {\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n }.bind(this), 2000);\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n}","import { SweetAlertResult } from \"sweetalert2\";\r\nimport swal from 'sweetalert2';\r\n\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { Inline } from \"../core/Inline\";\r\nimport { DataList } from \"../core/DataList\";\r\nimport { RandomStringGenerator } from \"../core/RandomStringGenerator\";\r\nimport { Response } from \"../core/Response\";\r\nimport { ModalController } from \"../core/Modal\";\r\nimport { Validator } from \"../core/Validator\";\r\n\r\nexport class UsersController {\r\n element: HTMLElement;\r\n list: DataList;\r\n\r\n constructor() {\r\n this.initLists();\r\n\r\n $('body').on('click', '.user-create', this.create.bind(this));\r\n $('body').on('click', '.user-delete', this.delete.bind(this));\r\n $('body').on('change', '#user-create-form #GeneratePassword', this.generatePassword);\r\n\r\n $('body').on('change', '.user-role-check', this.toggleUserRole);\r\n\r\n $('body').on('click', '.user-reset-password', this.resetPassword);\r\n\r\n $('body').on('click', '.user-notes-add', this.addNote.bind(this));\r\n $('body').on('click', '.user-notes-delete', this.deleteNote.bind(this));\r\n\r\n }\r\n\r\n initLists(this: UsersController): void {\r\n\r\n this.element = document.getElementById('user-list');\r\n if (this.element) {\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: UsersController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading users list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n this.notesEl = document.getElementById('user-notes');\r\n if (this.notesEl) {\r\n this.notesList = new DataList(this.notesEl, {\r\n onComplete: function (this: UsersController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading user notes list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n }\r\n\r\n create(this: UsersController, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let createUserModal: ModalController = new ModalController({\r\n onComplete: function (this: UsersController) {\r\n let form = document.getElementById('user-create-form') as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: UsersController, response: Response) {\r\n\r\n Response.process(response, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (response.success) {\r\n createUserModal.close();\r\n }\r\n\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n });\r\n createUserModal.show($(e.currentTarget).attr('href'), this.element);\r\n }\r\n\r\n delete(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The user will be permanently removed.\"\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: UsersController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.list) {\r\n this.list.reload();\r\n }\r\n\r\n if (e.currentTarget.dataset.redirect) {\r\n\r\n Alerts.message('Just taking you back to the content list.', 'Redirecting...');\r\n setTimeout(function () {\r\n window.location = e.currentTarget.dataset.redirect;\r\n }, 1500);\r\n\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n generatePassword() {\r\n if ($(this).is(':checked')) {\r\n let generator = new RandomStringGenerator({ numSpecial: 1 });\r\n $('#user-create-form #Password').val(generator.generate(8));\r\n $('#user-create-form #Password').attr('type', 'text');\r\n } else {\r\n $('#user-create-form #Password').val('');\r\n $('#user-create-form #Password').attr('type', 'password');\r\n }\r\n }\r\n\r\n toggleUserRole() {\r\n if ($(this).is(':checked')) {\r\n $.post($(this).data('url'), { role: $(this).val(), add: true }, function (data: Response) {\r\n Response.process(data);\r\n });\r\n } else {\r\n $.post($(this).data('url'), { role: $(this).val(), add: false }, function (data: Response) {\r\n Response.process(data);\r\n });\r\n }\r\n }\r\n\r\n resetPassword(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.prompt({\r\n // Confirm options...\r\n title: \"Reset Password\",\r\n html: \"Please enter a new password for the user...\",\r\n preConfirm: (inputValue) => {\r\n if (inputValue === false) return false;\r\n if (inputValue === \"\") {\r\n swal.showValidationMessage(\"You didn't supply a new password, we can't reset the password without it!\");\r\n return false;\r\n }\r\n }\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n\r\n if (result.isDismissed) {\r\n return false;\r\n }\r\n\r\n $.post(e.currentTarget.href, { password: result.value }, function (data: Response) {\r\n Response.process(data, 5000);\r\n });\r\n\r\n }.bind(this))\r\n\r\n }\r\n\r\n notesEl: HTMLElement;\r\n notesList: DataList;\r\n\r\n addNote(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.prompt({\r\n // Confirm options...\r\n title: \"Add a note\",\r\n html: \"Enter and store a note about this user.\",\r\n input: 'textarea',\r\n preConfirm: (inputValue) => {\r\n if (inputValue === false) return false;\r\n if (inputValue === \"\") {\r\n swal.showValidationMessage(\"You didn't enter a note!\");\r\n return false;\r\n }\r\n }\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n\r\n if (result.isDismissed) {\r\n return false;\r\n }\r\n\r\n $.post(e.currentTarget.href, { note: result.value }, function (this: UsersController, data: Response) {\r\n Response.process(data, 5000);\r\n\r\n\r\n if (this.notesList) {\r\n this.notesList.reload();\r\n }\r\n\r\n }.bind(this));\r\n\r\n }.bind(this))\r\n\r\n }\r\n\r\n deleteNote(this: UsersController, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n Alerts.confirm({\r\n // Confirm options...\r\n title: \"Are you sure?\",\r\n html: \"The note will be permanently removed.\"\r\n }, function (this: UsersController, result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n Inline.post(e.currentTarget.href, e.currentTarget, function (this: UsersController, data: Response) {\r\n\r\n Response.process(data, 5000);\r\n\r\n if (this.notesList) {\r\n this.notesList.reload();\r\n }\r\n\r\n }.bind(this));\r\n }\r\n }.bind(this))\r\n\r\n }\r\n\r\n} ","/// <reference types=\"jquery.slimscroll\" />\r\nimport * as bootstrap from 'bootstrap';\r\n\r\nimport './index';\r\n\r\nimport { HomeController } from \"./admin/HomeController\";\r\nimport { MediaController } from './admin/MediaController';\r\nimport { ContentController } from './admin/ContentController';\r\nimport { PropertyController } from './admin/PropertyController';\r\nimport { UsersController } from './admin/UsersController';\r\nimport { ThemesController } from './admin/ThemesController';\r\nimport { ContentTypeController } from './admin/ContentTypeController';\r\nimport { LogsController } from './admin/LogsController';\r\nimport { PropertyImporter } from './admin/PropertyImporter';\r\nimport { HoodApi } from './core/HoodApi';\r\nimport { ColorPickers, Editors, MediaModal } from './index';\r\n\r\nclass Admin extends HoodApi {\r\n editors: Editors = new Editors();\r\n colorPickers: ColorPickers = new ColorPickers();\r\n mediaModal: MediaModal = new MediaModal();\r\n\r\n home: HomeController;\r\n media: MediaController;\r\n content: ContentController;\r\n contentType: ContentTypeController;\r\n logs: LogsController;\r\n property: PropertyController;\r\n propertyImporter: PropertyImporter;\r\n themes: ThemesController;\r\n users: UsersController;\r\n\r\n constructor() {\r\n super();\r\n\r\n // Hook up default handlers.\r\n this.handlers.initDefaultHandlers();\r\n\r\n // Admin Controllers\r\n this.home = new HomeController();\r\n this.media = new MediaController();\r\n this.content = new ContentController();\r\n this.contentType = new ContentTypeController();\r\n this.logs = new LogsController();\r\n this.property = new PropertyController();\r\n this.propertyImporter = new PropertyImporter();\r\n this.themes = new ThemesController();\r\n this.users = new UsersController();\r\n\r\n // Hook up rich text editors\r\n this.editors.richTextEditors();\r\n\r\n // Hook up colour pickers\r\n this.colorPickers.loadColorPickers();\r\n\r\n if ($('#page-tabs').length > 0) {\r\n this.checkAndLoadTabs('#page-tabs');\r\n }\r\n\r\n // Admin Handlers\r\n $('.restrict-to-slug').restrictToSlug();\r\n $('.restrict-to-page-slug').restrictToPageSlug();\r\n $('.restrict-to-meta-slug').restrictToMetaSlug();\r\n $('.character-counter').characterCounter();\r\n $('.character-counter').trigger('change');\r\n $('.warning-alert').warningAlert();\r\n\r\n $('.mobile-sidebar-toggle').on('click', function () {\r\n $('nav.sidebar').toggleClass('open');\r\n });\r\n \r\n $('.right-sidebar-toggle').on('click', function () {\r\n $('#right-sidebar').toggleClass('sidebar-open');\r\n });\r\n\r\n $(\".alert.auto-dismiss\").fadeTo(5000, 500).slideUp(500, function () {\r\n $(\".alert.auto-dismiss\").slideUp(500);\r\n });\r\n\r\n }\r\n\r\n checkAndLoadTabs(tag: string): void {\r\n\r\n $(tag + ' a[data-bs-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\r\n let store: any = JSON.parse(localStorage.getItem('tabs-' + tag)) || {};\r\n store['tab-' + $(tag).data('hoodTabs')] = $(e.target).attr('href');\r\n localStorage.setItem('tabs-' + tag, JSON.stringify(store));\r\n });\r\n\r\n let store: any = JSON.parse(localStorage.getItem('tabs-' + tag)) || {};\r\n let activeTab = store['tab-' + $(tag).data('hoodTabs')];\r\n let triggerEl = $(tag + ' a[data-bs-toggle=\"tab\"]')[0];\r\n if (activeTab) {\r\n triggerEl = document.querySelector(tag + ' a[href=\"' + activeTab + '\"]')\r\n }\r\n let tabTrigger = new bootstrap.Tab(triggerEl);\r\n tabTrigger.show();\r\n\r\n }\r\n\r\n\r\n}\r\n\r\nwindow.hood = new Admin();\r\n"],"names":["Swal","Pickr","Modal","tinymce","Chart","swal","bootstrap"],"mappings":"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"}