mypastebin/templates/media_view.html_baclup
2025-05-29 22:40:58 +02:00

140 lines
5.6 KiB
Plaintext

{% extends "base.html" %}
{% block title %}Media Viewer{% endblock %}
{% block content %}
<div class="container mt-4">
<h1 class="text-center">Viewing Media: {{ filename }}</h1>
<p class="text-muted text-center">MIME Type: {{ mime_type }}</p>
<div class="media-container text-center">
{% if mime_type.startswith("image/") %}
<img src="{{ url_for('get_file', filename=filename) }}" alt="Image" class="img-fluid" />
{% elif mime_type.startswith("video/") %}
<video controls class="w-100">
<source src="{{ url_for('get_file', filename=filename) }}" type="{{ mime_type }}">
Your browser does not support the video tag.
</video>
{% elif mime_type.startswith("audio/") %}
<audio controls class="w-100">
<source src="{{ url_for('get_file', filename=filename) }}" type="{{ mime_type }}">
Your browser does not support the audio element.
</audio>
{% elif mime_type == "application/pdf" %}
<embed src="{{ url_for('get_file', filename=filename) }}" type="{{ mime_type }}" width="100%" height="600px">
{% endif %}
</div>
<div class="d-flex justify-content-center mt-4">
<button class="btn btn-primary me-2" onclick="toggleMetadata()">Toggle Metadata</button>
<a href="{{ url_for('download_paste', id=paste_id) }}" class="btn btn-primary me-2">📥 Download</a>
<a href="{{ url_for('get_file', filename=filename) }}" class="btn btn-primary me-2" target="_blank">🌐 View Raw</a>
{% if current_user.is_authenticated %}
<!-- Botón de favoritos, con clase "btn btn-sm btn-primary" para mantener la consistencia -->
<button id="favorite-button" class="btn btn-sm btn-primary">
❤️ Add to Favorites
</button>
{% endif %}
</div>
<div class="metadata mt-4">
<div id="metadata-content" class="metadata-content" style="display: none;">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Property</th>
<th>Value</th>
</tr>
</thead>
<tbody>
{% if metadata %}
{% for track in metadata %}
{% for key, value in track.items() %}
<tr>
<td>{{ key }}</td>
<td>{{ value }}</td>
</tr>
{% endfor %}
{% endfor %}
{% else %}
<tr>
<td colspan="2">No metadata available for this file.</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
<!-- Contenedor para el Toast (puede ir en base.html o aquí) -->
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 1100">
<div id="liveToast" class="toast align-items-center text-white bg-primary border-0" role="alert" aria-live="assertive" aria-atomic="true" style="display: none;">
<div class="d-flex">
<div class="toast-body">
<!-- Mensaje dinámico -->
</div>
<button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
</div>
</div>
<script>
function toggleMetadata() {
const content = document.getElementById("metadata-content");
if (content.style.display === "none") {
content.style.display = "block";
} else {
content.style.display = "none";
}
}
// Solo configuramos el listener si el usuario está autenticado
{% if current_user.is_authenticated %}
document.addEventListener('DOMContentLoaded', () => {
const favoriteButton = document.getElementById('favorite-button');
if (favoriteButton) {
favoriteButton.addEventListener('click', function() {
fetch(`/paste/{{ paste_id }}/favorite`, {
method: 'POST',
headers: {
'Authorization': 'Bearer {{ token }}'
}
})
.then(response => {
if (!response.ok) {
throw new Error('Failed to toggle favorite');
}
return response.json();
})
.then(data => {
const message = data.message || 'Action completed!';
showToast(message, 'bg-success');
})
.catch(error => {
console.error('Error:', error);
showToast('Error adding to favorites.', 'bg-danger');
});
});
}
});
// Función para mostrar el toast
function showToast(message, bgColor = 'bg-primary') {
const toastElement = document.getElementById('liveToast');
const toastBody = toastElement.querySelector('.toast-body');
toastBody.textContent = message;
toastElement.className = `toast align-items-center text-white ${bgColor} border-0`;
toastElement.style.display = 'block'; // Mostrar el contenedor
const toast = new bootstrap.Toast(toastElement);
toast.show();
}
{% endif %}
</script>
{% endblock %}
{% block footer %}
{{ super() }} <!-- Esto conserva el contenido original del footer definido en base.html -->
{% endblock %}