Browse Source

保留A标签

lqq 9 years ago
parent
commit
961757edfd

File diff suppressed because it is too large
+ 1 - 1
AppCom/AppCentreCom.dproj


BIN
AppCom/AppCentreCom.res


File diff suppressed because it is too large
+ 1 - 1
CA/CA.dproj


BIN
CA/CA.res


File diff suppressed because it is too large
+ 1 - 1
COM/RealICQCOMInterfaces/RealICQCOMInterfaces.dproj


BIN
COM/RealICQCOMInterfaces/RealICQCOMInterfaces.res


File diff suppressed because it is too large
+ 1 - 1
Client/Lxtalk.dproj


BIN
Client/Lxtalk.res


File diff suppressed because it is too large
+ 8417 - 8432
Client/MainFrm.dfm


+ 8 - 1
Client/MainFrm.pas

@@ -11832,7 +11832,14 @@ begin
           reg.Subject := Contents.Strings[2];
           reg.RegEx := '<[^>]+>';
           reg.Replacement := '';
-          reg.ReplaceAll;
+          while reg.MatchAgain do
+          begin
+            if (Length(reg.Groups[0]) >= 3) and ((SameText(LeftStr(reg.Groups[0], 3), '<a ')) or (SameText(LeftStr(reg.Groups[0], 3), '<a>'))) then
+              Continue;
+            if (SameText(reg.Groups[0], '</a>')) then
+              Continue;      
+            reg.Replace();
+          end;
           SystemMessage.Content := '<p style="line-height:18px; text-indent:2em;">' + reg.Subject + '</p>';
         finally
           reg.Free;

+ 414 - 403
Client/SystemMessageFrm.pas

@@ -1,475 +1,486 @@
 unit SystemMessageFrm;
-
-interface
-
-uses
-  RealICQSkinFrm, RealICQColors, RealICQClient, RealICQUtils, SysUtils,
-  Windows, Messages, Variants, Classes, Graphics, Controls, Forms, MD5,
-  ExtCtrls, RealICQRoundBorderPanel, StdCtrls, Buttons, RealICQButton,
-  OleCtrls, SHDocVw, MSHTML, ActiveX, ShellAPI, StrUtils, GIFImage, RealICQModel;
-
-type  
-  TSystemMessageForm = class(TRealICQSkinForm)
-    pnlClient: TPanel;
-    rndContent: TRealICQRoundBorderPanel;
-    pnlForWebBrowser: TPanel;
-    WebBrowser: TWebBrowser;
-    pnlForHideWebBrowser: TPanel;
-    AutoCloseWindowTimer: TTimer;
-    Image1: TImage;
-    btClose: TRealICQButton;
-    btShowDetail: TRealICQButton;
-    procedure WebBrowserBeforeNavigate2(ASender: TObject;
-      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
-      Headers: OleVariant; var Cancel: WordBool);
-    procedure AutoCloseWindowTimerTimer(Sender: TObject);
-    procedure FormShow(Sender: TObject);
-    procedure btShowDetailClick(Sender: TObject);
-    procedure WebBrowserDocumentComplete(ASender: TObject;
-      const pDisp: IDispatch; var URL: OleVariant);
-    procedure btCloseClick(Sender: TObject);
-    procedure FormDestroy(Sender: TObject);
-    procedure FormCreate(Sender: TObject);
-    procedure FormClose(Sender: TObject; var Action: TCloseAction);
-    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
-  private
-    FMessageType: TRealICQSystemMessageType;
-    FPosition: TRealICQSystemMessagePosition;
-    FTitle,
-    FContent,
-    FUrl: String;
-    FConfirm:Boolean;
-    FAutoCloseTime: Integer;
-    FSoureServerID:String; //发送系统消息的服务器ID;
-    FBookingID,FMessageID,FBranchID:Cardinal;//会议预约ID,消息ID,部门ID
-    procedure ShowSystemMessage;
-    procedure SetDOMStyle(Doc:IHTMLDocument2);
-  protected
-    procedure CreateParams(var Params: TCreateParams); override;
-  public
-    procedure ChangeUIColor(AColor: TColor); override;
-  end;
-
-  procedure OpenSystemMessageForm(AMessageID: String;
-    AMessageType: TRealICQSystemMessageType; APosition: TRealICQSystemMessagePosition;
-    ALeft, ATop, AWidth, AHeight: Integer;
-    ATitle, AContent, AUrl: String;
-    AAutoCloseTime: Integer);
-  procedure ChangeSystemMessageFormsColor(AColor: TColor);
-  procedure CloseAllChangeSystemMessageForms;
-  procedure ChangeSystemMessageFormsSkin(ASkinName: String);
-
-implementation
-
-uses MainFrm, AppCentreImport, RealICQUtility;
-
-var
-  ShowTastBarButton: Boolean;
+
+interface
+
+uses
+  RealICQSkinFrm, RealICQColors, RealICQClient, RealICQUtils, SysUtils, Windows,
+  Messages, Variants, Classes, Graphics, Controls, Forms, MD5, ExtCtrls,
+  RealICQRoundBorderPanel, StdCtrls, Buttons, RealICQButton, OleCtrls, SHDocVw,
+  MSHTML, ActiveX, ShellAPI, StrUtils, GIFImage, RealICQModel, superobject;
+
+type
+  TSystemMessageForm = class(TRealICQSkinForm)
+    pnlClient: TPanel;
+    rndContent: TRealICQRoundBorderPanel;
+    pnlForWebBrowser: TPanel;
+    WebBrowser: TWebBrowser;
+    pnlForHideWebBrowser: TPanel;
+    AutoCloseWindowTimer: TTimer;
+    Image1: TImage;
+    btClose: TRealICQButton;
+    btShowDetail: TRealICQButton;
+    procedure WebBrowserBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
+    procedure AutoCloseWindowTimerTimer(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure btShowDetailClick(Sender: TObject);
+    procedure WebBrowserDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
+    procedure btCloseClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+  private
+    FMessageType: TRealICQSystemMessageType;
+    FPosition: TRealICQSystemMessagePosition;
+    FTitle, FContent, FUrl: string;
+    FConfirm: Boolean;
+    FAutoCloseTime: Integer;
+    FSoureServerID: string; //发送系统消息的服务器ID;
+
+    FBookingID, FMessageID, FBranchID: Cardinal; //会议预约ID,消息ID,部门ID
+
+    procedure ShowSystemMessage;
+    procedure SetDOMStyle(Doc: IHTMLDocument2);
+  protected
+    procedure CreateParams(var Params: TCreateParams); override;
+  public
+    procedure ChangeUIColor(AColor: TColor); override;
+  end;
+
+procedure OpenSystemMessageForm(AMessageID: string; AMessageType: TRealICQSystemMessageType; APosition: TRealICQSystemMessagePosition; ALeft, ATop, AWidth, AHeight: Integer; ATitle, AContent, AUrl: string; AAutoCloseTime: Integer);
+
+procedure ChangeSystemMessageFormsColor(AColor: TColor);
+
+procedure CloseAllChangeSystemMessageForms;
+
+procedure ChangeSystemMessageFormsSkin(ASkinName: string);
+
+implementation
+
+uses
+  MainFrm, AppCentreImport, RealICQUtility, GuideView, ConditionConfig;
+
+var
+  ShowTastBarButton: Boolean;
   SystemMessageForms: TStringList;
 
 //------------------------------------------------------------------------------
-procedure ChangeSystemMessageFormsSkin(ASkinName: String);
-var
-  iLoop: Integer;
-  AForm: TSystemMessageForm;
-  OldSkin: String;
-begin
-  ASkinName := AnsiReplaceText(ASkinName, 'MainForm', '');
-  for iLoop := 0 to SystemMessageForms.Count - 1 do
-  begin
-    AForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
-    OldSkin := AForm.SkinName;
-    try
-      AForm.SkinName := ASkinName;
-    except
-      AForm.SkinName := OldSkin;
-    end;
-    AForm.ChangeUIColor(MainForm.UIMainColor);
-  end;
+procedure ChangeSystemMessageFormsSkin(ASkinName: string);
+var
+  iLoop: Integer;
+  AForm: TSystemMessageForm;
+  OldSkin: string;
+begin
+  ASkinName := AnsiReplaceText(ASkinName, 'MainForm', '');
+  for iLoop := 0 to SystemMessageForms.Count - 1 do
+  begin
+    AForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
+    OldSkin := AForm.SkinName;
+    try
+      AForm.SkinName := ASkinName;
+    except
+      AForm.SkinName := OldSkin;
+    end;
+    AForm.ChangeUIColor(MainForm.UIMainColor);
+  end;
 end;
 
 //------------------------------------------------------------------------------
-procedure ChangeSystemMessageFormsColor(AColor: TColor);
-var
-  iLoop: Integer;
-  AForm: TSystemMessageForm;
-begin
-  for iLoop := 0 to SystemMessageForms.Count - 1 do
-  begin
-    AForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
-    AForm.ChangeUIColor(AColor);
-  end;  
+procedure ChangeSystemMessageFormsColor(AColor: TColor);
+var
+  iLoop: Integer;
+  AForm: TSystemMessageForm;
+begin
+  for iLoop := 0 to SystemMessageForms.Count - 1 do
+  begin
+    AForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
+    AForm.ChangeUIColor(AColor);
+  end;
 end;
 
 //------------------------------------------------------------------------------
-procedure CloseAllChangeSystemMessageForms;
-var
-  iLoop: Integer;
-  AForm: TSystemMessageForm;
-begin
-  for iLoop := SystemMessageForms.Count - 1 downto 0 do
-  begin
-    AForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
-    FreeAndNil(AForm);
-  end;
+procedure CloseAllChangeSystemMessageForms;
+var
+  iLoop: Integer;
+  AForm: TSystemMessageForm;
+begin
+  for iLoop := SystemMessageForms.Count - 1 downto 0 do
+  begin
+    AForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
+    FreeAndNil(AForm);
+  end;
 end;
 
 //------------------------------------------------------------------------------
-procedure OpenSystemMessageForm(AMessageID: String;
-    AMessageType: TRealICQSystemMessageType; APosition: TRealICQSystemMessagePosition;
-    ALeft, ATop, AWidth, AHeight: Integer;
-    ATitle, AContent, AUrl: String;
-    AAutoCloseTime: Integer);
-var
-  AForm,
-  PrevForm: TSystemMessageForm;
-  iIndex,
-  iLoop: Integer;
-  Parameters:TStringList;
-begin
-  iIndex := SystemMessageForms.IndexOf(AMessageID);
-  if iIndex >= 0 then
-  begin
-    AForm := SystemMessageForms.Objects[iIndex] as TSystemMessageForm;
-    AForm.BringToFront;
-    Exit;
-  end
-  else
-  begin
-    PrevForm := nil;
-    for iLoop := SystemMessageForms.Count - 1 downto 0 do
-    begin
-      PrevForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
-      if PrevForm.FPosition = APosition then
-        Break
-      else
-        PrevForm := nil;
-    end;
-
-    AForm := nil;
-
-    case APosition of
-      mpCenter:
-      begin
-        ShowTastBarButton := True;
-        AForm := TSystemMessageForm.Create(Application);
-        AForm.Width := AWidth;
-        AForm.Height := AHeight;
-        AForm.Left := (Screen.WorkAreaWidth - AForm.Width) div 2;
-        AForm.Top := (Screen.WorkAreaHeight - AForm.Height) div 2;
-        AForm.FormStyle := fsNormal;
-      end;
-      mpRightBottom:
-      begin
-        ShowTastBarButton := False;
-        AForm := TSystemMessageForm.Create(Application);
-        AForm.Width := AWidth;
-        AForm.Height := AHeight;
-        if (True) or (PrevForm = nil) then
-        begin
-          AForm.Left := (Screen.WorkAreaWidth - AForm.Width) - 3;
-          AForm.Top := (Screen.WorkAreaHeight - AForm.Height) - 3;
-        end
-        else if (PrevForm.Top - AForm.Height - 3 < 0) then
-        begin
-          AForm.Left := PrevForm.Left - AForm.Width - 3;
-          AForm.Top := (Screen.WorkAreaHeight - AForm.Height) - 3;
-        end
-        else
-        begin
-          AForm.Left := PrevForm.Left;
-          AForm.Top := PrevForm.Top - AForm.Height - 3;
-        end;
-        if AForm.Left < 0 then
-        begin
-          AForm.Left := (Screen.WorkAreaWidth - AForm.Width) - 3;
-          AForm.Top := (Screen.WorkAreaHeight - AForm.Height) - 3;
-        end;
-
-        AForm.FormStyle := fsStayOnTop;
-        AForm.CanMoveWindow := False;
-      end;
-      mpCustom:
-      begin
-        ShowTastBarButton := True;
-        AForm := TSystemMessageForm.Create(Application);
-        AForm.Width := AWidth;
-        AForm.Height := AHeight;
-        AForm.Left := ALeft;
-        AForm.Top := ATop;
-        AForm.FormStyle := fsNormal;
-      end;
-    end;
-  end;
-
-  iIndex := SystemMessageForms.IndexOfObject(AForm);
-  if iIndex >= 0 then SystemMessageForms[iIndex] := AMessageID;
-  AForm.FMessageType := AMessageType;
-  AForm.FPosition := APosition;
-  AForm.FMessageID :=StrToInt(AMessageID);
-  AForm.FTitle := ATitle;
-  AForm.FContent := AContent;
-  AForm.FUrl := AUrl;
-  AForm.FAutoCloseTime := AAutoCloseTime;
-  AForm.ShowSystemMessage;
-  AForm.FConfirm:=False;
-  if AForm.FMessageType =mtConfirmMsg then
-  begin
-      try
-        Parameters:=SplitString(AUrl,char(10));
-        AForm.FSoureServerID:=Parameters[0];
-        AForm.FBookingID:=StrToInt(Parameters[1]);
-        AForm.FBranchID:=StrToInt(Parameters[2]);
-      finally
-        FreeAndNil(Parameters);
-      end;
-  end;
-  AForm.Show;
-  AForm.BringToFront;
+procedure OpenSystemMessageForm(AMessageID: string; AMessageType: TRealICQSystemMessageType; APosition: TRealICQSystemMessagePosition; ALeft, ATop, AWidth, AHeight: Integer; ATitle, AContent, AUrl: string; AAutoCloseTime: Integer);
+var
+  AForm, PrevForm: TSystemMessageForm;
+  iIndex, iLoop: Integer;
+  Parameters: TStringList;
+begin
+  iIndex := SystemMessageForms.IndexOf(AMessageID);
+  if iIndex >= 0 then
+  begin
+    AForm := SystemMessageForms.Objects[iIndex] as TSystemMessageForm;
+    AForm.BringToFront;
+    Exit;
+  end
+  else
+  begin
+    PrevForm := nil;
+    for iLoop := SystemMessageForms.Count - 1 downto 0 do
+    begin
+      PrevForm := SystemMessageForms.Objects[iLoop] as TSystemMessageForm;
+      if PrevForm.FPosition = APosition then
+        Break
+      else
+        PrevForm := nil;
+    end;
+
+    AForm := nil;
+
+    case APosition of
+      mpCenter:
+        begin
+          ShowTastBarButton := True;
+          AForm := TSystemMessageForm.Create(Application);
+          AForm.Width := AWidth;
+          AForm.Height := AHeight;
+          AForm.Left := (Screen.WorkAreaWidth - AForm.Width) div 2;
+          AForm.Top := (Screen.WorkAreaHeight - AForm.Height) div 2;
+          AForm.FormStyle := fsNormal;
+        end;
+      mpRightBottom:
+        begin
+          ShowTastBarButton := False;
+          AForm := TSystemMessageForm.Create(Application);
+          AForm.Width := AWidth;
+          AForm.Height := AHeight;
+          if (True) or (PrevForm = nil) then
+          begin
+            AForm.Left := (Screen.WorkAreaWidth - AForm.Width) - 3;
+            AForm.Top := (Screen.WorkAreaHeight - AForm.Height) - 3;
+          end
+          else if (PrevForm.Top - AForm.Height - 3 < 0) then
+          begin
+            AForm.Left := PrevForm.Left - AForm.Width - 3;
+            AForm.Top := (Screen.WorkAreaHeight - AForm.Height) - 3;
+          end
+          else
+          begin
+            AForm.Left := PrevForm.Left;
+            AForm.Top := PrevForm.Top - AForm.Height - 3;
+          end;
+          if AForm.Left < 0 then
+          begin
+            AForm.Left := (Screen.WorkAreaWidth - AForm.Width) - 3;
+            AForm.Top := (Screen.WorkAreaHeight - AForm.Height) - 3;
+          end;
+
+          AForm.FormStyle := fsStayOnTop;
+          AForm.CanMoveWindow := False;
+        end;
+      mpCustom:
+        begin
+          ShowTastBarButton := True;
+          AForm := TSystemMessageForm.Create(Application);
+          AForm.Width := AWidth;
+          AForm.Height := AHeight;
+          AForm.Left := ALeft;
+          AForm.Top := ATop;
+          AForm.FormStyle := fsNormal;
+        end;
+    end;
+  end;
+
+  iIndex := SystemMessageForms.IndexOfObject(AForm);
+  if iIndex >= 0 then
+    SystemMessageForms[iIndex] := AMessageID;
+  AForm.FMessageType := AMessageType;
+  AForm.FPosition := APosition;
+  AForm.FMessageID := StrToInt(AMessageID);
+  AForm.FTitle := ATitle;
+  AForm.FContent := AContent;
+  AForm.FUrl := AUrl;
+  AForm.FAutoCloseTime := AAutoCloseTime;
+  AForm.ShowSystemMessage;
+  AForm.FConfirm := False;
+  if AForm.FMessageType = mtConfirmMsg then
+  begin
+    try
+      Parameters := SplitString(AUrl, char(10));
+      AForm.FSoureServerID := Parameters[0];
+      AForm.FBookingID := StrToInt(Parameters[1]);
+      AForm.FBranchID := StrToInt(Parameters[2]);
+    finally
+      FreeAndNil(Parameters);
+    end;
+  end;
+  AForm.Show;
+  AForm.BringToFront;
 end;
 
 {$R *.dfm}
 
 {TSystemMessageForm}
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.ShowSystemMessage;
-begin
-  Caption := FTitle;
-  btShowDetail.Visible := ((Length(Trim(FUrl)) > 0) and (FMessageType = mtBroadcast)) or (FMessageType =mtConfirmMsg);
-  if FMessageType = mtAdvertisement then
-  begin
-    btShowDetail.Visible := False;
-    FUrl := AnsiReplaceText(FUrl, '[%LoginName%]', MainForm.RealICQClient.LoginName);
-    FUrl := AnsiReplaceText(FUrl, '[%Password%]', MainForm.RealICQClient.Password);
-    FUrl := AnsiReplaceText(FUrl, '[%MD5_LoginName%]', MD5En(MainForm.RealICQClient.LoginName));
-    FUrl := AnsiReplaceText(FUrl, '[%MD5_Password%]', MD5En(MainForm.RealICQClient.Password));
-    FUrl := AnsiReplaceText(FUrl, '[%BranchID%]', MainForm.RealICQClient.Me.BranchID);
-
-    WebBrowser.Navigate(FUrl);
-  end
-  else
-      WebBrowser.Navigate('about:blank');
-
-  if FMessageType =mtConfirmMsg then
-  begin
-       btShowDetail.Caption:='接受';
-  end;
-  btClose.Default := not btShowDetail.Visible;  
+procedure TSystemMessageForm.ShowSystemMessage;
+begin
+  Caption := FTitle;
+  btShowDetail.Visible := ((Length(Trim(FUrl)) > 0) and (FMessageType = mtBroadcast)) or (FMessageType = mtConfirmMsg);
+  if FMessageType = mtAdvertisement then
+  begin
+    btShowDetail.Visible := False;
+    FUrl := AnsiReplaceText(FUrl, '[%LoginName%]', MainForm.RealICQClient.LoginName);
+    FUrl := AnsiReplaceText(FUrl, '[%Password%]', MainForm.RealICQClient.Password);
+    FUrl := AnsiReplaceText(FUrl, '[%MD5_LoginName%]', MD5En(MainForm.RealICQClient.LoginName));
+    FUrl := AnsiReplaceText(FUrl, '[%MD5_Password%]', MD5En(MainForm.RealICQClient.Password));
+    FUrl := AnsiReplaceText(FUrl, '[%BranchID%]', MainForm.RealICQClient.Me.BranchID);
+
+    WebBrowser.Navigate(FUrl);
+  end
+  else
+    WebBrowser.Navigate('about:blank');
+
+  if FMessageType = mtConfirmMsg then
+  begin
+    btShowDetail.Caption := '接受';
+  end;
+  btClose.Default := not btShowDetail.Visible;
 end;
 
 {设置WebBrowser的样式}
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.SetDOMStyle(Doc:IHTMLDocument2);
-var
-  v: Variant;
-begin
-  if pnlForHideWebBrowser.Visible then
-  begin
-    if (Length(Trim(FContent)) > 0) and ((FMessageType = mtBroadcast)
-      or (FMessageType=mtConfirmMsg))  then
-    begin
-      v := VarArrayCreate([0, 0], varVariant);
-      v[0] := '<body scroll="no" bgcolor="#fdfdfd" link="#0000FF" vlink="#0000FF" alink="#0000FF" hlink="#0000FF" oncontextmenu="return false;" >'
-          + FContent
-          + '</body>';
-      doc.write(PSafeArray(TVarData(v).VArray));
-    end;
-  end;
-
-  Doc.body.style.cssText := 'word-break: break-all;';
-  Doc.body.style.border :='0px solid #fdfdfd';
-  Doc.body.style.margin :='0px';
-  if (Length(Trim(FContent)) > 0) and ((FMessageType = mtBroadcast)
-      or (FMessageType=mtConfirmMsg))  then
-  begin
-    Doc.body.style.fontFamily := '宋体';
-    Doc.body.style.fontSize := '9pt';
-  end;
+procedure TSystemMessageForm.SetDOMStyle(Doc: IHTMLDocument2);
+var
+  v: Variant;
+begin
+  if pnlForHideWebBrowser.Visible then
+  begin
+    if (Length(Trim(FContent)) > 0) and ((FMessageType = mtBroadcast) or (FMessageType = mtConfirmMsg)) then
+    begin
+      v := VarArrayCreate([0, 0], varVariant);
+      v[0] := '<body scroll="no" bgcolor="#fdfdfd" link="#0000FF" vlink="#0000FF" alink="#0000FF" hlink="#0000FF" oncontextmenu="return false;" >' + FContent + '</body>';
+      doc.write(PSafeArray(TVarData(v).VArray));
+    end;
+  end;
+
+  Doc.body.style.cssText := 'word-break: break-all;';
+  Doc.body.style.border := '0px solid #fdfdfd';
+  Doc.body.style.margin := '0px';
+  if (Length(Trim(FContent)) > 0) and ((FMessageType = mtBroadcast) or (FMessageType = mtConfirmMsg)) then
+  begin
+    Doc.body.style.fontFamily := '宋体';
+    Doc.body.style.fontSize := '9pt';
+  end;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.WebBrowserBeforeNavigate2(ASender: TObject;
-  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
-  Headers: OleVariant; var Cancel: WordBool);
-const
-  BaseURL = 'about:blank';
-  BaseURL1 = 'about:';
-var
-  NewUrl: string;
-  AStrs: TStrings;
-begin
-  NewUrl := Trim(AnsiReplaceText(string(URL), BaseURL, ''));
-  NewUrl := Trim(AnsiReplaceText(string(NewUrl), BaseURL1, ''));
-
-  if AnsiSameText(Copy(NewUrl, 1, 3), 'SSO') then
-  begin
-    Cancel := True;
-    AStrs := TRealICQUtility.SplitString(NewUrl, '||');
-    try
-      if AStrs.Count = 3 then           
-        GetAppCentre.SSO(AStrs[1], AStrs[2]);
-    finally
-      AStrs.Free;
-    end;
-  end;
-end;
-
-procedure TSystemMessageForm.WebBrowserDocumentComplete(ASender: TObject;
-  const pDisp: IDispatch; var URL: OleVariant);
-begin
-  try
+procedure TSystemMessageForm.WebBrowserBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
+const
+  BaseURL = 'about:blank';
+  BaseURL1 = 'about:';
+var
+  NewUrl: string;
+  AStrs: TStrings;
+  jo: ISuperObject;
+begin
+  NewUrl := Trim(AnsiReplaceText(string(URL), BaseURL, ''));
+  NewUrl := Trim(AnsiReplaceText(string(NewUrl), BaseURL1, ''));
+
+  if SameText(NewUrl, 'local://openguideviewform/') then
+  begin
+    Cancel := True;
+    jo := SO();
+    if TConditionConfig.GetConfig.RemoteUI then
+    begin
+      jo.S['url'] := Format('%s/guideview/index.html?v=%d', [TConditionConfig.GetConfig.RemoteUIHost, GetTickCount]);
+    end
+    else
+      jo.S['url'] := ExtractFilePath(paramstr(0)) + 'html/guideview/#/';
+    jo.S['caption'] := '引导页';
+    jo.B['center'] := True;
+    jo.B['unsizeable'] := True;
+
+//  if not Assigned(AGuideViewForm) then
+    AGuideViewForm := TGuideViewForm.Create(Self);
+    AGuideViewForm.SetFormInfo(jo.AsString);
+    AGuideViewForm.Show;
+  end;
+
+  if AnsiSameText(Copy(NewUrl, 1, 3), 'SSO') then
+  begin
+    Cancel := True;
+    AStrs := TRealICQUtility.SplitString(NewUrl, '||');
+    try
+      if AStrs.Count = 3 then
+        GetAppCentre.SSO(AStrs[1], AStrs[2]);
+    finally
+      AStrs.Free;
+    end;
+  end;
+end;
+
+procedure TSystemMessageForm.WebBrowserDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
+begin
+  try
     WebBrowser.OnDocumentComplete := nil;
     //if (Length(Trim(FContent)) > 0) and (FMessageType = mtBroadcast) then
-    if (FMessageType<>mtAdvertisement)   then
-       SetDomStyle(WebBrowser.Document as IHtmlDocument2);
-  except
+
+    if (FMessageType <> mtAdvertisement) then
+      SetDomStyle(WebBrowser.Document as IHtmlDocument2);
+  except
   end;
   //if pnlForHideWebBrowser.Visible then
   //  (Image1.Picture.Graphic as TGIFImage).Animate := False;
- pnlForHideWebBrowser.Visible := False;
- if FAutoCloseTime > 0 then
-  begin
-    AutoCloseWindowTimer.Interval := FAutoCloseTime * 1000; 
-    AutoCloseWindowTimer.Enabled := True;
-  end;
-  ClearMemory;
+
+  pnlForHideWebBrowser.Visible := False;
+  if FAutoCloseTime > 0 then
+  begin
+    AutoCloseWindowTimer.Interval := FAutoCloseTime * 1000;
+    AutoCloseWindowTimer.Enabled := True;
+  end;
+  ClearMemory;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.btCloseClick(Sender: TObject);
-begin
-  Close;
+procedure TSystemMessageForm.btCloseClick(Sender: TObject);
+begin
+  Close;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.btShowDetailClick(Sender: TObject);
-var LoginName:String;
-  AURL: string;
-begin
-  if (FMessageType=mtConfirmMsg) then
-  begin
-     FConfirm:=True;
-     Close;
-     Exit;
-  end;
-  
-  LoginName:=MainForm.RealICQClient.LoginName;
-  if AnsiPos('-',LoginName)>0 then
-  begin
-     LoginName:=Copy(LoginName,AnsiPos('-',LoginName)+1,Length(LoginName)-AnsiPos('-',LoginName));
-  end;
-
-  FUrl := AnsiReplaceText(FUrl, '[%LoginName%]',LoginName );
-  FUrl := AnsiReplaceText(FUrl, '[%Password%]', MainForm.RealICQClient.Password);
-  FUrl := AnsiReplaceText(FUrl, '[%MD5_LoginName%]', MD5En(LoginName));
-  FUrl := AnsiReplaceText(FUrl, '[%MD5_Password%]', MD5En(MainForm.RealICQClient.Password));
-  FUrl := AnsiReplaceText(FUrl, '[%BranchID%]', MainForm.RealICQClient.Me.BranchID);
-
-  if AnsiSameText(Copy(FUrl, 1, 5), 'http:') or AnsiSameText(Copy(FUrl, 1, 6), 'https:') then
-  begin
-    ShellExecute(handle, 'open', PChar(MainForm.GetDefaultBrowser),PChar('"' + String(FUrl) + '"'), '', SW_SHOWNORMAL)
-  end
-  else
-  begin
-    AURL := Format(MainForm.RealICQClient.WebAppBaseURL + LoginURL, [StrToBase64(MainForm.RealICQClient.LoginName), StrToBase64(MD5En(MainForm.RealICQClient.Password)), StrToBase64(ReadMessageURL + FUrl)]);
-    ShellExecute(handle, 'open', PChar(MainForm.GetDefaultBrowser),PChar(Format(MainForm.RealICQClient.WebAppBaseURL + LoginURL, [StrToBase64(MainForm.RealICQClient.LoginName), StrToBase64(MD5En(MainForm.RealICQClient.Password)), StrToBase64(ReadMessageURL + FUrl)])),'',SW_SHOWDEFAULT);
-  end;
-
-  Close;
+procedure TSystemMessageForm.btShowDetailClick(Sender: TObject);
+var
+  LoginName: string;
+  AURL: string;
+begin
+  if (FMessageType = mtConfirmMsg) then
+  begin
+    FConfirm := True;
+    Close;
+    Exit;
+  end;
+
+  LoginName := MainForm.RealICQClient.LoginName;
+  if AnsiPos('-', LoginName) > 0 then
+  begin
+    LoginName := Copy(LoginName, AnsiPos('-', LoginName) + 1, Length(LoginName) - AnsiPos('-', LoginName));
+  end;
+
+  FUrl := AnsiReplaceText(FUrl, '[%LoginName%]', LoginName);
+  FUrl := AnsiReplaceText(FUrl, '[%Password%]', MainForm.RealICQClient.Password);
+  FUrl := AnsiReplaceText(FUrl, '[%MD5_LoginName%]', MD5En(LoginName));
+  FUrl := AnsiReplaceText(FUrl, '[%MD5_Password%]', MD5En(MainForm.RealICQClient.Password));
+  FUrl := AnsiReplaceText(FUrl, '[%BranchID%]', MainForm.RealICQClient.Me.BranchID);
+
+  if AnsiSameText(Copy(FUrl, 1, 5), 'http:') or AnsiSameText(Copy(FUrl, 1, 6), 'https:') then
+  begin
+    ShellExecute(handle, 'open', PChar(MainForm.GetDefaultBrowser), PChar('"' + string(FUrl) + '"'), '', SW_SHOWNORMAL)
+  end
+  else
+  begin
+    AURL := Format(MainForm.RealICQClient.WebAppBaseURL + LoginURL, [StrToBase64(MainForm.RealICQClient.LoginName), StrToBase64(MD5En(MainForm.RealICQClient.Password)), StrToBase64(ReadMessageURL + FUrl)]);
+    ShellExecute(handle, 'open', PChar(MainForm.GetDefaultBrowser), PChar(Format(MainForm.RealICQClient.WebAppBaseURL + LoginURL, [StrToBase64(MainForm.RealICQClient.LoginName), StrToBase64(MD5En(MainForm.RealICQClient.Password)), StrToBase64(ReadMessageURL + FUrl)])), '', SW_SHOWDEFAULT);
+  end;
+
+  Close;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.ChangeUIColor(AColor: TColor);
-begin
-  inherited ChangeUIColor(AColor);
-  pnlClient.Color := FormColor;
-  btClose.ChangeUIColor(AColor);
-  btShowDetail.ChangeUIColor(AColor);
-  rndContent.ChangeUIColor(AColor);
+procedure TSystemMessageForm.ChangeUIColor(AColor: TColor);
+begin
+  inherited ChangeUIColor(AColor);
+  pnlClient.Color := FormColor;
+  btClose.ChangeUIColor(AColor);
+  btShowDetail.ChangeUIColor(AColor);
+  rndContent.ChangeUIColor(AColor);
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.FormClose(Sender: TObject;
-  var Action: TCloseAction);
-begin
-  if (FMessageType=mtConfirmMsg) then
-      MainForm.RealICQClient.SendSystemMessageConfirmResponse(FMessageID,
-                           FBookingID,FBranchID,FSoureServerID,FConfirm);
-  Action := caFree;
+procedure TSystemMessageForm.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if (FMessageType = mtConfirmMsg) then
+    MainForm.RealICQClient.SendSystemMessageConfirmResponse(FMessageID, FBookingID, FBranchID, FSoureServerID, FConfirm);
+  Action := caFree;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.FormCloseQuery(Sender: TObject;
-  var CanClose: Boolean);
-begin
-  if Assigned(WebBrowser.OnDocumentComplete) then CanClose := False;
+procedure TSystemMessageForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+begin
+  if Assigned(WebBrowser.OnDocumentComplete) then
+    CanClose := False;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.FormCreate(Sender: TObject);
-begin
-  if not ShowTastBarButton then
-  begin 
-    SetWindowLong( Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOPMOST or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
-    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or  SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOOWNERZORDER);
-  end;
-  
-  DoubleBuffered := True;
-  pnlClient.DoubleBuffered := True;
-  SystemMessageForms.AddObject('', Self);
-
-  CanResizeWindow := False;
-  SkinName := AnsiReplaceText(MainForm.SkinName, 'MainForm', '');
-  ChangeUIColor(MainForm.UIMainColor);
+procedure TSystemMessageForm.FormCreate(Sender: TObject);
+begin
+  if not ShowTastBarButton then
+  begin
+    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOPMOST or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
+    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOOWNERZORDER);
+  end;
+
+  DoubleBuffered := True;
+  pnlClient.DoubleBuffered := True;
+  SystemMessageForms.AddObject('', Self);
+
+  CanResizeWindow := False;
+  SkinName := AnsiReplaceText(MainForm.SkinName, 'MainForm', '');
+  ChangeUIColor(MainForm.UIMainColor);
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.CreateParams(var Params: TCreateParams);
-begin
-  inherited;
-  with Params do
-  begin
-    Style := (Style - WS_THICKFRAME);
-    Params.WndParent := 0;
-  end;
+procedure TSystemMessageForm.CreateParams(var Params: TCreateParams);
+begin
+  inherited;
+  with Params do
+  begin
+    Style := (Style - WS_THICKFRAME);
+    Params.WndParent := 0;
+  end;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.FormDestroy(Sender: TObject);
-var
-  iIndex: Integer;
-begin
-  iIndex := SystemMessageForms.IndexOfObject(Self);
-  if iIndex >= 0 then SystemMessageForms.Delete(iIndex);
+procedure TSystemMessageForm.FormDestroy(Sender: TObject);
+var
+  iIndex: Integer;
+begin
+  iIndex := SystemMessageForms.IndexOfObject(Self);
+  if iIndex >= 0 then
+    SystemMessageForms.Delete(iIndex);
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.AutoCloseWindowTimerTimer(Sender: TObject);
-begin
-  AutoCloseWindowTimer.Enabled := False;
-  if FPosition = mpRightBottom then
-  begin
+procedure TSystemMessageForm.AutoCloseWindowTimerTimer(Sender: TObject);
+begin
+  AutoCloseWindowTimer.Enabled := False;
+  if FPosition = mpRightBottom then
+  begin
     pnlForWebBrowser.Visible := False;
 //    AnimateWindow(Handle, 300, AW_HIDE or AW_SLIDE or AW_VER_POSITIVE);
-  end;
-  Close;
+
+  end;
+  Close;
 end;
 
 //------------------------------------------------------------------------------
-procedure TSystemMessageForm.FormShow(Sender: TObject);
+procedure TSystemMessageForm.FormShow(Sender: TObject);
 begin
 //  if FPosition = mpRightBottom then
 //    AnimateWindow(Handle, 300, AW_ACTIVATE or AW_SLIDE or AW_VER_NEGATIVE)
 //  else
 //    AnimateWindow(Handle, 300, AW_ACTIVATE or AW_BLEND);
+
 end;
 
 //------------------------------------------------------------------------------
-initialization
-  ShowTastBarButton := False;
-  SystemMessageForms := TStringList.Create;
-
-finalization
-  FreeAndNil(SystemMessageForms);
+initialization
+  ShowTastBarButton := False;
+  SystemMessageForms := TStringList.Create;
+
+finalization
+  FreeAndNil(SystemMessageForms);
+
+end.
 
-end.

File diff suppressed because it is too large
+ 1 - 1
Controls/RealICQComponents.dproj


BIN
Controls/RealICQComponents.res


File diff suppressed because it is too large
+ 1 - 1
Includes/FlatStyle/FlatStyle.dproj


BIN
Includes/FlatStyle/FlatStyle.res


File diff suppressed because it is too large
+ 1 - 1
Log/Logger.dproj


BIN
Log/Logger.res


File diff suppressed because it is too large
+ 2 - 2
ZWT/XML/ClientConfig.xml


+ 1 - 1
ZWT/XML/DefaultConfig.xml

@@ -4,7 +4,7 @@
 	<UIMainColor Value="15392442"/>
 	<MainFormLeft Value="1881"/>
 	<MainFormTop Value="199"/>
-	<MainFormWidth Value="-300"/>
+	<MainFormWidth Value="258"/>
 	<MainFormHeight Value="734"/>
 	<TalkingFormLeft Value="695"/>
 	<TalkingFormTop Value="128"/>

+ 1 - 1
ZWT/XML/ServerConfig.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="gb2312"?>
 <ServerConfig>
-	<LoginServer Address="172.20.101.66" Port="443"/>
+	<LoginServer Address="172.28.93.5" Port="443"/>
 	<CaServer Address="120.26.136.253" Port="9602"/>
 </ServerConfig>