routes.pm 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 Text::Xslate;
  8. use URI::Escape qw{uri_escape_utf8};
  9. use lib 'lib';
  10. use Trog::Routes::HTML;
  11. our $default_title = 'Houston Perl Mongers';
  12. our $default_image = 'img/icon/houstonpm.png';
  13. our $display_name = 'Houston Perl Mongers';
  14. our $description = 'Houston Perl Mongers';
  15. our $default_tags = 'houston.pm, houston, perl, mongers, Net::Jabber::Bot, Device::USB::LibUSB';
  16. our $show_madeby = 1;
  17. our $twitter_account = 'houstonpm';
  18. our $fb_app_id = 'bogus';
  19. our %routes = (
  20. '/about.html' => {
  21. method => 'GET',
  22. callback => sub ($query) { $query->{tpsgi}->redirect_permanent('/about') },
  23. },
  24. '/meetings.html' => {
  25. method => 'GET',
  26. callback => \&Trog::Routes::HTML::series,
  27. data => { id => 'eb64957c-14d7-11ec-852a-f1cd345321ea', in_series => 1, exclude_tags => ['series','about'] },
  28. },
  29. '/announce_meeting.html' => {
  30. method => 'GET',
  31. callback => \&Trog::Routes::HTML::series,
  32. data => { id => 'eb64957c-14d7-11ec-852a-f1cd345321ea', in_series => 1, exclude_tags => ['series','about'], limit => 1 },
  33. },
  34. '/sponsors.html' => {
  35. method => 'GET',
  36. callback => \&sponsors,
  37. },
  38. '/faqs.html' => {
  39. method => 'GET',
  40. callback => \&faq,
  41. },
  42. '/projects/index.html' => {
  43. method => 'GET',
  44. callback => \&Trog::Routes::HTML::series,
  45. data => { id => 'e9941181-14d7-11ec-852a-c5617e3415e6', in_series => 1, exclude_tags => ['series','about'] },
  46. },
  47. '/talks/mostrecent.html' => {
  48. method => 'GET',
  49. callback => \&Trog::Routes::HTML::series,
  50. data => { id => 'e91ce133-14d7-11ec-852a-a69c982403ec', in_series => 1, exclude_tags => ['series','about'], limit => 1 },
  51. },
  52. '/talks/index.html' => {
  53. method => 'GET',
  54. callback => \&Trog::Routes::HTML::series,
  55. data => { id => 'e91ce133-14d7-11ec-852a-a69c982403ec', in_series => 1, exclude_tags => ['series','about'] },
  56. },
  57. '/styles/houston.css' => {
  58. method => 'GET',
  59. callback => sub ($query) { $query->{tpsgi}->redirect_permanent('/themes/houston.pm/styles/houston.css') },
  60. },
  61. '/talks/{fragment+}' => {
  62. method => 'GET',
  63. callback => sub ($query) {
  64. my $fragment = $query->{input}{fragment};
  65. return $query->{tpsgi}->notfound($query) unless $fragment =~ m/\A\d/;
  66. return $query->{tpsgi}->redirect_permanent( '/assets/talks/' . uri_escape_utf8( $fragment, q{^A-Za-z0-9\-._~/} ) );
  67. },
  68. },
  69. );
  70. my $processor = Text::Xslate->new(
  71. path => 'www/themes/houston.pm/templates',
  72. );
  73. sub sponsors ($args) {
  74. $args->{title} = 'Sponsors';
  75. my $out = $processor->render('sponsors.tx');
  76. return Trog::Routes::HTML::index($args, $out);
  77. }
  78. sub faq ($args) {
  79. $args->{title} = 'FAQ';
  80. my $out = $processor->render('faq.tx');
  81. return Trog::Routes::HTML::index($args, $out);
  82. }
  83. 1;