<?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="#{demoBundle.pageTitle} - #{title}" id="page">

      <!--
            <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="#{title}" id="content">
            <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-2023 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>
