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