Changeset 103 for trunk/Modules/Portal/UPagePortal.pas
- Timestamp:
- Oct 8, 2012, 8:48:16 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Modules/Portal/UPagePortal.pas
r102 r103 7 7 uses 8 8 Classes, SysUtils, FileUtil, UWebPage, UHTTPServer, USqlDatabase, UUtils, 9 SpecializedDictionary ;9 SpecializedDictionary, UWebSession, SpecializedList; 10 10 11 11 type … … 17 17 private 18 18 Session: TWebSession; 19 function ShowPanel(Title, Content: string; Menu: TListString = nil): string; 20 function SystemMessage(Title, Text: string): string; 19 21 function ShowLinks(GroupId: Integer): string; 22 function Show: string; 23 function OnlineHostList: string; 24 function UserPanel: string; 25 function WebcamPanel: string; 20 26 public 21 27 { public declarations } … … 30 36 31 37 uses 32 UCore; 38 UCore, UModuleUser, UWebObjects, UUser; 39 40 function TWebPagePortal.SystemMessage(Title, Text: string): string; 41 begin 42 Result := '<table align="center"><tr><td><div class="SystemMessage"><h3>' + 43 Title + '</h3><div>' + Text + '</div></div</td></tr></table>'; 44 end; 33 45 34 46 procedure TWebPagePortal.DataModuleProduce(HandlerData: THTTPHandlerData); 35 47 begin 36 Session := TWebSession HandlerData);48 Session := TWebSession(HandlerData); 37 49 with TWebSession(HandlerData) do begin 38 50 … … 50 62 HyperlinkGroups := TDbRows.Create; 51 63 Hyperlinks := TDbRows.Create; 52 Database.Query(HyperlinkGroups, 'SELECT * FROM `HyperlinkGroup` WHERE `Id`=' + IntToStr(GroupId));64 Session.Database.Query(HyperlinkGroups, 'SELECT * FROM `HyperlinkGroup` WHERE `Id`=' + IntToStr(GroupId)); 53 65 54 66 Result := ''; 55 Database.Query(Hyperlinks, 'SELECT * FROM `Hyperlink` WHERE (`Group`=' + IntToStr(GroupId) + ') AND (`Enable` = 1)');67 Session.Database.Query(Hyperlinks, 'SELECT * FROM `Hyperlink` WHERE (`Group`=' + IntToStr(GroupId) + ') AND (`Enable` = 1)'); 56 68 for I := 0 to HyperLinks.Count - 1 do begin 57 69 HyperLink := Hyperlinks[I]; … … 60 72 if Copy(HyperLink.Values['URL'], 1, 4) <> 'http' then 61 73 HyperLink.Values['URL'] := NavigationLink(HyperLink.Values['URL']); 62 if ((HyperLink.Values['PermissionModule'] = '') or74 if ((HyperLink.Values['PermissionModule'] = '') or 63 75 ((HyperLink.Values['PermissionModule'] <> '') and 64 Session. ->Modules['User']->CheckPermission(HyperLink.Values['PermissionModule'], HyperLink.Values['PermissionOperation'])))65 Result := Result + '<img alt="' + HyperLink.Values['Name'] + '" src="images/favicons/' .$HyperLink.Values['IconFile'].'" width="16" height="16" /> <a href="' + $HyperLink.Values['URL'] + '">' + HyperLink.Values['Name'] + '</a><br />';76 Session.User.CheckPermission(HyperLink.Values['PermissionModule'], HyperLink.Values['PermissionOperation']))) then 77 Result := Result + '<img alt="' + HyperLink.Values['Name'] + '" src="images/favicons/' + HyperLink.Values['IconFile'] + '" width="16" height="16" /> <a href="' + HyperLink.Values['URL'] + '">' + HyperLink.Values['Name'] + '</a><br />'; 66 78 end; 67 Result := Panel(HyperlinkGroup['Name'], Result);79 Result := ShowPanel(HyperlinkGroups[0].Values['Name'], Result); 68 80 69 81 finally … … 73 85 end; 74 86 87 function TWebPagePortal.Show: string; 88 var 89 Output: string; 90 Form: TQueryForm; 91 UserOptions: TQueryForm; 92 PanelColumn: TDictionaryStringString; 93 Panel: TDictionaryStringString; 94 Width: string; 95 DbRows: TDbRows; 96 DbRows2: TDbRows; 97 I, J: Integer; 98 begin 99 Output := ''; 100 with Session.Request do 101 if Query.SearchKey('Action') <> -1 then begin 102 if Query.Values['Action'] = 'CustomizeNewsSave' then begin 103 //Output := $this->System->Modules['News']->CustomizeSave(); 104 end else 105 if Query.Values['Action'] = 'LoginForm' then begin 106 Form := TQueryForm.Create; // UserLogin 107 Form.AddNewAction('Přihlásit', '?Action=Login'); 108 Output := Output + Form.AsXmlElement.AsString; 109 Output := Output + '<div class="Centred"><a href="?Action=UserRegister">Registrovat se</a> ' + 110 '<a href="?Action=PasswordRecovery">Obnova zapomenutého hesla</a></div>'; 111 end else 112 if Query.Values['Action'] = 'Login' then begin 113 Form := TQueryForm.Create; // UserLogin 114 Form.Load(Session.Request.Post); 115 Session.UserOnline.Login( 116 Session.User.GetIdByNamePassword( 117 TQueryFormGroup(Form.Groups[0]).Rows.FindByName('Username').Value.Value, 118 TQueryFormGroup(Form.Groups[0]).Rows.FindByName('Password').Value.Value)); 119 Output := Output + SystemMessage('Přihlášení', Result); 120 if Session.User.Id <> UnknownUser then begin 121 //Form.LoadValuesFromForm; 122 TQueryFormGroup(Form.Groups[0]).Rows.FindByName('Password').Value.Value := ''; 123 Output := Output + Form.AsXmlElement.AsString; 124 Output := Output + '<div class="Centred"><a href="?Action=UserRegister">Registrovat se</a> ' + 125 '<a href="?Action=PasswordRecovery">Obnova zapomenutého hesla</a></div>'; 126 end; 127 end else 128 if Query.Values['Action'] = 'Logout' then begin 129 Session.UserOnline.Logout; 130 Output := Output + SystemMessage('Odhlášení', 'Uživatel odhlášen'); 131 end else 132 if Query.Values['Action'] = 'UserOptions' then begin 133 UserOptions := TQueryForm.Create; // UserOptions 134 //UserOptions.LoadValuesFromDatabase(Session.User.Id); 135 UserOptions.AddNewAction('Uložit', '?Action=UserOptionsSave'); 136 Output := Output + UserOptions.AsXmlElement.AsString; 137 end else 138 if Query.Values['Action'] = 'UserOptionsSave' then begin 139 UserOptions := TQueryForm.Create; // UserOptions 140 UserOptions.Load(Session.Request.Post); 141 //UserOptions.SaveValuesToDatabase($this->System->Modules['User']->User['Id']); 142 Output := Output + SystemMessage('Nastavení', 'Nastavení uloženo.'); 143 //this->System->Modules['Log']->NewRecord('User', 'Nastavení uživatele změněno', $UserOptions->Values['Name']); 144 //UserOptions.LoadValuesFromDatabase($this->System->Modules['User']->User['Id']); 145 UserOptions.AddNewAction('Uložit', '?Action=UserOptionsSave'); 146 Output := Output + UserOptions.AsXmlElement.AsString; 147 end else 148 if Query.Values['Action'] = 'UserRegister' then begin 149 Form := TQueryForm.Create; //'UserRegister'); 150 Form.Load(Session.Request.Post); 151 Form.AddNewAction('Uložit', '?Action=UserRegisterSave'); 152 Output := Output + Form.AsXmlElement.AsString; 153 end else 154 if Query.Values['Action'] = 'UserRegisterConfirm' then begin 155 //Session.User.RegisterConfirm($_GET['User'], $_GET['H']); 156 Output := Output + SystemMessage('Potvrzení registrace', 'Registrace potvrzena'); 157 end else 158 if Query.Values['Action'] = 'PasswordRecovery' then begin 159 Form := TQueryForm.Create; // PasswordRecovery 160 Form.AddNewAction('Obnovit', '?Action=PasswordRecovery2'); 161 Output := Output + Form.AsXmlElement.AsString; 162 end else 163 if Query.Values['Action'] = 'PasswordRecovery2' then begin 164 Form := TQueryForm.Create; // PasswordRecovery 165 Form.Load(Session.Request.Post); 166 //Result = Session.User.PasswordRecoveryRequest($Form->Values['Name'], $Form->Values['Email']); 167 Output := Output + SystemMessage('Obnova hesla', Result); 168 //if Result <> USER_PASSWORD_RECOVERY_SUCCESS then begin 169 Output := Output + Form.AsXmlElement.AsString; 170 //end; 171 end else 172 if Query.Values['Action'] = 'PasswordRecoveryConfirm' then begin 173 //Session.User.PasswordRecoveryConfirm($_GET['User'], $_GET['H'], $_GET['P']); 174 Output := Output + SystemMessage('Obnova hesla', 'Potvrzení obnovení hesla'); 175 end (*else 176 if Query.Values['Action'] = 'UserRegisterSave' then begin 177 Form := TQueryForm.Create; // UserRegister 178 Form.Load(Session.Request.Post); 179 Session.User.Register(Form->Values['Login'], $Form->Values['Password'], $Form->Values['Password2'], $Form->Values['Email'], $Form->Values['Name'], $Form->Values['PhoneNumber'], $Form->Values['ICQ']); 180 $Output := Output + $this->SystemMessage('Registrace nového účtu', $Result); 181 if Result <> USER_REGISTRATED then begin 182 Form.OnSubmit := '?Action=UserRegisterSave'; 183 $Output := Output + Form.ShowEditForm; 184 end; 185 end else 186 if Query.Values['Action'] = 'MemberOptions' then begin 187 $UserOptions = new Form('MemberOptions'); 188 $DbResult = $this->Database->query('SELECT Member.Id, Member.InternetTariffNextMonth, Member.FamilyMemberCount, Member.BillingPeriodNext, Subject.Name, Subject.AddressStreet, Subject.AddressTown, Subject.AddressPSC, Subject.IC, Subject.DIC FROM Member JOIN Subject ON Subject.Id = Member.Subject WHERE Member.Id='.$this->System->Modules['User']->User['Member']); 189 $DbRow = $DbResult->fetch_array(); 190 foreach($UserOptions->Definition['Items'] as $Index => $Item) 191 begin 192 $UserOptions->Values[$Index] = $DbRow[$Index]; 193 end; 194 $UserOptions->OnSubmit = '?Action=MemberOptionsSave'; 195 $Output .= $UserOptions->ShowEditForm(); 196 end else 197 if Query.Values['Action'] = 'MemberOptionsSave' then begin 198 $UserOptions = new Form('MemberOptions'); 199 $UserOptions->LoadValuesFromForm(); 200 if($UserOptions->Values['FamilyMemberCount'] < 0) 201 $UserOptions->Values['FamilyMemberCount'] = 0; 202 if($UserOptions->Values['BillingPeriodNext'] < 2) 203 $UserOptions->Values['BillingPeriodNext'] = 2; 204 205 $DbResult = $this->Database->update('Member', 'Id='.$this->System->Modules['User']->User['Member'], array('InternetTariffNextMonth' => $UserOptions->Values['InternetTariffNextMonth'], 'FamilyMemberCount' => $UserOptions->Values['FamilyMemberCount'], 'BillingPeriodNext' => $UserOptions->Values['BillingPeriodNext'])); 206 $DbResult = $this->Database->query('SELECT Subject FROM Member WHERE Id='.$this->System->Modules['User']->User['Member']); 207 $Member = $DbResult->fetch_assoc(); 208 $DbResult = $this->Database->update('Subject', 'Id='.$Member['Subject'], array('Name' => $UserOptions->Values['Name'], 'AddressStreet' => $UserOptions->Values['AddressStreet'], 'AddressTown' => $UserOptions->Values['AddressTown'], 'AddressPSC' => $UserOptions->Values['AddressPSC'], 'IC' => $UserOptions->Values['IC'], 'DIC' => $UserOptions->Values['DIC'])); 209 $Output .= $this->SystemMessage('Nastavení', 'Nastavení domácnosti uloženo.'); 210 $this->System->Modules['Log']->NewRecord('Member+Subject', 'Nastavení člena/subjektu změněno', $UserOptions->Values['Name']); 211 $DbResult = $this->Database->query('SELECT Member.Id, Member.InternetTariffNextMonth, Member.FamilyMemberCount, Member.BillingPeriodNext, Subject.Name, Subject.AddressStreet, Subject.AddressTown, Subject.AddressPSC, Subject.IC, Subject.DIC FROM Member JOIN Subject ON Subject.Id = Member.Subject WHERE Member.Id='.$this->System->Modules['User']->User['Member']); 212 $DbRow = $DbResult->fetch_array(); 213 foreach($UserOptions->Definition['Items'] as $Index => $Item) 214 { 215 $UserOptions->Values[$Index] = $DbRow[$Index]; 216 } 217 $UserOptions->OnSubmit = '?Action=MemberOptionsSave'; 218 $Output .= $UserOptions->ShowEditForm(); 219 end; 220 end *); 221 222 //Session.Database.Database := Config['Database']['Database']; 223 224 // Show pannels 225 //if(IsInternetAddr()) echo('Internet'); else echo('LAN'); 226 //$Output .= $this->InfoBar(); 227 Output := Output + '<table id="MainTable"><tr>'; 228 Session.Database.Select(DbRows, 'PanelColumn', '*'); 229 for I := 0 to DbRows.Count - 1 do begin 230 PanelColumn := DbRows[I]; 231 if PanelColumn.Values['Width'] <> '' then 232 Width := ' width="' + PanelColumn.Values['Width'] + '"' 233 else Width := ''; 234 Output := Output + '<td valign="top"' + Width + '>'; 235 Session.Database.Query(DbRows2, 'SELECT * FROM `Panel` WHERE `PanelColumn`=' + 236 PanelColumn.Values['Id'] + ' ORDER BY `Order`'); 237 for J := 0 to DbRows2.Count - 1 do 238 Panel := DbRows[J]; 239 if Panel.Values['Module'] = 'HyperlinkGroup' then 240 Output := Output + ShowLinks(StrToInt(Panel.Values['Parameters'])) 241 else if Panel.Values['Module'] = 'OnlineHostList' then 242 Output := Output + ShowPanel('Online počítače', OnlineHostList) 243 else if Panel.Values['Module'] = 'UserOptions' then 244 begin 245 if Session.User.Id <> UnknownUser then 246 Output := Output + ShowPanel('Přihlášený uživatel', UserPanel); 247 end else 248 if Panel.Values['Module'] = 'Webcam' then 249 Output := Output + ShowPanel('Kamery', WebcamPanel) 250 else if Panel.Values['Module'] = 'NewsGroupList' then 251 // Output := Output + Panel('Aktuality', $this->System->Modules['News']->Show(), array('<a href="?Action=CustomizeNews">Upravit</a>')); 252 end; 253 Output := Output + '</td>'; 254 end; 255 Output := Output + '</table>'; 256 Result := Output; 257 end; 258 259 function TWebPagePortal.OnlineHostList: string; 260 begin 261 262 end; 263 264 function TWebPagePortal.UserPanel: string; 265 begin 266 267 end; 268 269 function TWebPagePortal.ShowPanel(Title, Content: string; Menu: TListString): string; 270 var 271 I: Integer; 272 TitleCombined: string; 273 begin 274 TitleCombined := ''; 275 if Assigned(Menu) then 276 if Menu.Count > 0 then 277 for I := 0 to Menu.Count - 1 do 278 TitleCombined := TitleCombined + '<div class="Action">' + Menu[I] + '</div>'; 279 Result := '<div class="Panel"><div class="Title">' + TitleCombined + 280 '</div><div class="Content">' + Content + '</div></div>'; 281 end; 282 283 function TWebPagePortal.WebcamPanel: string; 284 begin 285 286 end; 75 287 76 288 end.
Note:
See TracChangeset
for help on using the changeset viewer.