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;
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);
127 data := TJSONObject.Create;
128 data.AddPair('id', TJSONNumber.Create(Request.QueryFields.Values['id']));
129 data.AddPair('number', TJSONNumber.Create(Request.QueryFields.Values['num']));
130 id := DataModule1.imageId(data);
131 DataModule1.imageView(id, data);
132 mem := TMemoryStream.Create;
133 raw := TNetEncoding.Base64.DecodeStringToBytes(data.Values['data'].Value);
134 mem.WriteBuffer(raw, Length(raw));
137 Response.ContentType := 'jpeg/image';
138 Response.ContentStream := mem;
141 procedure TWebModule1.WebModule1login2Action(Sender: TObject;
142 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
146 data:=TJSONObject.Create;
147 data.AddPair('mail',Request.ContentFields.Values['mail']);
148 data.AddPair('password',Request.ContentFields.Values['password']);
149 writerId:=DataModule1.loginWriter(data);
150 Response.SendRedirect('/writer/page');
153 procedure TWebModule1.WebModule1loginAction(Sender: TObject;
154 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
158 data := TJSONObject.Create;
159 with Request.ContentFields do
161 data.AddPair('mail', Values['mail']);
162 data.AddPair('password', Values['password']);
164 readerId := DataModule1.loginReader(data);
169 procedure TWebModule1.WebModule1logoutAction(Sender: TObject;
170 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
177 procedure TWebModule1.WebModule1mainViewAction(Sender: TObject;
178 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
182 Response.ContentType := 'text/html;charset=utf-8';
183 DataModule1.mainView(readerId, data);
184 mustache := TSynMustache.Parse(mainView.Content);
185 Response.Content := mustache.RenderJSON(data.ToJSON);
188 procedure TWebModule1.WebModule1readerDataAction(Sender: TObject;
189 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
191 data, d: TJSONObject;
194 with Request.ContentFields do
196 data := TJSONObject.Create;
197 data.AddPair('id', TJSONNumber.Create(readerId));
198 data.AddPair('name', Values['reader']);
199 data.AddPair('mail', Values['mail']);
200 data.AddPair('password', Values['password']);
202 case Request.MethodType of
210 if DataModule1.checkUserPassword(readerId, data.Values['password'].Value)
213 data.RemovePair('password');
214 data.AddPair('password', Request.ContentFields.Values['new']);
215 DataModule1.updateReaderId(data);
219 readerId := DataModule1.createReaderId(data);
222 Response.SendRedirect('/top?op=1#message');
227 with Request.ContentFields do
229 num := TJSONNumber.Create(readerId);
230 data.AddPair('id', num);
231 DataModule1.deleteReaderId(data);
236 Response.ContentType := 'text/html;charset=utf-8';
237 DataModule1.userView(readerId, data);
238 DataModule1.readerData(readerId, d);
239 data.AddPair('reader', d);
240 mustache := TSynMustache.Parse(readerTop.Content);
241 Response.Content := mustache.RenderJSON(data.ToJSON);
244 procedure TWebModule1.WebModule1readerTopAction(Sender: TObject;
245 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
249 Response.ContentType := 'text/html;charset=utf-8';
250 DataModule1.getView(readerId, data);
251 mustache := TSynMustache.Parse(mainView.Content);
252 Response.Content := mustache.RenderJSON(data.ToJSON);
255 procedure TWebModule1.WebModule1selectionAction(Sender: TObject;
256 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
260 id := DataModule1.magid(Request.ContentFields.Values['name']);
261 case Request.MethodType of
263 DataModule1.magIdOn(readerId, id);
265 DataModule1.magIdOff(readerId, id);
270 procedure TWebModule1.WebModule1uploadAction(Sender: TObject;
271 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
276 if Request.MethodType = mtPost then
278 num:=Request.ContentFields.Values['magNum'];
280 Response.ContentType:='text/html;charset=utf-8';
281 data:=TJSONObject.Create;
282 DataModule1.backNumber(num,data);
283 mustache:=TSynMustAche.Parse(upload.Content);
284 Response.Content:=mustache.RenderJSON(data.ToJSON);
287 procedure TWebModule1.WebModule1writeMagAction(Sender: TObject;
288 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
292 data := TJSONObject.Create;
293 data.AddPair('magName', Request.ContentFields.Values['name']);
294 data.AddPair('comment', Request.ContentFields.Values['comment']);
295 data.AddPair('day', Request.ContentFields.Values['day']);
296 data.AddPair('enable', TJSONTrue.Create);
297 DataModule1.createMagId(writerId, data);
299 Response.SendRedirect('/writer/top');
302 procedure TWebModule1.WebModule1writerDataAction(Sender: TObject;
303 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
307 with Request.ContentFields do
309 data := TJSONObject.Create;
310 data.AddPair('mail', Values['mail']);
311 data.AddPair('password', Values['password']);
313 case Request.MethodType of
321 if Request.ContentFields.Values['_method'] = 'delete' then
322 DataModule1.deleteWriter(writerId)
323 else if DataModule1.existsMail(data.Values['mail'].Value) = false then
325 data.AddPair('name', Request.ContentFields.Values['writer']);
326 if Request.ContentFields.Values['_method'] = 'put' then
327 DataModule1.updateWriterId(writerId, data)
329 DataModule1.createWriterId(data);
332 {
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
\82Ì2
\8fd
\93o
\98^ };
334 DataModule1.updateWriterId(writerId, data);
336 DataModule1.deleteWriter(writerId);
339 data := TJSONObject.Create;
340 DataModule1.custData(writerId, data);
341 Response.ContentType := 'text/html;charset=utf-8';
342 mustache := TSynMustache.Parse(writerData.Content);
343 Response.Content := mustache.RenderJSON(data.ToJSON);
347 procedure TWebModule1.WebModule1writerpageAction(Sender: TObject;
348 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
352 Response.ContentType:='text/html;charset=utf-8';
353 data:=TJSONObject.Create;
355 data.AddPair('login',TJSONFalse.Create)
357 data.AddPair('login',TJSONTrue.Create);
358 mustache:=TSynMustAche.Parse(writerpage.Content);
359 Response.Content:=mustache.RenderJSON(data.ToJSON);
362 procedure TWebModule1.WebModule1writerTopAction(Sender: TObject;
363 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
372 data := TJSONObject.Create;
373 DataModule1.magazines(writerId, data);
374 Response.ContentType := 'text/html;charset=utf-8';
375 mustache := TSynMustache.Parse(writerTop.Content);
376 Response.Content := mustache.RenderJSON(data.ToJSON);