Troubleshoots platforms adding and deleting
parent
f87c42a746
commit
a288d311c0
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="static/sidebar.js"></script>
|
<script src="static/js/sidebar.js"></script>
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$('[data-toggle="tooltip"]').tooltip();
|
$('[data-toggle="tooltip"]').tooltip();
|
||||||
|
|
|
@ -48,7 +48,6 @@
|
||||||
<?= Messages::render($msg['category'], $msg['key'], $msg['custom_message'] ?? null) ?>
|
<?= Messages::render($msg['category'], $msg['key'], $msg['custom_message'] ?? null) ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -561,12 +561,28 @@ $(function() {
|
||||||
const match = location.hash.match(/platform-(\d+)/);
|
const match = location.hash.match(/platform-(\d+)/);
|
||||||
if (match) {
|
if (match) {
|
||||||
const platformId = match[1];
|
const platformId = match[1];
|
||||||
|
const platformTab = $(`#platform-${platformId}-tab`);
|
||||||
|
|
||||||
|
// Check if this is a newly created platform
|
||||||
|
const newPlatformId = sessionStorage.getItem('newPlatformId');
|
||||||
|
if (newPlatformId === platformId) {
|
||||||
|
sessionStorage.removeItem('newPlatformId');
|
||||||
|
window.location.reload();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If platform doesn't exist (old or incorrect link) - redirect to base settings page
|
||||||
|
if (!platformTab.length) {
|
||||||
|
window.location.href = '<?= htmlspecialchars($app_root) ?>?page=settings';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Show tab content directly without triggering URL change
|
// Show tab content directly without triggering URL change
|
||||||
$('.tab-pane').removeClass('show active');
|
$('.tab-pane').removeClass('show active');
|
||||||
$(`#platform-${platformId}`).addClass('show active');
|
$(`#platform-${platformId}`).addClass('show active');
|
||||||
// Update tab state
|
// Update tab state
|
||||||
$('#platformTabs a[data-toggle="tab"]').removeClass('active');
|
$('#platformTabs a[data-toggle="tab"]').removeClass('active');
|
||||||
$(`#platform-${platformId}-tab`).addClass('active');
|
platformTab.addClass('active');
|
||||||
|
|
||||||
// Check for host or agent in URL
|
// Check for host or agent in URL
|
||||||
const hostMatch = location.hash.match(/platform-\d+host-(\d+)/);
|
const hostMatch = location.hash.match(/platform-\d+host-(\d+)/);
|
||||||
|
@ -588,6 +604,15 @@ $(function() {
|
||||||
}, 150);
|
}, 150);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// No hash - show first tab
|
||||||
|
const firstTab = $('#platformTabs a[data-toggle="tab"]').first();
|
||||||
|
if (firstTab.length) {
|
||||||
|
$('.tab-pane').removeClass('show active');
|
||||||
|
$(firstTab.attr('href')).addClass('show active');
|
||||||
|
$('#platformTabs a[data-toggle="tab"]').removeClass('active');
|
||||||
|
firstTab.addClass('active');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Handle hash on page load and changes
|
// Handle hash on page load and changes
|
||||||
|
@ -776,6 +801,68 @@ $(function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Delete platform form submission
|
||||||
|
$('#deletePlatformForm').on('submit', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const form = $(this);
|
||||||
|
const submitBtn = form.find('button[type="submit"]');
|
||||||
|
submitBtn.prop('disabled', true);
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: form.attr('action'),
|
||||||
|
method: 'POST',
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(response) {
|
||||||
|
// If the platform is deleted, we switch to the first tab (no platform in URL)
|
||||||
|
$('#deletePlatformModal').modal('hide');
|
||||||
|
setTimeout(function() {
|
||||||
|
window.location.href = '<?= htmlspecialchars($app_root) ?>?page=settings';
|
||||||
|
}, 500);
|
||||||
|
JsMessages.success('Successfully deleted the platform.');
|
||||||
|
},
|
||||||
|
error: function() {
|
||||||
|
JsMessages.error('Failed to delete platform. Please try again.');
|
||||||
|
submitBtn.prop('disabled', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add platform form submission
|
||||||
|
$('#addPlatformForm').on('submit', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const form = $(this);
|
||||||
|
const submitBtn = form.find('button[type="submit"]');
|
||||||
|
submitBtn.prop('disabled', true);
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: form.attr('action'),
|
||||||
|
method: 'POST',
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(response) {
|
||||||
|
// Get the last added platform ID from the page content
|
||||||
|
const lastPlatformTab = $(response).find('#platformTabs a[data-toggle="tab"]').last();
|
||||||
|
if (lastPlatformTab.length) {
|
||||||
|
const platformId = lastPlatformTab.attr('href').replace('#platform-', '');
|
||||||
|
// Store the new platform ID so that the check for non-existant tab knows about it
|
||||||
|
sessionStorage.setItem('newPlatformId', platformId);
|
||||||
|
$('#addPlatformModal').modal('hide');
|
||||||
|
JsMessages.success('Successfully added the platform.');
|
||||||
|
setTimeout(function() {
|
||||||
|
// We switch to the tab of the newly created platform
|
||||||
|
document.location = '<?= htmlspecialchars($app_root) ?>?page=settings#platform-' + platformId;
|
||||||
|
}, 500);
|
||||||
|
} else {
|
||||||
|
JsMessages.error('Failed to get platform ID. Please refresh the page.');
|
||||||
|
submitBtn.prop('disabled', false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function() {
|
||||||
|
JsMessages.error('Failed to add platform. Please try again.');
|
||||||
|
submitBtn.prop('disabled', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Host editing functionality
|
// Host editing functionality
|
||||||
$('.edit-host').click(function() {
|
$('.edit-host').click(function() {
|
||||||
const hostActions = $(this).closest('.host-actions');
|
const hostActions = $(this).closest('.host-actions');
|
||||||
|
|
Loading…
Reference in New Issue