From e40a19cf8990136e55ba728b4626ca1877e064be Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 10 Jun 2015 14:00:29 -0400 Subject: [PATCH] Improve creation of CSS identifier Now escaping (), [], {}, ", and ; --- SoObjects/SOGo/NSString+Utilities.m | 12 +++++++++--- UI/WebServerResources/JavascriptAPIExtensions.js | 10 ++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/SoObjects/SOGo/NSString+Utilities.m b/SoObjects/SOGo/NSString+Utilities.m index 46f42af8e..6938e9478 100644 --- a/SoObjects/SOGo/NSString+Utilities.m +++ b/SoObjects/SOGo/NSString+Utilities.m @@ -333,12 +333,18 @@ static int cssEscapingCount; int count; strings = [NSArray arrayWithObjects: @"_U_", @"_D_", @"_H_", @"_A_", @"_S_", - @"_C_", @"_CO_", @"_SP_", @"_SQ_", @"_AM_", @"_P_", @"_DS_", nil]; + @"_C_", @"_SC_", + @"_CO_", @"_SP_", @"_SQ_", @"_DQ_", + @"_LP_", @"_RP_", @"_LS_", @"_RS_", @"_LC_", @"_RC_", + @"_AM_", @"_P_", @"_DS_", nil]; [strings retain]; cssEscapingStrings = [strings asPointersOfObjects]; - characters = [NSArray arrayWithObjects: @"_", @".", @"#", @"@", @"*", @":", - @",", @" ", @"'", @"&", @"+", @"$", nil]; + characters = [NSArray arrayWithObjects: @"_", @".", @"#", @"@", @"*", + @":", @";", + @",", @" ", @"'", @"\"", + @"(", @")", @"[", @"]", @"{", @"}", + @"&", @"+", @"$", nil]; cssEscapingCount = [strings count]; cssEscapingCharacters = NSZoneMalloc (NULL, (cssEscapingCount + 1) diff --git a/UI/WebServerResources/JavascriptAPIExtensions.js b/UI/WebServerResources/JavascriptAPIExtensions.js index 245078268..c8cd358ec 100644 --- a/UI/WebServerResources/JavascriptAPIExtensions.js +++ b/UI/WebServerResources/JavascriptAPIExtensions.js @@ -95,10 +95,12 @@ String.prototype.asDate = function () { }; String.prototype.asCSSIdentifier = function() { - var characters = [ '_' , '\\.', '#' , '@' , '\\*', ':' , ',' , ' ' - , "'", '&', '\\+' ]; - var escapeds = [ '_U_', '_D_', '_H_', '_A_', '_S_', '_C_', '_CO_', - '_SP_', '_SQ_', '_AM_', '_P_' ]; + var characters = [ '_' , '\\.', '#' , '@' , '\\*', ':' , ';' , ',' , ' ', + '\\(', '\\)', '\\[', '\\]', '\\{', '\\}', + , "'", '"', '&', '\\+' ]; + var escapeds = [ '_U_', '_D_', '_H_', '_A_', '_S_', '_C_', '_SC_', '_CO_', '_SP_', + '_LP_', '_RP_', '_LS_', '_RQ_', '_LC_', '_RC_', + '_SQ_', '_DQ_', '_AM_', '_P_' ]; var newString = this; for (var i = 0; i < characters.length; i++) {