+get '/' => sub {
+ my $self = shift;
+ $self->render_text("...");
+};
+
+# define languages
+
+helper locale => sub {
+ my $self = shift;
+ my %locale = @_;
+ my $lang = $self->stash('lang');
+ $lang =~ s/-dev$//;
+ return $locale{ $lang } || "MISSING $lang $_[1]";
+};
+
+helper ip => sub {
+ my $self = shift;
+ return
+ $self->req->headers->header('X-Forwarded-For')
+ || $self->req->headers->header('X-Real-IP')
+ || $self->tx->{remote_address}
+ ;
+};
+
+
+get '/js/services.js' => sub {
+ my $self = shift;
+ $self->stash( VERSION => $VERSION );
+ $self->stash( couchdb_database => $couchdb_database );
+ $self->render( 'js/services', format => 'js' );
+};
+
+# short public URLs
+get '/hr' => sub { shift->redirect_to('/lang/hr/drzb2013') };
+get '/en' => sub { shift->redirect_to('/lang/en/drzb2013') };
+
+get '/lang/:lang/:template' => sub {
+ my $self = shift;
+ $self->render( $self->stash('template') , lang => $self->stash('lang') );
+};
+
+get '/lang/:lang/partials/:template' => sub {
+ my $self = shift;
+ $self->stash( couchdb_view => $couchdb_view );
+ $self->render( 'partials/' . $self->stash('template') , lang => $self->stash('lang') );
+};
+
+get '/lang/:lang/.template' => sub {
+ my $self = shift;
+ $self->render( $self->stash('template') , lang => $self->stash('lang') );
+};