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.10 by h677, Sun Dec 4 08:51:08 2005 UTC revision 1.11 by h677, Mon Dec 5 16:07:01 2005 UTC
# Line 41  type Line 41  type
41                  { Public 宣言 }                  { Public 宣言 }
42                  function AddAnchorTag(s: string): string;                  function AddAnchorTag(s: string): string;
43                  function LoadFromSkin(fileName: string; ThreadItem: TThreadItem; SizeByte: Integer): string;                  function LoadFromSkin(fileName: string; ThreadItem: TThreadItem; SizeByte: Integer): string;
44                  function SkinedRes(skin: string; Res: TResRec; No: string): string;                  function SkinedRes(const skin: string; Res: TResRec; const No: string): string;
45                  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;
46  //              function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue, FullURL : string): string; overload;  //              function ConvRes(const Body, Bbs, Key,  ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue, FullURL : string): string; overload;
47                  procedure CreateHTML2(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);                  procedure CreateHTML2(doc: Variant; ThreadItem: TThreadItem; var sTitle: string);
# Line 156  end; Line 156  end;
156    
157  // レスの値を置換する  // レスの値を置換する
158  function THTMLCreate.SkinedRes(  function THTMLCreate.SkinedRes(
159          skin: string;          const skin: string;
160          Res: TResRec;          Res: TResRec;
161          No: string          const No: string
162  ): string;  ): string;
163    const
164            FORMT_NAME = '<b>%s</b>';
165            FORMT_NUM  = '<a href="menu:%s" name="%s">%s</a>';
166            FORMT_MAILNAME  = '<a href="mailto:%s"><b>%s</b></a>';
167  var  var
168          spamminess      : Extended;          spamminess      : Extended;
169    {$IFDEF SPAM_FILTER_ENABLED}
170          wordCount               : TWordCount;          wordCount               : TWordCount;
171    {$ENDIF}
172  begin  begin
173    {$IFDEF SPAM_FILTER_ENABLED}
174          wordCount := TWordCount.Create;          wordCount := TWordCount.Create;
175          try          try
176                  spamminess := Floor( GikoSys.SpamParse(                  spamminess := Floor( GikoSys.SpamParse(
177                          Res.FName + '<>' + Res.FMailTo + '<>' + Res.FBody, wordCount ) * 100 );                          Res.FName + '<>' + Res.FMailTo + '<>' + Res.FBody, wordCount ) * 100 );
178    {$ELSE}
179                  Skin := CustomStringReplace( Skin, '<NUMBER/>',          spamminess := 0;
180                          Format('<a href="menu:%s" name="%s">%s</a>', [No, No, No]));  {$ENDIF}
181                  Skin := CustomStringReplace( Skin, '<PLAINNUMBER/>', No);                  Result := CustomStringReplace( Skin, '<SPAMMINESS/>', FloatToStr( spamminess ) );
182                  Skin := CustomStringReplace( Skin, '<NAME/>', '<b>' + Res.FName + '</b>');                  Result := CustomStringReplace( Result, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) );
183                  Skin := CustomStringReplace( Skin, '<MAILNAME/>',                  Result := CustomStringReplace( Result, '<MAIL/>', Res.FMailTo);
184                          Format('<a href="mailto:%s"><b>%s</b></a>',[Res.FMailTo, Res.FName]));                  Result := CustomStringReplace( Result, '<DATE/>', Res.FDateTime);
185                  Skin := CustomStringReplace( Skin, '<MAIL/>', Res.FMailTo);                  Result := CustomStringReplace( Result, '<PLAINNUMBER/>', No);
186                  Skin := CustomStringReplace( Skin, '<DATE/>', Res.FDateTime);                  Result := CustomStringReplace( Result, '<NAME/>',
187                  Skin := CustomStringReplace( Skin, '<MESSAGE/>', Res.FBody);                          Format(FORMT_NAME, [Res.FName]));
188                  Skin := CustomStringReplace( Skin, '<SPAMMINESS/>', FloatToStr( spamminess ) );                  Result := CustomStringReplace( Result, '<NUMBER/>',
189                  Skin := CustomStringReplace( Skin, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) );                          Format(FORMT_NUM, [No, No, No]));
190                    Result := CustomStringReplace( Result, '<MAILNAME/>',
191                            Format(FORMT_MAILNAME,[Res.FMailTo, Res.FName]));
192                    Result := CustomStringReplace( Result, '<MESSAGE/>', Res.FBody);
193                  //----- かちゅ〜しゃ互換用。コメントアウトしてもよし                  //----- かちゅ〜しゃ互換用。コメントアウトしてもよし
194                  if GikoSys.Setting.UseKatjushaType then begin                  if GikoSys.Setting.UseKatjushaType then begin
195                          Skin := CustomStringReplace( Skin, '&NUMBER',                          Result := CustomStringReplace( Result, '&NUMBER',
196                                  '<a href="menu:' + No + '" name="' + No + '">' + No + '</a>');                                  '<a href="menu:' + No + '" name="' + No + '">' + No + '</a>');
197                          Skin := CustomStringReplace( Skin, '&PLAINNUMBER', No);                          Result := CustomStringReplace( Result, '&PLAINNUMBER', No);
198                          Skin := CustomStringReplace( Skin, '&NAME', '<b>' + Res.FName + '</b>');                          Result := CustomStringReplace( Result, '&NAME', '<b>' + Res.FName + '</b>');
199                          Skin := CustomStringReplace( Skin, '&MAILNAME',                          Result := CustomStringReplace( Result, '&MAILNAME',
200                                  '<a href="mailto:' + Res.FMailTo + '"><b>' + Res.FName + '</b></a>');                                  '<a href="mailto:' + Res.FMailTo + '"><b>' + Res.FName + '</b></a>');
201                          Skin := CustomStringReplace( Skin, '&MAIL', Res.FMailTo);                          Result := CustomStringReplace( Result, '&MAIL', Res.FMailTo);
202                          Skin := CustomStringReplace( Skin, '&DATE', Res.FDateTime);                          Result := CustomStringReplace( Result, '&DATE', Res.FDateTime);
203                          Skin := CustomStringReplace( Skin, '&MESSAGE', Res.FBody);                          Result := CustomStringReplace( Result, '&MESSAGE', Res.FBody);
204                          Skin := CustomStringReplace( Skin, '&SPAMMINESS', FloatToStr( spamminess ) );                          Result := CustomStringReplace( Result, '&SPAMMINESS', FloatToStr( spamminess ) );
205                          Skin := CustomStringReplace( Skin, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) );                          Result := CustomStringReplace( Result, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) );
206                  end;                  end;
207                  //----- ここまで                  //----- ここまで
208    {$IFDEF SPAM_FILTER_ENABLED}
                 Result := Skin;  
