<!--/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ~ 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.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/-->
<body data-sly-use.edit="org.apache.sling.samples.htlblog.models.Edit">
<sly data-sly-include="nav.html"></sly>
<h1 data-sly-test.isEdit="${edit.post}">Editing ${edit.post.title}</h1>
<h1 data-sly-test="${!isEdit}">Create New</h1>
<form method="POST" action="${isEdit ? edit.post.getPath : '/content/htlblog/posts/*'}">
    <div><input type="text" name="title" value="${edit.post.title}"/></div>
    <div><textarea name="body" cols="40" rows="5">${edit.post.body}</textarea></div>
    <div>
        <input type="hidden" name="created"/>
        <input type="hidden" name="createdBy"/>
        <input type="hidden" name="jcr:primaryType" value="nt:unstructured"/>
        <input type="hidden" name="sling:resourceType" value="htlblog/post"/>
    </div>
    <div><input type="submit" value="Post" class="button"></div>
</form>