{
  Kalamar => {
    ## Backend server path
    # api_path => 'https://korap.example.org/api/',
    ## Backend API version
    # api_version => '1.0',

    ## If the application is run behind a proxy, ignore the forwarded host
    # proxy_host => 0,

    ## Run the application in a subfolder behind a proxy:
    proxy_prefix => '/deliko',
    plugins  => ['Plugins'],
    # https_only => 1,


    ## The name of the base corpus,
    ## for query examples (see kalamar.queries.dict)
    examplecorpus => 'DeLiKo@DNB',

    ## For further Plugins, add them
    ## to this array:
    # plugins => [],
    ## Currently bundled: Piwik, Auth

    ## Require everything to be send via https only:
    # https_only => 1,

    ## Override default content security policy
    # cs_policy => "default-src '*';"

    ## Set proxy timeouts
    # proxy_inactivity_timeout => 120,
    # proxy_connect_timeout => 120,
  defaults => {
    align => 'center'
  },
   proxies => [{
     root_path => '/plugin/export',
     mount => 'http://kalamar-export-plugin:7777',
     service => 'export-plugin-proxy'
  }],
 },
  CSP => {
    'frame-src' => 'self',
    'frame-ancestors' => ['self','http://korap.dnb.de/','https://korap.dnb.de/']
   },
 'Kalamar-Plugins' => {
     default_plugins =>'wiki.plugins.json'
  },
  Localize => {
    dict => {
      'en_title_addon' => 'DeLiKo@DNB',
      'de_Template_intro' => 'custom/intro',
      'en_Template_intro' => 'custom/intro',
      'en_howToCite' => 'Citation Help',
      'de_howToCite' => 'Zitierhilfe',
      'en_recentCorpusPub' => 'Recent publications to refer to DeLiKo@DNB as research data',
      'de_recentCorpusPub' => 'Neuere Publikationen zu DeLiKo@DNB als Forschungsdatengrundlage',
      'en_recentToolPub' => 'Recent publications to refer to KorAP as a research tool',
      'de_recentToolPub' => 'Neuere Publikationen zu KorAP als Forschungswerkzeug',
    },
    override  => 1
  },
  'TagHelpers-ContentBlock' => {
    footer => [
    {
      inline => '<%= link_to loc("about") => "http://www.ids-mannheim.de/kl/projekte/korap/" %>',  
      position => 70
    },
    {
      inline => '<%= link_to loc("howToCite") => url_for(doc => { page => "faq" })->fragment("howToCite") %>',
      position => 75
    },
    {
      inline => '<%= link_to loc("imprint") => "https://www.dnb.de/DE/Service/Impressum/impressum_node.html" %>',  
      position => 80
    }],
    faq => [
      {
        position => 50,
        inline => <<'HOWTOCITE'
<section>
  <h3 id="howToCite"><%= loc 'howToCite' %></h3>
%= include 'custom/partial/citation'
</section>
HOWTOCITE
      }
    ]
  }
}
