OSDN Git Service

ギコナビ更新で、利用したインストーラのexeを削除する処理を追加。
[gikonavigoeson/gikonavi.git] / ExternalThreadItem.pas
index 9d6ba77..18d2c10 100644 (file)
@@ -31,7 +31,8 @@ type
                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
+               tipJumpAddress                                                  // : Integer            // JUMP\90æ\83\8c\83X\94Ô\8d\86
        );
 
        // *************************************************************************
@@ -56,6 +57,16 @@ type
        ) : TDownloadState; stdcall;    // \83_\83E\83\93\83\8d\81[\83h\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
 
        // *************************************************************************
+       // \8f\91\82«\8d\9e\82Ý\82ð\8ew\8e¦
+       // *************************************************************************
+       TThreadItemOnWrite = function(
+               inInstance      : DWORD;                                // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
+               inName                  : PChar;                                // \96¼\91O(\83n\83\93\83h\83\8b)
+               inMail                  : PChar;                                // \83\81\81[\83\8b\83A\83h\83\8c\83X
+               inMessage               : PChar                                 // \96{\95
+       ) : TDownloadState; stdcall;    // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
+
+       // *************************************************************************
        // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81
        // *************************************************************************
        TThreadItemOnGetRes = function(
@@ -64,6 +75,14 @@ type
        ) : PChar; stdcall;                             // \95\\8e¦\82·\82é HTML
 
        // *************************************************************************
+       // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é Dat \82ð\97v\8b\81
+       // *************************************************************************
+       TThreadItemOnGetDat = 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;                             // \82Q\82¿\82á\82ñ\82Ë\82é\8c`\8e®\82ÌDat
+
+       // *************************************************************************
        // \83X\83\8c\83b\83h\82Ì\83w\83b\83_ html \82ð\97v\8b\81
        // *************************************************************************
        TThreadItemOnGetHeader = function(
@@ -79,12 +98,12 @@ type
                inOptionalFooter        : PChar         // \92Ç\89Á\82Ì\83t\83b\83^
        ) : PChar; stdcall;                                             // \90®\8c`\82³\82ê\82½ HTML
 
-  // *************************************************************************
-  // \82±\82Ì ThreadItem \82ª\91®\82·\82é\94Â\82Ì URL \82ð\97v\8b\81
-  // *************************************************************************
-  TThreadItemOnGetBoardURL = function(
-    inInstance : DWORD                                 // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
-  ) : PChar; stdcall;                                          // \94Â\82Ì URL
+       // *************************************************************************
+       // \82±\82Ì ThreadItem \82ª\91®\82·\82é\94Â\82Ì URL \82ð\97v\8b\81
+       // *************************************************************************
+       TThreadItemOnGetBoardURL = function(
+               inInstance      : DWORD                                 // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
+       ) : PChar; stdcall;                                             // \94Â\82Ì URL
 
 function ThreadItemDat2HTML(
        inInstance      : DWORD;                // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
@@ -95,7 +114,7 @@ function ThreadItemDat2HTML(
 
 implementation
 
-uses ExternalBoardManager, GikoSystem, BoardGroup;
+uses ExternalBoardManager, GikoSystem, BoardGroup, HTMLCreate, MojuUtils;
 
 // *************************************************************************
 // TThreadItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\8eæ\93¾\82·\82é
@@ -150,6 +169,8 @@ begin
                        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 ) );
+               tipJumpAddress:
+                       Result := threadItem.JumpAddress;
        else
                Result := 0;
        end;
@@ -188,7 +209,8 @@ begin
                tipRound:                                                               // : Boolean            // \8f\84\89ñ\83t\83\89\83O
                        threadItem.Round                                := Boolean( param );
                tipRoundName:                                           // : string                     // \8f\84\89ñ\96¼
-                       threadItem.RoundName            := string( PChar( param ) );
+                       //threadItem.RoundName          := string( PChar( param ) );
+                       threadItem.RoundName            := PChar( param );
                tipIsLogFile:                                           // : Boolean            // \83\8d\83O\91\8dÝ\83t\83\89\83O
                        threadItem.IsLogFile            := Boolean( param );
                tipKokomade:                                            // : Integer            // \83R\83R\82Ü\82Å\93Ç\82ñ\82¾\94Ô\8d\86
@@ -207,8 +229,10 @@ begin
                        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 ) );
+               tipJumpAddress:
+                       threadItem.JumpAddress          := param;
        end;
 
 end;
@@ -271,65 +295,81 @@ var
        threadItem : TThreadItem;
        res : TResRec;
        no : string;
+       resLink : TResLinkRec;
 begin
 
