Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/HTMLCreate.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.20 by h677, Mon Jan 9 16:16:32 2006 UTC revision 1.21 by h677, Sat Feb 18 15:30:31 2006 UTC
# Line 15  uses Line 15  uses
15          {HttpApp,} YofUtils, {URLMon,} BoardGroup, {gzip,} {Dolib,}          {HttpApp,} YofUtils, {URLMon,} BoardGroup, {gzip,} {Dolib,}
16          {bmRegExp,} AbonUnit,   MojuUtils, Setting,          {bmRegExp,} AbonUnit,   MojuUtils, Setting,
17          ExternalBoardManager, ExternalBoardPlugInMain{,}          ExternalBoardManager, ExternalBoardPlugInMain{,}
18          {Sort,} ,GikoBayesian, HintWindow;          {Sort,} ,GikoBayesian, HintWindow, ActiveX;
19    
20  type  type
21    
# Line 38  type Line 38  type
38                  constructor Create;                  constructor Create;
39    
40                  function AddBeProfileLink(AID : string; ANum: Integer):string ;                  function AddBeProfileLink(AID : string; ANum: Integer):string ;
41                  procedure CreateUsePluginHTML(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);                  procedure CreateUsePluginHTML(html:TStringList; ThreadItem: TThreadItem; var sTitle: string);
42                  procedure CreateUseSKINHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList);                  procedure CreateUseSKINHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList);
43                  procedure CreateUseCSSHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );                  procedure CreateUseCSSHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
44                  procedure CreateDefaultHTML (doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );                  procedure CreateDefaultHTML (html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
45                  procedure ConvertResAnchor(PRes: PResRec);                  procedure ConvertResAnchor(PRes: PResRec);
46                  procedure separateNumber(var st: String; var et: String; const Text, Separator: String);                  procedure separateNumber(var st: String; var et: String; const Text, Separator: String);
47                  function checkComma(const s : String; var j : Integer; var No  : String) : boolean;                  function checkComma(const s : String; var j : Integer; var No  : String) : boolean;
# Line 54  type Line 54  type
54                  function SkinedRes(const skin: string; PRes: PResRec; const No: string): string;                  function SkinedRes(const skin: string; PRes: PResRec; const No: string): string;
55                  procedure ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false); overload;                  procedure ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false); overload;
56                  function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string; DatToHTML: boolean = false): string; overload;                  function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string; DatToHTML: boolean = false): string; overload;
57                  procedure CreateHTML2(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);                  procedure CreateHTML2(doc: IDispatch; ThreadItem: TThreadItem; var sTitle: string);
58                  procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string);                  procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string);
59                  //レスポップアップの作成                  //レスポップアップの作成
60                  procedure SetResPopupText(Hint :TResPopup; threadItem: TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);                  procedure SetResPopupText(Hint :TResPopup; threadItem: TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
# Line 778  begin Line 778  begin
778  end;  end;
779    
780  //Pluginを利用するBoardのスレッドのHTMLを作成してdocに書き込む  //Pluginを利用するBoardのスレッドのHTMLを作成してdocに書き込む
781  procedure THTMLCreate.CreateUsePluginHTML(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);  procedure THTMLCreate.CreateUsePluginHTML(html:TStringList; ThreadItem: TThreadItem; var sTitle: string);
782  var  var
783          i: integer;          i: integer;
784          NewReceiveNo: Integer;          NewReceiveNo: Integer;
# Line 791  begin Line 791  begin
791          // フォントやサイズの設定          // フォントやサイズの設定
792          UserOptionalStyle := GikoSys.SetUserOptionalStyle;          UserOptionalStyle := GikoSys.SetUserOptionalStyle;
793          try          try
794                  doc.open;  //              doc.open;
795                  // ヘッダ                  // ヘッダ
796                  doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ),                  html.add(boardPlugIn.GetHeader( DWORD( threadItem ),
797                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ));                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ));
798                  doc.Write('<p id="idSearch"></p>');                  html.Add('<p id="idSearch"></p>');
799    
800                  for i := 0 to threadItem.Count - 1 do begin                  for i := 0 to threadItem.Count - 1 do begin
801                          // 1 は必ず表示                          // 1 は必ず表示
# Line 819  begin Line 819  begin
819                                  try                                  try
820                                          if GikoSys.Setting.UseSkin then begin                                          if GikoSys.Setting.UseSkin then begin
821                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then
822                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))                                                          html.Add( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
823                                                  else                                                  else
824                                                          doc.Write( '<a name="new"></a>');                                                          html.Add( '<a name="new"></a>');
825                                          end else if GikoSys.Setting.UseCSS then begin                                          end else if GikoSys.Setting.UseCSS then begin
826                                                  doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');                                                  html.Add('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
827                                          end else begin                                          end else begin
828                                                  doc.Write('</dl>');                                                  html.Add('</dl>');
829                                                  doc.Write('<a name="new"></a>');                                                  html.Add('<a name="new"></a>');
830                                                  doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');                                                  html.Add('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
831                                                  doc.Write('<dl>');                                                  html.Add('<dl>');
832                                          end;                                          end;
833                                  except                                  except
834                                          doc.Write( '<a name="new"></a>');                                          html.Add( '<a name="new"></a>');
835                                  end;                                  end;
836                          end;                          end;
837    
838                          // レス                          // レス
839                          doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ));                          html.Add( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ));
840    
841                          if ThreadItem.Kokomade = (i + 1) then begin                          if ThreadItem.Kokomade = (i + 1) then begin
842                                  // ここまで読んだ                                  // ここまで読んだ
843                                  try                                  try
844                                          if GikoSys.Setting.UseSkin then begin                                          if GikoSys.Setting.UseSkin then begin
845                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then
846                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                          html.Add( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ))
847                                                  else                                                  else
848                                                          doc.Write( '<a name="koko"></a>');                                                          html.Add( '<a name="koko"></a>');
849                                          end else if GikoSys.Setting.UseCSS then begin                                          end else if GikoSys.Setting.UseCSS then begin
850                                                  doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>');                                                  html.Add('<a name="koko"></a><div class="koko">ココまで読んだ</div>');
851                                          end else begin                                          end else begin
852                                                  doc.Write('</dl>');                                                  html.Add('</dl>');
853                                                  doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');                                                  html.Add('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');
854                                                  doc.Write('<dl>');                                                  html.Add('<dl>');
855                                          end;                                          end;
856                                  except                                  except
857                                          doc.Write( '<a name="koko"></a>');                                          html.Add('<a name="koko"></a>');
858                                  end;                                  end;
859                          end;                          end;
860                  end;                  end;
861    
862    
863                  // スキン(フッタ)                  // スキン(フッタ)
864                  doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ));                  html.Add( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ));
865          finally          finally
866                  doc.Close;                  //doc.Close;
867          end;          end;
868  end;  end;
869    
870    
871  procedure THTMLCreate.CreateUseSKINHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList);  procedure THTMLCreate.CreateUseSKINHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList);
872  const  const
873          KOKO_TAG = '<a name="koko"></a>';          KOKO_TAG = '<a name="koko"></a>';
874          NEW_TAG = '<a name="new"></a>';          NEW_TAG = '<a name="new"></a>';
# Line 890  begin Line 890  begin
890          ResLink.FBbs := ThreadItem.ParentBoard.BBSID;          ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
891          ResLink.FKey := ThreadName;          ResLink.FKey := ThreadName;
892          //,          //,
893          doc.open;          //doc.open;
894          try          try
895                  doc.charset := 'Shift_JIS';                  //doc.charset := 'Shift_JIS';
896    
897                  // スキンの設定                  // スキンの設定
898                  try                  try
# Line 900  begin Line 900  begin
900                          if Length( UserOptionalStyle ) > 0 then                          if Length( UserOptionalStyle ) > 0 then
901                                  SkinHeader := CustomStringReplace( SkinHeader, '</head>',                                  SkinHeader := CustomStringReplace( SkinHeader, '</head>',
902                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');
903                          doc.Write( SkinHeader );                          html.Add( SkinHeader );
904                  except                  except
905                  end;                  end;
906    
907                  SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size);                  SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size);
908                  SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size );                  SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size );
909    
910                  doc.Write('<p id="idSearch"></p>'#13#10'<a name="top"></a>');                  html.Add('<p id="idSearch"></p>'#13#10'<a name="top"></a>');
911    
912                  for i := 0 to ReadList.Count - 1 do begin                  for i := 0 to ReadList.Count - 1 do begin
913                          // 1 は必ず表示                          // 1 は必ず表示
# Line 929  begin Line 929  begin
929                          // 新着マーク                          // 新着マーク
930                          if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin                          if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin
931                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then
932                                          doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))                                          html.Add( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
933                                  else                                  else
934                                          doc.Write( NEW_TAG );                                          html.Add( NEW_TAG );
935                          end;                          end;
936    
937                          if (Trim(ReadList[i]) <> '') then begin                          if (Trim(ReadList[i]) <> '') then begin
# Line 942  begin Line 942  begin
942    
943                                  if NewReceiveNo <= (i + 1) then                                  if NewReceiveNo <= (i + 1) then
944                                          // 新着レス                                          // 新着レス
945                                          doc.Write(SkinedRes(SkinNewRes, @Res, IntToStr(i + 1)))                                          html.Add(SkinedRes(SkinNewRes, @Res, IntToStr(i + 1)))
946                                  else                                  else
947                                          // 通常のレス                                          // 通常のレス
948                                          doc.Write(SkinedRes(SkinRes, @Res, IntToStr(i + 1)));                                          html.Add(SkinedRes(SkinRes, @Res, IntToStr(i + 1)));
949                          end;                          end;
950    
951                          if ThreadItem.Kokomade = (i + 1) then begin                          if ThreadItem.Kokomade = (i + 1) then begin
952                                  // ここまで読んだ                                  // ここまで読んだ
953                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then
954                                          doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                          html.Add( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ))
955                                  else                                  else
956                                          doc.Write( KOKO_TAG );                                          html.Add( KOKO_TAG );
957                          end;                          end;
958                  end;                  end;
959    
960                  doc.Write('<a name="bottom"></a>');                  html.Add('<a name="bottom"></a>');
961                  // スキン(フッタ)                  // スキン(フッタ)
962                  doc.Write( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) );                  html.Add( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) );
963          finally          finally
964                  doc.close;                  //doc.close;
965          end;          end;
966  end;  end;
967    
968  procedure THTMLCreate.CreateUseCSSHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );  procedure THTMLCreate.CreateUseCSSHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
969  const  const
970          FORMAT_NOMAIL  = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'          FORMAT_NOMAIL  = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'
971                                          + '<span class="name_label">名前:</span> <span class="name"><b>%s</b></span>'                                          + '<span class="name_label">名前:</span> <span class="name"><b>%s</b></span>'
972                                          + '<span class="date_label">投稿日:</span> <span class="date">%s</span></div>'                                          + '<span class="date_label">投稿日:</span> <span class="date">%s</span></div>'
973                                          + '<div class="mes">%s</div>'#13#10;                                          + '<div class="mes">%s</div>';
974    
975          FORMAT_SHOWMAIL = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'          FORMAT_SHOWMAIL = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'
976                                          + '<span class="name_label"> 名前: </span><a class="name_mail" href="mailto:%s">'                                          + '<span class="name_label"> 名前: </span><a class="name_mail" href="mailto:%s">'
977                                          + '<b>%s</b></a><span class="mail"> [%s]</span><span class="date_label"> 投稿日:</span>'                                          + '<b>%s</b></a><span class="mail"> [%s]</span><span class="date_label"> 投稿日:</span>'
978                                          + '<span class="date"> %s</span></div><div class="mes">%s</div>'#13#10;                                          + '<span class="date"> %s</span></div><div class="mes">%s</div>';
979    
980          FORMAT_NOSHOW = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'          FORMAT_NOSHOW = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'
981                                          + '<span class="name_label"> 名前: </span><a class="name_mail" href="mailto:%s">'                                          + '<span class="name_label"> 名前: </span><a class="name_mail" href="mailto:%s">'
982                                          + '<b>%s</b></a><span class="date_label"> 投稿日:</span><span class="date"> %s</span></div>'                                          + '<b>%s</b></a><span class="date_label"> 投稿日:</span><span class="date"> %s</span></div>'
983                                          + '<div class="mes">%s</div>'#13#10;                                          + '<div class="mes">%s</div>';
   
