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.5 by h677, Sun Nov 13 10:47:21 2005 UTC revision 1.6 by h677, Sun Nov 13 11:20:23 2005 UTC
# Line 121  begin Line 121  begin
121    
122                          //----- とりあえずかちゅ〜しゃ互換用。コメントアウトしてもよし                          //----- とりあえずかちゅ〜しゃ互換用。コメントアウトしてもよし
123                          // やりかたが苦しいけど、オプションダイアログのプレビュー用 try                          // やりかたが苦しいけど、オプションダイアログのプレビュー用 try
124                          try                          if GikoSys.Setting.UseKatjushaType then begin
125                                  if ThreadItem.ParentBoard <> nil then                                  try
126                                          if ThreadItem.ParentBoard.ParentCategory <> nil then                                          if ThreadItem.ParentBoard <> nil then
127                                                  CustomStringReplace( Skin, '&BBSNAME', ThreadItem.ParentBoard.ParentCategory.ParenTBBS.Title);                                                  if ThreadItem.ParentBoard.ParentCategory <> nil then
128                                          CustomStringReplace( Skin, '&THREADURL', ThreadItem.URL);                                                          CustomStringReplace( Skin, '&BBSNAME', ThreadItem.ParentBoard.ParentCategory.ParenTBBS.Title);
129                          except end;                                                  CustomStringReplace( Skin, '&THREADURL', ThreadItem.URL);
130                          CustomStringReplace( Skin, '&BOARDNAME', ThreadItem.ParentBoard.Title);                                  except end;
131                          CustomStringReplace( Skin, '&BOARDURL', ThreadItem.ParentBoard.URL);                                  CustomStringReplace( Skin, '&BOARDNAME', ThreadItem.ParentBoard.Title);
132                          CustomStringReplace( Skin, '&THREADNAME', ThreadItem.Title);                                  CustomStringReplace( Skin, '&BOARDURL', ThreadItem.ParentBoard.URL);
133                          CustomStringReplace( Skin, '&SKINPATH', GikoSys.Setting.CSSFileName);                                  CustomStringReplace( Skin, '&THREADNAME', ThreadItem.Title);
134                          CustomStringReplace( Skin, '&GETRESCOUNT', IntToStr( ThreadItem.NewReceive - 1 ));                                  CustomStringReplace( Skin, '&SKINPATH', GikoSys.Setting.CSSFileName);
135                          CustomStringReplace( Skin, '&NEWRESCOUNT', IntToStr( ThreadItem.NewResCount ));                                  CustomStringReplace( Skin, '&GETRESCOUNT', IntToStr( ThreadItem.NewReceive - 1 ));
136                          CustomStringReplace( Skin, '&ALLRESCOUNT', IntToStr( ThreadItem.AllResCount ));                                  CustomStringReplace( Skin, '&NEWRESCOUNT', IntToStr( ThreadItem.NewResCount ));
137                                    CustomStringReplace( Skin, '&ALLRESCOUNT', IntToStr( ThreadItem.AllResCount ));
138                          CustomStringReplace( Skin, '&NEWDATE', FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate));  
139                          CustomStringReplace( Skin, '&SIZEKB', IntToStr( Floor( SizeByte / 1024 ) ));                                  CustomStringReplace( Skin, '&NEWDATE', FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate));
140                          CustomStringReplace( Skin, '&SIZE', IntToStr( SizeByte ));                                  CustomStringReplace( Skin, '&SIZEKB', IntToStr( Floor( SizeByte / 1024 ) ));
141                                    CustomStringReplace( Skin, '&SIZE', IntToStr( SizeByte ));
142                            end
143                          //----- ここまで                          //----- ここまで
144                  end;                  end;
145                  Result := Skin.Text;                  Result := Skin.Text;
# Line 175  begin Line 177  begin
177                  Skin := CustomStringReplace( Skin, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) );                  Skin := CustomStringReplace( Skin, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) );
178    
179                  //----- かちゅ〜しゃ互換用。コメントアウトしてもよし                  //----- かちゅ〜しゃ互換用。コメントアウトしてもよし
180                  Skin := CustomStringReplace( Skin, '&NUMBER',                  if GikoSys.Setting.UseKatjushaType then begin
181                          '<a href="menu:' + No + '" name="' + No + '">' + No + '</a>');                          Skin := CustomStringReplace( Skin, '&NUMBER',
182                  Skin := CustomStringReplace( Skin, '&PLAINNUMBER', No);                                  '<a href="menu:' + No + '" name="' + No + '">' + No + '</a>');
183                  Skin := CustomStringReplace( Skin, '&NAME', '<b>' + Res.FName + '</b>');                          Skin := CustomStringReplace( Skin, '&PLAINNUMBER', No);
184                  Skin := CustomStringReplace( Skin, '&MAILNAME',                          Skin := CustomStringReplace( Skin, '&NAME', '<b>' + Res.FName + '</b>');
185                          '<a href="mailto:' + Res.FMailTo + '"><b>' + Res.FName + '</b></a>');                          Skin := CustomStringReplace( Skin, '&MAILNAME',
186                  Skin := CustomStringReplace( Skin, '&MAIL', Res.FMailTo);                                  '<a href="mailto:' + Res.FMailTo + '"><b>' + Res.FName + '</b></a>');
187                  Skin := CustomStringReplace( Skin, '&DATE', Res.FDateTime);                          Skin := CustomStringReplace( Skin, '&MAIL', Res.FMailTo);
188                  Skin := CustomStringReplace( Skin, '&MESSAGE', Res.FBody);                          Skin := CustomStringReplace( Skin, '&DATE', Res.FDateTime);
189                  Skin := CustomStringReplace( Skin, '&SPAMMINESS', FloatToStr( spamminess ) );                          Skin := CustomStringReplace( Skin, '&MESSAGE', Res.FBody);
190                  Skin := CustomStringReplace( Skin, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) );                          Skin := CustomStringReplace( Skin, '&SPAMMINESS', FloatToStr( spamminess ) );
191                            Skin := CustomStringReplace( Skin, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) );
192                    end;
193                  //----- ここまで                  //----- ここまで
194    
195                  Result := Skin;                  Result := Skin;
# Line 553  var Line 557  var
557          boardPlugIn : TBoardPlugIn;          boardPlugIn : TBoardPlugIn;
558          UserOptionalStyle: string;          UserOptionalStyle: string;
559  begin  begin
560          if ThreadItem <> nil then begin          //===== プラグインによる表示
561                  if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin          boardPlugIn             := ThreadItem.ParentBoard.BoardPlugIn;
562                          //===== プラグインによる表示          NewReceiveNo    := ThreadItem.NewReceive;
563                          boardPlugIn             := ThreadItem.ParentBoard.BoardPlugIn;          // フォントやサイズの設定
564                          NewReceiveNo    := ThreadItem.NewReceive;          UserOptionalStyle := GikoSys.SetUserOptionalStyle;
565                          // フォントやサイズの設定          try
566                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;                  doc.open;
567                          try                  // ヘッダ
568                                  doc.open;                  doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ),
569                                  // ヘッダ                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ) + #13#10 );
570                                  doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ),                  doc.Write('<p id="idSearch"></p>' + #13#10 );
571                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ) + #13#10 );  
572                                  doc.Write('<p id="idSearch"></p>' + #13#10 );                  for i := 0 to threadItem.Count - 1 do begin
573                            // 1 は必ず表示
574                                  for i := 0 to threadItem.Count - 1 do begin                          if i <> 0 then begin
575                                          // 1 は必ず表示                                  // 表示範囲を限定
576                                          if i <> 0 then begin                                  case GikoSys.ResRange of
577                                                  // 表示範囲を限定                                  Ord( grrKoko ):
578                                                  case GikoSys.ResRange of                                          if ThreadItem.Kokomade > (i + 1) then
579                                                  Ord( grrKoko ):                                                  Continue;
580                                                          if ThreadItem.Kokomade > (i + 1) then                                  Ord( grrNew ):
581                                                                  Continue;                                          if NewReceiveNo > (i + 1) then
582                                                  Ord( grrNew ):                                                  Continue;
583                                                          if NewReceiveNo > (i + 1) then                                  10..65535:
584                                                                  Continue;                                          if (threadItem.Count - i) > GikoSys.ResRange then
585                                                  10..65535:                                                  Continue;
586                                                          if (threadItem.Count - i) > GikoSys.ResRange then                                  end;
587                                                                  Continue;                          end;
                                                 end;  
                                         end;  
588    
589                                          // 新着マーク                          // 新着マーク
590                                          if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin                          if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
591                                                  try                                  try
592                                                          if GikoSys.Setting.UseSkin then begin                                          if GikoSys.Setting.UseSkin then begin
593                                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then
594                                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )
595                                                                  else                                                  else
596                                                                          doc.Write( '<a name="new"></a>' + #13#10 );                                                          doc.Write( '<a name="new"></a>' + #13#10 );
597                                                          end else if GikoSys.Setting.UseCSS then begin                                          end else if GikoSys.Setting.UseCSS then begin
598                                                                  doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>' + #13#10);                                                  doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>' + #13#10);
599                                                          end else begin                                          end else begin
600                                                                  doc.Write('</dl>');                                                  doc.Write('</dl>');
601                                                                  doc.Write('<a name="new"></a>');                                                  doc.Write('<a name="new"></a>');
602                                                                  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>');                                                  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>');
603                                                                  doc.Write('<dl> + #13#10');                                                  doc.Write('<dl> + #13#10');
                                                         end;  
                                                 except  
                                                         doc.Write( '<a name="new"></a>' + #13#10);  
                                                 end;  
604                                          end;                                          end;
605                                    except
606                                            doc.Write( '<a name="new"></a>' + #13#10);
607                                    end;
608                            end;
609    
610                                          // レス                          // レス
611                                          doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ) + #13#10 );                          doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ) + #13#10 );
612    
613                                          if ThreadItem.Kokomade = (i + 1) then begin                          if ThreadItem.Kokomade = (i + 1) then begin
614                                                  // ここまで読んだ                                  // ここまで読んだ
615                                                  try                                  try
616                                                          if GikoSys.Setting.UseSkin then begin                                          if GikoSys.Setting.UseSkin then begin
617                                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then
618                                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )
619                                                                  else                                                  else
                                                                         doc.Write( '<a name="koko"></a>' + #13#10 );  
                                                         end else if GikoSys.Setting.UseCSS then begin  
                                                                 doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>' + #13#10 );  
                                                         end else begin  
                                                                 doc.Write('</dl>');  
                                                                 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>');  
                                                                 doc.Write('<dl>' + #13#10 );  
                                                         end;  
                                                 except  
620                                                          doc.Write( '<a name="koko"></a>' + #13#10 );                                                          doc.Write( '<a name="koko"></a>' + #13#10 );
621                                                  end;                                          end else if GikoSys.Setting.UseCSS then begin
622                                                    doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>' + #13#10 );
623                                            end else begin
624                                                    doc.Write('</dl>');
625                                                    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>');
626                                                    doc.Write('<dl>' + #13#10 );
627                                          end;                                          end;
628                                    except
629                                            doc.Write( '<a name="koko"></a>' + #13#10 );
630                                  end;                                  end;
   
   
                                 // スキン(フッタ)  
                                 doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ) + #13#10 );  
                         finally  
                                 doc.Close;  
631                          end;                          end;
   
632                  end;                  end;
633    
634    
635                    // スキン(フッタ)
636                    doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ) + #13#10 );
637            finally
638                    doc.Close;
639          end;          end;
640  end;  end;
641    
# Line 658  var Line 657  var
657                  Result := SkinedRes( skin, Res, No );                  Result := SkinedRes( skin, Res, No );
658          end;          end;
659  begin  begin
660          if ThreadItem <> nil then begin          NewReceiveNo := ThreadItem.NewReceive;
661                  // スキン使用          // フォントやサイズの設定
662                  if GikoSys.Setting.UseSkin then begin          UserOptionalStyle := GikoSys.SetUserOptionalStyle;
663                          NewReceiveNo := ThreadItem.NewReceive;          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
664                          // フォントやサイズの設定          doc.open;
665                          UserOptionalStyle := GikoSys.SetUserOptionalStyle;          try
666                          CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;                  doc.charset := 'Shift_JIS';
                         doc.open;  
                         try  
                                 doc.charset := 'Shift_JIS';  
667    
668                                  // スキンの設定                  // スキンの設定
669                                  try                  try
670                                          SkinHeader := LoadFromSkin( GikoSys.GetSkinHeaderFileName, ThreadItem, ThreadItem.Size);                          SkinHeader := LoadFromSkin( GikoSys.GetSkinHeaderFileName, ThreadItem, ThreadItem.Size);
671                                          if Length( UserOptionalStyle ) > 0 then                          if Length( UserOptionalStyle ) > 0 then
672                                                  SkinHeader := CustomStringReplace( SkinHeader, '</head>',                                  SkinHeader := CustomStringReplace( SkinHeader, '</head>',
673                                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');                                          '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');
674                                          doc.Write( SkinHeader + #13#10);                          doc.Write( SkinHeader + #13#10);
675                                  except                  except
676                                  end;                  end;
677    
678                                  try                  try
679                                          SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size);                          SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size);
680                                  except                  except
681                    end;
682    
683                    try
684                            SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size );
685                    except
686                    end;
687    
688                    doc.Write('<p id="idSearch"></p>' + #13#10);
689                    doc.Write('<a name="top"></a>' + #13#10);
690    
691                    for i := 0 to ReadList.Count - 1 do begin
692                            // 1 は必ず表示
693                            if i <> 0 then begin
694                                    // 表示範囲を限定
695                                    case GikoSys.ResRange of
696                                    Ord( grrKoko ):
697                                            if ThreadItem.Kokomade > (i + 1) then
698                                                    Continue;
699                                    Ord( grrNew ):
700                                            if NewReceiveNo > (i + 1) then
701                                                    Continue;
702                                    10..65535:
703                                            if (threadItem.Count - i) > GikoSys.ResRange then
704                                                    Continue;
705                                  end;                                  end;
706                            end;
707    
708                            // 新着マーク
709                            if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin
710                                  try                                  try
711                                          SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size );                                          if FileExists( GikoSys.GetSkinNewmarkFileName ) then
712                                                    doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size )  + #13#10)
713                                            else
714                                                    doc.Write( '<a name="new"></a>' + #13#10 );
715                                  except                                  except
716                                            doc.Write( '<a name="new"></a>' + #13#10 );
717                                  end;                                  end;
718                            end;
719    
720                                  doc.Write('<p id="idSearch"></p>' + #13#10);                          if (Trim(ReadList[i]) <> '') then begin
721                                  doc.Write('<a name="top"></a>' + #13#10);                                  No := IntToStr(i + 1);
722    
723                                  for i := 0 to ReadList.Count - 1 do begin                                  Res := DivideStrLine(ReadList[i]);
724                                          // 1 は必ず表示                                  Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');
725                                          if i <> 0 then begin                                  Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
                                                 // 表示範囲を限定  
                                                 case GikoSys.ResRange of  
                                                 Ord( grrKoko ):  
                                                         if ThreadItem.Kokomade > (i + 1) then  
                                                                 Continue;  
                                                 Ord( grrNew ):  
                                                         if NewReceiveNo > (i + 1) then  
                                                                 Continue;  
                                                 10..65535:  
                                                         if (threadItem.Count - i) > GikoSys.ResRange then  
                                                                 Continue;  
                                                 end;  
                                         end;  
726    
727                                          // 新着マーク                                  try
728                                          if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin                                          if NewReceiveNo <= (i + 1) then
729                                                  try                                                  // 新着レス
730                                                          if FileExists( GikoSys.GetSkinNewmarkFileName ) then                                                  strTmp := ReplaceRes( SkinNewRes )
731                                                                  doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size )  + #13#10)                                          else
732                                                          else                                                  // 通常のレス
733                                                                  doc.Write( '<a name="new"></a>' + #13#10 );                                                  strTmp := ReplaceRes( SkinRes );
                                                 except  
                                                         doc.Write( '<a name="new"></a>' + #13#10 );  
                                                 end;  
                                         end;  
   
                                         if (Trim(ReadList[i]) <> '') then begin  
                                                 No := IntToStr(i + 1);  
   
                                                 Res := DivideStrLine(ReadList[i]);  
                                                 Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');  
                                                 Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);  
   
                                                 try  
                                                         if NewReceiveNo <= (i + 1) then  
                                                                 // 新着レス  
                                                                 strTmp := ReplaceRes( SkinNewRes )  
                                                         else  
                                                                 // 通常のレス  
                                                                 strTmp := ReplaceRes( SkinRes );  
   
                                                         doc.Write( strTmp + #13#10 );  
                                                 except  
                                                 end;  
                                         end;  
734    
735                                          if ThreadItem.Kokomade = (i + 1) then begin                                          doc.Write( strTmp + #13#10 );
736                                                  // ここまで読んだ                                  except
                                                 try  
                                                         if FileExists( GikoSys.GetSkinBookmarkFileName ) then  
                                                                 doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )  
                                                         else  
                                                                 doc.Write( '<a name="koko"></a>' + #13#10 );  
                                                 except  
                                                         doc.Write( '<a name="koko"></a>' + #13#10 );  
                                                 end;  
                                         end;  
737                                  end;                                  end;
738                            end;
739    
740                                  doc.Write('<a name="bottom"></a>' + #13#10);                          if ThreadItem.Kokomade = (i + 1) then begin
741                                  // スキン(フッタ)                                  // ここまで読んだ
742                                  try                                  try
743                                          doc.Write( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) + #13#10 );                                          if FileExists( GikoSys.GetSkinBookmarkFileName ) then
744                                                    doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )
745                                            else
746                                                    doc.Write( '<a name="koko"></a>' + #13#10 );
747                                  except                                  except
748                                            doc.Write( '<a name="koko"></a>' + #13#10 );
749                                  end;                                  end;
                         finally  
                                 doc.close;  
750                          end;                          end;
751                  end;                  end;
         end;  
 end;  
752    
753  procedure THTMLCreate.CreateUseCSSHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );                  doc.Write('<a name="bottom"></a>' + #13#10);
754  var                  // スキン(フッタ)
         i: integer;  
         No: string;  
         CSSFileName: string;  
         NewReceiveNo: Integer;  
         Res: TResRec;  
         UserOptionalStyle: string;  
 begin  
         if ThreadItem <> nil then begin  
                 doc.open;  
755                  try                  try
756                          doc.charset := 'Shift_JIS';                          doc.Write( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) + #13#10 );
757                          NewReceiveNo := ThreadItem.NewReceive;                  except
                         // フォントやサイズの設定  
                         UserOptionalStyle := GikoSys.SetUserOptionalStyle;  
                         CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;  
                         if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin  
                                 //CSS使用  
                                 doc.Write('<html><head>' + #13#10);  
                                 doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' + #13#10);  
                                 doc.Write('<title>' + sTitle + '</title>' + #13#10);  
                                 doc.Write('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">' + #13#10);  
                                 if Length( UserOptionalStyle ) > 0 then  
                                         doc.Write('<style type="text/css">body {' + UserOptionalStyle + '}</style>' + #13#10);  
                                 doc.Write('</head>' + #13#10);  
                                 doc.Write('<body>' + #13#10);  
                                 doc.Write('<a name="top"></a>' + #13#10);  
                                 doc.Write('<p id="idSearch"></p>' + #13#10);  
                                 doc.Write('<div class="title">' + sTitle + '</div>' + #13#10);  
                                 for i := 0 to ReadList.Count - 1 do begin  
                                         // 1 は必ず表示  
                                         if i <> 0 then begin  
                                                 // 表示範囲を限定  
                                                 case GikoSys.ResRange of  
                                                 Ord( grrKoko ):  
                                                         if ThreadItem.Kokomade > (i + 1) then  
                                                                 Continue;  
                                                 Ord( grrNew ):  
                                                         if NewReceiveNo > (i + 1) then  
                                                                 Continue;  
                                                 10..65535:  
                                                         if (threadItem.Count - i) > GikoSys.ResRange then  
                                                                 Continue;  
                                                 end;  
                                         end;  
   
                                         if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin  
                                                 doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>' + #13#10);  
                                         end;  
   
                                         if (Trim(ReadList[i]) <> '') then begin  
                                                 No := IntToStr(i + 1);  
                                                 Res := DivideStrLine(ReadList[i]);  
                                                 Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');  
                                                 Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);  
                                                 if Res.FMailTo = '' then  
                                                         doc.Write('<a name="' + No + '"></a>'  
                                                                                 + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span> '  
                                                                                 + '<span class="name_label">名前:</span> '  
                                                                                 + '<span class="name"><b>' + Res.FName + '</b></span> '  
                                                                                 + '<span class="date_label">投稿日:</span> '  
                                                                                 + '<span class="date">' + Res.FDateTime+ '</span></div>'  
                                                                                 + '<div class="mes">' + Res.FBody + ' </div>' + #13#10)  
                                                 else if GikoSys.Setting.ShowMail then  
                                                         doc.Write('<a name="' + No + '"></a>'  
                                                                                 + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'  
                                                                                 + '<span class="name_label"> 名前: </span>'  
                                                                                 + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'  
                                                                                 + '<b>' + Res.FName + '</b></a><span class="mail"> [' + Res.FMailTo + ']</span>'  
                                                                                 + '<span class="date_label"> 投稿日:</span>'  
                                                                                 + '<span class="date"> ' + Res.FDateTime+ '</span></div>'  
                                                                                 + '<div class="mes">' + Res.FBody + ' </div>' + #13#10)  
                                                 else  
                                                         doc.Write('<a name="' + No + '"></a>'  
                                                                                 + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'  
                                                                                 + '<span class="name_label"> 名前: </span>'  
                                                                                 + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'  
                                                                                 + '<b>' + Res.FName + '</b></a>'  
                                                                                 + '<span class="date_label"> 投稿日:</span>'  
                                                                                 + '<span class="date"> ' + Res.FDateTime+ '</span></div>'  
                                                                                 + '<div class="mes">' + Res.FBody + ' </div>' + #13#10);  
                                         end;  
   
                                         if ThreadItem.Kokomade = (i + 1) then begin  
                                                 doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>' + #13#10);  
                                         end;  
   
                                 end;  
   
                                 doc.Write('<a name="bottom"></a>' + #13#10);  
                                 doc.Write('<a name="last"></a>' + #13#10);  
                                 doc.Write('</body></html>' + #13#10);  
                         end;  
                 finally  
                         doc.Close;  
758                  end;                  end;
759            finally
760                    doc.close;
761          end;          end;
762  end;  end;
763    
764  procedure THTMLCreate.CreateDefaultHTML (doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );  procedure THTMLCreate.CreateUseCSSHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
765  var  var
766          i: integer;          i: integer;
767          No: string;          No: string;
768            CSSFileName: string;
769          NewReceiveNo: Integer;          NewReceiveNo: Integer;
770          Res: TResRec;          Res: TResRec;
771            UserOptionalStyle: string;
772  begin  begin
773          if ThreadItem <> nil then begin          doc.open;
774                  doc.open;          try
775                  try                  doc.charset := 'Shift_JIS';
776                          doc.charset := 'Shift_JIS';                  NewReceiveNo := ThreadItem.NewReceive;
777                          NewReceiveNo := ThreadItem.NewReceive;                  // フォントやサイズの設定
778                    UserOptionalStyle := GikoSys.SetUserOptionalStyle;
779                    CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
780                    if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin
781                            //CSS使用
782                          doc.Write('<html><head>' + #13#10);                          doc.Write('<html><head>' + #13#10);
783                          doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' + #13#10);                          doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' + #13#10);
784                          doc.Write('<title>' + sTitle + '</title></head>' + #13#10);                          doc.Write('<title>' + sTitle + '</title>' + #13#10);
785                          doc.Write('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' + #13#10);                          doc.Write('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">' + #13#10);
786                            if Length( UserOptionalStyle ) > 0 then
787                                    doc.Write('<style type="text/css">body {' + UserOptionalStyle + '}</style>' + #13#10);
788                            doc.Write('</head>' + #13#10);
789                            doc.Write('<body>' + #13#10);
790                          doc.Write('<a name="top"></a>' + #13#10);                          doc.Write('<a name="top"></a>' + #13#10);
                         doc.Write('<font size=+1 color="#FF0000">' + sTitle + '</font>' + #13#10);  
                         doc.Write('<dl>' + #13#10);  
791                          doc.Write('<p id="idSearch"></p>' + #13#10);                          doc.Write('<p id="idSearch"></p>' + #13#10);
792                            doc.Write('<div class="title">' + sTitle + '</div>' + #13#10);
793                          for i := 0 to ReadList.Count - 1 do begin                          for i := 0 to ReadList.Count - 1 do begin
794                                  // 1 は必ず表示                                  // 1 は必ず表示
795                                  if i <> 0 then begin                                  if i <> 0 then begin
# Line 905  begin Line 808  begin
808                                  end;                                  end;
809    
810                                  if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin                                  if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
811                                          doc.Write('</dl>' + #13#10);                                          doc.Write('<a name="new"></a><div class="new">新着レス <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>' + #13#10);
                                         doc.Write('<a name="new"></a>' + #13#10);  
                                         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>' + #13#10);  
                                         doc.Write('<dl>' + #13#10);  
812                                  end;                                  end;
813    
814                                  if (Trim(ReadList[i]) <> '') then begin                                  if (Trim(ReadList[i]) <> '') then begin
# Line 917  begin Line 817  begin
817                                          Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');                                          Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');
818                                          Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);                                          Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
819                                          if Res.FMailTo = '' then                                          if Res.FMailTo = '' then
820                                                  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)                                                  doc.Write('<a name="' + No + '"></a>'
821                                                                            + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span> '
822                                                                            + '<span class="name_label">名前:</span> '
823                                                                            + '<span class="name"><b>' + Res.FName + '</b></span> '
824                                                                            + '<span class="date_label">投稿日:</span> '
825                                                                            + '<span class="date">' + Res.FDateTime+ '</span></div>'
826                                                                            + '<div class="mes">' + Res.FBody + ' </div>' + #13#10)
827                                          else if GikoSys.Setting.ShowMail then                                          else if GikoSys.Setting.ShowMail then
828                                                  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)                                                  doc.Write('<a name="' + No + '"></a>'
829                                                                            + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'
830                                                                            + '<span class="name_label"> 名前: </span>'
831                                                                            + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'
832                                                                            + '<b>' + Res.FName + '</b></a><span class="mail"> [' + Res.FMailTo + ']</span>'
833                                                                            + '<span class="date_label"> 投稿日:</span>'
834                                                                            + '<span class="date"> ' + Res.FDateTime+ '</span></div>'
835                                                                            + '<div class="mes">' + Res.FBody + ' </div>' + #13#10)
836                                          else                                          else
837                                                  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);                                                  doc.Write('<a name="' + No + '"></a>'
838                                                                            + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span>'
839                                                                            + '<span class="name_label"> 名前: </span>'
840                                                                            + '<a class="name_mail" href="mailto:' + Res.FMailTo + '">'
841                                                                            + '<b>' + Res.FName + '</b></a>'
842                                                                            + '<span class="date_label"> 投稿日:</span>'
843                                                                            + '<span class="date"> ' + Res.FDateTime+ '</span></div>'
844                                                                            + '<div class="mes">' + Res.FBody + ' </div>' + #13#10);
845                                  end;                                  end;
846    
847                                  if ThreadItem.Kokomade = (i + 1) then begin                                  if ThreadItem.Kokomade = (i + 1) then begin
848                                          doc.Write('</dl>' + #13#10);                                          doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>' + #13#10);
                                         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>' + #13#10);  
                                         doc.Write('<dl>' + #13#10);  
849                                  end;                                  end;
850    
851                          end;                          end;
852                          doc.Write('</dl>' + #13#10);  
853                          doc.Write('<a name="bottom"></a>' + #13#10);                          doc.Write('<a name="bottom"></a>' + #13#10);
854                            doc.Write('<a name="last"></a>' + #13#10);
855                          doc.Write('</body></html>' + #13#10);                          doc.Write('</body></html>' + #13#10);
                 finally  
                         doc.Close;  
856                  end;                  end;
857            finally
858                    doc.Close;
859            end;
860    end;
861    
862    procedure THTMLCreate.CreateDefaultHTML (doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
863    var
864            i: integer;
865            No: string;
866            NewReceiveNo: Integer;
867            Res: TResRec;
868    begin
869            doc.open;
870            try
871                    doc.charset := 'Shift_JIS';
872                    NewReceiveNo := ThreadItem.NewReceive;
873                    doc.Write('<html><head>' + #13#10);
874                    doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' + #13#10);
875                    doc.Write('<title>' + sTitle + '</title></head>' + #13#10);
876                    doc.Write('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' + #13#10);
877                    doc.Write('<a name="top"></a>' + #13#10);
878                    doc.Write('<font size=+1 color="#FF0000">' + sTitle + '</font>' + #13#10);
879                    doc.Write('<dl>' + #13#10);
880                    doc.Write('<p id="idSearch"></p>' + #13#10);
881                    for i := 0 to ReadList.Count - 1 do begin
882                            // 1 は必ず表示
883                            if i <> 0 then begin
884                                    // 表示範囲を限定
885                                    case GikoSys.ResRange of
886                                    Ord( grrKoko ):
887                                            if ThreadItem.Kokomade > (i + 1) then
888                                                    Continue;
889                                    Ord( grrNew ):
890                                            if NewReceiveNo > (i + 1) then
891                                                    Continue;
892                                    10..65535:
893                                            if (threadItem.Count - i) > GikoSys.ResRange then
894                                                    Continue;
895                                    end;
896                            end;
897    
898                            if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
899                                    doc.Write('</dl>' + #13#10);
900                                    doc.Write('<a name="new"></a>' + #13#10);
901                                    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>' + #13#10);
902                                    doc.Write('<dl>' + #13#10);
903                            end;
904    
905                            if (Trim(ReadList[i]) <> '') then begin
906                                    No := IntToStr(i + 1);
907                                    Res := DivideStrLine(ReadList[i]);
908                                    Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');
909                                    Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
910                                    if Res.FMailTo = '' then
911                                            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)
912                                    else if GikoSys.Setting.ShowMail then
913                                            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)
914                                    else
915                                            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);
916                            end;
917                            if ThreadItem.Kokomade = (i + 1) then begin
918                                    doc.Write('</dl>' + #13#10);
919                                    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>' + #13#10);
920                                    doc.Write('<dl>' + #13#10);
921                            end;
922                    end;
923                    doc.Write('</dl>' + #13#10);
924                    doc.Write('<a name="bottom"></a>' + #13#10);
925                    doc.Write('</body></html>' + #13#10);
926            finally
927                    doc.Close;
928          end;          end;
929  end;  end;
930    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

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