Advertisement
Guest User

Untitled

a guest
Aug 7th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.55 KB | None | 0 0
  1. package Marica::Base::Filter::html_head_and_tail ;
  2.  
  3. use utf8 ;
  4.  
  5. use strict ;
  6.  
  7. use Apache2::Const -compile => qw(OK DECLINED) ;
  8.  
  9. sub handler {
  10.  
  11. binmode(STDOUT, ":utf8") ;
  12.  
  13. my $f = shift ;
  14.  
  15. my $r = $f->r ;
  16.  
  17. #traiter toutes les URL contenant /base; rejeter le logout, puisqu'on n'aura plus de session; laisser passer les documents
  18. if ( ( $r->uri !~ /base/ ) or ( $r->uri =~ /login|logout|listing|modeles|documents/ ) ) {
  19.  
  20. return Apache2::Const::DECLINED
  21.  
  22. } else {
  23.  
  24. #accumulation du contenu des invocations précédentes du filtre
  25. my $content = $f->ctx ;
  26.  
  27. while ($f->read(my $buffer)) {
  28.  
  29. #pour la 1ère invocation, on veut ajouter <div class=rightbox> pour positionner le contenu à droite du menu (leftbox)
  30. $content = '<div class=rightbox>' unless defined $content ;
  31.  
  32. #ajouter le contenu des buckets brigades de cette invocation
  33. $content .= $buffer ;
  34.  
  35. } # while ($f->read(my $buffer))
  36.  
  37. #on arrive à la fin du contenu
  38. if ($f->seen_eos) {
  39.  
  40. #fermer la <div class=rightbox>
  41. $content = Encode::decode_utf8( $content ) . '</div>';
  42.  
  43. #recherche du niveau dans le répertoire, pour la navigation
  44. my @path = split "/", $r->uri ;
  45.  
  46. #le premier élément est vide, puisque le chemin commence par /; on l'enlève
  47. shift @path ;
  48.  
  49. #inscrire dans la session le menuitem sélectionné (le deuxième, après /base)
  50. $r->pnotes('session')->{menuitem} = $path[1];
  51.  
  52. #si on a passé le login, ajouter le menu
  53. unless ($r->uri =~ /login/) { $content = left_menu($r) . $content } ;
  54.  
  55. #encadrer avec <head>..<body> et </body> tags
  56. $content = html_head( $r ) . $content . html_tail( $r ) ;
  57.  
  58. #reset du header 'Content-Length'
  59. my $len = length $content ;
  60.  
  61. $f->r->headers_out->set('Content-Length', $len) ;
  62.  
  63. my $session_id = $r->pnotes('session')->{_session_id} ;
  64.  
  65. $r->pnotes('session')->{time_to_live} = time() + $r->dir_config('seconds_to_live') ;
  66.  
  67. #stocker la session
  68. unless ( $r->uri =~ /login/ ) {
  69.  
  70. #stocker la session
  71. Storable::store $r->pnotes('session'), $r->document_root . '/base/sessions/' . $session_id ;
  72.  
  73. }
  74.  
  75. $f->print($content) if defined $content ;
  76.  
  77. } else {
  78.  
  79. #ce n'est pas fini, on stocke dans l'accumulateur
  80. $f->ctx($content) if defined $content ;
  81.  
  82. } # if ($f->seen_eos)
  83.  
  84. return Apache2::Const::OK ;
  85.  
  86. } # if ( ( $r->uri !~ /base/ ) or ( $r->uri =~ /login|logout|listing|modeles|documents/ ) )
  87.  
  88. }
  89.  
  90.  
  91. 1 ;
  92.  
  93.  
  94. sub html_head {
  95.  
  96. my $r = shift ;
  97.  
  98. #on active le javascript pour afficher les graphiques via l'API google
  99. #le code du graphique est écrit en même temps que le tableau dans menu.pm --> sub data_table_html
  100. my $java_script = '' ;
  101.  
  102. if ($r->uri =~ /statistiques/ ) {
  103.  
  104. #liste des graphiques à afficher
  105. for ( keys %{$r->pnotes('session')->{java_script}} ) {
  106.  
  107. $java_script .= $r->pnotes('session')->{java_script}{$_}
  108.  
  109. }
  110.  
  111. $java_script = '<script type="text/javascript" src="https://www.google.com/jsapi"></script>' . $java_script ;
  112.  
  113. } ;
  114.  
  115. #remplacer par html 5?
  116. #<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  117.  
  118. my $content = '
  119. <!DOCTYPE html>
  120. <html>
  121. <head>
  122. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  123. <title>' . $r->hostname . '</title>
  124. <link href="/style/style.css" rel="stylesheet" type="text/css">
  125. <link href="/style/print.css" rel="stylesheet" type="text/css" media="print">
  126. ' . $java_script . '
  127. </head>
  128. <body>
  129. <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>
  130. ' ;
  131.  
  132. return $content ;
  133.  
  134. } #sub html_head
  135.  
  136.  
  137. sub html_tail {
  138.  
  139. my $r = shift;
  140.  
  141. my $content ;
  142.  
  143. #inclure le dump de la session dans la page? le paramètre session->{dump} est réglé dans le headerparser get_session_id.pm
  144. if ( $r->pnotes('session')->{dump} == 1 ) {
  145.  
  146. use Data::Dumper ;
  147.  
  148. $content .= '<div class=rightbox><pre>' . Data::Dumper::Dumper( $r->pnotes('session') ) . '</pre></div>' ;
  149.  
  150. }
  151.  
  152. $content .= '</body>' ;
  153.  
  154. return $content ;
  155.  
  156. } #sub html_tail
  157.  
  158.  
  159. sub left_menu {
  160.  
  161. my $r = shift ;
  162.  
  163. my $req = Apache2::Request->new($r) ;
  164.  
  165. #
  166. #afficher le lien vers gestion des utilisateurs et des groupes si administrateur=1
  167. #
  168. my $users_link = '<tr><td><a class=nav href="/base/utilisateurs/users">' . _( 'Utilisateurs', $r ) . '</a></td></tr>' ;
  169.  
  170. my $gestion_des_utilisateurs = ( $r->pnotes('session')->{administrateur} ) ? $users_link : '' ;
  171.  
  172. #titres du menu gauche
  173. my $title_dossiers = _( 'Tous les dossiers en cours, par année', $r ) ;
  174. my $title_contentieux = _( 'Dossiers contentieux en cours, par année', $r ) ;
  175. my $title_assurances = _( 'Dossiers assurances en cours, par année', $r ) ;
  176. my $title_internes = _( 'Dossiers internes en cours', $r ) ;
  177.  
  178. my $content = '
  179.  
  180. <!-- leftbox start -->
  181. <div class="leftbox">
  182.  
  183. <table>
  184. <tr><td><a class=nav href="/base/agenda_general">' . _( 'Agenda général', $r ) . '</a></td></tr>
  185. <tr><td><a class=nav href="/base/contrats_general">' . _( 'Contrats', $r ) . '</a></td></tr>
  186. <tr><td><a class=nav href="/base/contentieux_liste" title="' . $title_dossiers . '">' . _( 'Dossiers', $r ) . '</a></td></tr>
  187. <tr><td>&nbsp;&nbsp;&nbsp;<a class=nav href="/base/contentieux_liste?type=assurance" title="' . $title_assurances . '">' . _( 'Assurances', $r ) . '</a></td></tr>
  188. <tr><td>&nbsp;&nbsp;&nbsp;<a class=nav href="/base/contentieux_liste?type=contentieux" title="' . $title_contentieux . '">' . _( 'Contentieux', $r ) . '</a></td></tr>
  189. <tr><td>&nbsp;&nbsp;&nbsp;<a class=nav href="/base/contentieux_liste?type=interne" title="' . $title_internes . '">' . _( 'Internes', $r) . '</a></td></tr>
  190. <tr><td><a class=nav href="/base/parametres">' . _( 'Paramètres', $r ) . '</a></td></tr>
  191. <tr><td><a class=nav href="/base/rapports">' . _( 'Rapports', $r ) . '</a></td></tr>
  192. <tr><td><a class=nav href="/base/recherche">' . _( 'Recherche' , $r ) . '</a></td></tr>
  193. <tr><td><a class=nav href="/base/statistiques">' . _( 'Statistiques', $r ) . '</a></td></tr>
  194. ' . $gestion_des_utilisateurs . '
  195. </table>
  196.  
  197. </div>
  198. <!-- leftbox end -->
  199. ' ;
  200.  
  201. #lien de déconnection
  202. my $logout = '<div class=disconnect><a class=nav href="/base/logout">' . _( 'Se déconnecter', $r) . '</a></div>' ;
  203.  
  204. $content .= $logout ;
  205.  
  206. return $content ;
  207.  
  208. } #sub left_menu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement