Files
Assetmanager/app/templates/software_packages.html

91 lines
5.0 KiB
HTML
Executable File

{% extends 'base.html' %}
{% block content %}
<div class="toolbar">
<div>
<h1>{{ t('software_packages.title') }}</h1>
<p class="muted">{{ t('software_packages.subtitle') }}</p>
</div>
<div class="setup-analyzer-actions">
<a class="button" href="/software/setup-analyzer">{{ t('software_packages.new_from_analyzer') }}</a>
<a class="button button-secondary" href="/software/setup-analyzer/profiles">{{ t('setup_profiles.manage') }}</a>
<a class="button button-secondary" href="/software">{{ t('setup_analyzer.back_to_software') }}</a>
</div>
</div>
<section class="panel software-package-import-panel">
<h2>{{ t('software_packages.import_title') }}</h2>
<p class="muted">{{ t('software_packages.import_help') }}</p>
<form method="post" action="/software/packages/import" enctype="multipart/form-data" class="software-package-import-form">
<label for="software-package-import-file">{{ t('software_packages.import_file') }}</label>
<div class="localized-file-picker" data-file-picker>
<input class="localized-file-picker-input" id="software-package-import-file" type="file" name="package_file" accept=".ampkg,.zip" required data-file-picker-input>
<button class="button button-secondary localized-file-picker-button" type="button" data-file-picker-button aria-controls="software-package-import-file">{{ t('common.choose_file') }}</button>
<span class="localized-file-picker-name" data-file-picker-name data-empty-text="{{ t('common.no_file_selected') }}" aria-live="polite">{{ t('common.no_file_selected') }}</span>
</div>
<div class="software-package-import-options">
<label class="checkbox-label">
<input type="checkbox" name="confirm_scripts" value="1" required>
<span>{{ t('software_packages.import_script_warning') }}</span>
</label>
<label class="checkbox-label">
<input type="checkbox" name="import_profile" value="1">
<span>{{ t('software_packages.import_profile') }}</span>
</label>
</div>
<button class="button" type="submit">{{ t('software_packages.import_button') }}</button>
</form>
</section>
<section class="panel">
<div class="table-scroll management-table-scroll">
<table class="data-table" data-storage-key="software-packages">
<thead>
<tr>
<th>{{ t('software.package') }}</th>
<th>{{ t('setup_analyzer.version') }}</th>
<th>{{ t('setup_analyzer.manufacturer') }}</th>
<th>{{ t('setup_analyzer.architecture') }}</th>
<th>{{ t('software_packages.installer_type') }}</th>
<th>{{ t('software_packages.storage') }}</th>
<th>{{ t('software_packages.status') }}</th>
<th>{{ t('jobs.actions') }}</th>
</tr>
</thead>
<tbody>
{% for row in package_rows %}
{% set package = row.package %}
{% set manifest = row.manifest %}
<tr>
<td><a href="/software/packages/{{ package.id }}"><strong>{{ package.name }}</strong></a></td>
<td>{{ manifest.version or '—' }}</td>
<td>{{ manifest.vendor or '—' }}</td>
<td>{{ manifest.architecture or '—' }}</td>
<td>{{ manifest.installer_type or '—' }}</td>
<td>{{ human_size(row.storage_size) }}</td>
<td>{% if row.storage_error %}<span class="job-status job-status-failed" title="{{ row.storage_error }}">{{ t('software_packages.storage_error') }}</span>{% elif package.enabled %}<span class="job-status job-status-success">{{ t('software_packages.enabled') }}</span>{% else %}<span class="job-status">{{ t('software_packages.disabled') }}</span>{% endif %}</td>
<td>
{% if row.job_count %}
{% set delete_confirm_text = t('software_packages.delete_confirm_with_jobs', package=package.name, count=row.job_count) %}
{% else %}
{% set delete_confirm_text = t('software_packages.delete_confirm', package=package.name) %}
{% endif %}
<div class="software-package-row-actions">
<a class="button button-secondary button-small" href="/software/packages/{{ package.id }}">{{ t('software.open') }}</a>
{% if not row.storage_error %}<a class="button button-secondary button-small" href="/software/packages/{{ package.id }}/export">{{ t('software_packages.export_button') }}</a>{% endif %}
<form class="inline-form" method="post" action="/software/packages/{{ package.id }}/delete" onsubmit="return confirm({{ delete_confirm_text|tojson }});">
<input type="hidden" name="return_to" value="overview">
{% if row.job_count %}<input type="hidden" name="delete_jobs" value="1">{% endif %}
<button class="button button-danger button-small" type="submit">{{ t('software_packages.delete_button_short') }}</button>
</form>
</div>
</td>
</tr>
{% else %}
<tr><td colspan="8">{{ t('software_packages.none') }}</td></tr>
{% endfor %}
</tbody>
</table>
</div>
</section>
{% endblock %}