209          finally          finally
210                  wordCount.Free;                  wordCount.Free;
211          end;          end;
212    {$ENDIF}
213    
214  end;  end;
215  (*************************************************************************  (*************************************************************************
# Line 566  begin Line 574  begin
574                  doc.open;                  doc.open;
575                  // ヘッダ                  // ヘッダ
576                  doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ),                  doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ),
577                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ) + #13#10 );                          '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ));
578                  doc.Write('<p id="idSearch"></p>'#13#10 );                  doc.Write('<p id="idSearch"></p>');
579    
580                  for i := 0 to threadItem.Count - 1 do begin                  for i := 0 to threadItem.Count - 1 do begin
581                          // 1 は必ず表示                          // 1 は必ず表示
# Line 591  begin Line 599  begin
599                                  try                                  try
600                                          if GikoSys.Setting.UseSkin then begin                                          if GikoSys.Setting.UseSkin then begin
601                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then                                                  if FileExists( GikoSys.GetSkinNewmarkFileName ) then
602                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
603                                                  else                                                  else
604                                                          doc.Write( '<a name="new"></a>'#13#10 );                                                          doc.Write( '<a name="new"></a>');
605                                          end else if GikoSys.Setting.UseCSS then begin                                          end else if GikoSys.Setting.UseCSS then begin
606                                                  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>');
607                                          end else begin                                          end else begin
608                                                  doc.Write('</dl>');                                                  doc.Write('</dl>');
609                                                  doc.Write('<a name="new"></a>');                                                  doc.Write('<a name="new"></a>');
610                                                  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>');
611                                                  doc.Write('<dl>'#13#10);                                                  doc.Write('<dl>');
612                                          end;                                          end;
613                                  except                                  except
614                                          doc.Write( '<a name="new"></a>'#13#10);                                          doc.Write( '<a name="new"></a>');
615                                  end;                                  end;
616                          end;                          end;
617    
618                          // レス                          // レス
619                          doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ) + #13#10 );                          doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ));
620    
621                          if ThreadItem.Kokomade = (i + 1) then begin                          if ThreadItem.Kokomade = (i + 1) then begin
622                                  // ここまで読んだ                                  // ここまで読んだ
# Line 617  begin Line 625  begin
625                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then                                                  if FileExists( GikoSys.GetSkinBookmarkFileName ) then
626                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )                                                          doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 )
627                                                  else                                                  else
628                                                          doc.Write( '<a name="koko"></a>'#13#10 );                                                          doc.Write( '<a name="koko"></a>');
629                                          end else if GikoSys.Setting.UseCSS then begin                                          end else if GikoSys.Setting.UseCSS then begin
630                                                  doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>'#13#10 );                                                  doc.Write('<a name="koko"></a><div class="koko">ココまで読んだ</div>');
631                                          end else begin                                          end else begin
632                                                  doc.Write('</dl>');                                                  doc.Write('</dl>');
633                                                  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('<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>');
634                                                  doc.Write('<dl>'#13#10 );                                                  doc.Write('<dl>');
635                                          end;                                          end;
636                                  except                                  except
637                                          doc.Write( '<a name="koko"></a>'#13#10 );                                          doc.Write( '<a name="koko"></a>');
638                                  end;                                  end;
639                          end;                          end;
640                  end;                  end;
641    
642    
643                  // スキン(フッタ)                  // スキン(フッタ)
644                  doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ) + #13#10 );                  doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ));
645          finally          finally
646                  doc.Close;                  doc.Close;
647          end;          end;
# Line 644  procedure THTMLCreate.CreateUseSKINHTML( Line 652  procedure THTMLCreate.CreateUseSKINHTML(
652  var  var
653          i: integer;          i: integer;
654          No: string;          No: string;
         CSSFileName: string;  
655          NewReceiveNo: Integer;          NewReceiveNo: Integer;
656          Res: TResRec;          Res: TResRec;
657          UserOptionalStyle: string;          UserOptionalStyle: string;
# Line 653  var Line 660  var
660          SkinRes: string;          SkinRes: string;
661          strTmp : string;          strTmp : string;
662          ThreadName : string;          ThreadName : string;
         function ReplaceRes( skin: string ): string;  
         begin  
                 Result := SkinedRes( skin, Res, No );  
         end;  
663  begin  begin
664          NewReceiveNo := ThreadItem.NewReceive;          NewReceiveNo := ThreadItem.NewReceive;
665          // フォントやサイズの設定          // フォントやサイズの設定
666          UserOptionalStyle := GikoSys.SetUserOptionalStyle;          UserOptionalStyle := GikoSys.SetUserOptionalStyle;
         CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;  
667          ThreadName := ChangeFileExt(ThreadItem.FileName, '');          ThreadName := ChangeFileExt(ThreadItem.FileName, '');
668    
669          doc.open;          doc.open;
# Line 729  begin Line 731  begin
731                                  try                                  try
732                                          if NewReceiveNo <= (i + 1) then                                          if NewReceiveNo <= (i + 1) then
733                                                  // 新着レス                                                  // 新着レス
734                                                  strTmp := ReplaceRes( SkinNewRes )                                                  strTmp := SkinedRes(SkinNewRes, Res, No) //ReplaceRes( SkinNewRes )
735                                          else                                          else
736                                                  // 通常のレス                                                  // 通常のレス
737                                                  strTmp := ReplaceRes( SkinRes );                                                  strTmp := SkinedRes(SkinRes, Res, No); //ReplaceRes( SkinRes );
738    
739                                          doc.Write( strTmp );                                          doc.Write( strTmp );
740                                  except                                  except
# Line 950  begin Line 952  begin
952                          ReadList := TStringList.Create;                          ReadList := TStringList.Create;
953                          try                          try
954                                  if ThreadItem.IsLogFile then begin                                  if ThreadItem.IsLogFile then begin
955                                            ReadList.BeginUpdate;
956                                          FileName := ThreadItem.GetThreadFileName;                                          FileName := ThreadItem.GetThreadFileName;
957                                          ReadList.LoadFromFile(FileName);                                          ReadList.LoadFromFile(FileName);
958                                            ReadList.EndUpdate;
959                                          GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG'));                                          GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG'));
960                                          GikoSys.FAbon.Execute(ReadList);                //       あぼ〜んして                                          GikoSys.FAbon.Execute(ReadList);                //       あぼ〜んして
961                                          GikoSys.FSelectResFilter.Execute(ReadList); //レスのフィルタリングをする                                          GikoSys.FSelectResFilter.Execute(ReadList); //レスのフィルタリングをする
# Line 972  begin Line 976  begin
976                                  end else begin                                  end else begin
977                                          CreateDefaultHTML(doc, ThreadItem, ReadList, sTitle);                                          CreateDefaultHTML(doc, ThreadItem, ReadList, sTitle);
978                                  end;                                  end;
979    
980                          finally                          finally
981                                  ReadList.Free;                                  ReadList.Free;
982                          end;                          end;

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

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