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,
68 { %CLASSGROUP 'Vcl.Controls.TControl' }
73 mustache: TSynMustache;
75 procedure TWebModule1.magsHTMLTag(Sender: TObject; Tag: TTag;
76 const TagString: string; TagParams: TStrings; var ReplaceText: string);
78 if TagString = 'main' then
79 ReplaceText := backnumber.Content;
82 procedure TWebModule1.uploadHTMLTag(Sender: TObject; Tag: TTag;
83 const TagString: string; TagParams: TStrings; var ReplaceText: string);
85 if TagString = 'main' then
86 ReplaceText := backnumber.Content;
89 procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
90 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
94 DataModule1.magListAll(readerId, data);
96 data.AddPair('id', TJSONFalse.Create)
98 data.AddPair('id', TJSONTrue.Create);
99 if Request.QueryFields.Values['op'] <> '' then
100 data.AddPair('comment', '2
\8fd
\93o
\98^
\82Å
\82·
\81B
\93o
\98^
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½
\81B')
102 data.AddPair('comment', TJSONFalse.Create);
103 mustache := TSynMustache.Parse(top.Content);
104 Response.ContentType := 'text/html;charset=utf-8';
105 Response.Content := mustache.RenderJSON(data.ToJSON);
109 procedure TWebModule1.WebModule1detailAction(Sender: TObject;
110 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
114 DataModule1.backnumber(Request.QueryFields.Values['id'], data);
115 Response.ContentType := 'text/html;charset=utf-8';
116 mustache := TSynMustache.Parse(mags.Content);
117 Response.Content := mustache.RenderJSON(data.ToString);
120 procedure TWebModule1.WebModule1imageAction(Sender: TObject;
121 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
123 magnum, name: string;
130 data := TJSONObject.Create;
131 newsid:= Request.QueryFields.Values['id'].ToInteger;
132 magnum := Request.QueryFields.Values['num'];
133 name:=Request.QueryFields.Values['name'];
134 DataModule1.imageView(magNum, name, newsid, data);
135 str:=data.Values['data'].Value;
136 mem := TMemoryStream.Create;
137 if data.Values['encode'].Value = 'true' then
139 raw := TNetEncoding.Base64.DecodeStringToBytes(str);
140 mem.WriteBuffer(raw, Length(raw));
144 mem.WriteBuffer(PChar(str)^, SizeOf(Char)*Length(str));
146 Response.ContentType := 'jpeg/image';
147 Response.ContentStream := mem;
150 procedure TWebModule1.WebModule1login2Action(Sender: TObject;
151 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
155 data := TJSONObject.Create;
156 data.AddPair('mail', Request.ContentFields.Values['mail']);
157 data.AddPair('password', Request.ContentFields.Values['password']);
158 writerId := DataModule1.loginWriter(data);
160 Response.SendRedirect('/writer/page')
162 Response.SendRedirect('/writer/top');
165 procedure TWebModule1.WebModule1loginAction(Sender: TObject;
166 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
170 data := TJSONObject.Create;
171 with Request.ContentFields do
173 data.AddPair('mail', Values['mail']);
174 data.AddPair('password', Values['password']);
176 readerId := DataModule1.loginReader(data);
181 procedure TWebModule1.WebModule1logoutAction(Sender: TObject;
182 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
189 procedure TWebModule1.WebModule1mainViewAction(Sender: TObject;
190 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
194 Response.ContentType := 'text/html;charset=utf-8';
195 DataModule1.mainView(readerId, data);
196 mustache := TSynMustache.Parse(mainView.Content);
197 Response.Content := mustache.RenderJSON(data.ToJSON);
200 procedure TWebModule1.WebModule1readerDataAction(Sender: TObject;
201 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
203 data, d: TJSONObject;
206 with Request.ContentFields do
208 data := TJSONObject.Create;
209 data.AddPair('id', TJSONNumber.Create(readerId));
210 data.AddPair('name', Values['reader']);
211 data.AddPair('mail', Values['mail']);
212 data.AddPair('password', Values['password']);
214 case Request.MethodType of
222 if DataModule1.checkUserPassword(readerId, data.Values['password'].Value)
225 data.RemovePair('password');
226 data.AddPair('password', Request.ContentFields.Values['new']);
227 DataModule1.updateReaderId(data);
231 readerId := DataModule1.createReaderId(data);
234 Response.SendRedirect('/top?op=1#message');
239 with Request.ContentFields do
241 num := TJSONNumber.Create(readerId);
242 data.AddPair('id', num);
243 DataModule1.deleteReaderId(data);
248 Response.ContentType := 'text/html;charset=utf-8';
249 DataModule1.userView(readerId, data);
250 DataModule1.readerData(readerId, d);
251 data.AddPair('reader', d);
252 mustache := TSynMustache.Parse(readerTop.Content);
253 Response.Content := mustache.RenderJSON(data.ToJSON);
256 procedure TWebModule1.WebModule1readerTopAction(Sender: TObject;
257 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
261 Response.ContentType := 'text/html;charset=utf-8';
262 DataModule1.mainView(readerId, data);
263 mustache := TSynMustache.Parse(mainView.Content);
264 Response.Content := mustache.RenderJSON(data.ToJSON);
267 procedure TWebModule1.WebModule1selectionAction(Sender: TObject;
268 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
272 num := Request.ContentFields.Values['name'];
273 case Request.MethodType of
275 DataModule1.magIdOn(readerId, num);
277 DataModule1.magIdOff(readerId, num);
282 procedure TWebModule1.WebModule1uploadAction(Sender: TObject;
283 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
286 stream, mem: TStream;
287 sub, data: TJSONObject;
289 num := Request.QueryFields.Values['num'];
290 if Request.MethodType = mtPost then
292 stream := Request.Files[0].stream;
293 mem := TMemoryStream.Create;
294 mem.CopyFrom(stream, stream.Size);
296 DataModule1.zipFile(writerId, num, mem);
299 Response.ContentType := 'text/html;charset=utf-8';
300 DataModule1.backnumber(num, data);
301 mustache := TSynMustache.Parse(upload.Content);
302 Response.Content := mustache.RenderJSON(data.ToJSON);
305 procedure TWebModule1.WebModule1writeMagAction(Sender: TObject;
306 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
310 data := TJSONObject.Create;
311 data.AddPair('magName', Request.ContentFields.Values['name']);
312 data.AddPair('comment', Request.ContentFields.Values['comment']);
313 data.AddPair('day', Request.ContentFields.Values['day']);
314 data.AddPair('enable', TJSONTrue.Create);
315 DataModule1.createMagId(writerId, data);
317 Response.SendRedirect('/writer/top');
320 procedure TWebModule1.WebModule1writerDataAction(Sender: TObject;
321 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
325 with Request.ContentFields do
327 data := TJSONObject.Create;
328 data.AddPair('mail', Values['mail']);
329 data.AddPair('password', Values['password']);
331 case Request.MethodType of
339 if Request.ContentFields.Values['_method'] = 'delete' then
341 DataModule1.deleteWriter(writerId);
342 Response.SendRedirect('/writer/page');
345 else if DataModule1.existsMail(data.Values['mail'].Value) = false then
347 data.AddPair('name', Request.ContentFields.Values['writer']);
348 if Request.ContentFields.Values['_method'] = 'put' then
349 DataModule1.updateWriterId(writerId, data)
351 writerId := DataModule1.createWriterId(data);
356 {
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
\82Ì2
\8fd
\93o
\98^ };
357 Response.SendRedirect('/writer/page');
361 DataModule1.updateWriterId(writerId, data);
363 DataModule1.deleteWriter(writerId);
366 data := TJSONObject.Create;
367 DataModule1.custData(writerId, data);
368 Response.ContentType := 'text/html;charset=utf-8';
369 mustache := TSynMustache.Parse(writerData.Content);
370 Response.Content := mustache.RenderJSON(data.ToJSON);
374 procedure TWebModule1.WebModule1writerpageAction(Sender: TObject;
375 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
379 Response.ContentType := 'text/html;charset=utf-8';
380 data := TJSONObject.Create;
382 data.AddPair('login', TJSONFalse.Create)
384 data.AddPair('login', TJSONTrue.Create);
385 mustache := TSynMustache.Parse(writerpage.Content);
386 Response.Content := mustache.RenderJSON(data.ToJSON);
389 procedure TWebModule1.WebModule1writerTopAction(Sender: TObject;
390 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
399 data := TJSONObject.Create;
400 DataModule1.magazines(writerId, data);
401 Response.ContentType := 'text/html;charset=utf-8';
402 mustache := TSynMustache.Parse(writerTop.Content);
403 Response.Content := mustache.RenderJSON(data.ToJSON);