{#-
       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.
-#}
{% set page="reclone_repo" %}
{% extends 'allura:templates/site_admin.html' %}

{% block content %}
<h1>Reclone repository</h1>
<form name="add_subscriber" method="POST">
    <table>
        <tr>
            <td>Neighborhood prefix:</td> <td><input name="prefix" type="text" value="{{prefix}}"></td>
        </tr>
        <tr>
            <td> Project shortname:</td> <td><input name="shortname" type="text" value="{{shortname}}"></td>
        </tr>
        <tr>
            <td> Repository mount point:</td> <td><input name="mount_point" type="text" value="{{mount_point}}"></td>
        </tr>
        <tr>
            <td><input type="submit" value="Reclone"></td>
        </tr>
    </table>
    {{lib.csrf_token()}}
</form>
{% endblock %}