-       {$IFDEF DEBUG}
-       Writeln('ExternalBoardManager.ThreadItemDat2HTML');
-       {$ENDIF}
        threadItem      := TThreadItem( inInstance );
        // \88ø\90\94\82ð\95ª\89ð
-       res                                     := GikoSys.DivideStrLine( string( inDatRes ) );
-       no                                      := IntToStr( inResNo );
-
-       try
-               if GikoSys.Setting.UseSkin then begin
-                       // \83X\83L\83\93
-                       if inIsNew then
-                               Result := CreateResultString( GikoSys.SkinedRes(
-                                       GikoSys.LoadFromSkin(
-                                               GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.SizeByte
-                                       ), res, no
-                               ) )
-                       else
-                               Result := CreateResultString( GikoSys.SkinedRes(
-                                       GikoSys.LoadFromSkin(
-                                               GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.SizeByte
-                                       ), res, no
-                               ) );
-               end else begin
-                       // CSS or \83f\83t\83H\83\8b\83g
-                       if res.FName = '' then
-                               res.FName := ' ';
-                       if res.FMailTo = '' then
-                               Result := CreateResultString( '<a name="' + no + '"></a>'
-                                                               + '<div class="header"><span class="no"><a href="menu:' + No + '">' + no + '</a></span> '
-                                                               + '<span class="name_label">\96¼\91O\81F</span> '
-                                                               + '<span class="name"><b>' + res.FName + '</b></span> '
-                                                               + '<span class="date_label">\93\8a\8de\93ú\81F</span> '
-                                                               + '<span class="date">' + res.FDateTime+ '</span></div>'
-                                                               + '<div class="mes">' + res.FBody + ' </div>' )
-                       else if GikoSys.Setting.ShowMail then
-                               Result := CreateResultString( '<a name="' + no + '"></a>'
-                                                               + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
-                                                               + '<span class="name_label"> \96¼\91O\81F </span>'
-                                                               + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
-                                                               + '<b>' + res.FName + '</b></a><span class="mail"> [' + res.FMailTo + ']</span>'
-                                                               + '<span class="date_label"> \93\8a\8de\93ú\81F</span>'
-                                                               + '<span class="date"> ' + res.FDateTime+ '</span></div>'
-                                                               + '<div class="mes">' + res.FBody + ' </div>' )
-                       else
-                               Result := CreateResultString( '<a name="' + no + '"></a>'
-                                                               + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
-                                                               + '<span class="name_label"> \96¼\91O\81F </span>'
-                                                               + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
-                                                               + '<b>' + res.FName + '</b></a>'
-                                                               + '<span class="date_label"> \93\8a\8de\93ú\81F</span>'
-                                                               + '<span class="date"> ' + res.FDateTime+ '</span></div>'
-                                                               + '<div class="mes">' + res.FBody + ' </div>' );
-               end;
-       except
-               Result := nil;
-       end;
+       THTMLCreate.DivideStrLine( string( inDatRes ) , @res);
+       if AnsiCompareStr( string( inDatRes ) , '' ) <> 0 then begin
+               res.FBody               := THTMLCreate.DeleteLink(res.FBody);
+               resLink.FBbs    := threadItem.ParentBoard.BBSID;
+               resLink.FKey    := ChangeFileExt( threadItem.FileName, '' );
+               HTMLCreater.AddAnchorTag( @res );
+               HTMLCreater.ConvRes( @res, @resLink );
+
+               no                                      := IntToStr( inResNo );
+
+               try
+                       if GikoSys.Setting.UseSkin then begin
+                               // \83X\83L\83\93
+                               if inIsNew then
+                                       Result := CreateResultString( HTMLCreater.SkinedRes(
+                                               HTMLCreater.LoadFromSkin(
+                            GikoSys.GetSkinNewResFileName, threadItem, threadItem.Size
+                                               ), @res, no
+                    ) )
+                else
+                                       Result := CreateResultString( HTMLCreater.SkinedRes(
+                                               HTMLCreater.LoadFromSkin(
+                            GikoSys.GetSkinResFileName, threadItem, threadItem.Size
+                        ), @res, no
+                    ) );
+            end else if GikoSys.Setting.UseCSS then begin
+                // CSS
+                if res.FName = '' then
+                    res.FName := '&nbsp;';
+                if res.FMailTo = '' then
+                    Result := CreateResultString( '<a name="' + no + '"></a>'
+                                    + '<div class="header"><span class="no"><a href="menu:' + No + '">' + no + '</a></span> '
+                                    + '<span class="name_label">\96¼\91O\81F</span> '
+                                    + '<span class="name"><b>' + res.FName + '</b></span> '
+                                    + '<span class="date_label">\93\8a\8de\93ú\81F</span> '
+                                    + '<span class="date">' + res.FDateTime+ '</span></div>'
+                                    + '<div class="mes">' + res.FBody + ' </div>' )
+                else if GikoSys.Setting.ShowMail then
+                    Result := CreateResultString( '<a name="' + no + '"></a>'
+                                    + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
+                                    + '<span class="name_label"> \96¼\91O\81F </span>'
+                                    + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
+                                    + '<b>' + res.FName + '</b></a><span class="mail"> [' + res.FMailTo + ']</span>'
+                                    + '<span class="date_label"> \93\8a\8de\93ú\81F</span>'
+                                    + '<span class="date"> ' + res.FDateTime+ '</span></div>'
+                                    + '<div class="mes">' + res.FBody + ' </div>' )
+                else
+                    Result := CreateResultString( '<a name="' + no + '"></a>'
+                                    + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
+                                    + '<span class="name_label"> \96¼\91O\81F </span>'
+                                    + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
+                                    + '<b>' + res.FName + '</b></a>'
+                                    + '<span class="date_label"> \93\8a\8de\93ú\81F</span>'
+                                    + '<span class="date"> ' + res.FDateTime+ '</span></div>'
+                                    + '<div class="mes">' + res.FBody + ' </div>' );
+            end else begin
+                // \83f\83t\83H\83\8b\83g
+                if res.FMailTo = '' then
+                    Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> \96¼\91O\81F<font color="forestgreen"><b> ' + res.FName + ' </b></font> \93\8a\8de\93ú\81F ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' )
+                else if GikoSys.Setting.ShowMail then
+                    Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> \96¼\91O\81F<a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a> [' + res.FMailTo + '] \93\8a\8de\93ú\81F ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' )
+                else
+                    Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> \96¼\91O\81F<a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a> \93\8a\8de\93ú\81F ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' );
+            end;
+        except
+            Result := nil;
+        end;
+    end else begin
+       Result := nil;
+    end;
 
 end;
 
