<!DOCTYPE html>
<!--
    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.
-->
<html>
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>

  <ul data-th-fragment="breadcrumb" class="breadcrumb" style="direction: rtl">
    <li class="active dropdown">
      <span data-th-text="${page.title}">current page</span>
    </li>
    <li data-th-each="parent : ${page.parents}" class="dropdown">
      <a data-th-if="${parent.children.iterator().hasNext()}" href="#" class="dropdown-toggle" role="button" data-toggle="dropdown"><span class="caret"></span></a>
      <a data-th-href="${#strings.substringAfter(parent.path, '/content')} + '.html'" data-th-text="${parent.title}">parent page</a>
      <ul class="dropdown-menu" role="menu">
        <li data-th-each="child : ${parent.children}" role="presentation"><a role="menuitem" tabindex="-1" data-th-href="${#strings.substringAfter(child.path, '/content')} + '.html'" data-th-text="${child.title}">child page</a></li>
      </ul>
    </li>
  </ul>

  <ul data-th-fragment="children" class="nav nav-pills" role="tablist">
    <li data-th-each="child : ${page.children}"><a data-th-href="${page.name + '/' + child.name} + '.html'" data-th-text="${child.title}">child page</a></li>
  </ul>

  <ul data-th-fragment="siblings" class="nav nav-pills" role="tablist">
    <li data-th-each="sibling : ${page.siblings}"><a data-th-href="${sibling.name} + '.html'" data-th-text="${sibling.title}">sibling</a></li>
  </ul>

</body>
</html>
