<?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.
-->

<!-- main template for this demo application, you may also use plain.xhtml for test purpose -->

<ui:composition xmlns:f="http://java.sun.com/jsf/core"
                xmlns:tc="http://myfaces.apache.org/tobago/component"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns="http://www.w3.org/1999/xhtml">
  <f:view locale="#{localeController.locale}">
    <tc:page label="Tobago Demo - #{navigationState.currentNode.label}" id="page">
      <tc:attribute name="label" value="#{title}" mode="valueIfSet"/>

      <!--
            <tc:dataAttribute name="tobago-log-level" value="DEBUG"/>
      -->

      <tc:script file="#{request.contextPath}/script/demo.js"/>
      <tc:script file="#{request.contextPath}/script/prism-1.14.0.js"/>
      <tc:style file="#{request.contextPath}/style/demo.css"/>
      <tc:style file="#{request.contextPath}/style/prism-1.14.0.css"/>

      <tc:meta name="keywords" content="jsf, tobago, demo"/>
      <tc:meta name="robots" content="noindex" rendered="#{metaController.renderNoindex}"/>
      <tc:metaLink href="#{request.contextPath}/image/feather.ico" rel="shortcut icon"/>
      <tc:metaLink href="#{request.contextPath}/image/feather.png" rel="apple-touch-icon"/>

      <ui:include src="/menu.xhtml"/>

      <tc:segmentLayout extraLarge="auto 1fr 4seg" small="auto 1fr 12seg" extraSmall="12seg">
        <tc:panel>
          <tc:style width="250px"/>
          <ui:include src="/navigation.xhtml"/>
        </tc:panel>

        <tc:panel>
          <tc:messages id="messages" orderBy="severity" rendered="#{!hideGlobalMessages}"/>

          <tc:section label="#{navigationState.currentNode.label}" id="content">
            <tc:attribute name="label" value="#{title}" mode="valueIfSet"/>
            <tc:form id="mainForm">
              <ui:insert/>
            </tc:form>
          </tc:section>
        </tc:panel>

        <tc:panel rendered="#{navigationState.viewSource}">
          <pre><code class="language-markup" id="demo-view-source">
            <tc:out keepLineBreaks="false" value="#{navigationTree.source}"/>
          </code></pre>
        </tc:panel>
      </tc:segmentLayout>

      <tc:popup id="info" collapsedMode="hidden">
        <tc:box label="Client Information">
          <f:facet name="bar">
            <tc:button image="fa-close">
              <tc:operation name="hide" for="info"/>
            </tc:button>
          </f:facet>
          <tc:out label="Theme:" value="#{themeController.localizedTheme}"/>
          <tc:out label="Locale:" value="#{localeController.localizedLocale}"/>
          <tc:out label="Project Stage:" value="#{facesContext.application.projectStage}"/>
          <tc:out label="CSP mode:" value="#{tobagoContext.tobagoConfig.contentSecurityPolicy.mode}"/>
          <tc:out label="Requests:"
                  value="#{activityList.values[0].jsfRequest} / AJAX: #{activityList.values[0].ajaxRequest}"/>
        </tc:box>
      </tc:popup>

      <tc:footer fixed="true">
        © 2005-2019 Apache Software Foundation, Licensed under the <a
          href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
      </tc:footer>

    </tc:page>
  </f:view>
</ui:composition>
