BaseBrowserCheck

来源:互联网 发布:淘宝店铺基本加权设置 编辑:程序博客网 时间:2024/06/05 07:55
unit ServerController;


interface


uses
  SysUtils, Classes, IWServerControllerBase, IWBaseForm, HTTPApp,
  // For OnNewSession Event
  UserSessionUnit, IWApplication, IWAppForm, IW.Browser.Browser,
  IW.Browser.InternetExplorer, IW.Browser.Safari,
  IW.Browser.Chrome, IW.Browser.Firefox, IW.Browser.Other;


type
  TIWServerController = class(TIWServerControllerBase)
    procedure IWServerControllerBaseNewSession(ASession: TIWApplication);
    procedure IWServerControllerBaseBrowserCheck(ASession: TIWApplication;
      var rBrowser: TBrowser);


  private


  public
  end;


function UserSession: TIWUserSession;
function IWServerController: TIWServerController;


implementation


{$R *.dfm}


uses
  IWInit, IWGlobal;


function IWServerController: TIWServerController;
begin
  Result := TIWServerController(GServerController);
end;


function UserSession: TIWUserSession;
begin
  Result := TIWUserSession(WebApplication.Data);
end;


procedure TIWServerController.IWServerControllerBaseBrowserCheck
  (ASession: TIWApplication; var rBrowser: TBrowser);
var
  MinVersion: Single;
  // ua: String;
begin
  // ua := ASession.Request.GetRawHeaderValue('User-Agent');
  if (rBrowser is TSafari) and (not rBrowser.IsSupported) then
  begin
    // if is Safari, but older version
    MinVersion := rBrowser.MinSupportedVersion;
    rBrowser.Free;
    // we will create it as the minimum supported version
    rBrowser := TSafari.Create(MinVersion);
  end
  // if is Chrome, but older version
  else if (rBrowser is TChrome) and (not rBrowser.IsSupported) then
  begin
    MinVersion := rBrowser.MinSupportedVersion;
    rBrowser.Free;
    // we will create it as the minimum supported version
    rBrowser := TChrome.Create(MinVersion);
  end
  // if is Firefox, but older version
  else if (rBrowser is TFirefox) and (not rBrowser.IsSupported) then
  begin
    MinVersion := rBrowser.MinSupportedVersion;
    rBrowser.Free;
    // we will create it as the minimum supported version
    rBrowser := TFirefox.Create(MinVersion);
  end
  // if is IE, but older version
  else if (rBrowser is TInternetExplorer) and (not rBrowser.IsSupported) then
  begin
    MinVersion := rBrowser.MinSupportedVersion;
    rBrowser.Free;
    // we will create it as the minimum supported version
    rBrowser := TInternetExplorer.Create(MinVersion);
  end
  else if (rBrowser is TOther) or (not rBrowser.IsSupported) then
  begin
    // unknown browser
    rBrowser.Free;
    // accept the unknown browser as Internet Explorer 8
    rBrowser := TInternetExplorer.Create(8);
  end;
end;


procedure TIWServerController.IWServerControllerBaseNewSession
  (ASession: TIWApplication);
begin
  ASession.Data := TIWUserSession.Create(nil, ASession);
end;


initialization


TIWServerController.SetServerControllerClass;


end.
0 0