Navbar step3: Toggle Enable/Disable im Dropdown mit einfachem Confirm und Auto-Refresh
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
$(function() {
|
||||
var lastEnabled = null;
|
||||
|
||||
function refreshNavbarStatus() {
|
||||
var $status = $("#tsf_nav_status");
|
||||
var $openLi = $("#tsf_nav_open_li");
|
||||
var $open = $("#tsf_nav_open");
|
||||
var $toggleText = $("#tsf_nav_toggle_text");
|
||||
if ($status.length === 0) return;
|
||||
$status.text("Checking...");
|
||||
$.ajax({
|
||||
@@ -14,6 +17,8 @@ $(function() {
|
||||
var enabled = !!(resp.data && resp.data.funnel_enabled);
|
||||
var url = resp.data && resp.data.public_url ? resp.data.public_url : "";
|
||||
$status.text(enabled ? "Enabled" : "Disabled");
|
||||
$toggleText.text(enabled ? "Disable" : "Enable");
|
||||
lastEnabled = enabled;
|
||||
if (enabled && url) {
|
||||
$open.attr("href", url);
|
||||
$openLi.removeClass("hidden");
|
||||
@@ -23,11 +28,13 @@ $(function() {
|
||||
}
|
||||
} else {
|
||||
$status.text("Error");
|
||||
$toggleText.text("Enable");
|
||||
$openLi.addClass("hidden");
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
$status.text("Error");
|
||||
$toggleText.text("Enable");
|
||||
$openLi.addClass("hidden");
|
||||
}
|
||||
});
|
||||
@@ -39,5 +46,49 @@ $(function() {
|
||||
e.preventDefault();
|
||||
refreshNavbarStatus();
|
||||
});
|
||||
|
||||
$(document).on('click', '#tsf_nav_toggle', function(e) {
|
||||
e.preventDefault();
|
||||
var enable = !(lastEnabled === true);
|
||||
// Optional simpler confirm: nur beim Aktivieren
|
||||
if (enable) {
|
||||
var c = window.confirm("Enabling Funnel will make your OctoPrint instance accessible from the public internet. Continue?");
|
||||
if (!c) return;
|
||||
}
|
||||
var action = enable ? 'enable' : 'disable';
|
||||
var $status = $("#tsf_nav_status");
|
||||
var $toggleText = $("#tsf_nav_toggle_text");
|
||||
$status.text(enable ? 'Enabling...' : 'Disabling...');
|
||||
$.ajax({
|
||||
url: PLUGIN_BASEURL + 'tailscale_funnel/' + action,
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
success: function(resp) {
|
||||
if (resp && resp.status === 'success') {
|
||||
if (enable) {
|
||||
$status.text('Enabled');
|
||||
$toggleText.text('Disable');
|
||||
var url = resp.data && resp.data.public_url ? resp.data.public_url : '';
|
||||
if (url) {
|
||||
$("#tsf_nav_open").attr('href', url);
|
||||
$("#tsf_nav_open_li").removeClass('hidden');
|
||||
}
|
||||
lastEnabled = true;
|
||||
} else {
|
||||
$status.text('Disabled');
|
||||
$toggleText.text('Enable');
|
||||
$("#tsf_nav_open").attr('href', '#');
|
||||
$("#tsf_nav_open_li").addClass('hidden');
|
||||
lastEnabled = false;
|
||||
}
|
||||
} else {
|
||||
$status.text('Error');
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
$status.text('Error');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
@@ -6,6 +6,7 @@
|
||||
<ul class="dropdown-menu">
|
||||
<li class="disabled"><a href="#"><strong>Status:</strong> <span id="tsf_nav_status">Checking...</span></a></li>
|
||||
<li id="tsf_nav_open_li" class="hidden"><a id="tsf_nav_open" href="#" target="_blank" rel="noopener"><i class="fas fa-external-link-alt"></i> Open</a></li>
|
||||
<li><a id="tsf_nav_toggle" href="#"><i class="fas fa-toggle-on"></i> <span id="tsf_nav_toggle_text">Enable</span></a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a id="tsf_nav_refresh" href="#"><i class="fas fa-sync"></i> Refresh</a></li>
|
||||
</ul>
|
||||
|
Reference in New Issue
Block a user