Make doc navigation extensible

Change-Id: I6fffb2e33439d6c539d05bb65a3b81d4e2267f57
diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index 8cf581f..ef8dab7 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -78,11 +78,8 @@
       });
   };
 
-  # Load Kalamar configuration
-  my $kalamar_conf = $self->config('Kalamar');
-
   # Check for API endpoint and set the endpoint accordingly
-  if ($kalamar_conf->{api}) {
+  if ($conf->{api}) {
 
     # The api endpoint should be defined as a separated path
     # and version string
@@ -94,14 +91,14 @@
 
   # Set from environment variable
   elsif ($ENV{'KALAMAR_API'}) {
-    $kalamar_conf->{api} = $ENV{'KALAMAR_API'};
+    $conf->{api} = $ENV{'KALAMAR_API'};
   }
 
   # API is not yet set - define
   else {
 
-    $kalamar_conf->{api} =
-      Mojo::URL->new($kalamar_conf->{api_path})->path('v' . ($kalamar_conf->{api_version} // $API_VERSION) . '/')->to_string;
+    $conf->{api} =
+      Mojo::URL->new($conf->{api_path})->path('v' . ($conf->{api_version} // $API_VERSION) . '/')->to_string;
   };
 
   # Add development path
@@ -193,7 +190,13 @@
 
   # Configure documentation navigation
   my $navi = Mojo::File->new($self->home->child('templates','doc','navigation.json'))->slurp;
-  $self->config(navi => decode_json($navi)) if $navi;
+  $navi = $navi ? decode_json($navi) : [];
+
+  if ($conf->{navi_ext}) {
+    push @$navi, @{$conf->{navi_ext}};
+  };
+
+  $self->config(navi => $navi);
 
   $self->log->info('API expected at ' . $self->config->{Kalamar}->{api});
 
@@ -211,8 +214,8 @@
 
   # Documentation routes
   $r->get('/doc')->to('documentation#page', page => 'korap')->name('doc_start');
-  $r->get('/doc/:page')->to('documentation#page', scope => undef);
-  $r->get('/doc/*scope/:page')->to('documentation#page')->name('doc');
+  $r->get('/doc/:page')->to('documentation#page')->name('doc1');
+  $r->get('/doc/*scope/:page')->to('documentation#page')->name('doc2');
 
   # Contact route
   $r->get('/contact')->to('documentation#contact');