<?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:panel>
        <tc:style customClass="#{navigationState.viewSource ? '' : 'container mx-auto'}"/>

        <tc:segmentLayout small="#{navigationState.viewSource ? '2seg 10seg' : 'auto 1fr'}">
          <tc:panel>
            <ui:include src="/navigation.xhtml"/>
          </tc:panel>

          <tc:splitLayout columns="1fr">
            <tc:style display="#{navigationState.viewSource ? '' : 'block'}"/>
            <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}">
              <tc:style overflowY="auto"/>
              <pre><code class="language-markup" id="demo-view-source">
              <tc:out keepLineBreaks="false" value="#{navigationTree.source}"/>
            </code></pre>
            </tc:panel>
          </tc:splitLayout>
        </tc:segmentLayout>
      </tc:panel>

      <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-2020 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>