@@ -355,10 +395,10 @@ begin
        try
                if GikoSys.Setting.UseSkin then begin
                        // \83X\83L\83\93
-                       skinHeader := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, threadItem.SizeByte );
+                       skinHeader := HTMLCreater.LoadFromSkin( GikoSys.GetSkinHeaderFileName, threadItem, threadItem.Size );
                        if Length( optionalHeader ) > 0 then
                                skinHeader :=
-                                       StringReplace( skinHeader, '</head>', optionalHeader + '</head>', [] );
+                                       StringReplace( skinHeader, '</head>', optionalHeader + '</head><a name="top"></a>', [] );
                end else if GikoSys.Setting.UseCSS then begin
                        // CSS
                        skinHeader :=
@@ -368,6 +408,7 @@ begin
                                optionalHeader +
                                '</head>' +
                                '<body>' +
+                               '<a name="top"></a>' +
                                '<div class="title">' + threadItem.Title + '</div>';
                end else begin
                        // \83f\83t\83H\83\8b\83g
@@ -376,8 +417,10 @@ begin
                                '<title>' + threadItem.Title + '</title>' +
                                optionalHeader +
                                '</head>' +
-                               '<body>' +
-                               '<div class="title">' + threadItem.Title + '</div>';
+                               '<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' +
+                               '<a name="top"></a>' +
+                               '<font size=+1 color="#FF0000">' + threadItem.Title + '</font>' +
+                               '<dl>';
                end;
        except
        end;
@@ -407,17 +450,26 @@ begin
 
        try
                if GikoSys.Setting.UseSkin then begin
-                       skinFooter := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, threadItem.SizeByte );
+                       // \83X\83L\83\93
+                       skinFooter := HTMLCreater.LoadFromSkin( GikoSys.GetSkinFooterFileName, threadItem, threadItem.Size );
                        if Length( optionalFooter ) > 0 then
                                skinFooter :=
                                        StringReplace( skinFooter, '</body>', optionalFooter + '</body>', [] );
+               end else if GikoSys.Setting.UseCSS then begin
+                       // CSS
+                       skinFooter :=
+                               optionalFooter +
+                               '</body></html>' +
+                               '<a name="last"></a>' +
+                               '</body></html>';
                end else begin
-                               skinFooter :=
-                                       '<a name="bottom"></a>' +
-                                       optionalFooter +
-                                       '</body></html>' +
-                                       '<a name="last"></a>' +
-                                       '</body></html>';
+                       // \83f\83t\83H\83\8b\83g
+                       skinFooter :=
+                               '</dl>' +
+                               optionalFooter +
+                               '</body></html>' +
+                               '<a name="last"></a>' +
+                               '</body></html>';
                end;
        except
        end;