Navbar step3: Toggle Enable/Disable im Dropdown mit einfachem Confirm und Auto-Refresh
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
$(function() {
|
$(function() {
|
||||||
|
var lastEnabled = null;
|
||||||
|
|
||||||
function refreshNavbarStatus() {
|
function refreshNavbarStatus() {
|
||||||
var $status = $("#tsf_nav_status");
|
var $status = $("#tsf_nav_status");
|
||||||
var $openLi = $("#tsf_nav_open_li");
|
var $openLi = $("#tsf_nav_open_li");
|
||||||
var $open = $("#tsf_nav_open");
|
var $open = $("#tsf_nav_open");
|
||||||
|
var $toggleText = $("#tsf_nav_toggle_text");
|
||||||
if ($status.length === 0) return;
|
if ($status.length === 0) return;
|
||||||
$status.text("Checking...");
|
$status.text("Checking...");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@@ -14,6 +17,8 @@ $(function() {
|
|||||||
var enabled = !!(resp.data && resp.data.funnel_enabled);
|
var enabled = !!(resp.data && resp.data.funnel_enabled);
|
||||||
var url = resp.data && resp.data.public_url ? resp.data.public_url : "";
|
var url = resp.data && resp.data.public_url ? resp.data.public_url : "";
|
||||||
$status.text(enabled ? "Enabled" : "Disabled");
|
$status.text(enabled ? "Enabled" : "Disabled");
|
||||||
|
$toggleText.text(enabled ? "Disable" : "Enable");
|
||||||
|
lastEnabled = enabled;
|
||||||
if (enabled && url) {
|
if (enabled && url) {
|
||||||
$open.attr("href", url);
|
$open.attr("href", url);
|
||||||
$openLi.removeClass("hidden");
|
$openLi.removeClass("hidden");
|
||||||
@@ -23,11 +28,13 @@ $(function() {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$status.text("Error");
|
$status.text("Error");
|
||||||
|
$toggleText.text("Enable");
|
||||||
$openLi.addClass("hidden");
|
$openLi.addClass("hidden");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function() {
|
error: function() {
|
||||||
$status.text("Error");
|
$status.text("Error");
|
||||||
|
$toggleText.text("Enable");
|
||||||
$openLi.addClass("hidden");
|
$openLi.addClass("hidden");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -39,5 +46,49 @@ $(function() {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
refreshNavbarStatus();
|
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">
|
<ul class="dropdown-menu">
|
||||||
<li class="disabled"><a href="#"><strong>Status:</strong> <span id="tsf_nav_status">Checking...</span></a></li>
|
<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 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 class="divider"></li>
|
||||||
<li><a id="tsf_nav_refresh" href="#"><i class="fas fa-sync"></i> Refresh</a></li>
|
<li><a id="tsf_nav_refresh" href="#"><i class="fas fa-sync"></i> Refresh</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
Reference in New Issue
Block a user