<?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" type="module"/>
      <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>
