fix url decode

This commit is contained in:
Yuri Kuznetsov
2024-05-09 10:50:41 +03:00
parent 1f3a0bb5dd
commit acc0b71a7a
2 changed files with 48 additions and 8 deletions
+23 -4
View File
@@ -53,13 +53,32 @@ class UrlMultipleFieldView extends ArrayFieldView {
value = this.strip(value);
}
if (value === decodeURI(value)) {
value = encodeURI(value);
try {
if (value === decodeURI(value)) {
value = encodeURI(value);
}
} catch (e) {
console.warn(`Malformed URI ${value}.`);
}
super.addValueFromUi(value);
}
/**
* @private
* @param {string} value
* @return {string}
*/
decodeURI(value) {
try {
return decodeURI(value);
} catch (e) {
console.warn(`Malformed URI ${value}.`);
return value;
}
}
/**
* @param {string} value
* @return {string}
@@ -88,7 +107,7 @@ class UrlMultipleFieldView extends ArrayFieldView {
return $('<a>')
.attr('href', this.prepareUrl(value))
.attr('target', '_blank')
.text(decodeURI(value));
.text(this.decodeURI(value));
});
return $list
@@ -111,7 +130,7 @@ class UrlMultipleFieldView extends ArrayFieldView {
.attr('href', this.prepareUrl(value))
.css('user-drag', 'none')
.attr('target', '_blank')
.text(decodeURI(value))
.text(this.decodeURI(value))
);
return $item.get(0).outerHTML;
+25 -4
View File
@@ -70,7 +70,7 @@ class UrlFieldView extends VarcharFieldView {
return;
}
const decoded = parsedValue ? decodeURI(parsedValue) : '';
const decoded = parsedValue ? this.decodeURI(parsedValue) : '';
this.$element.val(decoded);
});
@@ -80,7 +80,22 @@ class UrlFieldView extends VarcharFieldView {
getValueForDisplay() {
const value = this.model.get(this.name);
return value ? decodeURI(value) : null;
return value ? this.decodeURI(value) : null;
}
/**
* @private
* @param {string} value
* @return {string}
*/
decodeURI(value) {
try {
return decodeURI(value);
} catch (e) {
console.warn(`Malformed URI ${value}.`);
return value;
}
}
/**
@@ -94,8 +109,14 @@ class UrlFieldView extends VarcharFieldView {
value = this.strip(value);
}
if (value === decodeURI(value)) {
value = encodeURI(value);
try {
if (value === decodeURI(value)) {
value = encodeURI(value);
}
} catch (e) {
console.warn(`Malformed URI ${value}.`);
return value;
}
return value;