Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Compta::Base::Filter::html_head_and_tail ;
- use strict ;
- use utf8 ;
- use Apache2::Const -compile => qw(OK DECLINED) ;
- sub handler {
- my $f = shift ;
- my $r = $f->r ;
- #traiter toutes les URL contenant /base;
- #rejeter le login puisqu'on a pas encore de session, et le logout puisqu'on a plus de session; on laisse aussi passer les xmlhttprequests
- if ( ( $r->uri !~ /base/ ) or ( $r->uri =~ /login|logout|xmlhttprequest/ ) ) {
- return Apache2::Const::DECLINED ;
- } elsif ( $r->uri =~ /downloads/ ) {
- #force le navigateur a télécharger le dossier plutôt que l'ouvrir directement
- $r->headers_out->set('Content-Disposition' => 'attachment' ) ;
- return Apache2::Const::DECLINED ;
- } else {
- #accumulation du contenu des invocations précédentes du filtre
- my $content = $f->ctx ;
- while ($f->read(my $buffer)) {
- #pour la 1ère invocation, on veut ajouter <div class=rightbox> pour positionner le contenu à droite du menu (leftbox)
- unless ( defined $content ) {
- #en-tête de page : fiscal_year
- my $fiscal_year_href = '/base/fiscal_year?fiscal_year=' . $r->pnotes('session')->{fiscal_year} ;
- #on utilise la date de fin de l'exercice comme référence
- #donc dans les cas où la date de début n'est pas le premier janvier, il faut utiliser fiscal_year + 1 pour désigner l'exercice
- my $exercice = ( $r->pnotes('session')->{fiscal_year_offset} ) ? $r->pnotes('session')->{fiscal_year} + 1 : $r->pnotes('session')->{fiscal_year} ;
- $content = '<div class=rightbox><h1 style="margin: 0; text-align: center;"><a href="' . $fiscal_year_href . '">' . Encode::encode_utf8('Exercice ') . $exercice . '</a></h1>' ;
- #lien de déconnection; placé sous Exercice par clear: right pour que Exercice soit bien centré
- my $logout = Encode::encode_utf8( '<div style="float: right; clear: right; padding: 5px; margin : 5px;">' . Encode::decode_utf8( $r->user() ) . ' <a class=nav href="/base/logout">Déconnexion</a></div>' );
- $content .= $logout ;
- } # unless ( defined $content ) {
- #ajouter le contenu des buckets brigades de cette invocation
- $content .= $buffer ;
- } # while ($f->read(my $buffer))
- #on arrive à la fin du contenu
- if ($f->seen_eos) {
- $content = Encode::decode_utf8( $content ) . '</div>' ;
- $content = left_menu( $r ) . $content ;
- #<head> section de la page html
- my $html_head = html_head( $r ) ;
- #</body> tag
- my $html_tail = html_tail( $r ) ;
- $content = $html_head . $content . $html_tail ;
- #reset du header 'Content-Length'
- my $len = length $content ;
- $f->r->headers_out->set('Content-Length', $len) ;
- $f->print($content) if defined $content ;
- } else {
- #ce n'est pas fini, on stocke dans l'accumulateur
- $f->ctx($content) if defined $content ;
- } # if ($f->seen_eos)
- return Apache2::Const::OK ;
- } # if ( ( $r->uri !~ /base/ ) or ( $r->uri =~ /login|logout/ ) ) {
- }
- 1 ;
- sub html_head {
- my $r = shift;
- #on utilise html 5
- my $content = qq | <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <link href="/style/style.css" rel="stylesheet" type="text/css">
- <link href="/style/print.css" rel="stylesheet" type="text/css" media="print">
- <script src="/javascript/entry.js"></script>
- <title>Compta</title>
- </head>
- <body> | ;
- return $content ;
- }
- sub html_tail {
- my $r = shift;
- my $content ;
- #inclure le dump de la session dans la page? le paramètre session->{dump} est réglé dans le headerparser get_session_id.pm
- if ( $r->pnotes('session')->{dump} == 1 ) {
- use Data::Dumper ;
- $content .= '<div class=rightbox><pre>' . Data::Dumper::Dumper( $r->pnotes('session') ) . '</pre></div>';
- }
- $content .= '</body></html>' ;
- return $content ;
- }
- sub left_menu {
- my $r = shift ;
- my $req = Apache2::Request->new($r) ;
- my $content = '
- <div class=logobox><a href="/" title="' . $r->hostname . '"><img style="border: 0;" src="/style/logo.png" alt="Logo"></a></div>
- <!-- leftbox start -->
- <div class="leftbox">
- <table>
- <tr><td><a class=' . ( ($r->uri =~ /journal/ ) ? 'selecteditem' : 'nav' ) . ' href="/base/journal">Journaux</a></td></tr>
- <tr><td><a class=' . ( ($r->uri =~ /compte/ ) ? 'selecteditem' : 'nav' ) . ' href="/base/compte">Comptes</a></td></tr>
- <tr><td><a class=' . ( ($r->uri =~ /parametres/ ) ? 'selecteditem' : 'nav' ) . ' href="/base/parametres">Paramètres</a></td></tr>
- <tr><td><a class=' . ( ($r->uri =~ /tva/ ) ? 'selecteditem' : 'nav' ) . ' href="/base/tva">TVA</a></td></tr>
- <tr><td><a class=' . ( ($r->uri =~ /export/ ) ? 'selecteditem' : 'nav' ) . ' href="/base/export">Export</a></td></tr>
- <tr><td><a class=' . ( ($r->uri =~ /liasse_fiscale/ ) ? 'selecteditem' : 'nav' ) . ' href="/base/liasse_fiscale">Liasse fiscale</a></td></tr>
- </table>
- </div>
- <!-- leftbox end -->
- ' ;
- #export en attente
- return $content ;
- }
Advertisement
Add Comment
Please, Sign In to add comment