<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
 * 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 xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
      xmlns:t="http://myfaces.apache.org/tomahawk" xmlns:grv="http://myfaces.apache.org/groovy"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
    <title>Hello World</title>
</h:head>

<body>
<ui:composition template="/template.xhtml">

    <ui:define name="body">
        <h:outputScript name="jsf.js" library="javax.faces"
                        target="head"/>

        <h1>
            <ui:insert name="title">
                Ext-Scripting Javablog Example

            </ui:insert>
        </h1>
        <h:panelGroup  styleClass="stdBoxBig" style="color:black;">
            <h2>In this example you can blog simply by entering text in the fields below and send submit</h2>

            <p>You can change the blogging artifacts on the fly, all the sources can be found under
                <b>WEB-INF/java/org/apache/myfaces/javaloader/blog/</b> in your deployment directory</p>

        </h:panelGroup>

        <h:form id="form">
            <div class="left" style="margin-top: 3px;">


                <h:panelGrid id="grid" columns="1" styleClass="stdBox">

                    <h:outputFormat id="title1" escape="false" styleClass="title" value="#{javaBlogView.title}"/>
                    <h:outputFormat id="title11" escape="false" styleClass="title1" value="#{javaBlogView.title1}"/>
                    <hr/>
                    <h:panelGrid columns="2" columnClasses="label, input">
                        <h:outputText value="First Name"/>
                        <h:inputText value="#{javaBlogView.firstName}"/>
                        <h:outputText value="Last Name"/>
                        <h:inputText value="#{javaBlogView.lastName}"/>
                        <h:outputText value="Topic of entry"/>
                        <h:inputText value="#{javaBlogView.topic}"/>
                    </h:panelGrid>
                    <h:panelGrid columns="2" columnClasses="label, input">
                        <h:outputText styleClass="label" value="Content"/>
                        <h:inputTextarea value="#{javaBlogView.content}"/>
                    </h:panelGrid>
                    <hr/>
                    <h:commandButton styleClass="btn" action="#{javaBlogView.addEntry}" value="Add Blog Entry">
                        <f:ajax execute="@form" render="content"/>
                    </h:commandButton>
                </h:panelGrid>
            </div>
            <h:panelGrid id="content" columns="1" styleClass="right">
                <ui:repeat value="#{javaBlogService.blogEntries}" var="item">
                    <h:panelGrid columns="1" styleClass="messageBox">
                        <h:panelGroup styleClass="topic">
                            <h:outputLabel styleClass="label" value="Topic"/>
                            <h:outputText value="#{item.topic}"/>
                        </h:panelGroup>
                        <h:panelGroup styleClass="content">
                            <h:outputLabel styleClass="label" value="Content"/>
                            <h:outputFormat escape="false" value="#{item.content}"/>
                        </h:panelGroup>
                    </h:panelGrid>
                </ui:repeat>
            </h:panelGrid>
        </h:form>
    </ui:define>
</ui:composition>
</body>
</html>
