Identify if an emoji URL is invalid and signal an error.

Previously, no error would display in the UI if the link to the emoji
image was invalid. This would happen for instance if you put in
“invalid” for the Emoji URL. No alerts would pop up but it would refuse
to add the emoji.

This catches the error and displays a notification that looks like
“Failed: Enter a valid URL.”

Fixes #1116.
This commit is contained in:
Brock Whittaker
2016-09-13 15:56:36 -07:00
committed by Tim Abbott
parent 49faad7bb1
commit 3a4fff837f
3 changed files with 4 additions and 25 deletions

View File

@@ -169,8 +169,6 @@ function _setup_page() {
$("#admin-realm-message-editing-status").expectOne().hide();
$("#admin-realm-default-language-status").expectOne().hide();
$("#admin-emoji-status").expectOne().hide();
$("#admin-emoji-name-status").expectOne().hide();
$("#admin-emoji-url-status").expectOne().hide();
$("#id_realm_default_language").val(page_params.realm_default_language);
@@ -639,9 +637,6 @@ function _setup_page() {
e.preventDefault();
e.stopPropagation();
var emoji_status = $('#admin-emoji-status');
var emoji_name_status = $('#admin-emoji-name-status');
var emoji_url_status = $('#admin-emoji-url-status');
var emoji_table = $('.admin_emoji_table');
var emoji = {};
$(this).serializeArray().map(function (x){emoji[x.name] = x.value;});
@@ -649,25 +644,15 @@ function _setup_page() {
url: "/json/realm/emoji",
data: $(this).serialize(),
success: function () {
$('#admin-emoji-status, #admin-emoji-name-status, #admin-emoji-url-status').hide();
$('#admin-emoji-status').hide();
ui.report_success(i18n.t("Custom emoji added!"), emoji_status);
},
error: function (xhr, error) {
$('#admin-emoji-status, #admin-emoji-name-status, #admin-emoji-url-status').hide();
$('#admin-emoji-status').hide();
var errors = JSON.parse(xhr.responseText).msg;
if (errors.name !== undefined) {
xhr.responseText = JSON.stringify({msg: errors.name});
ui.report_error(i18n.t("Failed!"), xhr, emoji_name_status);
}
if (errors.img_url !== undefined) {
xhr.responseText = JSON.stringify({msg: errors.img_url});
ui.report_error(i18n.t("Failed!"), xhr, emoji_url_status);
}
if (errors.__all__ !== undefined) {
xhr.responseText = JSON.stringify({msg: errors.__all__});
xhr.responseText = JSON.stringify({msg: errors});
ui.report_error(i18n.t("Failed!"), xhr, emoji_status);
}
}
});
});

View File

@@ -336,10 +336,6 @@ input[type=checkbox].inline-block {
max-width: 100%;
}
#admin-emoji-name-status, #admin-emoji-url-status {
margin: 20px 0 0 0;
}
.admin-table-wrapper {
width: 90%;
margin: 0 auto;

View File

@@ -136,12 +136,10 @@
<div class="input-group">
<label for="emoji_name">{{t "Emoji name" }}</label>
<input type="text" name="name" id="emoji_name" placeholder="{{t 'mouse_face' }}" />
<div class="alert" id="admin-emoji-name-status"></div>
</div>
<div class="input-group">
<label for="emoji_url">{{t "Emoji URL" }}</label>
<input type="text" name="url" id="emoji_url" placeholder="http://emojipedia-us.s3.amazonaws.com/cache/46/7f/467fe69069c408e07517621f263ea9b5.png" />
<div class="alert" id="admin-emoji-url-status"></div>
</div>
<input type="submit" class="button" value="{{t 'Add emoji' }}" />
</div>