| package Korap; | 
 | use Mojo::Base 'Mojolicious'; | 
 |  | 
 | our $VERSION = '0.03'; | 
 |  | 
 | # Start the application and register all routes and plugins | 
 | sub startup { | 
 |   my $self = shift; | 
 |  | 
 |   # Set secret for signed cookies | 
 |   $self->secrets(['fmhsfjgfchgsdbfgshfxztsbt32477eb45veu4vubrghfgghbtv']); | 
 |  | 
 |   # Add additional plugin path | 
 |   push(@{$self->plugins->namespaces}, __PACKAGE__ . '::Plugin'); | 
 |  | 
 |   # Load plugins | 
 |   foreach (qw/Config | 
 | 	      CHI | 
 | 	      TagHelpers::Pagination | 
 | 	      Notifications | 
 | 	      Number::Commify | 
 | 	      KorapSearch | 
 | 	      KorapInfo | 
 | 	      KorapTagHelpers/) { | 
 |     $self->plugin($_); | 
 |   }; | 
 |  | 
 |   $self->helper( | 
 |     date_format => sub { | 
 |       my ($c, $date) = @_; | 
 |       return $date; | 
 |     } | 
 |   ); | 
 |  | 
 |   # Routes | 
 |   my $r = $self->routes; | 
 |  | 
 |   # Base search route | 
 |   $r->get('/')->to('search#remote')->name('index'); | 
 |  | 
 |   # Tutorial data | 
 |   $r->get('/tutorial/(*tutorial)', { tutorial => 'start' }) | 
 |     ->to('tutorial#page')->name('tutorial'); | 
 |  | 
 |   # Collection data | 
 |   my $collection = $r->route('/collection'); | 
 |   $collection->to('search#info'); | 
 |   $collection->search; | 
 |  | 
 |   # Corpus data | 
 |   my $corpus = $r->route('/corpus'); | 
 |   $corpus->search; | 
 |   $corpus->route('/:corpus_id')->search; | 
 |   $corpus->route('/:corpus_id/#doc_id')->search; | 
 |   $corpus->route('/:corpus_id/#doc_id/:match_id') | 
 |          ->to('info#about_match'); | 
 |  | 
 |   # Utilities | 
 |   $r->get('/util/query')->to('search#query'); | 
 | }; | 
 |  | 
 |  | 
 | 1; |