From 1a91dfab7dc062e1a38e6cf58d1d332144aa88a7 Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Tue, 2 Jun 2020 14:39:43 +0200 Subject: [PATCH] Fix not working regexp mime type attribute in file widget --- api/js/etemplate/et2_widget_file.js | 20 ++++++++++++++------ api/js/etemplate/et2_widget_file.ts | 25 ++++++++++++++++++------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/api/js/etemplate/et2_widget_file.js b/api/js/etemplate/et2_widget_file.js index 39f145f27f..90f1333b95 100644 --- a/api/js/etemplate/et2_widget_file.js +++ b/api/js/etemplate/et2_widget_file.js @@ -264,9 +264,7 @@ var et2_file = /** @class */ (function (_super) { this.options.mime = mime.toLowerCase(); } else { - // Convert into a js regex - var parts = mime.substr(1).match(/(.*)\/([igm]?)$/); - this.options.mime = new RegExp(parts[1], parts.length > 2 ? parts[2] : ""); + this.options.mime = mime; } }; et2_file.prototype.set_multiple = function (_multiple) { @@ -283,11 +281,21 @@ var et2_file = /** @class */ (function (_super) { * @return boolean */ et2_file.prototype.checkMime = function (f) { + var mime = ''; + if (this.options.mime.indexOf("/") != 0) { + // Lower case it now, if it's not a regex + mime = this.options.mime.toLowerCase(); + } + else { + // Convert into a js regex + var parts = this.options.mime.substr(1).match(/(.*)\/([igm]?)$/); + mime = new RegExp(parts[1], parts.length > 2 ? parts[2] : ""); + } // If missing, let the server handle it - if (!this.options.mime || !f.type) + if (!mime || !f.type) return true; - var is_preg = (typeof this.options.mime == "object"); - if (!is_preg && f.type.toLowerCase() == this.options.mime || is_preg && this.options.mime.test(f.type)) { + var is_preg = (typeof mime == "object"); + if (!is_preg && f.type.toLowerCase() == mime || is_preg && mime.test(f.type)) { return true; } // Not right mime diff --git a/api/js/etemplate/et2_widget_file.ts b/api/js/etemplate/et2_widget_file.ts index 5410f9c485..8d3ed0c062 100644 --- a/api/js/etemplate/et2_widget_file.ts +++ b/api/js/etemplate/et2_widget_file.ts @@ -381,9 +381,7 @@ export class et2_file extends et2_inputWidget } else { - // Convert into a js regex - var parts = mime.substr(1).match(/(.*)\/([igm]?)$/); - this.options.mime = new RegExp(parts[1],parts.length > 2 ? parts[2] : ""); + this.options.mime = mime; } } @@ -405,11 +403,24 @@ export class et2_file extends et2_inputWidget */ checkMime(f) { - // If missing, let the server handle it - if(!this.options.mime || !f.type) return true; + let mime: string | RegExp = ''; + if(this.options.mime.indexOf("/") != 0) + { + // Lower case it now, if it's not a regex + mime = this.options.mime.toLowerCase(); + } + else + { + // Convert into a js regex + var parts = this.options.mime.substr(1).match(/(.*)\/([igm]?)$/); + mime = new RegExp(parts[1],parts.length > 2 ? parts[2] : ""); + } - var is_preg = (typeof this.options.mime == "object"); - if(!is_preg && f.type.toLowerCase() == this.options.mime || is_preg && this.options.mime.test(f.type)) + // If missing, let the server handle it + if(!mime || !f.type) return true; + + var is_preg = (typeof mime == "object"); + if(!is_preg && f.type.toLowerCase() == mime || is_preg && mime.test(f.type)) { return true; }