Ticket #1552: 1552.patch

File 1552.patch, 2.9 KB (added by fmalikoff, 6 years ago)

Patch file for Safari and Opera support

  • Users/fiona/development/EclipseWorkspace/FCKEditor.Java/src/com/fredck/FCKeditor/FCKeditor.java

     
    2525package com.fredck.FCKeditor; 
    2626 
    2727import javax.servlet.http.HttpServletRequest; 
     28import java.util.regex.Matcher; 
     29import java.util.regex.Pattern; 
     30 
    2831 
    2932/** 
    3033 * The main class of the class lib.<br> 
     
    248251                        if(retrieveBrowserVersion(userAgent)>=5.5) 
    249252                                return true; 
    250253                } 
     254                else if (userAgent.indexOf("applewebkit") != -1) { 
     255                        // Safari (applewebkit) has "gecko" in its agent string so this test should appear before the gecko test 
     256            return (retrieveBrowserVersion(userAgent) >= 522); 
     257        }  
    251258                else if (userAgent.indexOf("gecko") !=-1){ 
    252259                        if(retrieveBrowserVersion(userAgent)>=20030210) 
    253260                                return true; 
     
    252259                        if(retrieveBrowserVersion(userAgent)>=20030210) 
    253260                                return true; 
    254261                } 
     262                else if (userAgent.indexOf("opera") != -1) { 
     263            return (retrieveBrowserVersion(userAgent) >= 9.5); 
     264        } 
    255265                return false; 
    256266        } 
    257267 
     
    256266        } 
    257267 
    258268        private double retrieveBrowserVersion(String userAgent) { 
    259                 if(userAgent.indexOf("msie")>-1) { 
    260                         String str = userAgent.substring(userAgent.indexOf("msie") + 5); 
    261                         return Double.parseDouble(str.substring(0, str.indexOf(";"))); 
    262                 } 
    263                 else { 
    264                         String str = userAgent.substring(userAgent.indexOf("gecko") + 6); 
    265                         return Double.parseDouble(str.substring(0, 8)); 
    266                 } 
     269                try { 
     270                        if(userAgent.indexOf("msie")>-1) { 
     271                                String str = userAgent.substring(userAgent.indexOf("msie") + 5); 
     272                                return Double.parseDouble(str.substring(0, str.indexOf(";"))); 
     273                        } 
     274                        else if (userAgent.indexOf("applewebkit") != -1) { 
     275                                // Safari (applewebkit) has "gecko" in its agent string so this test should appear before the gecko test 
     276                    Matcher safari = Pattern.compile("applewebkit/" + "(( [\\d]* )" + "(?:" + "\\." + " [\\d]* )?)", Pattern.COMMENTS).matcher(userAgent); 
     277                    safari.find(); 
     278                    int majorVersion = 0; 
     279                    return Integer.parseInt(safari.group(2)); 
     280                        } 
     281                        else if (userAgent.indexOf("gecko") != -1)  { 
     282                                String str = userAgent.substring(userAgent.indexOf("gecko") + 6); 
     283                                return Double.parseDouble(str.substring(0, 8)); 
     284                } else if (userAgent.indexOf("opera") != -1) { 
     285                    String str = userAgent.substring(userAgent.indexOf("opera") + 6); 
     286                    return  Double.parseDouble(str.substring(0, 4)); 
     287                } 
     288        } catch (NumberFormatException e) { 
     289                // do not do anything - want to return 0 
     290        } 
     291         
     292        return 0; 
     293 
     294 
     295                 
    267296        } 
    268297 
    269298        private String HTMLEncode(String txt) { 
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy