Ignore:
Timestamp:
Oct 8, 2012, 8:48:16 AM (12 years ago)
Author:
chronos
Message:
  • Upraveno: TWebSession zobecněno pro možnost implementace více modulů s obsluhou vstupní stránky.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/Portal/UPagePortal.pas

    r102 r103  
    77uses
    88  Classes, SysUtils, FileUtil, UWebPage, UHTTPServer, USqlDatabase, UUtils,
    9   SpecializedDictionary;
     9  SpecializedDictionary, UWebSession, SpecializedList;
    1010
    1111type
     
    1717  private
    1818    Session: TWebSession;
     19    function ShowPanel(Title, Content: string; Menu: TListString = nil): string;
     20    function SystemMessage(Title, Text: string): string;
    1921    function ShowLinks(GroupId: Integer): string;
     22    function Show: string;
     23    function OnlineHostList: string;
     24    function UserPanel: string;
     25    function WebcamPanel: string;
    2026  public
    2127    { public declarations }
     
    3036
    3137uses
    32   UCore;
     38  UCore, UModuleUser, UWebObjects, UUser;
     39
     40function TWebPagePortal.SystemMessage(Title, Text: string): string;
     41begin
     42  Result := '<table align="center"><tr><td><div class="SystemMessage"><h3>' +
     43    Title + '</h3><div>' + Text + '</div></div</td></tr></table>';
     44end;
    3345
    3446procedure TWebPagePortal.DataModuleProduce(HandlerData: THTTPHandlerData);
    3547begin
    36   Session := TWebSessionHandlerData);
     48  Session := TWebSession(HandlerData);
    3749  with TWebSession(HandlerData) do begin
    3850
     
    5062    HyperlinkGroups := TDbRows.Create;
    5163    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));
    5365
    5466    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)');
    5668    for I := 0 to HyperLinks.Count - 1 do begin
    5769      HyperLink := Hyperlinks[I];
     
    6072        if Copy(HyperLink.Values['URL'], 1, 4) <> 'http' then
    6173          HyperLink.Values['URL'] := NavigationLink(HyperLink.Values['URL']);
    62         if((HyperLink.Values['PermissionModule'] = '') or
     74        if ((HyperLink.Values['PermissionModule'] = '') or
    6375        ((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 />';
    6678    end;
    67     Result := Panel(HyperlinkGroup['Name'], Result);
     79    Result := ShowPanel(HyperlinkGroups[0].Values['Name'], Result);
    6880
    6981  finally
     
    7385end;
    7486
     87function TWebPagePortal.Show: string;
     88var
     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;
     98begin
     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
     259function TWebPagePortal.OnlineHostList: string;
     260begin
     261
     262end;
     263
     264function TWebPagePortal.UserPanel: string;
     265begin
     266
     267end;
     268
     269function TWebPagePortal.ShowPanel(Title, Content: string; Menu: TListString): string;
     270var
     271  I: Integer;
     272  TitleCombined: string;
     273begin
     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>';
     281end;
     282
     283function TWebPagePortal.WebcamPanel: string;
     284begin
     285
     286end;
    75287
    76288end.
Note: See TracChangeset for help on using the changeset viewer.