{#-
       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.
-#}
{% extends g.theme.master %}

{% block title %}Award{% endblock %}

{% block header %}Award{% endblock %}

{% block content %}
        <form action="{{award.longurl()}}/update" method="post" enctype="multipart/form-data">
          <table>
            <thead>
              <tr>
                <th></th>
                <th>Icon</th>
                <th>Abbreviation</th>
                <th>Description</th>
                <th></th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td style="padding-right:0">
                  {% if award.icon %}
                    <img class="award_icon" src="icon" alt=""/>
                  {% endif %}
                </td>
                <td style="padding-left:0">
                  <input type="file" id="icon" name="icon" class="text" style="width:180px"/>
                </td>
                <td><input type="text" name="short" value="{{award.short}}" /></td>
                <td><input type="text" name="full" value="{{award.full}}" /></td>
                <td><input type="submit" value="Save" /></td>
              </tr>
            </tbody>
          </table>
          {{lib.csrf_token()}}
        </form>
        <p><a href="../../accolades">&#060;&#060; Back</a></p>
{% endblock %}
