OSDN Git Service

ページ遷移で問題があったのを見直した
[newstable/newstable.git] / WebModuleUnit1.pas
index f9bdddc..f27796a 100644 (file)
@@ -12,9 +12,11 @@ type
     writerData: TPageProducer;
     backnumber: TPageProducer;
     mainView: TPageProducer;
+    writerpage: TPageProducer;
+    upload: TPageProducer;
+    mags: TPageProducer;
     procedure WebModule1DefaultHandlerAction(Sender: TObject;
       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
-    procedure WebModuleCreate(Sender: TObject);
     procedure WebModule1writeMagAction(Sender: TObject; Request: TWebRequest;
       Response: TWebResponse; var Handled: Boolean);
     procedure WebModule1selectionAction(Sender: TObject; Request: TWebRequest;
@@ -37,6 +39,16 @@ type
       Response: TWebResponse; var Handled: Boolean);
     procedure WebModule1readerTopAction(Sender: TObject; Request: TWebRequest;
       Response: TWebResponse; var Handled: Boolean);
+    procedure WebModule1login2Action(Sender: TObject; Request: TWebRequest;
+      Response: TWebResponse; var Handled: Boolean);
+    procedure WebModule1writerpageAction(Sender: TObject; Request: TWebRequest;
+      Response: TWebResponse; var Handled: Boolean);
+    procedure WebModule1uploadAction(Sender: TObject; Request: TWebRequest;
+      Response: TWebResponse; var Handled: Boolean);
+    procedure uploadHTMLTag(Sender: TObject; Tag: TTag; const TagString: string;
+      TagParams: TStrings; var ReplaceText: string);
+    procedure magsHTMLTag(Sender: TObject; Tag: TTag; const TagString: string;
+      TagParams: TStrings; var ReplaceText: string);
   private
     { private \90é\8c¾ }
     writerId: integer;
@@ -50,7 +62,7 @@ var
 
 implementation
 
-uses SynMustache, SynCommons, System.JSON, Unit1, System.NetEncoding;
+uses SynMustache, SynCommons, System.JSON, Unit1, System.NetEncoding, System.Zip, ReqMulti;
 
 { %CLASSGROUP 'Vcl.Controls.TControl' }
 
@@ -59,20 +71,34 @@ uses SynMustache, SynCommons, System.JSON, Unit1, System.NetEncoding;
 var
   mustache: TSynMustache;
 
+procedure TWebModule1.magsHTMLTag(Sender: TObject; Tag: TTag;
+  const TagString: string; TagParams: TStrings; var ReplaceText: string);
+begin
+  if TagString = 'main' then
+    ReplaceText:=backnumber.Content;
+end;
+
+procedure TWebModule1.uploadHTMLTag(Sender: TObject; Tag: TTag;
+  const TagString: string; TagParams: TStrings; var ReplaceText: string);
+begin
+  if TagString = 'main' then
+    ReplaceText:=backnumber.Content;
+end;
+
 procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
 var
   data: TJSONObject;
 begin
-  DataModule1.magListAll(data);
+  DataModule1.magListAll(readerId, data);
   if readerId = 0 then
-    data.AddPair('id',TJSONFalse.Create)
+    data.AddPair('id', TJSONFalse.Create)
   else
-    data.AddPair('id',TJSONTrue.Create);
+    data.AddPair('id', TJSONTrue.Create);
   if Request.QueryFields.Values['op'] <> '' then
-    data.AddPair('comment','2\8fd\93o\98^\82Å\82·\81B\93o\98^\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B')
+    data.AddPair('comment', '2\8fd\93o\98^\82Å\82·\81B\93o\98^\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B')
   else
-    data.AddPair('comment',TJSONFalse.Create);
+    data.AddPair('comment', TJSONFalse.Create);
   mustache := TSynMustache.Parse(top.Content);
   Response.ContentType := 'text/html;charset=utf-8';
   Response.Content := mustache.RenderJSON(data.ToJSON);
@@ -84,32 +110,53 @@ procedure TWebModule1.WebModule1detailAction(Sender: TObject;
 var
   data: TJSONObject;
 begin
-  DataModule1.backnumber(Request.QueryFields.Values['id'].ToInteger, data);
+  DataModule1.backnumber(Request.QueryFields.Values['id'], data);
   Response.ContentType := 'text/html;charset=utf-8';
-  mustache := TSynMustache.Parse(backnumber.Content);
+  mustache := TSynMustache.Parse(mags.Content);
   Response.Content := mustache.RenderJSON(data.ToString);
 end;
 
 procedure TWebModule1.WebModule1imageAction(Sender: TObject;
   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
 var
-  id: integer;
+  magid,newsid: integer;
+  str: string;
   data: TJSONObject;
   mem: TMemoryStream;
   raw: TBytes;
 begin
+  data := TJSONObject.Create;
+  magid:=Request.QueryFields.Values['id'].ToInteger;
+  newsid:=Request.QueryFields.Values['num'].ToInteger;
+  str:=data.Values['data'].Value;
+  DataModule1.imageView(magid, newsid,data);
+  mem := TMemoryStream.Create;
+  if data.Values['encode'].Value = 'true' then
+  begin
+    raw := TNetEncoding.Base64.DecodeStringToBytes(str);
+    mem.WriteBuffer(raw, Length(raw));
+    Finalize(raw);
+  end
+  else
+    mem.WriteBuffer(@str,Length(str));
+  mem.Position := 0;
+  Response.ContentType := 'jpeg/image';
+  Response.ContentStream := mem;
+end;
+
+procedure TWebModule1.WebModule1login2Action(Sender: TObject;
+  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
+var
+  data: TJSONObject;
+begin
   data:=TJSONObject.Create;
-  data.AddPair('id',TJSONNumber.Create(Request.QueryFields.Values['id']));
-  data.AddPair('number',TJSONNumber.Create(Request.QueryFields.Values['num']));
-  id :=DataModule1.imageId(data);
-  DataModule1.imageView(id,data);
-  mem:=TMemoryStream.Create;
-  raw:=TNetEncoding.Base64.DecodeStringToBytes(data.Values['data'].Value);
-  mem.WriteBuffer(raw,Length(raw));
-  mem.Position:=0;
-  Finalize(raw);
-  Response.ContentType:='jpeg/image';
-  Response.ContentStream:=mem;
+  data.AddPair('mail',Request.ContentFields.Values['mail']);
+  data.AddPair('password',Request.ContentFields.Values['password']);
+  writerId:=DataModule1.loginWriter(data);
+  if writerId = 0 then
+    Handled:=false
+  else
+    Response.SendRedirect('/writer/top');
 end;
 
 procedure TWebModule1.WebModule1loginAction(Sender: TObject;
@@ -117,23 +164,23 @@ procedure TWebModule1.WebModule1loginAction(Sender: TObject;
 var
   data: TJSONObject;
 begin
-  data:=TJSONObject.Create;
+  data := TJSONObject.Create;
   with Request.ContentFields do
   begin
-    data.AddPair('mail',Values['mail']);
-    data.AddPair('password',Values['password']);
+    data.AddPair('mail', Values['mail']);
+    data.AddPair('password', Values['password']);
   end;
-  readerId:=DataModule1.loginReader(data);
+  readerId := DataModule1.loginReader(data);
   data.Free;
-  Handled:=false;
+  Handled := false;
 end;
 
 procedure TWebModule1.WebModule1logoutAction(Sender: TObject;
   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
 begin
-  readerId:=0;
-  writerId:=0;
-  Handled:=false;
+  readerId := 0;
+  writerId := 0;
+  Handled := false;
 end;
 
 procedure TWebModule1.WebModule1mainViewAction(Sender: TObject;
@@ -141,9 +188,9 @@ procedure TWebModule1.WebModule1mainViewAction(Sender: TObject;
 var
   data: TJSONObject;
 begin
-  Response.ContentType:='text/html;charset=utf-8';
-  DataModule1.mainView(readerId,data);
-  mustache:=TSynMustache.Parse(mainView.Content);
+  Response.ContentType := 'text/html;charset=utf-8';
+  DataModule1.mainView(readerId, data);
+  mustache := TSynMustache.Parse(mainView.Content);
   Response.Content := mustache.RenderJSON(data.ToJSON);
 end;
 
@@ -156,7 +203,7 @@ begin
   with Request.ContentFields do
   begin
     data := TJSONObject.Create;
-    data.AddPair('id',TJSONNumber.Create(readerId));
+    data.AddPair('id', TJSONNumber.Create(readerId));
     data.AddPair('name', Values['reader']);
     data.AddPair('mail', Values['mail']);
     data.AddPair('password', Values['password']);
@@ -173,14 +220,17 @@ begin
         = true then
       begin
         data.RemovePair('password');
-        data.AddPair('password',Request.ContentFields.Values['new']);
+        data.AddPair('password', Request.ContentFields.Values['new']);
         DataModule1.updateReaderId(data);
       end;
     mtPost:
-      if DataModule1.createReaderId(data) = false then
       begin
-        Response.SendRedirect('/top?op=1#message');
-        Exit;
+        readerId := DataModule1.createReaderId(data);
+        if readerId = 0 then
+        begin
+          Response.SendRedirect('/top?op=1#message');
+          Exit;
+        end;
       end;
     mtDelete:
       with Request.ContentFields do
@@ -194,8 +244,8 @@ begin
   data.Free;
   Response.ContentType := 'text/html;charset=utf-8';
   DataModule1.userView(readerId, data);
-  DataModule1.readerData(readerId,d);
-  data.AddPair('reader',d);
+  DataModule1.readerData(readerId, d);
+  data.AddPair('reader', d);
   mustache := TSynMustache.Parse(readerTop.Content);
   Response.Content := mustache.RenderJSON(data.ToJSON);
 end;
@@ -205,10 +255,10 @@ procedure TWebModule1.WebModule1readerTopAction(Sender: TObject;
 var
   data: TJSONObject;
 begin
-  Response.ContentType:='text/html;charset=utf-8';
-  DataModule1.getView(readerId,data);
-  mustache:=TSynMustache.Parse(mainView.Content);
-  Response.Content:=mustache.RenderJSON(data.ToJSON);
+  Response.ContentType := 'text/html;charset=utf-8';
+  DataModule1.getView(readerId, data);
+  mustache := TSynMustache.Parse(mainView.Content);
+  Response.Content := mustache.RenderJSON(data.ToJSON);
 end;
 
 procedure TWebModule1.WebModule1selectionAction(Sender: TObject;
@@ -218,13 +268,37 @@ var
 begin
   id := DataModule1.magid(Request.ContentFields.Values['name']);
   case Request.MethodType of
-    mtGet:
-      Handled := false;
     mtPost:
       DataModule1.magIdOn(readerId, id);
     mtDelete:
       DataModule1.magIdOff(readerId, id);
   end;
+  Handled := false;
+end;
+
+procedure TWebModule1.WebModule1uploadAction(Sender: TObject;
+  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
+var
+  num: string;
+
+  stream, mem: TStream;
+  data: TJSONObject;
+begin
+  num:=Request.QueryFields.Values['num'];
+  if Request.MethodType = mtPost then
+  begin
+    stream:=Request.Files[0].Stream;
+    mem := TMemoryStream.Create;
+    mem.CopyFrom(stream,stream.Size);
+    mem.Position:=0;
+    DataModule1.zipFile(writerId,num,mem);
+    mem.Free;
+  end;
+  Response.ContentType:='text/html;charset=utf-8';
+  data:=TJSONObject.Create;
+  DataModule1.backNumber(num,data);
+  mustache:=TSynMustAche.Parse(upload.Content);
+  Response.Content:=mustache.RenderJSON(data.ToJSON);
 end;
 
 procedure TWebModule1.WebModule1writeMagAction(Sender: TObject;
@@ -262,17 +336,25 @@ begin
       end;
     mtPost:
       if Request.ContentFields.Values['_method'] = 'delete' then
-        DataModule1.deleteWriter(writerId)
+      begin
+        DataModule1.deleteWriter(writerId);
+        Response.SendRedirect('/writer/page');
+        Exit;
+      end
       else if DataModule1.existsMail(data.Values['mail'].Value) = false then
       begin
         data.AddPair('name', Request.ContentFields.Values['writer']);
         if Request.ContentFields.Values['_method'] = 'put' then
           DataModule1.updateWriterId(writerId, data)
         else
-          DataModule1.createWriterId(data);
+          writerId:=DataModule1.createWriterId(data);         ///var param?
       end
       else
-      {\83\81\81[\83\8b\83A\83h\83\8c\83X\82Ì2\8fd\93o\98^};
+      begin
+        { \83\81\81[\83\8b\83A\83h\83\8c\83X\82Ì2\8fd\93o\98^ };
+        Response.SendRedirect('/writer/page');
+        Exit;
+      end;
     mtPut:
       DataModule1.updateWriterId(writerId, data);
     mtDelete:
@@ -287,11 +369,31 @@ begin
   data.Free;
 end;
 
+procedure TWebModule1.WebModule1writerpageAction(Sender: TObject;
+  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
+var
+  data: TJSONObject;
+begin
+  Response.ContentType:='text/html;charset=utf-8';
+  data:=TJSONObject.Create;
+  if writerId = 0 then
+    data.AddPair('login',TJSONFalse.Create)
+  else
+    data.AddPair('login',TJSONTrue.Create);
+  mustache:=TSynMustAche.Parse(writerpage.Content);
+  Response.Content:=mustache.RenderJSON(data.ToJSON);
+end;
+
 procedure TWebModule1.WebModule1writerTopAction(Sender: TObject;
   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
 var
   data: TJSONObject;
 begin
+  if writerId = 0 then
+  begin
+    Handled:=false;
+    Exit;
+  end;
   data := TJSONObject.Create;
   DataModule1.magazines(writerId, data);
   Response.ContentType := 'text/html;charset=utf-8';
@@ -300,9 +402,4 @@ begin
   data.Free;
 end;
 
-procedure TWebModule1.WebModuleCreate(Sender: TObject);
-begin
-  writerId := 1;
-end;
-
 end.