source: trunk/Modules/ZdechovNET/UModuleZdechovNET.pas@ 114

Last change on this file since 114 was 108, checked in by chronos, 13 years ago
  • Upraveno: Opět zprovozněno zobrazování oficiálního webu sítě.
File size: 12.9 KB
Line 
1unit UModuleZdechovNET;
2
3{$mode delphi}
4
5interface
6
7uses
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
14type
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
49implementation
50
51uses
52 UCore, USqlDatabase, UXmlClasses, UHtmlClasses, UUtils;
53
54{ TModuleZdechovNET }
55
56constructor TModuleZdechovNET.Create(Owner: TComponent);
57begin
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');
66end;
67
68destructor TModuleZdechovNET.Destroy;
69begin
70 inherited Destroy;
71end;
72
73procedure TModuleZdechovNET.Start;
74begin
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;
122end;
123
124procedure TModuleZdechovNET.Stop;
125begin
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;
158end;
159
160procedure TModuleZdechovNET.Install;
161var
162 DbRows: TDbRows;
163 Data: TDictionaryStringString;
164begin
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;
236end;
237
238procedure TModuleZdechovNET.Uninstall;
239var
240 DbRows: TDbRows;
241begin
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;
254end;
255
256procedure TModuleZdechovNET.Upgrade;
257begin
258 inherited Upgrade;
259end;
260
261procedure TModuleZdechovNET.Footer(Session: TWebSession);
262var
263 Tag: TXMLTag;
264 AdminTag: TXMLTag;
265 EmailTag: TXMLTag;
266 ExecutionTimeTag: TXMLTag;
267 UsedMemoryTag: TXMLTag;
268 TextNode: TXmlString;
269begin
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;
302end;
303
304procedure TModuleZdechovNET.TopMenu(Session: TWebSession);
305begin
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>&nbsp;</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">&nbsp;';
337 Text := Text + '</ul></div>';
338 end;
339end;
340
341procedure TModuleZdechovNET.GeneratePage(ASession: TWebSession; Page: TWebPage);
342var
343 I: Integer;
344 TitleTag: THtmlString;
345begin
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;
369end;
370
371
372end.
373
Note: See TracBrowser for help on using the repository browser.