Ticket #1552: 1552.patch

File 1552.patch, 2.9 KB (added by fmalikoff, 7 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