{% extends "layout.html" %}

{% comment %}
Copyright (C) 2018-2026  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 render_bundle from webpack_loader %}
{% load static %}

{% block page_title %}
  {{ heading }}
{% endblock page_title %}

{% block header %}
  {% render_bundle 'save_code_now' %}
{% endblock header %}

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

{% block content %}
  <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>
  <form id="swh-save-origin-form"
        class="needs-validation mb-3"
        action="{% url 'origin-save' %}"
        method="POST"
        novalidate>
    {% csrf_token %}
    <div class="row gx-3">
      <div class="col-md-1"></div>
      <div class="col-md-1">
        <label for="swh-input-visit-type" class="form-label">Origin type</label>
        <select id="swh-input-visit-type"
                class="form-select form-control"
                name="visit_type"
                required
                onchange="swh.save_code_now.maybeRequireExtraInputs();">
          {% for visit_type in visit_types %}
            <option value="{{ visit_type }}"
                    {% if 'visit_type' in request.GET and request.GET.visit_type == visit_type %}selected{% endif %}>
              {{ visit_type }}
            </option>
          {% endfor %}
        </select>
        <div class="invalid-feedback d-none">The origin type must be specified</div>
      </div>
      <div class="col-md-5">
        <label for="swh-input-origin-url" class="form-label">Origin url</label>
        <input type="text"
               class="form-control"
               id="swh-input-origin-url"
               oninput="swh.save_code_now.validateSaveOriginUrl(this)"
               name="origin_url"
               value="{{ origin_url }}"
               required />
        <div class="invalid-feedback d-none">
          The origin url is not valid or does not reference a code repository
        </div>
      </div>
      <div class="col-md-2">
        <label for="swh-input-origin-save-submit" class="form-label invisible">Submit</label>
        <button type="submit"
                id="swh-input-origin-save-submit"
                class="btn btn-secondary btn-block form-control">Submit</button>
      </div>
      <div class="col-md-1"></div>
    </div>
    <!-- extra help text for the 'archives' type, hidden by default -->
    <p id="swh-save-origin-archives-help"
       class="swh-save-origin-archives-form mt-3"
       style="display: none">
      The <code>archives</code> visit type enables to save multiple source code archive files (*.tar.gz, *.zip)
      under a same software origin.
      <br />
      For each archive file to save, the source code will then be available inside a branch named
      <code>releases/&lt;version&gt;</code> from the snapshot generated by Software Heritage.
      <br />
      All archive files previously saved under the software origin will always be available in
      each snapshot generated by a new visit.
      <br />
      Please use the form below to add such artifacts to save before submitting a request.
    </p>
  </form>
  <div class="swh-processing-save-request text-center" style="display: none">
    <img src="{% static 'img/swh-spinner.gif' %}" alt="swh spinner" />
    <p>Processing "save code now" request ...</p>
  </div>
  <div id="swh-origin-save-request-status">
    {% if submit_status %}
      {% bootstrap_alert submit_status alert_type=alert_level dismissible=False %}
    {% endif %}
  </div>
  <ul class="nav nav-tabs" style="padding-left: 5px;">
    <li class="nav-item">
      <a class="nav-link {% if request.resolver_match.view_name == 'origin-save' %}active{% endif %}"
         href="{% url 'origin-save' %}"
         id="swh-origin-save-request-help-tab">Help</a>
    </li>
    <li class="nav-item js-only">
      <a class="nav-link {% if request.resolver_match.view_name == 'origin-save-list' %}active{% endif %}"
         href="{% url 'origin-save-list' %}"
         id="swh-origin-save-requests-list-tab">Browse save requests</a>
    </li>
  </ul>
  <div class="tab-content">
    {% block tab_content %}
    {% endblock tab_content %}

  </div>
  <script>
    swh.webapp.initPage('origin-save');
    swh.save_code_now.initOriginSave();
  </script>
{% endblock content %}
