5 uses System.SysUtils, System.Classes, Web.HTTPApp, Web.HTTPProd;
8 TWebModule1 = class(TWebModule)
9 readerTop: TPageProducer;
11 writerTop: TPageProducer;
12 writerData: TPageProducer;
13 backnumber: TPageProducer;
14 mainView: TPageProducer;
15 writerpage: TPageProducer;
16 upload: TPageProducer;
18 procedure WebModule1DefaultHandlerAction(Sender: TObject;
19 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
20 procedure WebModule1writeMagAction(Sender: TObject; Request: TWebRequest;
21 Response: TWebResponse; var Handled: Boolean);
22 procedure WebModule1selectionAction(Sender: TObject; Request: TWebRequest;
23 Response: TWebResponse; var Handled: Boolean);
24 procedure WebModule1writerDataAction(Sender: TObject; Request: TWebRequest;
25 Response: TWebResponse; var Handled: Boolean);
26 procedure WebModule1readerDataAction(Sender: TObject; Request: TWebRequest;
27 Response: TWebResponse; var Handled: Boolean);
28 procedure WebModule1detailAction(Sender: TObject; Request: TWebRequest;
29 Response: TWebResponse; var Handled: Boolean);
30 procedure WebModule1writerTopAction(Sender: TObject; Request: TWebRequest;
31 Response: TWebResponse; var Handled: Boolean);
32 procedure WebModule1loginAction(Sender: TObject; Request: TWebRequest;
33 Response: TWebResponse; var Handled: Boolean);
34 procedure WebModule1logoutAction(Sender: TObject; Request: TWebRequest;
35 Response: TWebResponse; var Handled: Boolean);
36 procedure WebModule1mainViewAction(Sender: TObject; Request: TWebRequest;
37 Response: TWebResponse; var Handled: Boolean);
38 procedure WebModule1imageAction(Sender: TObject; Request: TWebRequest;
39 Response: TWebResponse; var Handled: Boolean);
40 procedure WebModule1readerTopAction(Sender: TObject; Request: TWebRequest;
41 Response: TWebResponse; var Handled: Boolean);
42 procedure WebModule1login2Action(Sender: TObject; Request: TWebRequest;
43 Response: TWebResponse; var Handled: Boolean);
44 procedure WebModule1writerpageAction(Sender: TObject; Request: TWebRequest;
45 Response: TWebResponse; var Handled: Boolean);
46 procedure WebModule1uploadAction(Sender: TObject; Request: TWebRequest;
47 Response: TWebResponse; var Handled: Boolean);
48 procedure uploadHTMLTag(Sender: TObject; Tag: TTag; const TagString: string;
49 TagParams: TStrings; var ReplaceText: string);
50 procedure magsHTMLTag(Sender: TObject; Tag: TTag; const TagString: string;
51 TagParams: TStrings; var ReplaceText: string);
61 WebModuleClass: TComponentClass = TWebModule1;
65 uses SynMustache, SynCommons, System.JSON, Unit1, System.NetEncoding, System.Zip, ReqMulti;
67 { %CLASSGROUP 'Vcl.Controls.TControl' }
72 mustache: TSynMustache;
74 procedure TWebModule1.magsHTMLTag(Sender: TObject; Tag: TTag;
75 const TagString: string; TagParams: TStrings; var ReplaceText: string);
77 if TagString = 'main' then
78 ReplaceText:=backnumber.Content;
81 procedure TWebModule1.uploadHTMLTag(Sender: TObject; Tag: TTag;
82 const TagString: string; TagParams: TStrings; var ReplaceText: string);
84 if TagString = 'main' then
85 ReplaceText:=backnumber.Content;
88 procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
89 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
93 DataModule1.magListAll(readerId, data);
95 data.AddPair('id', TJSONFalse.Create)
97 data.AddPair('id', TJSONTrue.Create);
98 if Request.QueryFields.Values['op'] <> '' then
99 data.AddPair('comment', '2
\8fd
\93o
\98^
\82Å
\82·
\81B
\93o
\98^
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½
\81B')
101 data.AddPair('comment', TJSONFalse.Create);
102 mustache := TSynMustache.Parse(top.Content);
103 Response.ContentType := 'text/html;charset=utf-8';
104 Response.Content := mustache.RenderJSON(data.ToJSON);
108 procedure TWebModule1.WebModule1detailAction(Sender: TObject;
109 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
113 DataModule1.backnumber(Request.QueryFields.Values['id'], data);
114 Response.ContentType := 'text/html;charset=utf-8';
115 mustache := TSynMustache.Parse(mags.Content);
116 Response.Content := mustache.RenderJSON(data.ToString);
119 procedure TWebModule1.WebModule1imageAction(Sender: TObject;
120 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
122 magid,newsid: integer;
128 data := TJSONObject.Create;
129 magid:=Request.QueryFields.Values['id'].ToInteger;
130 newsid:=Request.QueryFields.Values['num'].ToInteger;
131 str:=data.Values['data'].Value;
132 DataModule1.imageView(magid, newsid,data);
133 mem := TMemoryStream.Create;
134 if data.Values['encode'].Value = 'true' then
136 raw := TNetEncoding.Base64.DecodeStringToBytes(str);
137 mem.WriteBuffer(raw, Length(raw));
141 mem.WriteBuffer(@str,Length(str));
143 Response.ContentType := 'jpeg/image';
144 Response.ContentStream := mem;
147 procedure TWebModule1.WebModule1login2Action(Sender: TObject;
148 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
152 data:=TJSONObject.Create;
153 data.AddPair('mail',Request.ContentFields.Values['mail']);
154 data.AddPair('password',Request.ContentFields.Values['password']);
155 writerId:=DataModule1.loginWriter(data);
156 Response.SendRedirect('/writer/top');
159 procedure TWebModule1.WebModule1loginAction(Sender: TObject;
160 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
164 data := TJSONObject.Create;
165 with Request.ContentFields do
167 data.AddPair('mail', Values['mail']);
168 data.AddPair('password', Values['password']);
170 readerId := DataModule1.loginReader(data);
175 procedure TWebModule1.WebModule1logoutAction(Sender: TObject;
176 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
183 procedure TWebModule1.WebModule1mainViewAction(Sender: TObject;
184 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
188 Response.ContentType := 'text/html;charset=utf-8';
189 DataModule1.mainView(readerId, data);
190 mustache := TSynMustache.Parse(mainView.Content);
191 Response.Content := mustache.RenderJSON(data.ToJSON);
194 procedure TWebModule1.WebModule1readerDataAction(Sender: TObject;
195 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
197 data, d: TJSONObject;
200 with Request.ContentFields do
202 data := TJSONObject.Create;
203 data.AddPair('id', TJSONNumber.Create(readerId));
204 data.AddPair('name', Values['reader']);
205 data.AddPair('mail', Values['mail']);
206 data.AddPair('password', Values['password']);
208 case Request.MethodType of
216 if DataModule1.checkUserPassword(readerId, data.Values['password'].Value)
219 data.RemovePair('password');
220 data.AddPair('password', Request.ContentFields.Values['new']);
221 DataModule1.updateReaderId(data);
225 readerId := DataModule1.createReaderId(data);
228 Response.SendRedirect('/top?op=1#message');
233 with Request.ContentFields do
235 num := TJSONNumber.Create(readerId);
236 data.AddPair('id', num);
237 DataModule1.deleteReaderId(data);
242 Response.ContentType := 'text/html;charset=utf-8';
243 DataModule1.userView(readerId, data);
244 DataModule1.readerData(readerId, d);
245 data.AddPair('reader', d);
246 mustache := TSynMustache.Parse(readerTop.Content);
247 Response.Content := mustache.RenderJSON(data.ToJSON);
250 procedure TWebModule1.WebModule1readerTopAction(Sender: TObject;
251 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
255 Response.ContentType := 'text/html;charset=utf-8';
256 DataModule1.getView(readerId, data);
257 mustache := TSynMustache.Parse(mainView.Content);
258 Response.Content := mustache.RenderJSON(data.ToJSON);
261 procedure TWebModule1.WebModule1selectionAction(Sender: TObject;
262 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
266 id := DataModule1.magid(Request.ContentFields.Values['name']);
267 case Request.MethodType of
269 DataModule1.magIdOn(readerId, id);
271 DataModule1.magIdOff(readerId, id);
276 procedure TWebModule1.WebModule1uploadAction(Sender: TObject;
277 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
281 stream, mem: TStream;
284 num:=Request.QueryFields.Values['num'];
285 if Request.MethodType = mtPost then
287 stream:=Request.Files[0].Stream;
288 mem := TMemoryStream.Create;
289 mem.CopyFrom(stream,stream.Size);
291 DataModule1.zipFile(writerId,num,mem);
294 Response.ContentType:='text/html;charset=utf-8';
295 data:=TJSONObject.Create;
296 DataModule1.backNumber(num,data);
297 mustache:=TSynMustAche.Parse(upload.Content);
298 Response.Content:=mustache.RenderJSON(data.ToJSON);
301 procedure TWebModule1.WebModule1writeMagAction(Sender: TObject;
302 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
306 data := TJSONObject.Create;
307 data.AddPair('magName', Request.ContentFields.Values['name']);
308 data.AddPair('comment', Request.ContentFields.Values['comment']);
309 data.AddPair('day', Request.ContentFields.Values['day']);
310 data.AddPair('enable', TJSONTrue.Create);
311 DataModule1.createMagId(writerId, data);
313 Response.SendRedirect('/writer/top');
316 procedure TWebModule1.WebModule1writerDataAction(Sender: TObject;
317 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
321 with Request.ContentFields do
323 data := TJSONObject.Create;
324 data.AddPair('mail', Values['mail']);
325 data.AddPair('password', Values['password']);
327 case Request.MethodType of
335 if Request.ContentFields.Values['_method'] = 'delete' then
336 DataModule1.deleteWriter(writerId)
337 else if DataModule1.existsMail(data.Values['mail'].Value) = false then
339 data.AddPair('name', Request.ContentFields.Values['writer']);
340 if Request.ContentFields.Values['_method'] = 'put' then
341 DataModule1.updateWriterId(writerId, data)
343 writerId:=DataModule1.createWriterId(data); ///var param?
346 {
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
\82Ì2
\8fd
\93o
\98^ };
348 DataModule1.updateWriterId(writerId, data);
350 DataModule1.deleteWriter(writerId);
353 data := TJSONObject.Create;
354 DataModule1.custData(writerId, data);
355 Response.ContentType := 'text/html;charset=utf-8';
356 mustache := TSynMustache.Parse(writerData.Content);
357 Response.Content := mustache.RenderJSON(data.ToJSON);
361 procedure TWebModule1.WebModule1writerpageAction(Sender: TObject;
362 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
366 Response.ContentType:='text/html;charset=utf-8';
367 data:=TJSONObject.Create;
369 data.AddPair('login',TJSONFalse.Create)
371 data.AddPair('login',TJSONTrue.Create);
372 mustache:=TSynMustAche.Parse(writerpage.Content);
373 Response.Content:=mustache.RenderJSON(data.ToJSON);
376 procedure TWebModule1.WebModule1writerTopAction(Sender: TObject;
377 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
386 data := TJSONObject.Create;
387 DataModule1.magazines(writerId, data);
388 Response.ContentType := 'text/html;charset=utf-8';
389 mustache := TSynMustache.Parse(writerTop.Content);
390 Response.Content := mustache.RenderJSON(data.ToJSON);