routes.pm 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package Theme;
  2. use strict;
  3. use warnings;
  4. no warnings 'experimental';
  5. use feature qw{signatures};
  6. use File::Basename qw{basename};
  7. use lib 'lib';
  8. use Trog::Routes::HTML;
  9. our $default_title = 'Houston Perl Mongers';
  10. our %routes = (
  11. '/about.html' => {
  12. method => 'GET',
  13. callback => sub {Trog::Routes::HTML::redirect_permanent('/about') },
  14. },
  15. '/meetings.html' => {
  16. method => 'GET',
  17. callback => \&Trog::Routes::HTML::series,
  18. data => { id => 1609008204, in_series => 1 },
  19. },
  20. '/announce_meeting.html' => {
  21. method => 'GET',
  22. callback => \&Trog::Routes::HTML::series,
  23. data => { id => 1609008204, in_series => 1, limit => 1 },
  24. },
  25. '/sponsors.html' => {
  26. method => 'GET',
  27. callback => \&sponsors,
  28. },
  29. '/faqs.html' => {
  30. method => 'GET',
  31. callback => \&faq,
  32. },
  33. '/projects/index.html' => {
  34. method => 'GET',
  35. callback => \&Trog::Routes::HTML::series,
  36. data => { id => 1608661217, in_series => 1 },
  37. },
  38. '/talks/mostrecent.html' => {
  39. method => 'GET',
  40. callback => \&Trog::Routes::HTML::series,
  41. data => { id => 1608661368, in_series => 1, limit => 1 },
  42. },
  43. '/talks/index.html' => {
  44. method => 'GET',
  45. callback => \&Trog::Routes::HTML::series,
  46. data => { id => 1608661368, in_series => 1 },
  47. },
  48. '/styles/houston.css' => {
  49. method => 'GET',
  50. callback => sub {Trog::Routes::HTML::redirect_permanent('/themes/houston.pm/styles/houston.css') },
  51. },
  52. '/talks/(\d.*)' => {
  53. method => 'GET',
  54. callback => sub {
  55. my ($query) = @_;
  56. Trog::Routes::HTML::redirect_permanent("/assets/talks/$query->{fragment}")
  57. },
  58. captures => ['fragment'],
  59. },
  60. );
  61. my $processor = Text::Xslate->new(
  62. path => 'www/themes/houston.pm/templates',
  63. );
  64. sub sponsors ($args, $render_cb) {
  65. my $out = $processor->render('sponsors.tx');
  66. return Trog::Routes::HTML::index($args,$render_cb, $out);
  67. }
  68. sub faq ($args, $render_cb) {
  69. my $out = $processor->render('faq.tx');
  70. return Trog::Routes::HTML::index($args,$render_cb, $out);
  71. }
  72. 1;