984  var  var
985          i: integer;          i: integer;
986          No: string;          No: string;
# Line 992  var Line 991  var
991          ThreadName :String;          ThreadName :String;
992          ResLink :TResLinkRec;          ResLink :TResLinkRec;
993  begin  begin
994          doc.open;          //doc.open;
995          try          try
996                  doc.charset := 'Shift_JIS';                  //doc.charset := 'Shift_JIS';
997                  NewReceiveNo := ThreadItem.NewReceive;                  NewReceiveNo := ThreadItem.NewReceive;
998                  ThreadName := ChangeFileExt(ThreadItem.FileName, '');                  ThreadName := ChangeFileExt(ThreadItem.FileName, '');
999                  ResLink.FBbs := ThreadItem.ParentBoard.BBSID;                  ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
# Line 1004  begin Line 1003  begin
1003                  CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;                  CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
1004                  if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin                  if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin
1005                          //CSS使用                          //CSS使用
1006                          doc.Write('<html><head>');                          html.Add('<html><head>');
1007                          doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');                          html.Add('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');
1008                          doc.Write('<title>' + sTitle + '</title>');                          html.Add('<title>' + sTitle + '</title>');
1009                          doc.Write('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">');                          html.Add('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">');
1010                          if Length( UserOptionalStyle ) > 0 then                          if Length( UserOptionalStyle ) > 0 then
1011                                  doc.Write('<style type="text/css">body {' + UserOptionalStyle + '}</style>');                                  html.Add('<style type="text/css">body {' + UserOptionalStyle + '}</style>');
1012                          doc.Write('</head>'#13#10'<body>');                          html.Add('</head>'#13#10'<body>');
1013                          doc.Write('<a name="top"></a>'#13#10'<p id="idSearch"></p>');                          html.Add('<a name="top"></a>'#13#10'<p id="idSearch"></p>');
1014                          doc.Write('<div class="title">' + sTitle + '</div>');                          html.Add('<div class="title">' + sTitle + '</div>');
1015                          for i := 0 to ReadList.Count - 1 do begin                          for i := 0 to ReadList.Count - 1 do begin
1016                                  // 1 は必ず表示                                  // 1 は必ず表示
1017                                  if i <> 0 then begin                                  if i <> 0 then begin
# Line 1031  begin Line 1030  begin
1030                                  end;                                  end;
1031    
1032                                  if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin                                  if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
1033                                          doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');                                          html.Add('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
1034                                  end;                                  end;
1035    
1036                                  if (Trim(ReadList[i]) <> '') then begin                                  if (Trim(ReadList[i]) <> '') then begin
# Line 1041  begin Line 1040  begin
1040                                          ConvRes(@Res, @ResLink);                                          ConvRes(@Res, @ResLink);
1041                                          Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);                                          Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
1042                                          if Res.FMailTo = '' then                                          if Res.FMailTo = '' then
1043                                                  doc.Write(Format(FORMAT_NOMAIL, [No, No, No, Res.FName, Res.FDateTime, Res.FBody]))                                                  html.Add(Format(FORMAT_NOMAIL, [No, No, No, Res.FName, Res.FDateTime, Res.FBody]))
1044                                          else if GikoSys.Setting.ShowMail then                                          else if GikoSys.Setting.ShowMail then
1045                                                  doc.Write(Format(FORMAT_SHOWMAIL, [No, No, No, Res.FMailTo, Res.FName, Res.FMailTo, Res.FDateTime, Res.FBody]))                                                  html.Add(Format(FORMAT_SHOWMAIL, [No, No, No, Res.FMailTo, Res.FName, Res.FMailTo, Res.FDateTime, Res.FBody]))
1046                                          else                                          else
1047                                                  doc.Write(Format(FORMAT_NOSHOW, [No, No, No, Res.FMailTo, Res.FName, Res.FDateTime, Res.FBody]));                                                  html.Add(Format(FORMAT_NOSHOW, [No, No, No, Res.FMailTo, Res.FName, Res.FDateTime, Res.FBody]));
1048                                  end;                                  end;
1049    
1050                                  if ThreadItem.Kokomade = (i + 1) then begin                                  if ThreadItem.Kokomade = (i + 1) then begin
1051                                          doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>');                                          html.Add('<a name="koko"></a><div class="koko">ココまで読んだ</div>');
1052                                  end;                                  end;
1053    
1054                          end;                          end;
1055    
1056                          doc.Write('<a name="bottom"></a>');                          html.Add('<a name="bottom"></a>');
1057                          doc.Write('<a name="last"></a>');                          html.Add('<a name="last"></a>');
1058                          doc.Write('</body></html>');                          html.Add('</body></html>');
1059                  end;                  end;
1060          finally          finally
1061                  doc.Close;                  //doc.Close;
1062          end;          end;
1063  end;  end;
1064    
1065  procedure THTMLCreate.CreateDefaultHTML (doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );  procedure THTMLCreate.CreateDefaultHTML (html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
1066  var  var
1067          i: integer;          i: integer;
1068          No: string;          No: string;
# Line 1072  var Line 1071  var
1071          ThreadName: String;          ThreadName: String;
1072          ResLink : TResLinkRec;          ResLink : TResLinkRec;
1073  begin  begin
1074          doc.open;  //      doc.open;
1075          try          try
1076                  doc.charset := 'Shift_JIS';  //              doc.charset := 'Shift_JIS';
1077                  NewReceiveNo := ThreadItem.NewReceive;                  NewReceiveNo := ThreadItem.NewReceive;
1078                  ThreadName := ChangeFileExt(ThreadItem.FileName, '');                  ThreadName := ChangeFileExt(ThreadItem.FileName, '');
1079                  ResLink.FBbs := ThreadItem.ParentBoard.BBSID;                  ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
1080                  ResLink.FKey := ThreadName;                  ResLink.FKey := ThreadName;
1081                  doc.Write('<html><head>'#13#10);                  html.Add('<html><head>');
1082                  doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">'#13#10);                  html.Add('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');
1083                  doc.Write('<title>' + sTitle + '</title></head>'#13#10);                  html.Add('<title>' + sTitle + '</title></head>');
1084                  doc.Write('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">'#13#10);                  html.Add('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">');
1085                  doc.Write('<a name="top"></a>'#13#10);                  html.Add('<a name="top"></a>');
1086                  doc.Write('<font size=+1 color="#FF0000">' + sTitle + '</font>'#13#10);                  html.Add('<font size=+1 color="#FF0000">' + sTitle + '</font>');
1087                  doc.Write('<dl>'#13#10);                  html.Add('<dl>');
1088                  doc.Write('<p id="idSearch"></p>'#13#10);                  html.Add('<p id="idSearch"></p>');
1089                  for i := 0 to ReadList.Count - 1 do begin                  for i := 0 to ReadList.Count - 1 do begin
1090                          // 1 は必ず表示                          // 1 は必ず表示
1091                          if i <> 0 then begin                          if i <> 0 then begin
# Line 1105  begin Line 1104  begin
1104                          end;                          end;
1105    
1106                          if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin                          if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
1107                                  doc.Write('</dl>');                                  html.Add('</dl>');
1108                                  doc.Write('<a name="new"></a>');                                  html.Add('<a name="new"></a>');
1109                                  doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');                                  html.Add('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>新着レス ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
1110                                  doc.Write('<dl>');                                  html.Add('<dl>');
1111                          end;                          end;
1112    
1113                          if (Trim(ReadList[i]) <> '') then begin                          if (Trim(ReadList[i]) <> '') then begin
# Line 1118  begin Line 1117  begin
1117                                  ConvRes(@Res, @ResLink);                                  ConvRes(@Res, @ResLink);
1118                                  Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);                                  Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
1119                                  if Res.FMailTo = '' then                                  if Res.FMailTo = '' then
1120                                          doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<font color="forestgreen"><b> ' + Res.FName + ' </b></font> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)                                          html.Add('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<font color="forestgreen"><b> ' + Res.FName + ' </b></font> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)
1121                                  else if GikoSys.Setting.ShowMail then                                  else if GikoSys.Setting.ShowMail then
1122                                          doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> [' + Res.FMailTo + '] 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)                                          html.Add('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> [' + Res.FMailTo + '] 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)
1123                                  else                                  else
1124                                          doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10);                                          html.Add('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> 名前:<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> 投稿日: <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10);
1125                          end;                          end;
1126                          if ThreadItem.Kokomade = (i + 1) then begin                          if ThreadItem.Kokomade = (i + 1) then begin
1127                                  doc.Write('</dl>');                                  html.Add('</dl>');
1128                                  doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');                                  html.Add('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>ココまで読んだ</b></font></td></tr></table>');
1129                                  doc.Write('<dl>');                                  html.Add('<dl>');
1130                          end;                          end;
1131                  end;                  end;
1132                  doc.Write('</dl>'#13#10'<a name="bottom"></a>'#13#10'</body></html>');                  html.Add('</dl>'#13#10'<a name="bottom"></a>'#13#10'</body></html>');
1133          finally          finally
1134                  doc.Close;                  //doc.Close;
1135          end;          end;
1136  end;  end;
1137    
1138  procedure THTMLCreate.CreateHTML2(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);  procedure THTMLCreate.CreateHTML2(doc: IDispatch; ThreadItem: TThreadItem; var sTitle: string);
1139  var  var
1140          ReadList: TStringList;          ReadList: TStringList;
1141          CSSFileName: string;          CSSFileName: string;
1142          FileName: string;          FileName: string;
1143          Res: TResRec;          Res: TResRec;
1144            body : TStringList;
1145            mStream : TMemoryStream;
1146  {$IFDEF DEBUG}  {$IFDEF DEBUG}
1147          st, rt: Cardinal;          st, rt: Cardinal;
1148  {$ENDIF}  {$ENDIF}
# Line 1151  begin Line 1152  begin
1152          st := GetTickCount;          st := GetTickCount;
1153  {$ENDIF}  {$ENDIF}
1154          if ThreadItem <> nil then begin          if ThreadItem <> nil then begin
1155                  if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin                  body := TStringList.Create;
1156                          CreateUsePluginHTML(doc, ThreadItem, sTitle);                  try
1157                  end else begin                          body.BeginUpdate;
1158                          ShortDayNames[1] := '日';               ShortDayNames[2] := '月';                          if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin
1159                          ShortDayNames[3] := '火';               ShortDayNames[4] := '水';                                  CreateUsePluginHTML(body, ThreadItem, sTitle);
1160                          ShortDayNames[5] := '木';               ShortDayNames[6] := '金';                          end else begin
1161                          ShortDayNames[7] := '土';                                  ShortDayNames[1] := '日';               ShortDayNames[2] := '月';
1162                                    ShortDayNames[3] := '火';               ShortDayNames[4] := '水';
1163                                    ShortDayNames[5] := '木';               ShortDayNames[6] := '金';
1164                                    ShortDayNames[7] := '土';
1165    
1166                          ReadList := TStringList.Create;                                  ReadList := TStringList.Create;
1167                          try                                  try
1168                                  if ThreadItem.IsLogFile then begin                                          if ThreadItem.IsLogFile then begin
1169                                          ReadList.BeginUpdate;                                                  ReadList.BeginUpdate;
1170                                          FileName := ThreadItem.GetThreadFileName;                                                  FileName := ThreadItem.GetThreadFileName;
1171                                          ReadList.LoadFromFile(FileName);                                                  ReadList.LoadFromFile(FileName);
1172                                          ReadList.EndUpdate;                                                  ReadList.EndUpdate;
1173                                          GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG'));                                                  GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG'));
1174                                          GikoSys.FAbon.Execute(ReadList);                //       あぼ〜んして                                                  GikoSys.FAbon.Execute(ReadList);                //       あぼ〜んして
1175                                          GikoSys.FSelectResFilter.Execute(ReadList); //レスのフィルタリングをする                                                  GikoSys.FSelectResFilter.Execute(ReadList); //レスのフィルタリングをする
1176                                          if ThreadItem.Title = '' then begin                                                  if ThreadItem.Title = '' then begin
1177                                                  DivideStrLine(ReadList[0], @Res);                                                          DivideStrLine(ReadList[0], @Res);
1178                                                  sTitle := Res.FTitle;                                                          sTitle := Res.FTitle;
1179                                          end else                                                  end else
1180                                                  sTitle := ThreadItem.Title                                                          sTitle := ThreadItem.Title
1181                                  end else begin                                          end else begin
1182                                          sTitle := CustomStringReplace(ThreadItem.Title, '@`', ',');                                                  sTitle := CustomStringReplace(ThreadItem.Title, '@`', ',');
1183                                  end;                                          end;
1184                                  // フォントやサイズの設定                                          // フォントやサイズの設定
1185                                  CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;                                          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
1186                                  if GikoSys.Setting.UseSkin then begin                                          if GikoSys.Setting.UseSkin then begin
1187                                          CreateUseSKINHTML(doc, ThreadItem, ReadList);                                                  CreateUseSKINHTML(body, ThreadItem, ReadList);
1188                                  end else if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin                                          end else if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin
1189                                          CreateUseCSSHTML(doc, ThreadItem, ReadList, sTitle);                                                  CreateUseCSSHTML(body, ThreadItem, ReadList, sTitle);
1190                                  end else begin                                          end else begin
1191                                          CreateDefaultHTML(doc, ThreadItem, ReadList, sTitle);                                                  CreateDefaultHTML(body, ThreadItem, ReadList, sTitle);
1192                                            end;
1193                        body.EndUpdate;
1194                                            //WebBrowserに書き込み
1195                                            mStream := TMemoryStream.Create;
1196                                            try
1197                                                    body.SaveToStream(mStream);
1198                                                    mStream.Seek(soFromBeginning, 0);
1199                                                    (doc as IPersistStreamInit).Load(TStreamAdapter.Create(mStream));
1200                                            finally
1201                                                    mStream.Free;
1202                                            end;
1203                                    finally
1204                                            ReadList.Free;
1205                                  end;                                  end;
   
                         finally  
                                 ReadList.Free;  
1206                          end;                          end;
1207                    finally
1208                            body.Free;
1209                  end;                  end;
1210          end;          end;
1211  {$IFDEF DEBUG}  {$IFDEF DEBUG}

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26