<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<project name="Apache Unomi"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/DECORATION/1.7.0"
         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd">

    <skin>
        <groupId>lt.velykis.maven.skins</groupId>
        <artifactId>reflow-maven-skin</artifactId>
        <version>1.1.1</version>
    </skin>

    <poweredBy>
        <logo name="Karaf" href="http://karaf.apache.org/"
              img="http://karaf.apache.org/images/karaf-logo.png"/>
    </poweredBy>

    <version position="none"/>

    <googleAnalyticsAccountId>UA-70313240-1</googleAnalyticsAccountId>

    <custom>
        <reflowSkin>
            <!-- Make this to 'false' for local development, i.e. file:// URLs -->
            <protocolRelativeURLs>false</protocolRelativeURLs>
            <smoothScroll>true</smoothScroll>
            <theme>default</theme>
            <highlightJs>true</highlightJs>
            <highlightJsTheme>github</highlightJsTheme>
            <absoluteResourceURL>http://unomi.incubator.apache.org/</absoluteResourceURL>
            <brand>
                <name><![CDATA[
                    <img src="http://unomi.incubator.apache.org/images/unomi-86x20.png" />
                ]]></name>
                <href>http://unomi.incubator.apache.org</href>
            </brand>
            <!--slogan>Reference implementation of the OASIS Context Server specification</slogan-->
            <titleTemplate>%2$s | %1$s</titleTemplate>
            <toc>sidebar</toc>
            <!--tocTopMax>6</tocTopMax-->
            <topNav>Download|Documentation|Standard|Contribute|Privacy|Community</topNav>
            <bottomNav>
                <column>Download|Contribute</column>
                <column>Documentation</column>
                <column>Community|Standard|Privacy</column>
                <column>reports</column>
            </bottomNav>
            <bottomDescription>
                Powered by Apache Karaf
            </bottomDescription>
            <pages>
                <index project="unomi-root">
                    <shortTitle>Welcome</shortTitle>
                    <toc>false</toc>
                    <sections>
                        <body/>
                        <sidebar />
                    </sections>
                </index>
                <developer-info>
                    <toc>sidebar</toc>
                </developer-info>
                <source-repository>
                    <highlightJs>false</highlightJs>
                </source-repository>
                <issue-tracking>
                    <highlightJs>false</highlightJs>
                    <toc>false</toc>
                </issue-tracking>
                <license>
                    <highlightJs>false</highlightJs>
                    <toc>false</toc>
                </license>
                <!-- Disable ToC for some Maven reports -->
                <project-info>
                    <toc>false</toc>
                </project-info>
                <github-report>
                    <toc>false</toc>
                </github-report>
                <dependencies>
                    <tocTopMax>4</tocTopMax>
                </dependencies>
            </pages>
        </reflowSkin>
    </custom>

    <body>

        <menu name="Download" inherit="top">
            <item name="Packages" href="download.html" />
            <item name="License" href="license.html" />
        </menu>

        <menu name="Documentation" inherit="top">
            <item name="Site Home" href="./" />
            <item name="Main documentation" href="main.html" />
            <item name="More use cases" href="usecases.html" />
            <item name="REST API documentation" href="./rest-api-doc/index.html"/>
            <item name="API Javadoc" href="./unomi-api/apidocs/index.html"/>
        </menu>

        <menu ref="modules"/>
        <menu ref="reports"/>

        <menu name="Standard" inherit="top">
            <item name="OASIS Context Server Technical Committee" href="https://www.oasis-open.org/committees/cxs/"/>
        </menu>

        <menu name="Privacy" inherit="bottom">
            <item name="Site policy" href="privacy-policy.html"/>
        </menu>

        <menu name="Contribute" inherit="bottom">
            <item name="Mailing lists" href="mail-lists.html"/>
            <item name="Source" href="source-repository.html"/>
            <item name="Issues" href="issue-tracking.html"/>
        </menu>

        <menu name="Community" inherit="top">
            <item name="Mailing lists" href="mail-lists.html"/>
            <item name="Team" href="team-list.html"/>
            <item name="Maturity model report card" href="maturity-model-report.html"/>
            <item name="The Apache Software Foundation" href="http://www.apache.org"/>
            <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
            <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
        </menu>

    </body>

</project>