OSDN Git Service

This commit was manufactured by cvs2svn to create branch 'remodeling'.
[gikonavigoeson/gikonavi.git] / Editor.pas
index 434616e..6fd75e6 100644 (file)
@@ -112,13 +112,18 @@ type
     HeadTXT1: TMenuItem;
     RocalRuleTab: TTabSheet;
     WebBrowser1: TWebBrowser;
-    CalcCapasityAction: TAction;
+    CalcCapacityAction: TAction;
     N4: TMenuItem;
     N5: TMenuItem;
     LocalRule: TMenuItem;
     LocalEdit: TMemo;
     N6: TMenuItem;
     LocalRuleBrowse: TMenuItem;
+    ToolButton4: TToolButton;
+    ToolButton6: TToolButton;
+    SaveNameMailAction: TAction;
+    ToolButton7: TToolButton;
+    BeLogInOutEAction: TAction;
 
                procedure EditorPageChange(Sender: TObject);
                procedure FormCreate(Sender: TObject);
@@ -164,10 +169,13 @@ type
        procedure GetTitlePictureActionUpdate(Sender: TObject);
        procedure GetTitlePictureActionExecute(Sender: TObject);
     procedure GetHeadTXTActionExecute(Sender: TObject);
-    procedure CalcCapasityActionExecute(Sender: TObject);
+       procedure CalcCapacityActionExecute(Sender: TObject);
     procedure LocalRuleClick(Sender: TObject);
     procedure FormDeactivate(Sender: TObject);
     procedure LocalRuleBrowseClick(Sender: TObject);
+    procedure SaveNameMailActionExecute(Sender: TObject);
+    procedure BeLogInOutEActionExecute(Sender: TObject);
+    procedure BeLogInOutEActionUpdate(Sender: TObject);
        private
                FThreadItem: TThreadItem;
                FBoard: TBoard;
@@ -221,6 +229,8 @@ type
                procedure OnGestureEnd(Sender: TObject);
                 //HEAD.TXT\8e©\93®\95\\8e¦
                 procedure ShowBoardHead(ABoard: TBoard; AMemo: TMemo);
+                //LocalFusianaTrapAlart
+                function LFusianaGet(s: String): Boolean;
        protected
                procedure CreateParams(var Params: TCreateParams); override;
        public
@@ -416,7 +426,7 @@ begin
                MouseGesture.OnGestureEnd := OnGestureEnd;
                MouseGesture.SetHook( Handle );
        end;
-
+       SaveNameMailAction.Checked := True;
 end;
 
 procedure TEditorForm.SetBoard(Item: TBoard);
@@ -695,13 +705,15 @@ end;
 
 procedure TEditorForm.SetNameList(sName, sMail: string);
 begin
-       if Trim(sName) <> '' then begin
-               if GikoSys.Setting.NameList.IndexOf(sName) = -1 then
-                       GikoSys.Setting.NameList.Insert(0, sName);
-       end;
-       if Trim(sMail) <> '' then begin
-               if GikoSys.Setting.MailList.IndexOf(sMail) = -1 then
-                       GikoSys.Setting.MailList.Insert(0, sMail);
+       if SaveNameMailAction.Checked then begin
+               if Trim(sName) <> '' then begin
+                       if GikoSys.Setting.NameList.IndexOf(sName) = -1 then
+                               GikoSys.Setting.NameList.Insert(0, sName);
+               end;
+               if Trim(sMail) <> '' then begin
+                       if GikoSys.Setting.MailList.IndexOf(sMail) = -1 then
+                               GikoSys.Setting.MailList.Insert(0, sMail);
+               end;
        end;
 end;
 
@@ -776,9 +788,11 @@ var
        sysMenu : HMENU;
        //fusianasan\83g\83\89\83b\83v by\92è\8aú\95Ö
        Namae : String;
-        body : TStringList;
-        Remote : String;
-        ABoard : TBoard;
+    tmpSPID, tmpPON : String;  //\83\8a\83\82\81[\83g\83g\83\89\83b\83v\82ªON\82Ì\8e\9e\82ÉCookie\82Ì\88ê\8e\9e\95Û\91\97p
+       body : TStringList;
+       Remote : String;
+       ABoard : TBoard;
+    Protocol,Host, Path, Document, Port, Bookmark : String;
 begin
        FAbort := False;
        State := gdsError;
