| 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; |
| 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; |
| 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 |
|
|
| 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 |
| 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 |
| 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 |
|
|