summaryrefslogtreecommitdiff
path: root/scripts/menu.pl
blob: ee88f08e382021119e37b88fc385860d13ea51f8 (plain)
  1. #!/usr/bin/perl
  2. # This file is copyright (C) 2007the LedgerSMB core team and licensed under
  3. # the GNU General Public License. For more information please see the included
  4. # LICENSE and COPYRIGHT files
  5. package LedgerSMB::Scripts::menu;
  6. our $VERSION = '0.1';
  7. $menufile = "menu.ini";
  8. use LedgerSMB::DBObject::Menu;
  9. use LedgerSMB::Template;
  10. use strict;
  11. sub __default {
  12. my ($request) = @_;
  13. if ($request->{menubar}){
  14. drilldown_menu($request);
  15. } else {
  16. expanding_menu($request);
  17. }
  18. }
  19. sub root_doc {
  20. my ($request) = @_;
  21. my $template;
  22. if (!$request->{menubar}){
  23. $request->{main} = "splash.html" if $request->{main} eq 'company_logo';
  24. $request->{main} = "am.pl?action=recurring_transactions"
  25. if $request->{main} eq 'recurring_transactions';
  26. $template = LedgerSMB::Template->new(
  27. user =>$request->{_user},
  28. locale => $request->{_locale},
  29. path => 'UI',
  30. template => 'frameset',
  31. format => 'HTML'
  32. );
  33. } else {
  34. drilldown_menu($request);
  35. return;
  36. }
  37. $template->render($request);
  38. }
  39. sub expanding_menu {
  40. my ($request) = @_;
  41. if ($request->{'open'} !~ s/:$request->{id}:/:/){
  42. $request->{'open'} .= ":$request->{id}:";
  43. }
  44. # The above system can lead to extra colons.
  45. $request->{'open'} =~ s/:+/:/g;
  46. my $menu = LedgerSMB::DBObject::Menu->new({base => $request});
  47. $menu->generate();
  48. for my $item (@{$menu->{menu_items}}){
  49. if ($request->{'open'} =~ /:$item->{id}:/ ){
  50. $item->{'open'} = 'true';
  51. }
  52. }
  53. my $template = LedgerSMB::Template->new(
  54. user => $request->{_user},
  55. locale => $request->{_locale},
  56. path => 'UI/menu',
  57. template => 'expanding',
  58. format => 'HTML',
  59. );
  60. $template->render($menu);
  61. }
  62. sub drilldown_menu {
  63. my ($request) = @_;
  64. my $menu = LedgerSMB::DBObject::Menu->new({base => $request});
  65. $menu->{parent_id} ||= 0;
  66. print STDERR "Testing";
  67. $menu->generate_section;
  68. my $template = LedgerSMB::Template->new(
  69. user => $request->{_user},
  70. locale => $request->{_locale},
  71. path => 'UI/menu',
  72. template => 'drilldown',
  73. format => 'HTML',
  74. );
  75. $template->render($menu);
  76. }
  77. 1;