@@ -790,6 +804,8 @@ begin
 
 
        InitIdHTTP(Indy);
+    tmpSPID := '';
+    tmpPON  := '';
        if FThreadItem = nil then begin
                URL := FBoard.GetSendURL;
                RefURL := GikoSys.UrlToServer(FBoard.URL) + 'test/bbs.cgi';
@@ -806,6 +822,11 @@ begin
                Cookie := Cookie + 'SPID=' + SPID + '; ';
        if PON <> '' then
                Cookie := Cookie + 'PON=' + PON + '; ';
+       //\83z\83X\83g\82ª2ch\82Å\81ABe\82ÉLogin\82µ\82Ä\82¢\82ê\82ÎBE\82Ì\83f\81[\83^\82ð\91\97\82é
+       GikoSys.ParseURI( URL, Protocol,Host, Path, Document, Port, Bookmark );
+       if GikoSys.Is2chHost(Host) and GikoSys.Setting.BeLogin then
+           Cookie := Cookie + 'MDMD=' + GikoSys.Setting.BeCode + '; '
+                       + 'DMDM=' + GikoSys.Setting.BeUserID + '; ';
        Cookie := 'Cookie: ' + Cookie + 'NAME=' + NameComboBox.Text + '; MAIL=' + MailComboBox.Text;
 
        sysMenu := GetSystemMenu( Handle, false );
@@ -837,6 +858,23 @@ begin
                        MsgResult := IDNO;
                        //\83t\83V\83A\83i\83g\83\89\83b\83v\8cx\8d\90(LocalMode) by \92è\8aú\95Ö
                         if GikoSys.Setting.LocalTrapAtt then begin
