{% extends "./layout.html" %}

{% comment %}
Copyright (C) 2018-2019  The Software Heritage developers
See the AUTHORS file at the top-level directory of this distribution
License: GNU Affero General Public License version 3, or any later version
See top-level LICENSE file for more information
{% endcomment %}

{% load static %}

{% block header %}
{{ block.super }}
{% if grecaptcha_activated %}
  <script src="https://www.google.com/recaptcha/api.js"></script>
{% endif %}
{% endblock %}

{% block navbar-content %}
<h4>Save code now</h4>
{% endblock %}

{% block browse-content %}

<ul class="nav nav-tabs" style="padding-left: 5px;">
  <li class="nav-item"><a class="nav-link active" data-toggle="tab" id="swh-origin-save-request-create-tab" href="#swh-origin-save-requests-create">Create save request</a></li>
  <li class="nav-item"><a class="nav-link" data-toggle="tab" id="swh-origin-save-requests-list-tab" href="#swh-origin-save-requests-list">Browse save requests</a></li>
</ul>

<div class="tab-content">
  <div id="swh-origin-save-requests-create" class="tab-pane active">
    <p class="mt-3">
      You can contribute to extend the content of the Software Heritage archive by submitting an origin
      save request. To do so, fill the required info in the form below:
    </p>
    <ul>
      <li><b>Origin type:</b> the type of version control system the software origin is using.
        Currently, the supported types are:
        <ul>
          <li><code>git</code>, for origins using <a href="https://git-scm.com/">Git</a></li>
          <li><code>hg</code>, for origins using <a href="https://www.mercurial-scm.org/">Mercurial</a></li>
          <li><code>svn</code>, for origins using <a href="https://subversion.apache.org/">Subversion</a></li>
        </ul>
      </li>
      <li><b>Origin url:</b> the url of the remote repository for the software origin.<br/>
        In order to avoid saving errors from Software Heritage, you should provide the clone/checkout url
        as given by the provider hosting the software origin. <br/>It can easily be found in the
        web interface used to browse the software origin. <br/>For instance, if you want to save a <code>git</code>
        origin into the archive, you should check that the command <code>$ git clone &lt;origin_url&gt;</code><br/>
        does not return an error before submitting a request.
      </li>
    </ul>
    <p>
      Once submitted, your save request can either be:
    </p>
    <ul>
      <li><b>accepted:</b> a visit to the provided origin will then be scheduled by Software Heritage in order to
        load its content into the archive as soon as possible</li>
      <li><b>rejected:</b> the provided origin url is blacklisted and no visit will be scheduled</li>
      <li>put in <b>pending</b> state: a manual review will then be performed in order to determine if the
        origin can be safely loaded or not into the archive</li>
    </ul>
    <p>
      Once a save request has been accepted, you can follow its current status in the
      <a id="swh-show-origin-save-requests-list" href="#swh-origin-save-requests-list">submitted save requests list</a>.
    </p>
    <form id="swh-save-origin-form" class="needs-validation" novalidate>
      {% csrf_token %}
      <div class="form-row">
        <div class="col-md-1"></div>
        <div class="form-group col-md-2">
          <label for="swh-input-origin-type">Origin type</label>
          <select id="swh-input-origin-type" class="form-control" required>
            {% comment %} <option selected value="">Choose...</option> {% endcomment %}
          </select>
          <div class="invalid-feedback">The origin type must be specified</div>
        </div>
        <div class="form-group col-md-6">
          <label for="swh-input-origin-url">Origin url</label>
          <input type="text" class="form-control" id="swh-input-origin-url" oninput="swh.browse.validateSaveOriginUrl(this)" required>
          <div class="invalid-feedback">The origin url is not valid or does not reference a code repository</div>
        </div>
        <div class="col-md-2">
          {% if not grecaptcha_activated %}
            <div class="form-group">
              <label for="swh-input-origin-save-submit">&#8203;</label>
              <button type="submit" id="swh-input-origin-save-submit" class="btn btn-default btn-block">Submit</button>
            </div>
          {% endif %}
        </div>
      </div>
      {% if grecaptcha_activated %}
        <div class="form-row">
          <div class="col-md-1"></div>
          <div class="form-group col-md-4">
            <div class="g-recaptcha" id="save-origin-recaptcha" data-sitekey="{{ grecaptcha_site_key }}"></div>
          </div>
          <div class="col-md-2"></div>
          <div class="form-group col-md-2">
            <label for="swh-input-origin-save-submit">&#8203;</label>
            <button type="submit" id="swh-input-origin-save-submit" class="btn btn-default btn-block">Submit</button>
          </div>
        </div>
      {% endif %}
    </form>
    <div class="swh-processing-save-request text-center" style="display: none;">
      <img src="{% static 'img/swh-spinner.gif' %}">
      <p>Processing "save code now" request ...</p>
    </div>
    <div id="swh-origin-save-request-status">
    </div>
  </div>

  <div id="swh-origin-save-requests-list" class="tab-pane mt-3">
    <table id="swh-origin-save-requests" class="table swh-table swh-table-striped" width="100%">
      <thead>
        <tr>
          <th>Request date</th>
          <th>Origin type</th>
          <th>Origin url</th>
          <th>Request status</th>
          <th>Save task status</th>
        </tr>
      </thead>
    </table>
    <p id="swh-origin-save-request-list-error"></p>
  </div>
</div>

<script>
  swh.webapp.initPage('origin-save');
  swh.browse.initOriginSave();
</script>

{% endblock %}