diff --git a/customize.dist/src/less2/include/sidebar-layout.less b/customize.dist/src/less2/include/sidebar-layout.less index 33950434c..73761a976 100644 --- a/customize.dist/src/less2/include/sidebar-layout.less +++ b/customize.dist/src/less2/include/sidebar-layout.less @@ -220,6 +220,9 @@ border-top-right-radius: 0px; border-bottom-right-radius: 0px; } + input:invalid { + border-color: red; + } button { border-top-left-radius: 0px; border-bottom-left-radius: 0px; diff --git a/www/profile/inner.js b/www/profile/inner.js index cc463e417..ab71077d1 100644 --- a/www/profile/inner.js +++ b/www/profile/inner.js @@ -150,16 +150,18 @@ define([ common.openUnsafeURL(href); }); - APP.$linkEdit = $(); }; var refreshLink = function (data) { - APP.$linkEdit.removeClass('fa-pencil').removeClass('fa'); if (!data.url) { - APP.$linkEdit.text(Messages.profile_addLink); + return void APP.$link.hide(); + } + // Only show valid URLs + try { + new URL(data.url); + } catch (e) { return void APP.$link.hide(); } APP.$link.attr('href', data.url).text(data.url).show(); - APP.$linkEdit.text('').addClass('fa fa-pencil'); }; var addFriendRequest = function ($container) { diff --git a/www/settings/inner.js b/www/settings/inner.js index 8b5531f4f..5b662be6d 100644 --- a/www/settings/inner.js +++ b/www/settings/inner.js @@ -1869,7 +1869,9 @@ define([ makeBlock('profile-link', function(cb) { if (!common.isLoggedIn()) { return cb(false); } - const input = APP.blocks.input(); + const input = APP.blocks.input({ + type: 'url' + }); const button = APP.blocks.button('primary', '', Messages.settings_save); const inputButton = APP.blocks.inputButton(input, button, { @@ -1881,7 +1883,8 @@ define([ const $input = $(input).val(APP.profileData?.url || ''); Util.onClickEnter($(button), () => { - const value = $(input).val(); + if ($input.is(':invalid')) { return; } + const value = $input.val(); APP.profile.execCommand('SET', { key: 'url', value