Fixes #3344 - Allow mailto links in knowledge base (KB) and email signatures

This commit is contained in:
Mantas 2021-02-02 07:57:11 +02:00 committed by Thorsten Eckel
parent 876c0b18fd
commit ff00eb07fb
2 changed files with 51 additions and 3 deletions

View file

@ -21,10 +21,10 @@ class App.UiElement.richtext.additions.RichTextToolPopupLink extends App.UiEleme
ensureProtocol: (input) ->
input = input.trim()
if !input.match(/^\S+\:\/\//) and input[0] isnt '/'
'http://' + input
else
if @isWithProtocol(input) || @isRelativePath(input) || @isMailto(input)
input
else
'http://' + input
apply: (callback) ->
input = @el.find('input').val()
@ -57,3 +57,12 @@ class App.UiElement.richtext.additions.RichTextToolPopupLink extends App.UiEleme
switch @selection.type
when 'existing'
$(@selection.dom).contents().unwrap()
isWithProtocol: (input) ->
/^\S+\:\/\//.test(input)
isMailto: (input) ->
/^mailto\:\S+@\S/.test(input)
isRelativePath: (input) ->
input[0] is '/'

View file

@ -20,6 +20,45 @@ RSpec.describe 'Knowledge Base Locale Answer Edit', type: :system, authenticated
end
end
context 'add weblink' do
def open_editor_and_add_link(input)
visit "#knowledge_base/#{knowledge_base.id}/locale/#{primary_locale.system_locale.locale}/answer/#{draft_answer.id}/edit"
sleep 3 # wait for popover killer to pass
find('a[data-action="link"]').click
within('.popover-content') do
find('input').fill_in with: input
find('[type=submit]').click
end
end
it 'allows mailto links' do
open_editor_and_add_link 'mailto:test@example.com'
expect(page).to have_selector('a[href="mailto:test@example.com"]')
end
it 'allows link with a protocol' do
open_editor_and_add_link 'protocol://example.org'
expect(page).to have_selector('a[href="protocol://example.org"]')
end
it 'allows relative link' do
open_editor_and_add_link '/path'
expect(page).to have_selector('a[href="/path"]')
end
it 'allows non-protocol URL and prepends default protocol' do
open_editor_and_add_link 'example.com'
expect(page).to have_selector('a[href="http://example.com"]')
end
end
context 'embedded video' do
it 'has adding functionality' do