Changes to the Inventarsystem Workflow to Reflekt the new workflow and have an according set of buttons. So this removed all metioning of the duplication function.
Release Inventarsystem / release-docker (push) Successful in 2m15s
Release Inventarsystem / release-docker (push) Successful in 2m15s
This commit is contained in:
@@ -11,59 +11,6 @@
|
||||
{% block title %}{{ page_title|default('Artikel hochladen') }} - Inventarsystem{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if duplicate_data and duplicate_data.images %}
|
||||
<!-- Hidden server-side values for duplication, will be processed by JavaScript -->
|
||||
<div id="server-duplicate-data"
|
||||
data-name="{{ duplicate_data.name|default('') }}"
|
||||
data-description="{{ duplicate_data.description|default('') }}"
|
||||
data-location="{{ duplicate_data.location|default('') }}"
|
||||
data-room="{{ duplicate_data.room|default('') }}"
|
||||
data-year="{{ duplicate_data.year|default('') }}"
|
||||
data-cost="{{ duplicate_data.cost|default('') }}"
|
||||
data-images="{{ duplicate_data.images|tojson|safe }}"
|
||||
data-filter1="{{ duplicate_data.filter1|tojson|safe if duplicate_data.filter1 else '[]' }}"
|
||||
data-filter2="{{ duplicate_data.filter2|tojson|safe if duplicate_data.filter2 else '[]' }}"
|
||||
data-filter3="{{ duplicate_data.filter3|tojson|safe if duplicate_data.filter3 else '[]' }}"
|
||||
data-original-id="{{ duplicate_data.original_id|default('') }}"
|
||||
style="display:none;">
|
||||
</div>
|
||||
<script>
|
||||
// Pre-initialize duplicate data from server
|
||||
var serverDuplicateData = null;
|
||||
const dataElement = document.getElementById('server-duplicate-data');
|
||||
if (dataElement) {
|
||||
// Safely parse JSON arrays with error handling
|
||||
function safeJsonParse(jsonStr, defaultValue = []) {
|
||||
try {
|
||||
if (!jsonStr) return defaultValue;
|
||||
return JSON.parse(jsonStr);
|
||||
} catch (e) {
|
||||
console.error("Error parsing JSON:", e, "Value was:", jsonStr);
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
// Get images data and log it for debugging
|
||||
const imagesData = dataElement.getAttribute('data-images') || "[]";
|
||||
console.log("Raw images data attribute:", imagesData);
|
||||
|
||||
serverDuplicateData = {
|
||||
name: dataElement.getAttribute('data-name') || "",
|
||||
description: dataElement.getAttribute('data-description') || "",
|
||||
location: dataElement.getAttribute('data-location') || "",
|
||||
room: dataElement.getAttribute('data-room') || "",
|
||||
year: dataElement.getAttribute('data-year') || "",
|
||||
cost: dataElement.getAttribute('data-cost') || "",
|
||||
images: safeJsonParse(imagesData),
|
||||
filter1: safeJsonParse(dataElement.getAttribute('data-filter1')),
|
||||
filter2: safeJsonParse(dataElement.getAttribute('data-filter2')),
|
||||
filter3: safeJsonParse(dataElement.getAttribute('data-filter3')),
|
||||
original_id: dataElement.getAttribute('data-original-id') || ""
|
||||
};
|
||||
console.log("Server-provided duplicate data:", serverDuplicateData);
|
||||
}
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
<style>
|
||||
/* Book information display styles */
|
||||
@@ -296,38 +243,11 @@
|
||||
color: #721c24 !important;
|
||||
}
|
||||
|
||||
/* Duplicate code popup styling */
|
||||
.popup-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.6);
|
||||
z-index: 10000;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
animation: overlayFadeIn 0.3s ease;
|
||||
}
|
||||
|
||||
@keyframes overlayFadeIn {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
|
||||
.duplicate-code-popup {
|
||||
background-color: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.3);
|
||||
max-width: 500px;
|
||||
width: 90%;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
animation: popupSlideIn 0.3s ease;
|
||||
}
|
||||
|
||||
@keyframes popupSlideIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
@@ -1878,11 +1798,11 @@
|
||||
if (existingPopup) {
|
||||
existingPopup.remove();
|
||||
}
|
||||
|
||||
|
||||
// Create popup overlay
|
||||
const overlay = document.createElement('div');
|
||||
overlay.className = 'popup-overlay';
|
||||
|
||||
|
||||
// Create popup content
|
||||
overlay.innerHTML = `
|
||||
<div class="duplicate-code-popup">
|
||||
@@ -1895,9 +1815,9 @@
|
||||
<button class="popup-close-button" onclick="this.closest('.popup-overlay').remove()">Verstanden</button>
|
||||
</div>
|
||||
`;
|
||||
|
||||
|
||||
document.body.appendChild(overlay);
|
||||
|
||||
|
||||
// Auto-remove after 10 seconds
|
||||
setTimeout(() => {
|
||||
if (overlay.parentNode) {
|
||||
@@ -2049,34 +1969,6 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Handle duplication data if available (from sessionStorage or server)
|
||||
if (typeof prefillFormWithDuplicateData === 'function') {
|
||||
setTimeout(() => {
|
||||
prefillFormWithDuplicateData();
|
||||
}, 500); // Wait for all dropdowns to load
|
||||
}
|
||||
});
|
||||
|
||||
// Initialize duplication data - handle both server-side and sessionStorage data
|
||||
let duplicateData = null;
|
||||
|
||||
// First check if serverDuplicateData is defined by the script above
|
||||
if (typeof serverDuplicateData !== 'undefined' && serverDuplicateData) {
|
||||
console.log("Using server-provided duplicateData:", serverDuplicateData);
|
||||
duplicateData = serverDuplicateData;
|
||||
|
||||
// Ensure images is properly handled as an array
|
||||
if (duplicateData.images) {
|
||||
if (typeof duplicateData.images === 'string') {
|
||||
try {
|
||||
duplicateData.images = JSON.parse(duplicateData.images);
|
||||
} catch (e) {
|
||||
console.error("Error parsing duplicate images array:", e);
|
||||
}
|
||||
}
|
||||
console.log("Parsed duplicate images successfully.");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user