<?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 maxWidth="#{navigationState.viewSource ? '' : '1140px'}"
                  marginLeft="auto"
                  marginRight="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>
