1 | unit UModuleZdechovNET;
|
---|
2 |
|
---|
3 | {$mode delphi}
|
---|
4 |
|
---|
5 | interface
|
---|
6 |
|
---|
7 | uses
|
---|
8 | Classes, SysUtils, UModularSystem, SpecializedDictionary, UWebPage,
|
---|
9 | UWebSession, DateUtils, UModuleBase, UModuleUser,
|
---|
10 | UInternetPage, UHostingPage, UHistoryPage, UDocumentsPage, UVoIPPage,
|
---|
11 | ULinksPage, UPlansPage, UServerInfoPage, UWebCamPage, UUser,
|
---|
12 | UNetworkPage, UAboutPage, UContactPage, UProjectsPage;
|
---|
13 |
|
---|
14 | type
|
---|
15 |
|
---|
16 | { TModuleZdechovNET }
|
---|
17 |
|
---|
18 | TModuleZdechovNET = class(TModule)
|
---|
19 | private
|
---|
20 | InternetPage: TInternetPage;
|
---|
21 | HostingPage: THostingPage;
|
---|
22 | HistoryPage: THistoryPage;
|
---|
23 | DocumentsPage: TDocumentsPage;
|
---|
24 | VoIPPage: TVoIPPage;
|
---|
25 | LinksPage: TLinksPage;
|
---|
26 | ContactPage: TContactPage;
|
---|
27 | ServerInfoPage: TServerInfoPage;
|
---|
28 | WebCamPage: TWebCamPage;
|
---|
29 | PlansPage: TPlansPage;
|
---|
30 | NetworkPage: TNetworkPage;
|
---|
31 | ProjectsPage: TProjectsPage;
|
---|
32 | AboutPage: TAboutPage;
|
---|
33 | procedure Footer(Session: TWebSession);
|
---|
34 | procedure GeneratePage(ASession: TWebSession; Page: TWebPage);
|
---|
35 | procedure TopMenu(Session: TWebSession);
|
---|
36 | public
|
---|
37 | ModuleBase: TModuleBase;
|
---|
38 | ModuleUser: TModuleUser;
|
---|
39 | constructor Create(Owner: TComponent); override;
|
---|
40 | destructor Destroy; override;
|
---|
41 | procedure Start; override;
|
---|
42 | procedure Stop; override;
|
---|
43 | procedure Install; override;
|
---|
44 | procedure Uninstall; override;
|
---|
45 | procedure Upgrade; override;
|
---|
46 | end;
|
---|
47 |
|
---|
48 |
|
---|
49 | implementation
|
---|
50 |
|
---|
51 | uses
|
---|
52 | UCore, USqlDatabase, UXmlClasses, UHtmlClasses, UUtils;
|
---|
53 |
|
---|
54 | { TModuleZdechovNET }
|
---|
55 |
|
---|
56 | constructor TModuleZdechovNET.Create(Owner: TComponent);
|
---|
57 | begin
|
---|
58 | inherited;
|
---|
59 | Identification := 'ZdechovNET';
|
---|
60 | Title := 'ZdechovNET web';
|
---|
61 | Version := '1.0';
|
---|
62 | License := 'GNU/LGPL v3';
|
---|
63 | Author := 'Chronosoft';
|
---|
64 | Dependencies.Add('User');
|
---|
65 | Dependencies.Add('Base');
|
---|
66 | end;
|
---|
67 |
|
---|
68 | destructor TModuleZdechovNET.Destroy;
|
---|
69 | begin
|
---|
70 | inherited Destroy;
|
---|
71 | end;
|
---|
72 |
|
---|
73 | procedure TModuleZdechovNET.Start;
|
---|
74 | begin
|
---|
75 | BeforeStart;
|
---|
76 | ModuleBase := TModuleBase(Manager.FindModuleByName('Base'));
|
---|
77 | ModuleBase.GeneratePage := GeneratePage;
|
---|
78 | ModuleUser := TModuleUser(Manager.FindModuleByName('User'));
|
---|
79 | with ModuleBase, Pages do begin
|
---|
80 | //GeneratePage := GeneratePage;
|
---|
81 | InternetPage := TInternetPage.Create(nil);
|
---|
82 | InternetPage.ModuleUser := ModuleUser;
|
---|
83 | RegisterPage(InternetPage, 'internet');
|
---|
84 | HostingPage := THostingPage.Create(nil);
|
---|
85 | HostingPage.ModuleUser := ModuleUser;
|
---|
86 | RegisterPage(HostingPage, 'hosting');
|
---|
87 | HistoryPage := THistoryPage.Create(nil);
|
---|
88 | HistoryPage.ModuleUser := ModuleUser;
|
---|
89 | RegisterPage(HistoryPage, 'historie');
|
---|
90 | DocumentsPage := TDocumentsPage.Create(nil);
|
---|
91 | DocumentsPage.ModuleUser := ModuleUser;
|
---|
92 | RegisterPage(DocumentsPage, 'dokumenty');
|
---|
93 | VoIPPage := TVoIPPage.Create(nil);
|
---|
94 | VoIPPage.ModuleUser := ModuleUser;
|
---|
95 | RegisterPage(VoIPPage, 'voip');
|
---|
96 | LinksPage := TLinksPage.Create(nil);
|
---|
97 | LinksPage.ModuleUser := ModuleUser;
|
---|
98 | RegisterPage(LinksPage, 'odkazy');
|
---|
99 | ContactPage := TContactPage.Create(nil);
|
---|
100 | ContactPage.ModuleUser := ModuleUser;
|
---|
101 | RegisterPage(ContactPage, 'kontakt');
|
---|
102 | ServerInfoPage := TServerInfoPage.Create(nil);
|
---|
103 | ServerInfoPage.ModuleUser := ModuleUser;
|
---|
104 | RegisterPage(ServerInfoPage, 'serverinfo');
|
---|
105 | WebCamPage := TWebCamPage.Create(nil);
|
---|
106 | WebCamPage.ModuleUser := ModuleUser;
|
---|
107 | RegisterPage(WebCamPage, 'kamery');
|
---|
108 | PlansPage := TPlansPage.Create(nil);
|
---|
109 | PlansPage.ModuleUser := ModuleUser;
|
---|
110 | RegisterPage(PlansPage, 'plany');
|
---|
111 | NetworkPage := TNetworkPage.Create(nil);
|
---|
112 | NetworkPage.ModuleUser := ModuleUser;
|
---|
113 | RegisterPage(NetworkPage, 'sit');
|
---|
114 | ProjectsPage := TProjectsPage.Create(nil);
|
---|
115 | ProjectsPage.ModuleUser := ModuleUser;
|
---|
116 | RegisterPage(ProjectsPage, 'projekty');
|
---|
117 | AboutPage := TAboutPage.Create(nil);
|
---|
118 | AboutPage.ModuleUser := ModuleUser;
|
---|
119 | RegisterPage(AboutPage, '');
|
---|
120 | end;
|
---|
121 | AfterStart;
|
---|
122 | end;
|
---|
123 |
|
---|
124 | procedure TModuleZdechovNET.Stop;
|
---|
125 | begin
|
---|
126 | BeforeStop;
|
---|
127 | with ModuleBase, Pages do begin
|
---|
128 | UnregisterPage(AboutPage);
|
---|
129 | FreeAndNil(AboutPage);
|
---|
130 | UnregisterPage(InternetPage);
|
---|
131 | FreeAndNil(InternetPage);
|
---|
132 | UnregisterPage(HostingPage);
|
---|
133 | FreeAndNil(HostingPage);
|
---|
134 | UnregisterPage(HistoryPage);
|
---|
135 | FreeAndNil(HistoryPage);
|
---|
136 | UnregisterPage(DocumentsPage);
|
---|
137 | FreeAndNil(DocumentsPage);
|
---|
138 | UnregisterPage(VoIPPage);
|
---|
139 | FreeAndNil(VoIPPage);
|
---|
140 | UnregisterPage(LinksPage);
|
---|
141 | FreeAndNil(LinksPage);
|
---|
142 | UnregisterPage(ContactPage);
|
---|
143 | FreeAndNil(ContactPage);
|
---|
144 | UnregisterPage(ServerInfoPage);
|
---|
145 | FreeAndNil(ServerInfoPage);
|
---|
146 | UnregisterPage(WebCamPage);
|
---|
147 | FreeAndNil(WebCamPage);
|
---|
148 | UnregisterPage(PlansPage);
|
---|
149 | FreeAndNil(PlansPage);
|
---|
150 | UnregisterPage(NetworkPage);
|
---|
151 | FreeAndNil(NetworkPage);
|
---|
152 | UnregisterPage(ProjectsPage);
|
---|
153 | FreeAndNil(ProjectsPage);
|
---|
154 | end;
|
---|
155 | ModuleBase := nil;
|
---|
156 | ModuleUser := nil;
|
---|
157 | AfterStop;
|
---|
158 | end;
|
---|
159 |
|
---|
160 | procedure TModuleZdechovNET.Install;
|
---|
161 | var
|
---|
162 | DbRows: TDbRows;
|
---|
163 | Data: TDictionaryStringString;
|
---|
164 | begin
|
---|
165 | try
|
---|
166 | DbRows := TDbRows.Create;
|
---|
167 | Data := TDictionaryStringString.Create;
|
---|
168 |
|
---|
169 | Core.CommonDatabase.Query(DbRows,
|
---|
170 | 'CREATE TABLE IF NOT EXISTS `VPSHosting` (' +
|
---|
171 | ' `Id` int(11) NOT NULL AUTO_INCREMENT,' +
|
---|
172 | ' `Name` varchar(255) NOT NULL,' +
|
---|
173 | ' `Memory` varchar(255) NOT NULL,' +
|
---|
174 | ' `Space` varchar(255) NOT NULL,' +
|
---|
175 | ' `Internet` varchar(255) NOT NULL,' +
|
---|
176 | ' `CPU` varchar(255) NOT NULL,' +
|
---|
177 | ' `Price` int(11) NOT NULL,' +
|
---|
178 | ' PRIMARY KEY (`Id`)' +
|
---|
179 | ') ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;');
|
---|
180 |
|
---|
181 | Core.CommonDatabase.Query(DbRows,
|
---|
182 | 'CREATE TABLE IF NOT EXISTS `History` (' +
|
---|
183 | ' `Id` int(11) NOT NULL AUTO_INCREMENT,' +
|
---|
184 | ' `Date` date NOT NULL,' +
|
---|
185 | ' `Text` text COLLATE utf8_czech_ci NOT NULL,' +
|
---|
186 | ' PRIMARY KEY (`Id`)' +
|
---|
187 | ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;');
|
---|
188 |
|
---|
189 | Core.CommonDatabase.Query(DbRows,
|
---|
190 | 'CREATE TABLE IF NOT EXISTS `Webcam` (' +
|
---|
191 | ' `Id` int(11) NOT NULL AUTO_INCREMENT,' +
|
---|
192 | ' `Name` varchar(255) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,' +
|
---|
193 | ' `Description` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,' +
|
---|
194 | ' `ImageName` varchar(255) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,' +
|
---|
195 | ' `ImageURL` varchar(255) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,' +
|
---|
196 | ' `ImagePeriod` int(11) NOT NULL,' +
|
---|
197 | ' `Width` int(11) NOT NULL,' +
|
---|
198 | ' `Height` int(11) NOT NULL,' +
|
---|
199 | ' `Enabled` int(11) NOT NULL DEFAULT "1",' +
|
---|
200 | ' `DeviceType` varchar(255) NOT NULL,' +
|
---|
201 | ' PRIMARY KEY (`Id`)' +
|
---|
202 | ') ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;');
|
---|
203 |
|
---|
204 | Core.CommonDatabase.Query(DbRows,
|
---|
205 | ' CREATE TABLE IF NOT EXISTS `Plans` (' +
|
---|
206 | ' `Id` int(11) NOT NULL AUTO_INCREMENT,' +
|
---|
207 | ' `TimeCreate` datetime NOT NULL,' +
|
---|
208 | ' `TimeFinished` datetime DEFAULT NULL,' +
|
---|
209 | ' `Description` text COLLATE utf8_czech_ci NOT NULL,' +
|
---|
210 | ' `Conclusion` text COLLATE utf8_czech_ci NOT NULL,' +
|
---|
211 | ' `Public` int(11) NOT NULL DEFAULT "0",' +
|
---|
212 | ' PRIMARY KEY (`Id`),' +
|
---|
213 | ' KEY `TimeCreate` (`TimeCreate`),' +
|
---|
214 | ' KEY `TimeFinished` (`TimeFinished`)' +
|
---|
215 | ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;');
|
---|
216 |
|
---|
217 | Core.CommonDatabase.Query(DbRows,
|
---|
218 | 'CREATE TABLE IF NOT EXISTS `HostedProject` (' +
|
---|
219 | ' `Id` int(11) NOT NULL AUTO_INCREMENT,' +
|
---|
220 | ' `Name` varchar(255) COLLATE utf8_czech_ci NOT NULL,' +
|
---|
221 | ' `Homepage` varchar(255) COLLATE utf8_czech_ci NOT NULL,' +
|
---|
222 | ' `User` int(255) NOT NULL COMMENT "User.Id",' +
|
---|
223 | ' `TimeCreate` datetime NOT NULL,' +
|
---|
224 | ' `Server` int(11) DEFAULT NULL COMMENT "NetworkDevice.Id",' +
|
---|
225 | ' `Active` int(11) NOT NULL DEFAULT "1",' +
|
---|
226 | ' `WebHosting` int(11) NOT NULL,' +
|
---|
227 | ' PRIMARY KEY (`Id`)' +
|
---|
228 | ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;');
|
---|
229 |
|
---|
230 | finally
|
---|
231 | Data.Free;
|
---|
232 | DbRows.Free;
|
---|
233 | end;
|
---|
234 |
|
---|
235 | inherited Install;
|
---|
236 | end;
|
---|
237 |
|
---|
238 | procedure TModuleZdechovNET.Uninstall;
|
---|
239 | var
|
---|
240 | DbRows: TDbRows;
|
---|
241 | begin
|
---|
242 | inherited Uninstall;
|
---|
243 | ModuleBase.GeneratePage := nil;
|
---|
244 | try
|
---|
245 | DbRows := TDbRows.Create;
|
---|
246 | Core.CommonDatabase.Query(DbRows, 'DROP TABLE IF EXISTS `HostedProject`');
|
---|
247 | Core.CommonDatabase.Query(DbRows, 'DROP TABLE IF EXISTS `Plans`');
|
---|
248 | Core.CommonDatabase.Query(DbRows, 'DROP TABLE IF EXISTS `Webcam`');
|
---|
249 | Core.CommonDatabase.Query(DbRows, 'DROP TABLE IF EXISTS `VPSHosting`');
|
---|
250 | Core.CommonDatabase.Query(DbRows, 'DROP TABLE IF EXISTS `History`');
|
---|
251 | finally
|
---|
252 | DbRows.Free;
|
---|
253 | end;
|
---|
254 | end;
|
---|
255 |
|
---|
256 | procedure TModuleZdechovNET.Upgrade;
|
---|
257 | begin
|
---|
258 | inherited Upgrade;
|
---|
259 | end;
|
---|
260 |
|
---|
261 | procedure TModuleZdechovNET.Footer(Session: TWebSession);
|
---|
262 | var
|
---|
263 | Tag: TXMLTag;
|
---|
264 | AdminTag: TXMLTag;
|
---|
265 | EmailTag: TXMLTag;
|
---|
266 | ExecutionTimeTag: TXMLTag;
|
---|
267 | UsedMemoryTag: TXMLTag;
|
---|
268 | TextNode: TXmlString;
|
---|
269 | begin
|
---|
270 | with Session do
|
---|
271 | with TXmlTag(HtmlDocument.Body.SubItems.AddNew(TXmlTag.Create)) do begin
|
---|
272 | Name := 'ul';
|
---|
273 | Attributes.Values['class'] := 'Footer';
|
---|
274 | with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
|
---|
275 | Name := 'li';
|
---|
276 | with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
|
---|
277 | Text := TCore(MainModule).Admin;
|
---|
278 | end;
|
---|
279 | end;
|
---|
280 | with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
|
---|
281 | Name := 'li';
|
---|
282 | with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
|
---|
283 | Text := TCore(MainModule).AdminEmail;
|
---|
284 | end;
|
---|
285 | end;
|
---|
286 | if TCore(MainModule).ShowRuntimeInfo then begin
|
---|
287 | with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
|
---|
288 | Name := 'li';
|
---|
289 | with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
|
---|
290 | Text := 'Doba generování: ' +
|
---|
291 | FloatToStr(Round(((Now - TimeStart) / OneMillisecond) * 100) / 100) + ' s / '; // + ini_get('max_execution_time') + ' s';
|
---|
292 | end;
|
---|
293 | end;
|
---|
294 | with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
|
---|
295 | Name := 'li';
|
---|
296 | with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
|
---|
297 | //Text := 'Použitá paměť: ' + System.PrefixMultiplier.AddPrefixMultipliers(memory_get_peak_usage(FALSE), 'B').' / '.ini_get('memory_limit').'B';
|
---|
298 | end;
|
---|
299 | end;
|
---|
300 | end;
|
---|
301 | end;
|
---|
302 | end;
|
---|
303 |
|
---|
304 | procedure TModuleZdechovNET.TopMenu(Session: TWebSession);
|
---|
305 | begin
|
---|
306 | with Session, THtmlString(HtmlDocument.Body.SubItems.InsertNew(1, THtmlString.Create)) do begin
|
---|
307 | Text := '<div class="Navigation">';
|
---|
308 | // Visitor
|
---|
309 | Text := Text + '<ul class="MenuItem">' +
|
---|
310 | '<li>' + MakeLink('Úvod', NavigationLink('/')) + '</li>' +
|
---|
311 | '<li>' + MakeLink('Internet', NavigationLink('/internet/')) + '</li>' +
|
---|
312 | '<li>' + MakeLink('Hosting', NavigationLink('/hosting/')) + '</li>' +
|
---|
313 | '<li>' + MakeLink('VoIP', NavigationLink('/voip/')) + '</li>' +
|
---|
314 | '<li>' + MakeLink('Síť', NavigationLink('/sit/')) + '</li>' +
|
---|
315 | '<li>' + MakeLink('Odkazy', NavigationLink('/odkazy/')) + '</li>' +
|
---|
316 | '<li>' + MakeLink('Kontakt', NavigationLink('/kontakt/')) + '</li>' +
|
---|
317 | '<li>' + MakeLink('Kamery', NavigationLink('/kamery/')) + '</li>' +
|
---|
318 | '<li><a href="https://mail.zdechov.net/">Pošta</a></li>' +
|
---|
319 | '<li><a href="http://wiki.zdechov.net/">Wiki</a></li>' +
|
---|
320 | '</ul><ul class="MenuItem2">'; //<li> </li>';
|
---|
321 | if Assigned(ModuleBase.Pages.FindByName('uzivatel')) then begin
|
---|
322 | if ModuleUser.UserOnline.User = UnknownUser then begin
|
---|
323 | Text := Text + '</ul>' +
|
---|
324 | '<ul class="MenuItem2">' +
|
---|
325 | '<li>' + MakeLink('Přihlášení', NavigationLink('/uzivatel/prihlaseni/')) + '</li>' +
|
---|
326 | '<li>' + MakeLink('Registrace', NavigationLink('/uzivatel/registrace/')) + '</li>' +
|
---|
327 | '<li></li>';
|
---|
328 | // $Output .= '<li>'.$this->System->HTML->MakeLink($this->System->Translate('UserRegistration'), $this->System->MakeLink('UserList', 'Register')).'</li>';
|
---|
329 | end else begin
|
---|
330 | Text := Text + '</ul>' +
|
---|
331 | '<ul class="MenuItem2">' +
|
---|
332 | '<li>' + ModuleUser.User.FullName + '</li>' +
|
---|
333 | '<li>' + MakeLink('Odhlášení', NavigationLink('/uzivatel/odhlaseni/')) + '</li>' +
|
---|
334 | '<li>' + MakeLink('Profil', NavigationLink('/uzivatel/profil/')) + '</li>';
|
---|
335 | end;
|
---|
336 | end else Text := Text + '</ul><ul class="MenuItem2"> ';
|
---|
337 | Text := Text + '</ul></div>';
|
---|
338 | end;
|
---|
339 | end;
|
---|
340 |
|
---|
341 | procedure TModuleZdechovNET.GeneratePage(ASession: TWebSession; Page: TWebPage);
|
---|
342 | var
|
---|
343 | I: Integer;
|
---|
344 | TitleTag: THtmlString;
|
---|
345 | begin
|
---|
346 | with ASession do begin
|
---|
347 | HtmlDocument.ContentLanguage := 'cs';
|
---|
348 | GlobalTitle := 'ZděchovNET';
|
---|
349 | HtmlDocument.Styles.Add(NavigationLink('/Style/' + TCore(MainModule).Style + '/Style.css'));
|
---|
350 | HtmlDocument.Scripts.Add(NavigationLink('/Style/' + TCore(MainModule).Style + '/Global.js'));
|
---|
351 | HtmlDocument.Scripts.Add(NavigationLink('/Style/' + TCore(MainModule).Style + '/jquery.js'));
|
---|
352 |
|
---|
353 | TitleTag := THtmlString.Create;
|
---|
354 | HtmlDocument.Body.SubItems.Insert(0, TitleTag);
|
---|
355 | TopMenu(ASession);
|
---|
356 | //Page.Page.OnProduce(HandlerData);
|
---|
357 | HtmlDocument.Title := Page.Caption;
|
---|
358 | TitleTag.Text := '<div class="TitlePanel"><span class="GlobalTitle">' + GlobalTitle +
|
---|
359 | '</span> - ' + HtmlDocument.Title + '</div>';
|
---|
360 | HtmlDocument.Title := GlobalTitle + ' - ' + HtmlDocument.Title;
|
---|
361 | with HtmlDocument.AsXmlDocument do
|
---|
362 | try
|
---|
363 | Formated := TCore(MainModule).FormatHTML;
|
---|
364 | Response.Content.WriteString(AsString);
|
---|
365 | finally
|
---|
366 | Free;
|
---|
367 | end;
|
---|
368 | end;
|
---|
369 | end;
|
---|
370 |
|
---|
371 |
|
---|
372 | end.
|
---|
373 |
|
---|