FIntData : Integer; // \8dD\82«\82É\82¢\82¶\82Á\82Ä\82æ\82µ\81B\82¢\82ë\82ñ\82È\97p\93r\82É\8eg\82¤yo
FListData : TList; // \8dD\82«\82É\82¢\82¶\82Á\82Ä\82æ\82µ\81B\82¢\82ë\82ñ\82È\97p\93r\82É\8eg\82¤yo
+ FSETTINGTXTTime: TDateTime; //SETTING.TXT\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e
+ FIsSETTINGTXT: boolean; //SETTING.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82é\82©
+ FHEADTXTTime: TDateTime; //HEAD.TXT\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e
+ FIsHEADTXT: boolean; //HEAD.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82é\82©
+ FTitlePictureURL: string; //top\8aG\82ÌURL
+
function GetThreadItem(index: integer): TThreadItem;
procedure SetThreadItem(index: integer; value: TThreadItem);
procedure SetRound(b: Boolean);
function GetReadCgiURL: string;
function GetSubjectFileName: string;
function GetFolderIndexFileName: string;
+ function GetSETTINGTXTFileName: string;
+ function GETHEADTXTFileName: string;
+ function GetTitlePictureFileName: string;
function GetSendURL: string;
function GetNewThreadCount: Integer;
property PON: string read FPON write FPON;
property KotehanName: string read FKotehanName write SetKotehanName;
property KotehanMail: string read FKotehanMail write SetKotehanMail;
+
+ property SETTINGTXTTime: TDateTime read FSETTINGTXTTime write FSETTINGTXTTime;
+ property IsSETTINGTXT: boolean read FIsSETTINGTXT write FIsSETTINGTXT;
+ property HEADTXTTime: TDateTime read FHEADTXTTime write FHEADTXTTime;
+ property IsHEADTXT: boolean read FIsHEADTXT write FIsHEADTXT;
+ property TitlePictureURL: string read FTitlePictureURL write FTitlePictureURL;
+
end;
//\83X\83\8c
FOLDER_INDEX_FILENAME: string = 'Folder.idx';
SUBJECT_FILENAME: string = 'subject.txt';
PATH_DELIM: string = '\';
+ SETTINGTXT_FILENAME: string = 'SETTING.TXT';
+ HEADTXT_FILENAME: string = 'head.txt';
//DEFAULT_LIST_COUNT: Integer = 100;
// COLUMN_CATEGORY: array[0..0] of string = ('\83J\83e\83S\83\8a\96¼');
try
// Round := ini.ReadBool('Status', 'Round', False);
tmp := ini.ReadString('Status', 'RoundDate', DateTimeToStr(ZERO_DATE));
- FRoundDate := ConvertDateTimeString(tmp);
- tmp := ini.ReadString('Status', 'LastModified', DateTimeToStr(ZERO_DATE));
- FLastModified := ConvertDateTimeString(tmp);
- tmp := ini.ReadString('Status', 'LastGetTime', DateTimeToStr(ZERO_DATE));
- FLastGetTime := ConvertDateTimeString(tmp);
-
- {
- try
- FRoundDate := ini.ReadDateTime('Status', 'RoundDate', ZERO_DATE);
- except
- tmp := ini.ReadString('Status', 'RoundDate', DateTimeToStr(ZERO_DATE));
- FRoundDate := StrToDateTime(ConvertDateTimeString(tmp));
- end;
- try
- FLastModified := ini.ReadDateTime('Status', 'LastModified', ZERO_DATE);
- except
- tmp := ini.ReadString('Status', 'LastModified', DateTimeToStr(ZERO_DATE));
- FLastModified := StrToDateTime(ConvertDateTimeString(tmp));
- end;
- try
- FLastGetTime := ini.ReadDateTime('Status', 'LastGetTime', ZERO_DATE);
- except
- tmp := ini.ReadString('Status', 'LastGetTime', DateTimeToStr(ZERO_DATE));
- FLastGetTime := StrToDateTime(ConvertDateTimeString(tmp));
- end;
- }
+ FRoundDate := ConvertDateTimeString(tmp);
+ tmp := ini.ReadString('Status', 'LastModified', DateTimeToStr(ZERO_DATE));
+ FLastModified := ConvertDateTimeString(tmp);
+ tmp := ini.ReadString('Status', 'LastGetTime', DateTimeToStr(ZERO_DATE));
+ FLastGetTime := ConvertDateTimeString(tmp);
+
+ tmp := ini.ReadString('BoardInformation', 'SETTINGTXTTime', DateTimeToStr(ZERO_DATE));
+ FSETTINGTXTTime := ConvertDateTimeString(tmp);
+ tmp := ini.ReadString('BoardInformation', 'HEADTXTTime', DateTimeToStr(ZERO_DATE));
+ FHEADTXTTime := ConvertDateTimeString(tmp);
+
+ FIsSETTINGTXT := ini.ReadBool('BoardInformation', 'IsSETTINGTXT', false);
+ FIsHEADTXT := ini.ReadBool('BoardInformation', 'IsHEADTXT', false);
+ FTitlePictureURL := ini.ReadString('BoardInformation', 'TitlePictureURL', '');
+
FUnRead := ini.ReadInteger('Status', 'UnRead', 0);
FSPID := ini.ReadString('Cookie', 'SPID', '');
FPON := ini.ReadString('Cookie', 'PON', '');
FKotehanName := ini.ReadString('Kotehan', 'Name', '');
FKotehanMail := ini.ReadString('Kotehan', 'Mail', '');
-// ListStyle := TViewStyle(Ord(ini.ReadInteger('Status', 'ListStyle', 3)));
-// ItemNoVisible := ini.ReadBool('Status', 'ItemNoVisible', True);
-// ViewType := TGikoViewType(Ord(ini.ReadInteger('Status', 'ViewType', 0)));
+
if UnRead < 0 then
UnRead := 0;
finally
ini.WriteString('Cookie', 'PON', FPON);
ini.WriteString('Kotehan', 'Name', FKotehanName);
ini.WriteString('Kotehan', 'Mail', FKotehanMail);
+
+ ini.WriteDateTime('BoardInformation', 'SETTINGTXTTime', FSETTINGTXTTime);
+ ini.WriteDateTime('BoardInformation', 'HEADTXTTime', FHEADTXTTime);
+
+ ini.WriteBool('BoardInformation', 'IsSETTINGTXT', FIsSETTINGTXT);
+ ini.WriteBool('BoardInformation', 'IsHEADTXT', FIsHEADTXT);
+ ini.WriteString('BoardInformation', 'TitlePictureURL', FTitlePictureURL);
// ini.WriteInteger('Status', 'ListStyle', Ord(ListStyle));
// ini.WriteBool('Status', 'ItemNoVisible', ItemNoVisible);
// ini.WriteInteger('Status', 'ViewType', Ord(ViewType));
Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
+ BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + FOLDER_INDEX_FILENAME;
end;
+//SETTING.TXT\82Ì\83t\83@\83C\83\8b\96¼\8eæ\93¾
+function TBoard.GetSETTINGTXTFileName: string;
+begin
+ if Length( FilePath ) > 0 then
+ Result := ExtractFilePath( FilePath ) + SETTINGTXT_FILENAME
+ else
+ Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
+ + BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + SETTINGTXT_FILENAME;
+end;
+
+function TBoard.GETHEADTXTFileName: string;
+begin
+ if Length( FilePath ) > 0 then
+ Result := ExtractFilePath( FilePath ) + HEADTXT_FILENAME
+ else
+ Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
+ + BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + HEADTXT_FILENAME;
+end;
+function TBoard.GetTitlePictureFileName: string;
+var
+ tmpName: string;
+begin
+ if FTitlePictureURL = '' then
+ Result := ''
+ else begin
+ tmpName := Copy(FTitlePictureURL, LastDelimiter('/', FTitlePictureURL) + 1, Length(FTitlePictureURL));
+ if Length( FilePath ) > 0 then
+ Result := ExtractFilePath( FilePath ) + tmpName
+ else
+ Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
+ + BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + tmpName;
+ end;
+end;
// \83X\83\8c\97§\82Ä\91\97\90MURL
function TBoard.GetSendURL: string;
CloseMenu: TMenuItem;
N01: TMenuItem;
StatusBar: TStatusBar;
- EditorPage: TPageControl;
+ EditorPage: TPageControl;
EditorTab: TTabSheet;
PreviewTab: TTabSheet;
Browser: TWebBrowser;
SelectAllAction: TAction;
N2: TMenuItem;
SelectAll1: TMenuItem;
- Timer1: TTimer;
- QuotePasteAction: TAction;
- QuotePasteMenuItem: TMenuItem;
- C1: TMenuItem;
- SpaceToNBSPAction: TAction;
- AmpToCharRefAction: TAction;
- SpaceTabnbsp1: TMenuItem;
- amp1: TMenuItem;
- SETTINGTab: TTabSheet;
- Browser1: TWebBrowser;
- BoardtopTab: TTabSheet;
- Browser2: TWebBrowser;
- HEADTab: TTabSheet;
- Browser3: TWebBrowser;
- SETTINGTXT1: TMenuItem;
- HEADTXT1: TMenuItem;
- BoardTop: TMenuItem;
+ Timer1: TTimer;
+ QuotePasteAction: TAction;
+ QuotePasteMenuItem: TMenuItem;
+ C1: TMenuItem;
+ SpaceToNBSPAction: TAction;
+ AmpToCharRefAction: TAction;
+ SpaceTabnbsp1: TMenuItem;
+ amp1: TMenuItem;
+ BoardInformationTab: TTabSheet;
+ BoardtopTab: TTabSheet;
+ TitlePictureBrowser: TWebBrowser;
+ BoardTop: TMenuItem;
+ BoardInformationMemo: TMemo;
+ GetSETTINGTXTAction: TAction;
+ GetheadtxtAction: TAction;
+ N3: TMenuItem;
+ SETTINGTXT2: TMenuItem;
+ headtxt2: TMenuItem;
+ GetTitlePictureAction: TAction;
+ OP1: TMenuItem;
procedure EditorPageChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure IdLogDebugSend(ASender: TIdConnectionIntercept;
AStream: TStream);
procedure SelectAllActionExecute(Sender: TObject);
- procedure StatusBarResize(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure FormActivate(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+ procedure StatusBarResize(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ procedure FormActivate(Sender: TObject);
+ procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure QuotePasteActionExecute(Sender: TObject);
- procedure SpaceToNBSPActionExecute(Sender: TObject);
- procedure AmpToCharRefActionExecute(Sender: TObject);
- procedure SETTINGTXT1Click(Sender: TObject);
- procedure HEADTXT1Click(Sender: TObject);
- procedure BoardTopClick(Sender: TObject);
+ procedure SpaceToNBSPActionExecute(Sender: TObject);
+ procedure AmpToCharRefActionExecute(Sender: TObject);
+ procedure BoardTopClick(Sender: TObject);
+ procedure GetSETTINGTXTActionExecute(Sender: TObject);
+ procedure GetheadtxtActionExecute(Sender: TObject);
+ procedure GetTitlePictureActionUpdate(Sender: TObject);
+ procedure GetTitlePictureActionExecute(Sender: TObject);
private
FThreadItem: TThreadItem;
FBoard: TBoard;
FStatusCode: Integer;
FDebugStrReceive: string;
FDebugStrSend: string;
- FSambaTime: TDateTime;
- FHost: string;
+ FSambaTime: TDateTime;
+ FHost: string;
FNow: TDateTime;
- //Boolean
- SettingVisible, HeadVisible, BoardTopVisible: Boolean;
+ //Boolean
+ SettingVisible, HeadVisible, BoardTopVisible: Boolean;
procedure Preview;
function RepHtml(s: string): string;
function Check: Boolean;
function GetSPID(CookieLine: string): string;
function GetPON(CookieLine: string): string;
function GetResultType(ResponseText: string): TGikoResultType;
- procedure ReadSambaTime(const AHost: string);
- procedure WriteSambaTime(const AHost: string; ATime: TDateTime);
- function ReadSettingTime(const AHost: string): Integer;
- function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean;
+ procedure ReadSambaTime(const AHost: string);
+ procedure WriteSambaTime(const AHost: string; ATime: TDateTime);
+ function ReadSettingTime(const AHost: string): Integer;
+ function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean;
procedure SetSamba24(AURL: string);
/// \88ø\97p\95\84\82Ì\8eæ\93¾
function GetOEIndentChar : string;
/// \96{\95¶\82Ì\8eæ\93¾
function GetBody : string;
-
+ //IdHttp\82Ì\8f\89\8aú\89»
+ procedure InitIdHTTP(http: TIdHTTP);
+ procedure ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
+ function GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
+ procedure ShowTitlePicture();
protected
procedure CreateParams(var Params: TCreateParams); override;
public
- FBBSID: String;
+ FBBSID: String;
procedure SetFont;
procedure SetThreadItem(Item: TThreadItem);
procedure SetBoard(Item: TBoard);
- property BBSID: string read FBBSID write FBBSID;
+ property BBSID: string read FBBSID write FBBSID;
- function GetFileName: string;
end;
implementation
SpaceToNBSPAction.Checked := GikoSys.Setting.SpaceToNBSP;
AmpToCharRefAction.Checked := GikoSys.Setting.AmpToCharRef;
- ini := TIniFile.Create(GetFileName);
-
- try
- BSettingTab := ini.ReadBool('EditorForm', 'SettingTab', False);
- SettingVisible := ini.ReadBool('EditorForm', 'SettingTab', False);
- BHeadTab := ini.ReadBool('EditorForm', 'HeadTab', False);
- HeadVisible := ini.ReadBool('EditorForm', 'HeadTab', False);
- BBoardTopTab := ini.Readbool('EditorForm', 'BoardTopTab', False);
- BoardTopVisible := ini.ReadBool('EditorForm', 'BoardTopTab', False);
- finally
- ini.Free;
- end;
- //SETTING.TXT,\94Â\83g\83b\83v\81CHEAD.TXT\94ñ\95\\8e¦
- if BSettingTab then begin
- SettingTab.TabVisible := True;
- SettingTxt1.Checked := True;
- end else begin
- SettingTab.TabVisible := False;
- SettingTxt1.Checked := False;
- end;
+ ini := TIniFile.Create(GikoSys.Setting.GetFileName);
- if BHeadTab then begin
- HeadTab.TabVisible := True;
- HeadTxt1.Checked := True;
- end else begin
- HeadTab.TabVisible := False;
- HeadTxt1.Checked := False;
- end;
+ try
+ BoardtopTab.TabVisible := ini.Readbool('EditorForm', 'BoardTopTab', False);
+ BoardTop.Checked := BoardtopTab.TabVisible;
+ finally
+ ini.Free;
+ end;
- if BBoardTopTab then begin
- BoardTopTab.TabVisible := True;
- BoardTop.Checked := True;
- end else begin
- BoardTopTab.TabVisible := False;
- BoardTop.Checked := False;
- end;
end;
procedure TEditorForm.SetBoard(Item: TBoard);
MailComboBox.Text := FBoard.KotehanMail;
SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
TitlePanel.Visible := True;
- SetSamba24('');
+ SetSamba24('');
+ ShowBoardInformation(FBoard, BoardInformationMemo);
+ ShowTitlePicture();
end;
procedure TEditorForm.SetThreadItem(Item: TThreadItem);
MailComboBox.Text := FThreadItem.ParentBoard.KotehanMail;
SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
TitlePanel.Visible := False;
- SetSamba24(FThreadItem.ParentBoard.URL);
+ SetSamba24(FThreadItem.ParentBoard.URL);
+ ShowBoardInformation(FThreadItem.ParentBoard, BoardInformationMemo);
+ ShowTitlePicture();
end;
function TEditorForm.GetBody : string;
end else begin
Browser.Navigate('about:blank');
end;
-
- if FThreadItem = nil then begin
- URL := FBoard.GetSendURL;
- RefURL := GikoSys.UrlToServer(FBoard.URL)
- + GikoSys.UrlToID(FBoard.URL)
- + '/';
- RefeURL := RefURL + 'SETTING.TXT';
- HeadURL := RefURL + 'head.txt';
- end else begin
- URL := FThreadItem.GetSendURL;
- RefURL := GikoSys.UrlToServer(FThreadItem.ParentBoard.URL)
- + FThreadItem.ParentBoard.BBSID
- + '/';
- RefeURL := RefURL + 'SETTING.TXT';
- HeadURL := RefURL + 'head.txt';
- end;
-
- if EditorPage.ActivePage = SETTINGTab then begin
- Browser1.Navigate(RefeURL);
- end else begin
- Browser1.Navigate('about:blank');
- end;
-
- if EditorPage.ActivePage = BoardtopTab then begin
- Browser2.Navigate(RefURL);
- end else begin
- Browser2.Navigate('about:blank');
- end;
-
- if EditorPage.ActivePage = HEADTab then begin
- Browser3.Navigate(HeadURL);
+{
+ if FThreadItem = nil then begin
+ URL := FBoard.GetSendURL;
+ RefURL := GikoSys.UrlToServer(FBoard.URL)
+ + GikoSys.UrlToID(FBoard.URL)
+ + '/';
+ RefeURL := RefURL + 'SETTING.TXT';
+ HeadURL := RefURL + 'head.txt';
+ end else begin
+ URL := FThreadItem.GetSendURL;
+ RefURL := GikoSys.UrlToServer(FThreadItem.ParentBoard.URL)
+ + FThreadItem.ParentBoard.BBSID
+ + '/';
+ RefeURL := RefURL + 'SETTING.TXT';
+ HeadURL := RefURL + 'head.txt';
+ end;
+}
+{ if EditorPage.ActivePage = SETTINGTab then begin
+ Browser1.Navigate(RefeURL);
+ end else begin
+ Browser1.Navigate('about:blank');
+ end;
+}
+{ if EditorPage.ActivePage = BoardtopTab then begin
+ TitlePictureBrowser.Navigate(RefURL);
+ end else begin
+ TitlePictureBrowser.Navigate('about:blank');
+ end;
+}
+{ if EditorPage.ActivePage = HEADTab then begin
+ Browser3.Navigate(HeadURL);
end else begin
Browser3.Navigate('about:blank');
end;
+}
end;
procedure TEditorForm.BrowserStatusTextChange(Sender: TObject;
doc.Close;
end;
end;
+procedure TEditorForm.InitIdHTTP(http: TIdHTTP);
+begin
+ http.Request.Clear;
+ http.ProxyParams.BasicAuthentication := False;
+ if GikoSys.Setting.WriteProxy then begin
+ http.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
+ http.ProxyParams.ProxyPort := GikoSys.Setting.WriteProxyPort;
+ http.ProxyParams.ProxyUsername := GikoSys.Setting.WriteProxyUserID;
+ http.ProxyParams.ProxyPassword := GikoSys.Setting.WriteProxyPassword;
+ if GikoSys.Setting.ReadProxyUserID <> '' then
+ http.ProxyParams.BasicAuthentication := True;
+ end else begin
+ http.ProxyParams.ProxyServer := '';
+ http.ProxyParams.ProxyPort := 80;
+ http.ProxyParams.ProxyUsername := '';
+ http.ProxyParams.ProxyPassword := '';
+ end;
+ Indy.Request.UserAgent := GikoSys.GetUserAgent;
+ Indy.Request.AcceptEncoding := '';
+end;
procedure TEditorForm.Send(SPID: string; PON: string; FirstWriting: Boolean);
var
else
Board := FThreadItem.ParentBoard;
- Indy.Request.Clear;
+{ Indy.Request.Clear;
Indy.ProxyParams.BasicAuthentication := False;
if GikoSys.Setting.WriteProxy then begin
Indy.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
Indy.ProxyParams.ProxyUsername := '';
Indy.ProxyParams.ProxyPassword := '';
end;
+}
+ InitIdHTTP(Indy);
if FThreadItem = nil then begin
URL := FBoard.GetSendURL;
RefURL := GikoSys.UrlToServer(FBoard.URL) + 'test/bbs.cgi';
URL := FThreadItem.GetSendURL;
RefURL := FThreadItem.URL;
end;
- Indy.Request.UserAgent := GikoSys.GetUserAgent;
+// Indy.Request.UserAgent := GikoSys.GetUserAgent;
Indy.Request.Referer := RefURL;
- Indy.Request.AcceptEncoding := '';
+// Indy.Request.AcceptEncoding := '';
Cookie := '';
if SPID <> '' then
Preview;
end;
-procedure TEditorForm.SETTINGTXT1Click(Sender: TObject);
+procedure TEditorForm.BoardTopClick(Sender: TObject);
var
- ini: TIniFile;
- SettingVisit: Boolean;
+ ini: TIniFile;
begin
- ini := TIniFile.Create(GetFileName);
+ ini := TIniFile.Create(GikoSys.Setting.GetFileName);
+ try
+ BoardtopTab.TabVisible := BoardTop.Checked;
+ ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
+ finally
+ ini.Free;
+ end;
+end;
+
- SettingVisit := ini.ReadBool('EditorForm', 'SettingTab', False);
+procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject);
+var
+ URL, RefURL: string;
+ settingBody: TStringList;
+ tmpBoard: TBoard;
+begin
+ InitIdHTTP(Indy);
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
- if SettingVisit then begin
- SettingTab.TabVisible := True;
- Settingtxt1.Checked := True;
+ if tmpBoard = nil then Exit;
- try
- ini.WriteBool('EditorForm', 'SettingTab', True);
- finally
- ini.Free;
- end;
- end else begin
- SettingTab.TabVisible := False;
- Settingtxt1.Checked := False;
-
- try
- ini.WriteBool('EditorForm', 'SettingTab', False);
- finally
- ini.Free;
- end;
- end;
+ RefURL := tmpBoard.URL;
+ if RefURL[Length(RefURL)] <> '/' then
+ URL := RefURL + '/' + 'SETTING.TXT'
+ else
+ URL := RefURL + 'SETTING.TXT';
+ Indy.Request.LastModified := tmpBoard.SETTINGTXTTime;
+ Indy.Request.Referer := RefURL;
+ Screen.Cursor := crHourGlass;
+ settingBody := TStringList.Create;
+ try
+ StatusBar.Panels[0].Text := 'SETTING.TXT\83_\83E\83\93\83\8d\81[\83h\92\86';
+ settingBody.Text := Indy.Get(URL);
+ if( Indy.ResponseCode = 200 ) then begin
+ settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName);
+ tmpBoard.SETTINGTXTTime := Indy.Response.LastModified;
+ tmpBoard.IsSETTINGTXT := true;
+ tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard);
+ tmpBoard.Modified := true;
+ end;
+ finally
+ StatusBar.Panels[0].Text := 'SETTING.TXT (' + IntToStr(Indy.ResponseCode) + ')';
+ settingBody.Free;
+ Screen.Cursor := crDefault;
+ end;
+ ShowBoardInformation(tmpBoard, BoardInformationMemo);
end;
-procedure TEditorForm.HEADTXT1Click(Sender: TObject);
+procedure TEditorForm.GetheadtxtActionExecute(Sender: TObject);
var
- ini: TIniFile;
- HeadVisit: Boolean;
+ URL, RefURL: string;
+ settingBody: TStringList;
+ tmpBoard: TBoard;
begin
- ini := TIniFile.Create(GetFileName);
+ InitIdHTTP(Indy);
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
- HeadVisit := ini.ReadBool('EditorForm', 'SettingTab', False);
+ if tmpBoard = nil then Exit;
- if HeadVisit then begin
- HeadTab.TabVisible := True;
- HeadTXT1.Checked := True;
+ RefURL := tmpBoard.URL;
+ if RefURL[Length(RefURL)] <> '/' then
+ URL := RefURL + '/' + 'head.txt'
+ else
+ URL := RefURL + 'head.txt';
- try
- ini.WriteBool('EditorForm', 'HeadTab', True);
- finally
- ini.Free;
- end;
- end else begin
- HeadTab.TabVisible := False;
- HeadTxt1.Checked := False;
-
- try
- ini.WriteBool('EditorForm', 'HeadTab', False);
- finally
- ini.Free;
- end;
- end;
+ Indy.Request.LastModified := tmpBoard.HEADTXTTime;
+ Indy.Request.Referer := RefURL;
+ Screen.Cursor := crHourGlass;
+ settingBody := TStringList.Create;
+ try
+ StatusBar.Panels[0].Text := 'head.txt\83_\83E\83\93\83\8d\81[\83h\92\86';
+ settingBody.Text := Indy.Get(URL);
+ if( Indy.ResponseCode = 200 ) then begin
+ settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
+ tmpBoard.HEADTXTTime := Indy.Response.LastModified;
+ tmpBoard.IsHEADTXT := true;
+ tmpBoard.Modified := true;
+ end;
+ finally
+ StatusBar.Panels[0].Text := 'head.txt (' + IntToStr(Indy.ResponseCode) + ')';
+ settingBody.Free;
+ Screen.Cursor := crDefault;
+ end;
+ ShowBoardInformation(tmpBoard, BoardInformationMemo);
end;
-procedure TEditorForm.BoardTopClick(Sender: TObject);
+procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
var
- ini: TIniFile;
- BoardTopVisit: Boolean;
+ body: TStringList;
+begin
+ AMemo.Clear;
+ AMemo.Lines.Add('[head.txt]');
+ if ABoard.IsHEADTXT then begin
+ if FileExists(ABoard.GETHEADTXTFileName) then begin
+ AMemo.Lines.Add(DateTimeToStr(ABoard.HEADTXTTime) + ' \8dX\90V');
+ body := TStringList.Create;
+ try
+ body.LoadFromFile(ABoard.GETHEADTXTFileName);
+ CustomStringReplace(body, '<br>', '', true);
+ AMemo.Lines.AddStrings(body);
+ finally
+ body.Free;
+ end;
+ end else begin
+ ABoard.IsHEADTXT := false;
+ ABoard.HEADTXTTime := ZERO_DATE;
+ AMemo.Lines.Add('Local\82É\95Û\91¶\82³\82ê\82½head.txt\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8dÄ\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+ end else begin
+ AMemo.Lines.Add('head.txt\82ð\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+
+ AMemo.Lines.Add(#13#10 + '[SETTING.TXT]');
+ if ABoard.IsSETTINGTXT then begin
+ if FileExists(ABoard.GetSETTINGTXTFileName) then begin
+ AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + ' \8dX\90V');
+ body := TStringList.Create;
+ try
+ body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
+ AMemo.Lines.AddStrings(body);
+ finally
+ body.Free;
+ end;
+ end else begin
+ ABoard.IsSETTINGTXT := false;
+ ABoard.SETTINGTXTTime := ZERO_DATE;
+ AMemo.Lines.Add('Local\82É\95Û\91¶\82³\82ê\82½SETTING.TXT\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8dÄ\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+ end else begin
+ AMemo.Lines.Add('SETTING.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+end;
+function TEditorForm.GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
+//BBS_TITLE_PICTURE=
+//BBS_FIGUREHEAD=
+var
+ i: Integer;
+ tmp: string;
begin
- ini := TIniFile.Create(GetFileName);
-
- BoardTopVisit := ini.ReadBool('EditorForm', 'SettingTab', False);
+ Result := '';
+ for i := 0 to body.Count - 1 do begin
+ if (AnsiPos('BBS_TITLE_PICTURE=', body[i]) > 0) or
+ (AnsiPos('BBS_FIGUREHEAD=', body[i]) > 0) then begin
+ tmp := body[i];
+ Delete(tmp, 1, AnsiPos('=', tmp));
+ if AnsiPos('../', tmp) > 0 then begin
+ CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
+ end;
+ Result := tmp;
+ Exit;
+ end;
+ end;
+end;
- if BoardTopVisit then begin
- BoardTopTab.TabVisible := True;
- BoardTop.Checked := True;
+procedure TEditorForm.GetTitlePictureActionUpdate(Sender: TObject);
+begin
+ if FThreadItem = nil then
+ GetTitlePictureAction.Enabled := FBoard.IsSETTINGTXT
+ else
+ GetTitlePictureAction.Enabled := FThreadItem.ParentBoard.IsSETTINGTXT;
- try
- ini.WriteBool('EditorForm', 'BoardTopTab', True);
- finally
- ini.Free;
- end;
- end else begin
- BoardTopTab.TabVisible := False;
- Boardtop.Checked := False;
-
- try
- ini.WriteBool('EditorForm', 'BoardTopTab', False);
- finally
- ini.Free;
- end;
- end;
end;
-function TEditorForm.GetFileName: string;
+procedure TEditorForm.GetTitlePictureActionExecute(Sender: TObject);
+var
+ memStream: TMemoryStream;
+ tmpBoard: TBoard;
begin
- Result := ExtractFilePath(Application.ExeName) + 'gikonavi.ini';
+ InitIdHTTP(Indy);
+ memStream := TMemoryStream.Create;
+ try
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ Indy.Request.Referer := tmpBoard.URL;
+ if tmpBoard.TitlePictureURL <> '' then begin
+ StatusBar.Panels[0].Text := '\94ÂTOP\89æ\91\9c\83_\83E\83\93\83\8d\81[\83h\92\86';
+ Screen.Cursor := crHourGlass;
+ Indy.Get(tmpBoard.TitlePictureURL, memStream);
+ if Indy.ResponseCode = 200 then begin
+ memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
+ ShowTitlePicture();
+ tmpBoard.Modified := true;
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ StatusBar.Panels[0].Text := '\94ÂTOP\89æ\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
+ memStream.Free;
+ end;
+
end;
+procedure TEditorForm.ShowTitlePicture();
+var
+ tmpBoard: TBoard;
+begin
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+ if FileExists(tmpBoard.GetTitlePictureFileName) then begin
+ TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
+ end else begin
+ TitlePictureBrowser.Navigate('about:blank');
+ end;
+end;
end.