+                                if LFusianaGet(Namae) then begin
+                                       MsgResult := MsgBox(
+                                                       Handle,
+                                               '\83\8a\83\82\81[\83g\83z\83X\83g\82ð\95\\8e¦\82·\82é\8b@\94\\82ª\8eg\82í\82ê\82Ä\82¢\82Ü\82·' + #13#10 +
+                                               '\82à\82µ\82à\8aÔ\88á\82Á\82Ä\82±\82Ì\95û\96@\82Å\83z\83X\83g\82ª\95\\8e¦\82³\82ê\82½\82Æ\82µ\82Ä\82à\81A\8e©\8cÈ\90Ó\94C\82È\82Ì\82Å\8dí\8f\9c\88Ë\97\8a\82É\82Í\89\9e\82\82Ü\82¹\82ñ\81B' + #13#10#13#10 +
+                                               '\90Ó\94C\82ð\95\89\82¤\82±\82Æ\82ð\8f³\91ø\82µ\82Ä\8f\91\82«\8d\9e\82Ý\82Ü\82·\82©\81H',
+                                               '\8fî\95ñ',
+                                               MB_YESNO or MB_ICONQUESTION);
+                                       if MsgResult = IDNO  then begin
+                                               Board.SPID := '';
+                                               Board.PON := '';
+                                               FWork := false;
+                                               EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
+                                               DrawMenuBar(Handle);
+                                               Exit;
+                                        end;
+                                end;
                                if ((Namae = '\8eR\8dè\8fÂ') or (Namae = 'fusianasan')) then begin
                                        MsgResult := MsgBox(
                                                        Handle,
@@ -873,6 +911,24 @@ begin
                                                 body.Free;
                                         end;
                                 end;
+
+                                //Setting.txt\82ª\82È\82©\82Á\82½\82ç\8eæ\93¾
+                                //\8eI\82É\95\89\89×\82ª\82©\82©\82è\82»\82¤\82Å\95|\82¢\81E\81E\81E
+                                if not FileExists(ABoard.GetSETTINGTXTFileName) then begin
+                                        //GetSETTINGTXTAction\82ð\8cÄ\82Ñ\8fo\82·\82ÆIndy\82ª\8f\89\8aú\89»\82³\82ê\82é\82Ì\82Å\81A
+                                        //\82±\82±\82ÅCookie\82ð\95Û\91\82µ\82È\82­\82Ä\82Í\82¢\82¯\82È\82¢
+                                        tmpSPID := GetSPID(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                                        tmpPON  := GetPON(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                                        GetSETTINGTXTAction.Execute;
+                                        body := TStringList.Create;
+                                        try
+                                                body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
+                                                Remote := GetFusianaName(body, ABoard);
+                                        finally
+                                                body.Free;
+                                        end;
+                                end;
+
                                 if Remote = 'fusianasan' then begin
                                        MsgResult := MsgBox(
                                                        Handle,
@@ -893,7 +949,8 @@ begin
                         end;
 
                        if ResultType = grtOK then begin
-                               WriteSambaTime(FHost, Now());
+                if GikoSys.Setting.UseSamba then
+                                       WriteSambaTime(FHost, Now());
                                State := gdsComplete;
                        end else if ResultType = grtCookie then begin
                                //\83\8b\81[\83v\96h\8e~
@@ -907,8 +964,13 @@ begin
                                        '\8fî\95ñ',
                                        MB_YESNO or MB_ICONQUESTION);
                                if MsgResult = IDYES then begin
-                                       Board.SPID := GetSPID(Indy.Response.RawHeaders.Values['Set-Cookie']);
-                                       Board.PON := GetPON(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                    if (GikoSys.Setting.RemoteTrapAtt) and ((tmpSPID <> '') or (tmpPON <> '')) then begin
+                                               Board.SPID := tmpSPID;
+                                               Board.PON := tmpPON;
+                    end else begin
+                                               Board.SPID := GetSPID(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                                               Board.PON := GetPON(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                    end;
                                        if (Board.SPID = '') and (Board.PON = '') then
                                                raise Exception.Create('');
                                        //\82à\82¤\88ê\89ñ\82±\82Ì\83\81\83\\83b\83h
@@ -940,8 +1002,13 @@ begin
                                        MB_YESNO or MB_ICONQUESTION);
 
                                if MsgResult = IDYES then begin
-                                       Board.SPID := GetSPID(Indy.Response.RawHeaders.Values['Set-Cookie']);
-                                       Board.PON := GetPON(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                    if (GikoSys.Setting.RemoteTrapAtt) and ((tmpSPID <> '') or (tmpPON <> '')) then begin
+                                               Board.SPID := tmpSPID;
+                                               Board.PON := tmpPON;
+                    end else begin
+                                               Board.SPID := GetSPID(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                                               Board.PON := GetPON(Indy.Response.RawHeaders.Values['Set-Cookie']);
+                    end;
                                        if (Board.SPID = '') and (Board.PON = '') then
                                                raise Exception.Create('');
                                        Send(Board.SPID, Board.PON, False);
@@ -954,11 +1021,12 @@ begin
                                        FWork := false;
                                        Exit;
                                        end;
-                       end else begin
-                WriteSambaTime(FHost, Now());
-                               State := gdsError;
-                               raise Exception.Create('');
-                       end;
+                               end else begin
+                        if GikoSys.Setting.UseSamba then
+                               WriteSambaTime(FHost, Now());
+                                       State := gdsError;
+                                       raise Exception.Create('');
+                               end;
 
                except
                        on E: EIdConnectException do begin
@@ -1000,35 +1068,36 @@ begin
                DrawMenuBar(Handle);
        end;
        FWork := false;
-        //\94ñ\8cö\8e®\83M\83R\83i\83r\94Â\82È\82Ç\82Ì\83X\83N\83\8a\83v\83g\97p
-        //ResponceCode\82ª302Found\82Å\8f\91\82«\8d\9e\82Ý\8a®\97¹
-        if FStatusCode = 302 then begin
-               GikoForm.PlaySound('ResEnd');
-               SaveSendFile;
+    //\94ñ\8cö\8e®\83M\83R\83i\83r\94Â\82È\82Ç\82Ì\83X\83N\83\8a\83v\83g\97p
+    //ResponceCode\82ª302Found\82Å\8f\91\82«\8d\9e\82Ý\8a®\97¹
+    if FStatusCode = 302 then begin
+        GikoForm.PlaySound('ResEnd');
+        SaveSendFile;
                if FThreadItem = nil then
-                       GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8fI\97¹]', nil, gmiOK)
+                       GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK)
                else
-                       GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8fI\97¹]', nil, gmiOK);
-               Close;
-                Exit;
-        end;
+                       GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK);
+        Close;
+        Exit;
+    end;
        if State = gdsComplete then begin
                GikoForm.PlaySound('ResEnd');
                SaveSendFile;
                if FThreadItem = nil then
-                       GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8fI\97¹]', nil, gmiOK)
+                       GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK)
                else
-                       GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8fI\97¹]', nil, gmiOK);
+                       GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK);
                Close;
        end else if State = gdsError then begin
                if FThreadItem = nil then
-                       GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8e¸\94s]', nil, gmiNG)
+                       GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK)
                else
-                       GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8e¸\94s]', nil, gmiNG);
+                       GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK);
+
                EditorPage.ActivePage := PreviewTab;
                SetContent(ResponseText, Browser);
        end else if State = gdsAbort then begin
-               GikoForm.AddMessageList(FThreadItem.Title + ' [\92\86\92f]', nil, gmiSAD);
+        GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiSAD);
        end;
 end;
 
@@ -1049,8 +1118,11 @@ begin
                                        (AnsiPos('="../test/subbbs.cgi">', ResponseText) > 0)   or
                                        (AnsiPos(RES2CH_FALSE, ResponseText) > 0)       then
                Result := grtCheck
-       else
-               Result := grtError;
+       else if (AnsiPos('\81E\93\8a\8de\8eÒ\82Í\81A\8cf\8e¦\94Â\89^\89c\8eÒ\82É\91Î\82µ\82Ä\81A\92\98\8dì\8eÒ\90l\8ai\8c \82ð\88ê\90Ø\8ds\8eg\82µ\82È\82¢\82±\82Æ\82ð\8f³\91ø\82µ\82Ü\82·\81B<br>', ResponseText) > 0) or
+                                        (AnsiPos('\81i\92\98\8dì\8c \96@\91æ21\8fð\82È\82¢\82µ\91æ28\8fð\82É\8bK\92è\82³\82ê\82é\8c \97\98\82à\8aÜ\82Þ\81j\82»\82Ì\91¼\82Ì\8c \97\98\82É\82Â\82«\81A', ResponseText) > 0) then
+                Result := grtCookie
+        else
+                Result := grtError;
 end;
 
 
@@ -1138,6 +1210,7 @@ procedure TEditorForm.SendActionExecute(Sender: TObject);
 var
        Board: TBoard;
        rc: Integer;
+        rc2: Integer;
        state : TGikoDownloadState;
        body            : string;
 begin
@@ -1167,7 +1240,7 @@ begin
                end;
 
                SetNameList(NameComboBox.Text, MailComboBox.Text);
-               if KotehanCheckBox.Checked then begin
+               if (KotehanCheckBox.Enabled) and (KotehanCheckBox.Checked) then begin
                        Board.KotehanName := NameComboBox.Text;
                        Board.KotehanMail := MailComboBox.Text;
                end;
@@ -1183,13 +1256,13 @@ begin
                                if state = gdsComplete then begin
                                        GikoForm.PlaySound('ResEnd');
                                        SaveSendFile;
-                                       GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8fI\97¹]', nil, gmiOK);
+                    GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK);
                                        FWork := False;
                                        Close;
                                end else if State = gdsError then begin
-                                       GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8e¸\94s]', nil, gmiNG);
+                    GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureError)), nil, gmiNG);
                                end else if State = gdsAbort then begin
-                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\92\86\92f]', nil, gmiSAD);
+                    GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiNG);
                                end;
                        end else begin
                                // \83\8c\83X
@@ -1199,13 +1272,13 @@ begin
                                if state = gdsComplete then begin
                                        GikoForm.PlaySound('ResEnd');
                                        SaveSendFile;
-                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8fI\97¹]', nil, gmiOK);
+                    GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK);
                     FWork := False;
                                        Close;
                                end else if State = gdsError then begin
-                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8e¸\94s]', nil, gmiNG);
+                    GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmResError)), nil, gmiOK);
                                end else if State = gdsAbort then begin
-                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\92\86\92f]', nil, gmiSAD);
+                    GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK);
                                end;
                        end;
                end else begin
@@ -1222,6 +1295,16 @@ begin
                                                FWork := false;
                                                Exit;
                                        end;
+                                        if rc = IDNO then begin
+                                                rc2 := GikoUtil.MsgBox(Handle,
+                                                                       '\96{\93\96\82É\91\97\90M\82µ\82Ü\82·\82©\81H',
+                                                                       'Sumba24\8cx\8d\90',
+                                                                       MB_YESNO or MB_ICONQUESTION);
+                                                if rc2 = IDNO then begin
+                                                        FWork := False;
+                                                        Exit;
+                                                end;
+                                        end;
                                end;
                                Send(Board.SPID, Board.PON, True);
                        end;
@@ -1472,8 +1555,6 @@ var
        tmp: string;
 begin
        Timer1.Enabled := false; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOff\82É\82·\82é\81i\82±\82ê\82ªON\82Ì\82Æ\82«Samba24\91Î\8dôOn\81j
-       FNow := Now();   //\8c»\8dÝ\8e\9e\8aÔ\82ð\8eæ\93¾\81iTimer\95\\8e¦\97p\82Å\81ACheck\82·\82é\82Æ\82«\82Í\8dÄ\82ÑNow()\82ð\8cÄ\82Ô\81j
-       Timer1.Enabled := true; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOn\82É\82·\82é\81i\82±\82ê\82ªON\82Ì\82Æ\82«Samba24\91Î\8dôOn\81j
        ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
        try
                 //\95\8e\9a\97ñ\82Å\93Ç\82Ý\8eæ\82Á\82Ä\81A\95Ï\8a·\8aÖ\90\94\82ÅTDateTime\82Ö
@@ -1482,6 +1563,8 @@ begin
        finally
                ini.Free;
        end;
+       FNow := Now();   //\8c»\8dÝ\8e\9e\8aÔ\82ð\8eæ\93¾\81iTimer\95\\8e¦\97p\82Å\81ACheck\82·\82é\82Æ\82«\82Í\8dÄ\82ÑNow()\82ð\8cÄ\82Ô\81j
+       Timer1.Enabled := true; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOn\82É\82·\82é\81i\82±\82ê\82ªON\82Ì\82Æ\82«Samba24\91Î\8dôOn\81j
 end;
 //Samba.ini\82É\8dÅ\8fI\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82ð\8f\91\82«\8d\9e\82Þ
 procedure TEditorForm.WriteSambaTime(const AHost: string; ATime: TDateTime);
@@ -1886,7 +1969,7 @@ begin
 
 end;
 
-procedure TEditorForm.CalcCapasityActionExecute(Sender: TObject);
+procedure TEditorForm.CalcCapacityActionExecute(Sender: TObject);
 var
        Board: TBoard;
        body: String;
@@ -1993,4 +2076,34 @@ begin
         GikoSys.OpenBrowser(URL, gbtAuto);
 end;
 
+procedure TEditorForm.SaveNameMailActionExecute(Sender: TObject);
+begin
+       SaveNameMailAction.Checked := not SaveNameMailAction.Checked;
+       KotehanCheckBox.Enabled := SaveNameMailAction.Checked;
+end;
+
+function TEditorForm.LFusianaGet(s: String): Boolean;
+var
+       i: Integer;
+begin
+        i := AnsiPos('fusianasan', s);
+        if (i > 0) then Result := True else Result := False;
+end;
+
+procedure TEditorForm.BeLogInOutEActionExecute(Sender: TObject);
+begin
+    GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
+end;
+
+procedure TEditorForm.BeLogInOutEActionUpdate(Sender: TObject);
+begin
+       if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
+       if (GikoSys.Setting.BeLogin) then BeLogInOutEAction.Checked := true
+        else BeLogInOutEAction.Checked := false;
+       BeLogInOutEAction.Enabled := true
+    end else
+       BeLogInOutEAction.Enabled := false;
+
+end;
+
 end.