Advertisement
Guest User

Untitled

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