From 3bf340c1b493349991b975b478de69268ec0f613 Mon Sep 17 00:00:00 2001 From: dfurrer <none@none> Date: Fri, 8 Apr 2016 12:56:23 +0200 Subject: [PATCH] OO-1969:changed link from 'callto' to 'tel' , added method to format phonenumber for this link --- .../propertyhandlers/PhonePropertyHandler.java | 11 +++++++++-- .../java/org/olat/user/UserPropertiesTest.java | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java index 7fe769b3e14..f0c11571637 100644 --- a/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java +++ b/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java @@ -62,14 +62,21 @@ public class PhonePropertyHandler extends Generic127CharTextPropertyHandler { if (StringHelper.containsNonWhitespace(phonenr)) { phonenr = StringHelper.escapeHtml(phonenr); StringBuffer sb = new StringBuffer(); - sb.append("<a href=\"callto:") - .append(phonenr).append("\"><i class='o_icon o_icon_phone'> </i> ") + sb.append("<a href=\"tel:") + .append(normalizePhonenumber(phonenr)).append("\"><i class='o_icon o_icon_phone'> </i> ") .append(phonenr).append("</a>"); return sb.toString(); } return null; } + public static String normalizePhonenumber(String phonenr){ + phonenr=phonenr.split("[A-Za-z]")[0]; //just take the first sequence before a alphabetic character appears + phonenr=phonenr.replaceAll("\\(.*\\)", ""); // remove brackets and their contents + phonenr=phonenr.replaceAll("[\\s/'\\-\\.,]", ""); //remove bad chars + return phonenr; + } + /* (non-Javadoc) * @see org.olat.user.propertyhandlers.Generic127CharTextPropertyHandler#isValid(org.olat.core.gui.components.form.flexible.FormItem, java.util.Map) */ diff --git a/src/test/java/org/olat/user/UserPropertiesTest.java b/src/test/java/org/olat/user/UserPropertiesTest.java index 464be7d17b4..d4ae8a607d9 100644 --- a/src/test/java/org/olat/user/UserPropertiesTest.java +++ b/src/test/java/org/olat/user/UserPropertiesTest.java @@ -78,4 +78,22 @@ public class UserPropertiesTest { assertFalse(phoneHandler.isValidValue(null, "+41 43 frentix GmbH", error, null)); } + @Test + public void testPhonePropertyHandlerHTMLnormalizer() { + // test for valid phone number formats + assertTrue(PhonePropertyHandler.normalizePhonenumber("043 544 90 00").equals("0435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("043/544'90'00").equals("0435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("043-544-90-00").equals("0435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("043.544.90.00").equals("0435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 (0)43 544 90 00").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 x0").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext. 0").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext0").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext 0").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 extension 0").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 Extension 0").equals("+41435449000")); + assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext. 0").equals("+41435449000")); + } + } \ No newline at end of file -- GitLab