Changeset 103 for trunk/UCore.pas


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/UCore.pas

    r102 r103  
    1010  UXmlClasses, UHtmlClasses, UUtils, UApplicationInfo, UHTTPServerTCP,
    1111  UHTTPSessionFile, UUser, SpecializedList, Registry,
    12   UModularSystem;
     12  UModularSystem, UWebSession;
    1313
    1414const
     
    2727    procedure WebApp1PageProduce(HandlerData: THTTPHandlerData);
    2828  private
     29    FGeneratePage: TGeneratePageEvent;
    2930    procedure Show(Content: string);
    3031    procedure RegisterModules;
     
    5152    DatabasePassword: string;
    5253    DatabaseSchema: string;
     54    procedure GeneratePageDefault(ASession: TWebSession; Page: TWebPage);
    5355    procedure LoadFromRegistry;
    5456    procedure SaveToRegistry;
     
    5658    constructor Create(AOwner: TComponent); override;
    5759    destructor Destroy; override;
     60    property GeneratePage: TGeneratePageEvent read FGeneratePage write FGeneratePage;
    5861  end;
    5962
     
    7376
    7477{ TCore }
     78
     79procedure TCore.GeneratePageDefault(ASession: TWebSession; Page: TWebPage);
     80var
     81  I: Integer;
     82begin
     83  with ASession do begin
     84    HtmlDocument.ContentLanguage := 'cs';
     85    GlobalTitle := 'WebSystem';
     86
     87      //Page.Page.OnProduce(HandlerData);
     88      HtmlDocument.Title := Page.Caption;
     89      with HtmlDocument.AsXmlDocument do
     90      try
     91        Formated := TCore(MainModule).FormatHTML;
     92        Response.Content.WriteString(AsString);
     93      finally
     94        Free;
     95      end;
     96    end;
     97end;
    7598
    7699constructor TCore.Create(AOwner: TComponent);
     
    102125  FreeAndNil(Pages);
    103126  inherited;
    104 end;
    105 
    106 procedure TWebSession.Footer;
    107 var
    108   Tag: TXMLTag;
    109   AdminTag: TXMLTag;
    110   EmailTag: TXMLTag;
    111   ExecutionTimeTag: TXMLTag;
    112   UsedMemoryTag: TXMLTag;
    113   TextNode: TXmlString;
    114 begin
    115   with TXmlTag(HtmlDocument.Body.SubItems.AddNew(TXmlTag.Create)) do begin
    116     Name := 'ul';
    117     Attributes.Values['class'] := 'Footer';
    118     with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
    119       Name := 'li';
    120       with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
    121         Text := MainModule.Admin;
    122       end;
    123     end;
    124     with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
    125       Name := 'li';
    126       with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
    127         Text := MainModule.AdminEmail;
    128       end;
    129     end;
    130     if MainModule.ShowRuntimeInfo then begin
    131       with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
    132         Name := 'li';
    133         with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
    134           Text := 'Doba generování: ' +
    135             FloatToStr(Round(((Now - TimeStart) / OneMillisecond) * 100) / 100) + ' s / '; // + ini_get('max_execution_time') + ' s';
    136         end;
    137       end;
    138       with TXmlTag(SubElements.AddNew(TXmlTag.Create)) do begin
    139         Name := 'li';
    140         with TXmlString(SubElements.AddNew(TXmlString.Create)) do begin
    141           //Text := 'Použitá paměť: '  + System.PrefixMultiplier.AddPrefixMultipliers(memory_get_peak_usage(FALSE), 'B').' / '.ini_get('memory_limit').'B';
    142         end;
    143       end;
    144     end;
    145   end;
    146127end;
    147128
     
    202183  finally
    203184    DbRows.Free;
    204   end;
    205 end;
    206 
    207 procedure TWebSession.TopMenu;
    208 begin
    209   with THtmlString(HtmlDocument.Body.SubItems.InsertNew(1, THtmlString.Create)) do begin
    210     Text := '<div class="Navigation">';
    211     // Visitor
    212     Text := Text + '<ul class="MenuItem">' +
    213       '<li>' + MakeLink('Úvod', NavigationLink('/')) + '</li>' +
    214       '<li>' + MakeLink('Internet', NavigationLink('/internet/')) + '</li>' +
    215       '<li>' + MakeLink('Hosting', NavigationLink('/hosting/')) + '</li>' +
    216       '<li>' + MakeLink('VoIP', NavigationLink('/voip/')) + '</li>' +
    217       '<li>' + MakeLink('Síť', NavigationLink('/sit/')) + '</li>' +
    218       '<li>' + MakeLink('Odkazy', NavigationLink('/odkazy/')) + '</li>' +
    219       '<li>' + MakeLink('Kontakt', NavigationLink('/kontakt/')) + '</li>' +
    220       '<li>' + MakeLink('Kamery', NavigationLink('/kamery/')) + '</li>' +
    221       '<li><a href="https://mail.zdechov.net/">Pošta</a></li>' +
    222       '<li><a href="http://wiki.zdechov.net/">Wiki</a></li>' +
    223       '</ul><ul class="MenuItem2">'; //<li>&nbsp;</li>';
    224     if Assigned(MainModule.Pages.FindByName('uzivatel')) then begin
    225       if UserOnline.User = AnonymousUserId then begin
    226         Text := Text + '</ul>' +
    227           '<ul class="MenuItem2">' +
    228           '<li>' + MakeLink('Přihlášení', NavigationLink('/uzivatel/prihlaseni/')) + '</li>' +
    229           '<li>' + MakeLink('Registrace', NavigationLink('/uzivatel/registrace/')) + '</li>' +
    230           '<li></li>';
    231         // $Output .= '<li>'.$this->System->HTML->MakeLink($this->System->Translate('UserRegistration'), $this->System->MakeLink('UserList', 'Register')).'</li>';
    232       end else begin
    233         Text := Text + '</ul>' +
    234           '<ul class="MenuItem2">' +
    235           '<li>' + User.FullName + '</li>' +
    236           '<li>' + MakeLink('Odhlášení', NavigationLink('/uzivatel/odhlaseni/')) + '</li>' +
    237           '<li>' + MakeLink('Profil', NavigationLink('/uzivatel/profil/')) + '</li>';
    238       end;
    239     end else Text := Text + '</ul><ul class="MenuItem2">&nbsp;';
    240     Text := Text + '</ul></div>';
    241185  end;
    242186end;
     
    281225          THTMLString(TWebSession(NewSession).HtmlDocument.Body.SubItems.AddNew(THtmlString.Create)).
    282226            Text := Format(SError, [E.Message]);
    283           NewSession.GeneratePage(Page.Page);
     227          if Assigned(GeneratePage) then GeneratePage(NewSession, Page.Page)
     228            else GeneratePageDefault(NewSession, Page.Page);
    284229        end;
    285230      end;
Note: See TracChangeset for help on using the changeset viewer.