Merge branch 'fix'

This commit is contained in:
Yuri Kuznetsov
2024-05-09 10:51:32 +03:00
3 changed files with 50 additions and 10 deletions
@@ -29,11 +29,11 @@
"isSystem": true
},
"uriOptionalProtocol": {
"pattern": "([a-zA-Z0-9]+\\:\\/\\/)?[a-zA-Z0-9%\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',]+\\.([a-zA-Z0-9%\\&\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',])*",
"pattern": "([a-zA-Z0-9]+\\:\\/\\/)?[a-zA-Z0-9%\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',]+\\.([a-zA-Z0-9%\\&\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',~])*",
"isSystem": true
},
"uri": {
"pattern": "([a-zA-Z0-9]+\\:\\/\\/){1}[a-zA-Z0-9%\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',]+\\.([a-zA-Z0-9%\\&\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',])*",
"pattern": "([a-zA-Z0-9]+\\:\\/\\/){1}[a-zA-Z0-9%\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',]+\\.([a-zA-Z0-9%\\&\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',~])*",
"isSystem": true
}
}
+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
@@ -102,7 +102,7 @@ class UrlFieldView extends VarcharFieldView {
return;
}
const decoded = parsedValue ? decodeURI(parsedValue) : '';
const decoded = parsedValue ? this.decodeURI(parsedValue) : '';
this.$element.val(decoded);
});
@@ -112,7 +112,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;
}
}
/**
@@ -126,8 +141,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;