Dialogs, StdCtrls, ComCtrls, ExtCtrls, ToolWin, Menus, OleCtrls, Registry,
{$IF Defined(DELPRO) }
SHDocVw,
+ MSHTML,
{$ELSE}
SHDocVw_TLB,
+ MSHTML_TLB,
{$IFEND}
ActiveX, {HTTPApp,} YofUtils, Trip, IniFiles, StrUtils,
GikoSystem, GikoUtil, ImgList, Clipbrd, BoardGroup,
amp1: TMenuItem;
BoardInformationTab: TTabSheet;
BoardtopTab: TTabSheet;
- TitlePictureBrowser: TWebBrowser;
+ TitlePictureBrowser: TWebBrowser;
BoardTop: TMenuItem;
BoardInformationMemo: TMemo;
GetSETTINGTXTAction: TAction;
- GetheadtxtAction: TAction;
N3: TMenuItem;
SETTINGTXT2: TMenuItem;
- headtxt2: TMenuItem;
- GetTitlePictureAction: TAction;
- OP1: TMenuItem;
+ GetTitlePictureAction: TAction;
+ OP1: TMenuItem;
+ GetHeadTXTAction: TAction;
+ HeadTXT1: TMenuItem;
procedure EditorPageChange(Sender: TObject);
procedure FormCreate(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);
+ procedure GetTitlePictureActionUpdate(Sender: TObject);
+ procedure GetTitlePictureActionExecute(Sender: TObject);
+ procedure GetHeadTXTActionExecute(Sender: TObject);
private
FThreadItem: TThreadItem;
FBoard: TBoard;
FSambaTime: TDateTime;
FHost: string;
FNow: TDateTime;
- //Boolean
- SettingVisible, HeadVisible, BoardTopVisible: Boolean;
procedure Preview;
function RepHtml(s: string): string;
function Check: Boolean;
// procedure GetSendData(Source: TStringStream);
procedure GetSendData(Source: TStringStream);
procedure SaveSendFile;
- procedure SetContent(Content: string);
+ procedure SetContent(Content: string; ABrowser: TWebBrowser);
function GetSPID(CookieLine: string): string;
function GetPON(CookieLine: string): string;
function GetResultType(ResponseText: string): TGikoResultType;
procedure ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
function GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
procedure ShowTitlePicture();
+ function GetFusianaName(body: TStringList; ABoard: TBoard): String;
protected
procedure CreateParams(var Params: TCreateParams); override;
public
wp: TWindowPlacement;
hUser32 : HINST;
ini: TIniFile;
- BSettingTab, BHeadTab, BBoardTopTab: Boolean;
begin
FWork := False;
Browser.Navigate('about:blank');
-
+ TitlePictureBrowser.Navigate('about:blank');
FBoard := nil;
FThreadItem := nil;
MailComboBox.Text := FBoard.KotehanMail;
SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
TitlePanel.Visible := True;
- SetSamba24('');
+ SetSamba24(FBoard.URL);
ShowBoardInformation(FBoard, BoardInformationMemo);
ShowTitlePicture();
end;
end;
body := GetBody;
-
Namae := RepHtml(NameComboBox.Text);
Mail := RepHtml(MailComboBox.Text);
Body := RepHtml(body);
else
s := s + '<DT>' + No + ' \81F <A href="mailto:' + Mail + '"><B>' + Namae + '</B></A> [' + Mail + ']\81F ' + DateTime+ '<BR><DD>' + Body + '<BR><BR><BR>' + #13#10;
s := s + '</BODY></HTML>';
- SetContent(s);
+ SetContent(s, Browser);
end;
function TEditorForm.RepHtml(s: string): string;
end;
procedure TEditorForm.EditorPageChange(Sender: TObject);
-var
- URL, RefURL, RefeURL, HeadURL: String;
begin
if EditorPage.ActivePage = PreviewTab then begin
Preview;
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
- 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;
Result := TitleEdit.Handle
else
Result := 0;
+ end else if Editorpage.ActivePage = BoardInformationTab then begin
+ if ActiveControl = BoardInformationMemo then
+ Result := BoardInformationMemo.Handle
+ else
+ Result := 0;
end else
Result := 0;
end;
-procedure TEditorForm.SetContent(Content: string);
+procedure TEditorForm.SetContent(Content: string; ABrowser: TWebBrowser);
var
- doc : Variant;
+ doc: Variant;
begin
- if Browser.Document <> nil then begin
- doc := Browser.Document;
+ if ABrowser.Document <> nil then begin
+ doc := Idispatch( olevariant(ABrowser.ControlInterface).Document) as IHTMLDocument2;
doc.Clear;
doc.open;
doc.charset := 'Shift_JIS';
// RefeURL: string;
// RuleURL: String;
// RuleTxt: String;
+// Name: String;
+// SettingBody: TStringList;
+// tmpBoard: TBoard;
begin
FAbort := False;
State := gdsError;
else
Board := FThreadItem.ParentBoard;
-{ Indy.Request.Clear;
- Indy.ProxyParams.BasicAuthentication := False;
- if GikoSys.Setting.WriteProxy then begin
- Indy.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
- Indy.ProxyParams.ProxyPort := GikoSys.Setting.WriteProxyPort;
- Indy.ProxyParams.ProxyUsername := GikoSys.Setting.WriteProxyUserID;
- Indy.ProxyParams.ProxyPassword := GikoSys.Setting.WriteProxyPassword;
- if GikoSys.Setting.ReadProxyUserID <> '' then
- Indy.ProxyParams.BasicAuthentication := True;
- end else begin
- Indy.ProxyParams.ProxyServer := '';
- Indy.ProxyParams.ProxyPort := 80;
- Indy.ProxyParams.ProxyUsername := '';
- Indy.ProxyParams.ProxyPassword := '';
- end;
-}
+
InitIdHTTP(Indy);
if FThreadItem = nil then begin
URL := FBoard.GetSendURL;
Exit;
end;
end;
+
if ResultType = grtOK then begin
WriteSambaTime(FHost, Now());
State := gdsComplete;
else
GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8e¸\94s]', nil, gmiNG);
EditorPage.ActivePage := PreviewTab;
- SetContent(ResponseText);
+ SetContent(ResponseText, Browser);
end else if State = gdsAbort then begin
GikoForm.AddMessageList(FThreadItem.Title + ' [\92\86\92f]', nil, gmiSAD);
end;
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.GetheadtxtActionExecute(Sender: TObject);
-var
- URL, RefURL: string;
- settingBody: TStringList;
- tmpBoard: TBoard;
-begin
- InitIdHTTP(Indy);
- if FThreadItem = nil then
- tmpBoard := FBoard
- else
- tmpBoard := FThreadItem.ParentBoard;
-
- if tmpBoard = nil then Exit;
-
- RefURL := tmpBoard.URL;
- if RefURL[Length(RefURL)] <> '/' then
- URL := RefURL + '/' + 'head.txt'
- else
- URL := RefURL + 'head.txt';
-
- 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;
+ try
+ 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;
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8eæ\93¾\8a®\97¹(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ except
+ on E: EIdException do begin
+ if( AnsiPos('304', E.Message) > 0 ) then
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8dX\90V\96³\82µ(' + IntToStr(Indy.ResponseCode) + ')'
+ else
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8eæ\93¾\83G\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
end;
finally
- StatusBar.Panels[0].Text := 'head.txt (' + IntToStr(Indy.ResponseCode) + ')';
settingBody.Free;
Screen.Cursor := crDefault;
end;
var
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]');
+ AMemo.Clear;
+ AMemo.Lines.Add('[SETTING.TXT]');
if ABoard.IsSETTINGTXT then begin
if FileExists(ABoard.GetSETTINGTXTFileName) then begin
AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + ' \8dX\90V');
tmp := body[i];
Delete(tmp, 1, AnsiPos('=', tmp));
if AnsiPos('../', tmp) > 0 then begin
- CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
+ tmp := CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
end;
Result := tmp;
Exit;
var
memStream: TMemoryStream;
tmpBoard: TBoard;
+ tmp : string;
begin
InitIdHTTP(Indy);
memStream := TMemoryStream.Create;
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';
+ StatusBar.Panels[0].Text := '\94Â\83g\83b\83v\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;
+ try
+ Indy.Get(tmpBoard.TitlePictureURL, memStream);
+ if Indy.ResponseCode = 200 then begin
+ memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
+ ShowTitlePicture();
+ tmpBoard.Modified := true;
+ end;
+ except
+ end;
end;
finally
- Screen.Cursor := crDefault;
- StatusBar.Panels[0].Text := '\94ÂTOP\89æ\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
+ Screen.Cursor := crDefault;
+ StatusBar.Panels[0].Text := '\94Â\83g\83b\83v\89æ\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
memStream.Free;
end;
procedure TEditorForm.ShowTitlePicture();
var
tmpBoard: TBoard;
+ s: String;
begin
if FThreadItem = nil then
tmpBoard := FBoard
tmpBoard := FThreadItem.ParentBoard;
if FileExists(tmpBoard.GetTitlePictureFileName) then begin
- TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
+ TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
end else begin
- TitlePictureBrowser.Navigate('about:blank');
+ s := '\94Â\83g\83b\83v\89æ\91\9c\96¢\8eæ\93¾\82Å\82·\81B<br>\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B';
+ SetContent(s, TitlePictureBrowser);
+ end;
+end;
+
+function TEditorForm.GetFusianaName(body: TStringList; ABoard: TBoard): String;
+var
+ i: Integer;
+ tmp: string;
+begin
+ for i := 0 to body.Count - 1 do begin
+ if (AnsiPos('BBS_NONAME_NAME=', body[i]) > 0) then begin
+ tmp := body[i];
+ Delete(tmp, 1, AnsiPos('=', tmp));
+ Result := tmp;
+ Exit;
+ end;
+ end;
+end;
+
+procedure TEditorForm.GetHeadTXTActionExecute(Sender: TObject);
+var
+ URL, RefURL: string;
+ settingBody: TStringList;
+ tmpBoard: TBoard;
+
+begin
+ InitIdHTTP(Indy);
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ if tmpBoard = nil then Exit;
+
+ RefURL := tmpBoard.URL;
+ if RefURL[Length(RefURL)] <> '/' then
+ URL := RefURL + '/' + 'head.txt'
+ else
+ URL := RefURL + 'head.txt';
+
+ if FileExists(tmpBoard.GETHEADTXTFileName) then
+ Indy.Request.LastModified := tmpBoard.HEADTXTTime
+ else
+ Indy.Request.LastModified := ZERO_DATE;
+
+ 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';
+ try
+ settingBody.Text := Indy.Get(URL);
+ if( Indy.ResponseCode = 200 ) then begin
+ settingBody.Insert(0, '<HTML lang="ja"><HEAD>');
+ settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">');
+ settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>');
+ settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>');
+ settingBody.Add('</BODY></HTML>');
+ settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
+ tmpBoard.HEADTXTTime := Indy.Response.LastModified;
+ tmpBoard.IsHEADTXT := true;
+ tmpBoard.Modified := true;
+ StatusBar.Panels[0].Text := 'head.txt\8eæ\93¾\8a®\97¹(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ except
+ on E: EIdException do begin
+ if( AnsiPos('304', E.Message) > 0 ) then
+ StatusBar.Panels[0].Text := 'head.txt\8dX\90V\96³\82µ(' + IntToStr(Indy.ResponseCode) + ')'
+ else
+ StatusBar.Panels[0].Text := 'head.txt\8eæ\93¾\83G\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ end;
+ finally
+ settingBody.Free;
+ Screen.Cursor := crDefault;
end;
+ if tmpBoard.IsHEADTXT then
+ GikoSys.OpenBrowser(tmpBoard.GETHEADTXTFileName, gbtUserApp);
end;
+
end.