tipDownloadHost, // : string // \8d¡\82Ì\83z\83X\83g\82Æ\88á\82¤\8fê\8d\87\82Ì\83z\83X\83g
tipAgeSage, // : TThreadAgeSage // \83A\83C\83e\83\80\82Ì\8fã\82°\89º\82°
tipURL, // : string // \83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
- tipFilePath // : string // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
+ tipFilePath // : string // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
);
// *************************************************************************
var outRevision : DWORD // \83\8a\83r\83W\83\87\83\93\83i\83\93\83o\81[
); stdcall;
- // *************************************************************************
- // \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
- // *************************************************************************
- TOnAcceptURL = function(
- inURL : PChar // \94»\92f\82ð\8bÂ\82¢\82Å\82¢\82é URL
- ): Boolean; stdcall; // \8eó\82¯\95t\82¯\82é\82È\82ç True
-
- // *************************************************************************
- // TThreadItem \82ª\90¶\90¬\82³\82ê\82½
- // *************************************************************************
- TThreadItemCreate = procedure(
- inInstance : DWORD
- ); stdcall;
-
- // *************************************************************************
- // TThreadItem \82ª\94j\8aü\82³\82ê\82½
- // *************************************************************************
- TThreadItemDispose = procedure(
- inInstance : DWORD
- ); stdcall;
+ // *************************************************************************
+ // \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
+ // *************************************************************************
+ TOnAcceptURL = function(
+ inURL : PChar // \94»\92f\82ð\8bÂ\82¢\82Å\82¢\82é URL
+ ): Boolean; stdcall; // \8eó\82¯\95t\82¯\82é\82È\82ç True
+
+ // *************************************************************************
+ // TThreadItem \82ª\90¶\90¬\82³\82ê\82½
+ // *************************************************************************
+ TThreadItemCreate = procedure(
+ inInstance : DWORD
+ ); stdcall;
+
+ // *************************************************************************
+ // TThreadItem \82ª\94j\8aü\82³\82ê\82½
+ // *************************************************************************
+ TThreadItemDispose = procedure(
+ inInstance : DWORD
+ ); stdcall;
// *************************************************************************
// \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
// *************************************************************************
- TThreadItemOnDownload = procedure(
- inInstance : DWORD // \83C\83\93\83X\83^\83\93\83X
- ); stdcall; // \83_\83E\83\93\83\8d\81[\83h\82³\82ê\82½\83X\83\8c\83b\83h
+ TThreadItemOnDownload = procedure(
+ inInstance : DWORD // \83C\83\93\83X\83^\83\93\83X
+ ); stdcall; // \83_\83E\83\93\83\8d\81[\83h\82³\82ê\82½\83X\83\8c\83b\83h
+
+ // *************************************************************************
+ // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81\82³\82ê\82½
+ // *************************************************************************
+ TThreadItemOnGetRes = function(
+ inInstance : DWORD; // \83C\83\93\83X\83^\83\93\83X
+ inNo : DWORD // \95\\8e¦\82·\82é\83\8c\83X\94Ô\8d\86
+ ) : PChar; stdcall; // \95\\8e¦\82·\82é HTML
+
+ // *************************************************************************
+ // \83X\83\8c\83b\83h\82Ì\83w\83b\83_ html \82ð\97v\8b\81\82³\82ê\82½
+ // *************************************************************************
+ TThreadItemOnGetHeader = function(
+ inInstance : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
+ inOptionalHeader : PChar // \92Ç\89Á\82Ì\83w\83b\83_
+ ) : PChar; stdcall; // \90®\8c`\82³\82ê\82½ HTML
+
+ // *************************************************************************
+ // \83X\83\8c\83b\83h\82Ì\83t\83b\83^ html \82ð\97v\8b\81\82³\82ê\82½
+ // *************************************************************************
+ TThreadItemOnGetFooter = function(
+ inInstance : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
+ inOptionalFooter : PChar // \92Ç\89Á\82Ì\83t\83b\83^
+ ) : PChar; stdcall; // \90®\8c`\82³\82ê\82½ HTML
FModule : HMODULE; // \83v\83\89\83O\83C\83\93\82Ì\83\82\83W\83\85\81[\83\8b\83n\83\93\83h\83\8b
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
// \83v\83\89\83O\83C\83\93\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ä\8dì\90¬
var outMajor : DWORD; var outMinor : DWORD;
var outRelease : string; var outRevision : DWORD );
// \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
- function AcceptURL( inURL : string ) : Boolean;
- // TThreadItem \82ª\90¶\90¬\82³\82ê\82½
- procedure CreateThreadItem( threadItem : DWORD );
- // TThreadItem \82ª\94j\8aü\82³\82ê\82½
- procedure DisposeThreadItem( threadItem : DWORD );
- // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
- procedure Download( threadItem: DWORD );
+ function AcceptURL( inURL : string ) : Boolean;
+ // TThreadItem \82ª\90¶\90¬\82³\82ê\82½
+ procedure CreateThreadItem( threadItem : DWORD );
+ // TThreadItem \82ª\94j\8aü\82³\82ê\82½
+ procedure DisposeThreadItem( threadItem : DWORD );
+ // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
+ procedure Download( threadItem: DWORD );
+ // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81\82³\82ê\82½
+ function GetRes( threadItem : DWORD; inNo : DWORD ) : string;
+ // \83X\83\8c\83b\83h\82Ì\83w\83b\83_ html \82ð\97v\8b\81\82³\82ê\82½
+ function GetHeader( threadItem : DWORD; inOptionalHeader : string ) : string;
+ // \83X\83\8c\83b\83h\82Ì\83t\83b\83^ html \82ð\97v\8b\81\82³\82ê\82½
+ function GetFooter( threadItem : DWORD; inOptionalFooter : string ) : string;
private
procedure LoadPlugInAPI;
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;
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;
begin
if Assigned( FAcceptURL ) then
- Result := FAcceptURL( PChar( inURL ) )
- else
- Result := False;
+ Result := FAcceptURL( PChar( inURL ) )
+ else
+ Result := False;
end;
begin
if Assigned( FCreateThreadItem ) then
- FCreateThreadItem( threadItem );
+ FCreateThreadItem( threadItem );
end;
begin
if Assigned( FDisposeThreadItem ) then
- FDisposeThreadItem( threadItem );
+ FDisposeThreadItem( threadItem );
end;
// *************************************************************************
procedure TBoardPlugIn.Download( threadItem: DWORD );
begin
+
if Assigned( FDownload ) then
- FDownload( threadItem );
+ FDownload( threadItem );
+
+end;
+
+// *************************************************************************
+// \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81\82³\82ê\82½
+// *************************************************************************
+function TBoardPlugIn.GetRes(
+ threadItem : DWORD; // \83C\83\93\83X\83^\83\93\83X
+ inNo : DWORD // \95\\8e¦\82·\82é\83\8c\83X\94Ô\8d\86
+) : string; // \95\\8e¦\82·\82é HTML
+var
+ tmp : PChar;
+begin
+
+ if Assigned( FGetRes ) then begin
+ tmp := FGetRes( threadItem, inNo );
+ Result := string( tmp );
+ DisposeResultString( tmp );
+ end;
+
+end;
+
+// *************************************************************************
+// \83X\83\8c\83b\83h\82Ì\83w\83b\83_ html \82ð\97v\8b\81\82³\82ê\82½
+// *************************************************************************
+function TBoardPlugIn.GetHeader(
+ threadItem : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
+ inOptionalHeader : string // \92Ç\89Á\82Ì\83w\83b\83_
+) : string; // \90®\8c`\82³\82ê\82½ HTML
+var
+ tmp : PChar;
+begin
+
+ if Assigned( FGetHeader ) then begin
+ tmp := FGetHeader( threadItem, PChar( inOptionalHeader ) );
+ Result := string( tmp );
+ DisposeResultString( tmp );
+ end;
+
+end;
+
+// *************************************************************************
+// \83X\83\8c\83b\83h\82Ì\83t\83b\83^ html \82ð\97v\8b\81\82³\82ê\82½
+// *************************************************************************
+function TBoardPlugIn.GetFooter(
+ threadItem : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
+ inOptionalFooter : string // \92Ç\89Á\82Ì\83t\83b\83^
+) : string; // \90®\8c`\82³\82ê\82½ HTML
+var
+ tmp : PChar;
+begin
+
+ if Assigned( FGetFooter ) then begin
+ tmp := FGetFooter( threadItem, PChar( inOptionalFooter ) );
+ Result := string( tmp );
+ DisposeResultString( tmp );
+ end;
+
end;
// *************************************************************************
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;
if Assigned( OnWorkEnd ) then
httpSocket.OnWorkEnd := OnWorkEnd;
- // \92Ê\90M\82É\8aÖ\82·\82é\90Ý\92è
+ // \92Ê\90M\82É\8aÖ\82·\82é\90Ý\92è
httpSocket.Request.CustomHeaders.Clear;
httpSocket.Response.Clear;
httpSocket.Request.Clear;
Result := DWORD( threadItem.AgeSage );
tipURL: // : string // \83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
Result := DWORD( CreateResultString( threadItem.URL ) );
- tipFilePath: // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
- Result := DWORD( CreateResultString( threadItem.FilePath ) );
+ tipFilePath: // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
+ Result := DWORD( CreateResultString( threadItem.FilePath ) );
else
Result := 0;
end;
threadItem.AgeSage := TGikoAgeSage( param );
tipURL: // : string // \83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
threadItem.URL := string( PChar( param ) );
- tipFilePath: // : string // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
- threadItem.FilePath := string( PChar( param ) );
+ tipFilePath: // : string // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
+ threadItem.FilePath := string( PChar( param ) );
end;
end;
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
threadItem := TThreadItem( inInstance );
optionalHeader := string( inOptionalHeader );
- skinHeader := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, 0 );
- if Length( optionalHeader ) > 0 then
- skinHeader := StringReplace( skinHeader, '</head>',
- string( optionalHeader ) + '</head>', [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, '</head>',
+ string( optionalHeader ) + '</head>', [rfReplaceAll] );
+ end else begin
+ skinHeader :=
+ '<html><head>' +
+ //'<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' +
+ '<title>' + threadItem.Title + '</title>' +
+ '<link rel="stylesheet" href="'+ GikoSys.Setting.CSSFileName +'" type="text/css">' +
+ optionalHeader +
+ '</head>' +
+ '<body>' +
+ '<div class="title">' + threadItem.Title + '</div>';
+ end;
+ except
+ end;
Result := CreateResultString( skinHeader );
threadItem := TThreadItem( inInstance );
optionalFooter := string( inOptionalFooter );
- skinFooter := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, 0 );
- if Length( optionalFooter ) > 0 then
- skinFooter := StringReplace( skinFooter, '</body>',
- string( optionalFooter ) + '</body>', [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, '</body>',
+ string( optionalFooter ) + '</body>', [rfReplaceAll] );
+ end else begin
+ skinFooter := '<a name="bottom"></a>' +
+ '</body></html>' +
+ '<a name="last"></a>' +
+ '</body></html>';
+ end;
+ except
+ end;
Result := CreateResultString( skinFooter );