From 58bfc63f3a26ba4d7db49b7e985f8250b4c25957 Mon Sep 17 00:00:00 2001 From: yoffy Date: Wed, 5 Nov 2003 19:52:40 +0000 Subject: [PATCH] =?utf8?q?=E3=83=BBTBoardPlugIn=20=E3=81=AB=20GetRes,=20Ge?= =?utf8?q?tHeader,=20GetFooter=20=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ExternalBoardManager.pas | 260 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 191 insertions(+), 69 deletions(-) diff --git a/ExternalBoardManager.pas b/ExternalBoardManager.pas index a6bbcb7..c0067ea 100644 --- a/ExternalBoardManager.pas +++ b/ExternalBoardManager.pas @@ -31,7 +31,7 @@ type tipDownloadHost, // : string // ¡‚̃zƒXƒg‚ƈႤê‡‚̃zƒXƒg tipAgeSage, // : TThreadAgeSage // ƒAƒCƒeƒ€‚̏グ‰º‚° tipURL, // : string // ƒXƒŒƒbƒh‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚éÛ‚Ì URL - tipFilePath // : string // ‚±‚̃XƒŒ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒpƒX + tipFilePath // : string // ‚±‚̃XƒŒ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒpƒX ); // ************************************************************************* @@ -45,33 +45,57 @@ type var outRevision : DWORD // ƒŠƒrƒWƒ‡ƒ“ƒiƒ“ƒo[ ); stdcall; - // ************************************************************************* - // Žw’肵‚½ URL ‚ð‚±‚Ìƒvƒ‰ƒOƒCƒ“‚Ŏ󂯕t‚¯‚é‚©‚Ç‚¤‚© - // ************************************************************************* - TOnAcceptURL = function( - inURL : PChar // ”»’f‚ð‹Â‚¢‚Å‚¢‚é URL - ): Boolean; stdcall; // Žó‚¯•t‚¯‚é‚È‚ç True - - // ************************************************************************* - // TThreadItem ‚ª¶¬‚³‚ꂽ - // ************************************************************************* - TThreadItemCreate = procedure( - inInstance : DWORD - ); stdcall; - - // ************************************************************************* - // TThreadItem ‚ª”jŠü‚³‚ꂽ - // ************************************************************************* - TThreadItemDispose = procedure( - inInstance : DWORD - ); stdcall; + // ************************************************************************* + // Žw’肵‚½ URL ‚ð‚±‚Ìƒvƒ‰ƒOƒCƒ“‚Ŏ󂯕t‚¯‚é‚©‚Ç‚¤‚© + // ************************************************************************* + TOnAcceptURL = function( + inURL : PChar // ”»’f‚ð‹Â‚¢‚Å‚¢‚é URL + ): Boolean; stdcall; // Žó‚¯•t‚¯‚é‚È‚ç True + + // ************************************************************************* + // TThreadItem ‚ª¶¬‚³‚ꂽ + // ************************************************************************* + TThreadItemCreate = procedure( + inInstance : DWORD + ); stdcall; + + // ************************************************************************* + // TThreadItem ‚ª”jŠü‚³‚ꂽ + // ************************************************************************* + TThreadItemDispose = procedure( + inInstance : DWORD + ); stdcall; // ************************************************************************* // ƒ_ƒEƒ“ƒ[ƒh‚ðŽwŽ¦‚³‚ꂽ // ************************************************************************* - TThreadItemOnDownload = procedure( - inInstance : DWORD // ƒCƒ“ƒXƒ^ƒ“ƒX - ); stdcall; // ƒ_ƒEƒ“ƒ[ƒh‚³‚ꂽƒXƒŒƒbƒh + TThreadItemOnDownload = procedure( + inInstance : DWORD // ƒCƒ“ƒXƒ^ƒ“ƒX + ); stdcall; // ƒ_ƒEƒ“ƒ[ƒh‚³‚ꂽƒXƒŒƒbƒh + + // ************************************************************************* + // ƒŒƒX”ԍ† n ‚ɑ΂·‚é html ‚ð—v‹‚³‚ꂽ + // ************************************************************************* + TThreadItemOnGetRes = function( + inInstance : DWORD; // ƒCƒ“ƒXƒ^ƒ“ƒX + inNo : DWORD // •\Ž¦‚·‚郌ƒX”ԍ† + ) : PChar; stdcall; // •\Ž¦‚·‚é HTML + + // ************************************************************************* + // ƒXƒŒƒbƒh‚̃wƒbƒ_ html ‚ð—v‹‚³‚ꂽ + // ************************************************************************* + TThreadItemOnGetHeader = function( + inInstance : DWORD; // ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX + inOptionalHeader : PChar // ’ljÁ‚̃wƒbƒ_ + ) : PChar; stdcall; // ®Œ`‚³‚ꂽ HTML + + // ************************************************************************* + // ƒXƒŒƒbƒh‚̃tƒbƒ^ html ‚ð—v‹‚³‚ꂽ + // ************************************************************************* + TThreadItemOnGetFooter = function( + inInstance : DWORD; // ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX + inOptionalFooter : PChar // ’ljÁ‚̃tƒbƒ^ + ) : PChar; stdcall; // ®Œ`‚³‚ꂽ HTML @@ -84,10 +108,13 @@ type FModule : HMODULE; // ƒvƒ‰ƒOƒCƒ“‚̃‚ƒWƒ…[ƒ‹ƒnƒ“ƒhƒ‹ FVersionInfo : TOnVersionInfo; - FAcceptURL : TOnAcceptURL; - FCreateThreadItem : TThreadItemCreate; - FDisposeThreadItem : TThreadItemDispose; - FDownload : TThreadItemOnDownload; + FAcceptURL : TOnAcceptURL; + FCreateThreadItem : TThreadItemCreate; + FDisposeThreadItem : TThreadItemDispose; + FDownload : TThreadItemOnDownload; + FGetRes : TThreadItemOnGetRes; + FGetHeader : TThreadItemOnGetHeader; + FGetFooter : TThreadItemOnGetFooter; public // ƒvƒ‰ƒOƒCƒ“‚̃pƒX‚ðŽw’肵‚č쐬 @@ -108,13 +135,19 @@ type var outMajor : DWORD; var outMinor : DWORD; var outRelease : string; var outRevision : DWORD ); // Žw’肵‚½ URL ‚ð‚±‚Ìƒvƒ‰ƒOƒCƒ“‚Ŏ󂯕t‚¯‚é‚©‚Ç‚¤‚© - function AcceptURL( inURL : string ) : Boolean; - // TThreadItem ‚ª¶¬‚³‚ꂽ - procedure CreateThreadItem( threadItem : DWORD ); - // TThreadItem ‚ª”jŠü‚³‚ꂽ - procedure DisposeThreadItem( threadItem : DWORD ); - // ƒ_ƒEƒ“ƒ[ƒh‚ðŽwŽ¦ - procedure Download( threadItem: DWORD ); + function AcceptURL( inURL : string ) : Boolean; + // TThreadItem ‚ª¶¬‚³‚ꂽ + procedure CreateThreadItem( threadItem : DWORD ); + // TThreadItem ‚ª”jŠü‚³‚ꂽ + procedure DisposeThreadItem( threadItem : DWORD ); + // ƒ_ƒEƒ“ƒ[ƒh‚ðŽwŽ¦ + procedure Download( threadItem: DWORD ); + // ƒŒƒX”ԍ† n ‚ɑ΂·‚é html ‚ð—v‹‚³‚ꂽ + function GetRes( threadItem : DWORD; inNo : DWORD ) : string; + // ƒXƒŒƒbƒh‚̃wƒbƒ_ html ‚ð—v‹‚³‚ꂽ + function GetHeader( threadItem : DWORD; inOptionalHeader : string ) : string; + // ƒXƒŒƒbƒh‚̃tƒbƒ^ html ‚ð—v‹‚³‚ꂽ + function GetFooter( threadItem : DWORD; inOptionalFooter : string ) : string; private procedure LoadPlugInAPI; @@ -162,20 +195,20 @@ uses GikoSystem, BoardGroup; procedure InitializeBoardPlugIns; var i, bound : Integer; - pluginNames : TStringList; + pluginNames : TStringList; begin pluginNames := TStringList.Create; - try - GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False, False ); - SetLength( BoardPlugIns, pluginNames.Count ); - - bound := pluginNames.Count - 1; - for i := 0 to bound do - BoardPlugIns[ i ] := TBoardPlugIn.CreateFromName( pluginNames.Strings[ i ] ); - finally - pluginNames.Free; - end; + try + GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False, False ); + SetLength( BoardPlugIns, pluginNames.Count ); + + bound := pluginNames.Count - 1; + for i := 0 to bound do + BoardPlugIns[ i ] := TBoardPlugIn.CreateFromName( pluginNames.Strings[ i ] ); + finally + pluginNames.Free; + end; end; @@ -236,9 +269,9 @@ procedure TBoardPlugIn.LoadFromPath( begin FFilePath := inPath; - if FileExists( inPath ) then + if FileExists( inPath ) then FModule := LoadLibrary( PChar( inPath ) ) - else if FileExists( inPath + '.dll' ) then + else if FileExists( inPath + '.dll' ) then FModule := LoadLibrary( PChar( inPath + '.dll' ) ); LoadPlugInAPI; @@ -309,9 +342,9 @@ function TBoardPlugIn.AcceptURL( begin if Assigned( FAcceptURL ) then - Result := FAcceptURL( PChar( inURL ) ) - else - Result := False; + Result := FAcceptURL( PChar( inURL ) ) + else + Result := False; end; @@ -324,7 +357,7 @@ procedure TBoardPlugIn.CreateThreadItem( begin if Assigned( FCreateThreadItem ) then - FCreateThreadItem( threadItem ); + FCreateThreadItem( threadItem ); end; @@ -337,7 +370,7 @@ procedure TBoardPlugIn.DisposeThreadItem( begin if Assigned( FDisposeThreadItem ) then - FDisposeThreadItem( threadItem ); + FDisposeThreadItem( threadItem ); end; @@ -346,8 +379,67 @@ end; // ************************************************************************* procedure TBoardPlugIn.Download( threadItem: DWORD ); begin + if Assigned( FDownload ) then - FDownload( threadItem ); + FDownload( threadItem ); + +end; + +// ************************************************************************* +// ƒŒƒX”ԍ† n ‚ɑ΂·‚é html ‚ð—v‹‚³‚ꂽ +// ************************************************************************* +function TBoardPlugIn.GetRes( + threadItem : DWORD; // ƒCƒ“ƒXƒ^ƒ“ƒX + inNo : DWORD // •\Ž¦‚·‚郌ƒX”ԍ† +) : string; // •\Ž¦‚·‚é HTML +var + tmp : PChar; +begin + + if Assigned( FGetRes ) then begin + tmp := FGetRes( threadItem, inNo ); + Result := string( tmp ); + DisposeResultString( tmp ); + end; + +end; + +// ************************************************************************* +// ƒXƒŒƒbƒh‚̃wƒbƒ_ html ‚ð—v‹‚³‚ꂽ +// ************************************************************************* +function TBoardPlugIn.GetHeader( + threadItem : DWORD; // ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX + inOptionalHeader : string // ’ljÁ‚̃wƒbƒ_ +) : string; // ®Œ`‚³‚ꂽ HTML +var + tmp : PChar; +begin + + if Assigned( FGetHeader ) then begin + tmp := FGetHeader( threadItem, PChar( inOptionalHeader ) ); + Result := string( tmp ); + DisposeResultString( tmp ); + end; + +end; + +// ************************************************************************* +// ƒXƒŒƒbƒh‚̃tƒbƒ^ html ‚ð—v‹‚³‚ꂽ +// ************************************************************************* +function TBoardPlugIn.GetFooter( + threadItem : DWORD; // ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX + inOptionalFooter : string // ’ljÁ‚̃tƒbƒ^ +) : string; // ®Œ`‚³‚ꂽ HTML +var + tmp : PChar; +begin + + if Assigned( FGetFooter ) then begin + tmp := FGetFooter( threadItem, PChar( inOptionalFooter ) ); + Result := string( tmp ); + DisposeResultString( tmp ); + end; + end; // ************************************************************************* @@ -363,6 +455,9 @@ begin FCreateThreadItem := GetProcAddress( FModule, 'ThreadItemCreate' ); FDisposeThreadItem := GetProcAddress( FModule, 'ThreadItemDispose' ); FDownload := GetProcAddress( FModule, 'ThreadItemOnDownload' ); + FGetRes := GetProcAddress( FModule, 'ThreadItemOnGetRes' ); + FGetHeader := GetProcAddress( FModule, 'ThreadItemOnGetHeader' ); + FGetFooter := GetProcAddress( FModule, 'ThreadItemOnGetFooter' ); end; except end; @@ -451,7 +546,7 @@ begin if Assigned( OnWorkEnd ) then httpSocket.OnWorkEnd := OnWorkEnd; - // ’ʐM‚ÉŠÖ‚·‚éÝ’è + // ’ʐM‚ÉŠÖ‚·‚éÝ’è httpSocket.Request.CustomHeaders.Clear; httpSocket.Response.Clear; httpSocket.Request.Clear; @@ -755,8 +850,8 @@ begin Result := DWORD( threadItem.AgeSage ); tipURL: // : string // ƒXƒŒƒbƒh‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚éÛ‚Ì URL Result := DWORD( CreateResultString( threadItem.URL ) ); - tipFilePath: // ‚±‚̃XƒŒ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒpƒX - Result := DWORD( CreateResultString( threadItem.FilePath ) ); + tipFilePath: // ‚±‚̃XƒŒ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒpƒX + Result := DWORD( CreateResultString( threadItem.FilePath ) ); else Result := 0; end; @@ -814,8 +909,8 @@ begin threadItem.AgeSage := TGikoAgeSage( param ); tipURL: // : string // ƒXƒŒƒbƒh‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚éÛ‚Ì URL threadItem.URL := string( PChar( param ) ); - tipFilePath: // : string // ‚±‚̃XƒŒ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒpƒX - threadItem.FilePath := string( PChar( param ) ); + tipFilePath: // : string // ‚±‚̃XƒŒ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒpƒX + threadItem.FilePath := string( PChar( param ) ); end; end; @@ -891,13 +986,13 @@ begin if inIsNew then Result := CreateResultString( GikoSys.SkinedRes( GikoSys.LoadFromSkin( - GikoSys.Setting.GetSkinNewResFileName, threadItem, 0 + GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.SizeByte ), res, no ) ) else Result := CreateResultString( GikoSys.SkinedRes( GikoSys.LoadFromSkin( - GikoSys.Setting.GetSkinResFileName, threadItem, 0 + GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.SizeByte ), res, no ) ); end else begin @@ -952,10 +1047,26 @@ begin threadItem := TThreadItem( inInstance ); optionalHeader := string( inOptionalHeader ); - skinHeader := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, 0 ); - if Length( optionalHeader ) > 0 then - skinHeader := StringReplace( skinHeader, '', - string( optionalHeader ) + '', [rfReplaceAll] ); + + try + if GikoSys.Setting.UseSkin then begin + skinHeader := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, threadItem.SizeByte ); + if Length( optionalHeader ) > 0 then + skinHeader := StringReplace( skinHeader, '', + string( optionalHeader ) + '', [rfReplaceAll] ); + end else begin + skinHeader := + '' + + //'' + + '' + threadItem.Title + '' + + '' + + optionalHeader + + '' + + '' + + '
' + threadItem.Title + '
'; + end; + except + end; Result := CreateResultString( skinHeader ); @@ -976,10 +1087,21 @@ begin threadItem := TThreadItem( inInstance ); optionalFooter := string( inOptionalFooter ); - skinFooter := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, 0 ); - if Length( optionalFooter ) > 0 then - skinFooter := StringReplace( skinFooter, '', - string( optionalFooter ) + '', [rfReplaceAll] ); + + try + if GikoSys.Setting.UseSkin then begin + skinFooter := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, threadItem.SizeByte ); + if Length( optionalFooter ) > 0 then + skinFooter := StringReplace( skinFooter, '', + string( optionalFooter ) + '', [rfReplaceAll] ); + end else begin + skinFooter := '' + + '' + + '' + + ''; + end; + except + end; Result := CreateResultString( skinFooter ); -- 2.11.0