<!DOCTYPE html>
<!--
    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.
-->
<html data-th-with="page=${request.adaptTo(@org.apache.sling.samples.fling.page.MessagesPage@class)}">
<head data-th-replace="/apps/fling/page/fragments/head.html::default"></head>
<body>
<div class="container">
  <nav class="nav-main">
    <div class="pull-left">
      <ul class="breadcrumb" style="direction: rtl" data-th-replace="/apps/fling/page/fragments/navigation.html::breadcrumb"></ul>
    </div>
    <ul class="nav nav-pills" role="tablist" data-th-replace="/apps/fling/page/fragments/navigation.html::children"></ul>
  </nav>
  <div class="panel panel-primary">
    <div class="panel-heading">
      <span data-th-text="${page.title}">MESSAGES PAGE</span>
    </div>
    <div class="panel-body">
      <table data-th-with="messages=${page.messages}" class="table">
        <thead>
          <tr>
            <td></td>
            <td>Subject</td>
            <td>From</td>
            <td>Text</td>
          </tr>
        </thead>
        <tbody>
          <tr data-th-each="message,status : ${messages}">
            <td><span data-th-text="${status.count}">count</span></td>
            <td><span data-th-text="${message.subject}">subject</span></td>
            <td><span data-th-text="${message.from[0].address}">from</span></td>
            <td><span data-th-text="${message.contentType.startsWith('text/plain')} ? ${message.content} : 'not a plain text message, not rendering content'">content</span></td>
          </tr>
        </tbody>
      </table>
    </div>
    <div class="panel-footer" data-th-replace="/apps/fling/page/fragments/panel.html::footer"></div>
  </div>
</div>
</body>
</html>
