Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Marica::Base::Filter::html_head_and_tail ;
- use strict ;
- use Apache2::Const -compile => qw(OK DECLINED) ;
- sub handler {
- my $f = shift ;
- my $r = $f->r ;
- #traiter toutes les URL contenant /base; rejeter le logout, puisqu'on n'aura plus de session; laisser passer les documents
- if ( ( $r->uri !~ /base/ ) or ( $r->uri =~ /login|logout|listing|modeles|documents/ ) ) {
- 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)
- $content = '<div class=rightbox>' 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) {
- #fermer la <div class=rightbox>
- $content = $content . '</div>' ;
- #recherche du niveau dans le répertoire, pour la navigation
- my @path = split "/", $r->uri ;
- #le premier élément est vide, puisque le chemin commence par /; on l'enlève
- shift @path ;
- #inscrire dans la session le menuitem sélectionné (le deuxième, après /base)
- $r->pnotes('session')->{menuitem} = $path[1];
- #si on a passé le login, ajouter le menu
- unless ($r->uri =~ /login/) { $content = left_menu($r) . $content } ;
- #encadrer avec <head>..<body> et </body> tags
- $content = html_head( $r ) . $content . html_tail( $r ) ;
- #reset du header 'Content-Length'
- my $len = length $content ;
- $f->r->headers_out->set('Content-Length', $len) ;
- my $session_id = $r->pnotes('session')->{_session_id} ;
- $r->pnotes('session')->{time_to_live} = time() + $r->dir_config('seconds_to_live') ;
- #stocker la session
- unless ( $r->uri =~ /login/ ) {
- #stocker la session
- Storable::store $r->pnotes('session'), $r->document_root . '/base/sessions/' . $session_id ;
- }
- $f->print($content) if defined $content ;
- }
- else {
- #ce n'est pas fini, on stocke dans l'accumulateur
- $f->ctx($content) if defined $content ;
- }
- return Apache2::Const::OK ;
- }
- }
- 1 ;
- sub html_head {
- my $r = shift ;
- #on active le javascript pour afficher les graphiques via l'API google
- #le code du graphique est écrit en même temps que le tableau dans menu.pm --> sub data_table_html
- my $java_script = '' ;
- if ($r->uri =~ /statistiques/ ) {
- #liste des graphiques à afficher
- for ( keys %{$r->pnotes('session')->{java_script}} ) {
- $java_script .= $r->pnotes('session')->{java_script}{$_}
- }
- $java_script = '<script type="text/javascript" src="https://www.google.com/jsapi"></script>' . $java_script ;
- } ;
- my $content = '
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>' . $r->hostname . '</title>
- <link href="/style/style.css" rel="stylesheet" type="text/css">
- <link href="/style/print.css" rel="stylesheet" type="text/css" media="print">
- ' . $java_script . '
- </head>
- <body>
- <div class=logobox><a href="/site/accueil/index.html" title="' . $r->hostname . '"><img style="border: 0;" src="/images/logo/logo.png" alt="Logo"></a></div>
- ' ;
- 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>' ;
- return $content ;
- }
- sub left_menu {
- my $r = shift ;
- #
- #afficher le lien vers gestion des utilisateurs et des groupes si administrateur=1
- #
- my $users_link = '<tr><td><a class=nav href="/base/utilisateurs/users">' . _( 'Utilisateurs', $r ) . '</a></td></tr>' ;
- my $gestion_des_utilisateurs = ( $r->pnotes('session')->{administrateur} ) ? $users_link : '' ;
- #titres du menu gauche
- my $title_dossiers = _( 'Tous les dossiers en cours, par année', $r ) ;
- my $title_contentieux = _( 'Dossiers contentieux en cours, par année', $r ) ;
- my $title_assurances = _( 'Dossiers assurances en cours, par année', $r ) ;
- my $title_internes = _( 'Dossiers internes en cours', $r ) ;
- my $content = '
- <!-- leftbox start -->
- <div class="leftbox">
- <table>
- <tr><td><a class=nav href="/base/agenda_general">' . _( 'Agenda général', $r ) . '</a></td></tr>
- <tr><td><a class=nav href="/base/contrats_general">' . _( 'Contrats', $r ) . '</a></td></tr>
- <tr><td><a class=nav href="/base/contentieux_liste" title="' . $title_dossiers . '">' . _( 'Dossiers', $r ) . '</a></td></tr>
- <tr><td> <a class=nav href="/base/contentieux_liste?type=assurance" title="' . $title_assurances . '">' . _( 'Assurances', $r ) . '</a></td></tr>
- <tr><td> <a class=nav href="/base/contentieux_liste?type=contentieux" title="' . $title_contentieux . '">' . _( 'Contentieux', $r ) . '</a></td></tr>
- <tr><td> <a class=nav href="/base/contentieux_liste?type=interne" title="' . $title_internes . '">' . _( 'Internes', $r) . '</a></td></tr>
- <tr><td><a class=nav href="/base/parametres">' . _( 'Paramètres', $r ) . '</a></td></tr>
- <tr><td><a class=nav href="/base/rapports">' . _( 'Rapports', $r ) . '</a></td></tr>
- <tr><td><a class=nav href="/base/recherche">' . _( 'Recherche' , $r ) . '</a></td></tr>
- <tr><td><a class=nav href="/base/statistiques">' . _( 'Statistiques', $r ) . '</a></td></tr>
- ' . $gestion_des_utilisateurs . '
- </table>
- </div>
- <!-- leftbox end -->
- ' ;
- #lien de déconnection
- my $logout = '<div class=disconnect><a class=nav href="/base/logout">' . _( 'Se déconnecter', $r) . '</a></div>' ;
- $content .= $logout ;
- return $content ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement