mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
Add a lot of QOL in web UI
This commit is contained in:
parent
a01b0a26a5
commit
6d342abce9
19 changed files with 261 additions and 67 deletions
|
|
@ -190,6 +190,17 @@ button.list-group-item-secondary.active {
|
|||
) !important; /* Keep the primary color on hover */
|
||||
}
|
||||
|
||||
.btn-pro-now {
|
||||
background-color: var(--bs-bw-green); /* Initial background color */
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.btn-pro-now:hover {
|
||||
background-color: var(
|
||||
--bs-bw-green
|
||||
) !important; /* Keep the primary color on hover */
|
||||
}
|
||||
|
||||
.avatar.avatar-offline:after {
|
||||
background-color: var(--bs-secondary);
|
||||
}
|
||||
|
|
@ -858,3 +869,26 @@ a.courier-prime:hover {
|
|||
.text-maroon {
|
||||
color: #800000;
|
||||
}
|
||||
|
||||
.blur-overlay {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.blur-overlay .card-body,
|
||||
.blur-overlay .card-header {
|
||||
filter: blur(3px);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blur-overlay .blur-message {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
background: var(--bs-bw-green);
|
||||
color: #fff;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
|
|
|||
9
src/ui/app/static/img/brands/Twitter-X-Logo.svg
Normal file
9
src/ui/app/static/img/brands/Twitter-X-Logo.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 800 800">
|
||||
<!-- Generator: Adobe Illustrator 28.7.1, SVG Export Plug-In . SVG Version: 1.2.0 Build 142) -->
|
||||
<g>
|
||||
<g id="Calque_1">
|
||||
<path d="M703.5,721.3c-1.5.2-2.8.5-4,.5-25.2,0-50.4,0-75.7,0-33.2,0-66.4,0-99.6,0-2.9,0-4.8-.7-6.6-3.2-12.7-18.7-25.5-37.3-38.3-56-10-14.5-20-28.9-29.9-43.4-11.8-17.1-23.5-34.3-35.3-51.4-12.2-17.7-24.4-35.4-36.6-53.1-8.2-12-16.4-24-24.7-36-.5-.7-1-1.3-1.7-2.2-3.5,4.1-6.9,7.9-10.2,11.8-16.2,18.8-32.4,37.6-48.6,56.4-16.3,19-32.5,38-48.8,56.9-16.6,19.4-33.4,38.6-50,58-16.1,18.7-32.2,37.5-48.3,56.2-.2.2-.4.4-.5.6-2.8,5.1-7.4,5.6-12.8,5.5-13.9-.3-27.9,0-41.8-.1-1.3,0-2.5-.4-4.3-.7,6.1-7.1,11.7-13.6,17.3-20.1,12.9-15,25.8-30,38.7-44.9,10.6-12.3,21.3-24.7,31.9-37,13.7-16,27.4-32,41.1-47.9,13.7-15.9,27.4-31.7,41-47.6,11.9-13.9,23.8-27.8,35.8-41.7,11.2-13,22.4-26.1,33.7-39.1,1.2-1.4,1.1-2.4.1-3.8-11.7-16.9-23.4-33.9-35-50.8-9.2-13.3-18.3-26.7-27.5-40.1-10.9-15.8-21.8-31.7-32.6-47.5-10.4-15.1-20.7-30.2-31.1-45.2-13.7-20-27.4-40-41.1-60-15.9-23.2-31.9-46.5-47.9-69.7-7.4-10.7-14.7-21.4-22.1-32.1-.6-.8-1.2-1.6-2.3-3,1.6-.3,2.9-.8,4.2-.8,17.1,0,34.1,0,51.2,0,41.3,0,82.5,0,123.8,0,3.1,0,5,1,6.8,3.5,9.3,13.7,18.7,27.4,28,41,12.2,17.7,24.4,35.4,36.6,53.2,12.6,18.3,25.2,36.7,37.8,55,17.9,26,35.8,52.1,53.7,78.1.3.4.7.8,1.2,1.4,3.6-4.1,7.1-8.1,10.5-12.1,12.2-14.2,24.5-28.4,36.7-42.6,10.7-12.4,21.3-24.9,32-37.3,16.9-19.7,33.8-39.4,50.8-59.1,17-19.8,34-39.6,51.1-59.3,5.5-6.4,11-12.8,16.4-19.2,1.5-1.7,3.1-2.6,5.4-2.5,15.7,0,31.4,0,47,0,1.1,0,2.2.3,4,.6-3.5,4-6.4,7.5-9.4,10.9-9.9,11.5-19.8,23-29.7,34.6-11.2,13-22.3,25.9-33.5,38.9-20,23.3-40.1,46.6-60.1,70-16,18.7-32.1,37.4-48.2,56-15.7,18.2-31.4,36.5-47.1,54.7-1.3,1.5-1.6,2.6-.3,4.5,10.5,15,20.8,30.1,31.2,45.2,8.6,12.5,17.1,24.9,25.6,37.4,9.5,13.9,19.1,27.8,28.6,41.7,9.1,13.2,18.1,26.4,27.1,39.6,13.7,19.9,27.4,39.8,41.1,59.7,7.5,10.9,14.9,21.8,22.3,32.6,9.6,14,19.2,27.9,28.8,41.9,11.2,16.3,22.4,32.6,33.6,48.9,3.2,4.6,6.3,9.2,10,14.5ZM160.8,131.9c3.4,4.9,6.3,9.1,9.3,13.4,12.8,18.3,25.7,36.5,38.4,54.8,14,20,27.9,40.1,41.9,60.2,12.7,18.2,25.5,36.3,38.2,54.4,9.7,13.9,19.2,27.8,28.9,41.7,10.8,15.4,21.6,30.7,32.4,46,16.1,23.1,32.2,46.3,48.3,69.4,13.4,19.1,26.8,38.2,40.2,57.3,13.1,18.8,26.1,37.6,39.2,56.3,11.1,15.9,22.3,31.8,33.4,47.7,11,15.7,22,31.5,33.1,47.2.5.7,1.6,1.3,2.4,1.3,24.7,0,49.5,0,74.2,0,2.3,0,4.6,0,7.3,0-.6-1-.9-1.4-1.2-1.9-4.7-6.8-9.5-13.7-14.3-20.5-9.5-13.6-19-27.1-28.5-40.7-8.2-11.8-16.5-23.5-24.7-35.3-11.1-15.9-22.1-31.9-33.3-47.8-14.9-21.3-29.8-42.5-44.7-63.8-15.5-22.2-31-44.4-46.5-66.6-10.5-15-21-30-31.5-45-11.4-16.4-22.8-32.7-34.2-49.1-9.7-13.8-19.4-27.6-29-41.4-11.2-16-22.3-32-33.5-48-9.1-13-18.3-26-27.4-39.1-11.3-16.2-22.6-32.4-33.8-48.6-1.1-1.5-2.3-2.1-4.1-2.1-13.3,0-26.6,0-39.9,0-13.3,0-26.6,0-40.7,0Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
|
@ -1,30 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 225 150">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 640 420">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #0b5577;
|
||||
fill: none;
|
||||
stroke: #0e5577;
|
||||
stroke-linejoin: bevel;
|
||||
stroke-width: 40px;
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
stroke: #0b5577;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 5px;
|
||||
}
|
||||
|
||||
.cls-2, .cls-3 {
|
||||
fill: #fff;
|
||||
fill: #0e5577;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<!-- Generator: Adobe Illustrator 28.7.1, SVG Export Plug-In . SVG Version: 1.2.0 Build 142) -->
|
||||
<g>
|
||||
<g id="Calque_1">
|
||||
<g>
|
||||
<rect class="cls-3" x="2.5" y="2.5" width="220" height="145"/>
|
||||
<path class="cls-1" d="M220,5v140H5V5h215M225,0H0v150h225V0h0Z"/>
|
||||
</g>
|
||||
<line class="cls-2" x1="1.3" y1="1.5" x2="223.6" y2="148.7"/>
|
||||
<path class="cls-2" d="M600,40v340H40V40h560M640,0H0v420h640V0h0Z"/>
|
||||
<line class="cls-1" x1="618.4" y1="14.2" x2="21.6" y2="405.8"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 749 B After Width: | Height: | Size: 630 B |
|
|
@ -474,6 +474,15 @@ $(document).ready(function () {
|
|||
|
||||
bans_table.searchPanes.container().hide();
|
||||
|
||||
$(".action-button")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
|
||||
$("#bans").removeClass("d-none");
|
||||
$("#bans-waiting").addClass("visually-hidden");
|
||||
|
||||
|
|
@ -504,13 +513,21 @@ $(document).ready(function () {
|
|||
|
||||
bans_table.on("select", function (e, dt, type, indexes) {
|
||||
// Enable the actions button
|
||||
$(".action-button").removeClass("disabled");
|
||||
$(".action-button").removeClass("disabled").parent().tooltip("dispose");
|
||||
});
|
||||
|
||||
bans_table.on("deselect", function (e, dt, type, indexes) {
|
||||
// If no rows are selected, disable the actions button
|
||||
if (bans_table.rows({ selected: true }).count() === 0) {
|
||||
$(".action-button").addClass("disabled");
|
||||
$(".action-button")
|
||||
.addClass("disabled")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
$("#select-all-rows").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -124,7 +124,15 @@ $(document).ready(function () {
|
|||
];
|
||||
|
||||
$.fn.dataTable.ext.buttons.toggle_filters = {
|
||||
text: '<span class="tf-icons bx bx-filter bx-18px me-2"></span><span id="show-filters">Show</span><span id="hide-filters" class="d-none">Hide</span><span class="d-none d-md-inline"> filters</span>',
|
||||
text: `<span class="tf-icons bx bx-filter bx-18px me-2"></span><span id="show-filters"${
|
||||
cacheJobNameSelection || cachePluginSelection || cacheServiceSelection
|
||||
? ' class="d-none"'
|
||||
: ""
|
||||
}>Show</span><span id="hide-filters"${
|
||||
!cacheJobNameSelection && !cachePluginSelection && !cacheServiceSelection
|
||||
? ' class="d-none"'
|
||||
: ""
|
||||
}>Hide</span><span class="d-none d-md-inline"> filters</span>`,
|
||||
action: function (e, dt, node, config) {
|
||||
cache_table.searchPanes.container().slideToggle(); // Smoothly hide or show the container
|
||||
$("#show-filters").toggleClass("d-none"); // Toggle the visibility of the 'Show' span
|
||||
|
|
|
|||
|
|
@ -264,7 +264,11 @@ $(document).ready(function () {
|
|||
};
|
||||
|
||||
$.fn.dataTable.ext.buttons.toggle_filters = {
|
||||
text: '<span class="tf-icons bx bx-filter bx-18px me-2"></span><span id="show-filters">Show</span><span id="hide-filters" class="d-none">Hide</span><span class="d-none d-md-inline"> filters</span>',
|
||||
text: `<span class="tf-icons bx bx-filter bx-18px me-2"></span><span id="show-filters"${
|
||||
configTypeSelection || configServiceSelection ? ' class="d-none"' : ""
|
||||
}>Show</span><span id="hide-filters"${
|
||||
!configTypeSelection && !configServiceSelection ? ' class="d-none"' : ""
|
||||
}>Hide</span><span class="d-none d-md-inline"> filters</span>`,
|
||||
action: function (e, dt, node, config) {
|
||||
configs_table.searchPanes.container().slideToggle(); // Smoothly hide or show the container
|
||||
$("#show-filters").toggleClass("d-none"); // Toggle the visibility of the 'Show' span
|
||||
|
|
@ -462,6 +466,15 @@ $(document).ready(function () {
|
|||
if (!configTypeSelection && !configServiceSelection)
|
||||
configs_table.searchPanes.container().hide();
|
||||
|
||||
$(".action-button")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
|
||||
$("#configs").removeClass("d-none");
|
||||
$("#configs-waiting").addClass("visually-hidden");
|
||||
|
||||
|
|
@ -492,13 +505,21 @@ $(document).ready(function () {
|
|||
|
||||
configs_table.on("select", function (e, dt, type, indexes) {
|
||||
// Enable the actions button
|
||||
$(".action-button").removeClass("disabled");
|
||||
$(".action-button").removeClass("disabled").parent().tooltip("dispose");
|
||||
});
|
||||
|
||||
configs_table.on("deselect", function (e, dt, type, indexes) {
|
||||
// If no rows are selected, disable the actions button
|
||||
if (configs_table.rows({ selected: true }).count() === 0) {
|
||||
$(".action-button").addClass("disabled");
|
||||
$(".action-button")
|
||||
.addClass("disabled")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
$("#select-all-rows").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -582,6 +582,15 @@ $(document).ready(function () {
|
|||
|
||||
instances_table.searchPanes.container().hide();
|
||||
|
||||
$(".action-button")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
|
||||
$("#instances").removeClass("d-none");
|
||||
$("#instances-waiting").addClass("visually-hidden");
|
||||
|
||||
|
|
@ -612,13 +621,21 @@ $(document).ready(function () {
|
|||
|
||||
instances_table.on("select", function (e, dt, type, indexes) {
|
||||
// Enable the actions button
|
||||
$(".action-button").removeClass("disabled");
|
||||
$(".action-button").removeClass("disabled").parent().tooltip("dispose");
|
||||
});
|
||||
|
||||
instances_table.on("deselect", function (e, dt, type, indexes) {
|
||||
// If no rows are selected, disable the actions button
|
||||
if (instances_table.rows({ selected: true }).count() === 0) {
|
||||
$(".action-button").addClass("disabled");
|
||||
$(".action-button")
|
||||
.addClass("disabled")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
$("#select-all-rows").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -340,6 +340,15 @@ $(document).ready(function () {
|
|||
|
||||
jobs_table.searchPanes.container().hide();
|
||||
|
||||
$(".action-button")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
|
||||
$("#jobs").removeClass("d-none");
|
||||
$("#jobs-waiting").addClass("visually-hidden");
|
||||
|
||||
|
|
@ -370,13 +379,21 @@ $(document).ready(function () {
|
|||
|
||||
jobs_table.on("select", function (e, dt, type, indexes) {
|
||||
// Enable the actions button
|
||||
$(".action-button").removeClass("disabled");
|
||||
$(".action-button").removeClass("disabled").parent().tooltip("dispose");
|
||||
});
|
||||
|
||||
jobs_table.on("deselect", function (e, dt, type, indexes) {
|
||||
// If no rows are selected, disable the actions button
|
||||
if (jobs_table.rows({ selected: true }).count() === 0) {
|
||||
$(".action-button").addClass("disabled");
|
||||
$(".action-button")
|
||||
.addClass("disabled")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
$("#select-all-rows").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -458,6 +458,15 @@ $(document).ready(function () {
|
|||
|
||||
plugins_table.searchPanes.container().hide();
|
||||
|
||||
$(".action-button")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
|
||||
$("#plugins").removeClass("d-none");
|
||||
$("#plugins-waiting").addClass("visually-hidden");
|
||||
|
||||
|
|
@ -488,13 +497,21 @@ $(document).ready(function () {
|
|||
|
||||
plugins_table.on("select", function (e, dt, type, indexes) {
|
||||
// Enable the actions button
|
||||
$(".action-button").removeClass("disabled");
|
||||
$(".action-button").removeClass("disabled").parent().tooltip("dispose");
|
||||
});
|
||||
|
||||
plugins_table.on("deselect", function (e, dt, type, indexes) {
|
||||
// If no rows are selected, disable the actions button
|
||||
if (plugins_table.rows({ selected: true }).count() === 0) {
|
||||
$(".action-button").addClass("disabled");
|
||||
$(".action-button")
|
||||
.addClass("disabled")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
$("#select-all-rows").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -448,6 +448,15 @@ $(function () {
|
|||
|
||||
services_table.searchPanes.container().hide();
|
||||
|
||||
$(".action-button")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
|
||||
$("#services").removeClass("d-none");
|
||||
$("#services-waiting").addClass("visually-hidden");
|
||||
|
||||
|
|
@ -478,13 +487,21 @@ $(function () {
|
|||
|
||||
services_table.on("select", function (e, dt, type, indexes) {
|
||||
// Enable the actions button
|
||||
$(".action-button").removeClass("disabled");
|
||||
$(".action-button").removeClass("disabled").parent().tooltip("dispose");
|
||||
});
|
||||
|
||||
services_table.on("deselect", function (e, dt, type, indexes) {
|
||||
// If no rows are selected, disable the actions button
|
||||
if (services_table.rows({ selected: true }).count() === 0) {
|
||||
$(".action-button").addClass("disabled");
|
||||
$(".action-button")
|
||||
.addClass("disabled")
|
||||
.parent()
|
||||
.attr(
|
||||
"data-bs-original-title",
|
||||
"Please select one or more rows to perform an action.",
|
||||
)
|
||||
.attr("data-bs-placement", "top")
|
||||
.tooltip();
|
||||
$("#select-all-rows").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -199,7 +199,10 @@
|
|||
class="btn btn-sm btn-link"
|
||||
target="_blank"
|
||||
rel="noreferrer">
|
||||
<i class='bx bxl-twitter bx-sm'></i>
|
||||
<img src="{{ url_for('static', filename='img/brands/Twitter-X-Logo.svg') }}"
|
||||
alt="X logo"
|
||||
width="20px"
|
||||
height="20px">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -243,7 +246,10 @@
|
|||
class="btn btn-sm btn-link"
|
||||
target="_blank"
|
||||
rel="noreferrer">
|
||||
<i class='bx bxl-twitter bx-sm'></i>
|
||||
<img src="{{ url_for('static', filename='img/brands/Twitter-X-Logo.svg') }}"
|
||||
alt="X logo"
|
||||
width="20px"
|
||||
height="20px">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -173,7 +173,9 @@
|
|||
<a class="btn btn-responsive btn-buy-now"
|
||||
role="button"
|
||||
aria-pressed="true"
|
||||
href="{{ url_for('pro') }}">
|
||||
href="https://panel.bunkerweb.io/order/bunkerweb-pro?utm_campaign=self&utm_source=ui"
|
||||
target="_blank"
|
||||
rel="noopener">
|
||||
<span class="me-1 me-md-2 d-flex h-100 justify-content-center align-items-center">
|
||||
<img src="{{ url_for('static', filename='img/diamond-white.svg') }}"
|
||||
alt="Pro plugin"
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@
|
|||
href="{{ url_for("cache") }}/{{ service_id }}/{{ job_data['plugin_id'] }}/{{ job }}/{{ cache['file_name'].replace('/', '_') if cache['file_name'].startswith('folder:') else cache['file_name'] }}?download=true"
|
||||
target="_blank"
|
||||
rel="noreferrer">
|
||||
<i class="tf-icons bx bx-download bx-xs me-1"></i>{{ cache["file_name"] }}
|
||||
<i class="tf-icons bx bx-download bx-xs me-1"></i>{{ service_id + " / " if cache['service_id'] else '' }}{{ cache["file_name"] }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
|||
|
|
@ -92,8 +92,7 @@
|
|||
{% endif %}
|
||||
>
|
||||
<a href="{% if not_pro_pro_plugin %}{{ url_for('pro') }}{% else %}{{ url_for("plugins") }}/{{ plugin }}{% endif %}"
|
||||
class="menu-link"
|
||||
{% if not_pro_pro_plugin %}target="_blank" rel="noopener"{% endif %}>
|
||||
class="menu-link">
|
||||
{{ menu_plugin_types.get(plugin_data["type"], {}).get('icon', '<img src="' + pro_diamond_url + '"
|
||||
alt="Pro plugin"
|
||||
width="20px"
|
||||
|
|
@ -117,13 +116,13 @@
|
|||
<li class="menu-header small text-uppercase">
|
||||
<span class="menu-header-text">Misc</span>
|
||||
</li>
|
||||
<li class="menu-item">
|
||||
<li class="menu-item{% if current_endpoint == 'about' %} active{% endif %}">
|
||||
<a href="{{ url_for('about') }}" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-info-circle"></i>
|
||||
<div class="text-truncate" data-i18n="About">About</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item">
|
||||
<li class="menu-item{% if current_endpoint == 'pro' %} active{% endif %}">
|
||||
<a href="{{ url_for('pro') }}" class="menu-link">
|
||||
<img class="menu-icon tf-icons"
|
||||
src="{{ pro_diamond_url }}"
|
||||
|
|
|
|||
|
|
@ -139,6 +139,13 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div {% if plugin_data["type"] == "pro" and not is_pro_version %}class="blur-overlay"{% endif %}>
|
||||
{% if plugin_data["type"] == "pro" and not is_pro_version %}
|
||||
<div class="blur-message">
|
||||
<i class='bx bx-diamond bx-xs'></i>
|
||||
<a href="{{ url_for('pro') }}" class="text-white-80">Upgrade to Pro to access this feature</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="card-body row g-2 gx-6 pb-0">
|
||||
{% for setting, setting_data in filtered_settings.items() if not setting_data.get('multiple', false) and setting not in blacklisted_settings and (not service_endpoint or setting_data['context'] == "multisite") %}
|
||||
{% set setting_id_prefix = "setting-" + plugin + "-" %}
|
||||
|
|
@ -158,12 +165,16 @@
|
|||
{% set setting_method = "autoconf" %}
|
||||
{% set disabled = true %}
|
||||
{% endif %}
|
||||
{% if plugin_data["type"] == "pro" and not is_pro_version %}
|
||||
{% set disabled = true %}
|
||||
{% set setting_method = "<i class='bx bx-diamond bx-xs'></i><span>Pro feature</span>" %}
|
||||
{% endif %}
|
||||
{% if is_readonly %}
|
||||
{% set disabled = true %}
|
||||
{% set setting_method = "readonly" %}
|
||||
{% endif %}
|
||||
<div class="col-12 col-sm-6 col-lg-4 pb-3"
|
||||
{% if disabled %}data-bs-toggle="tooltip" data-bs-placement="top" data-bs-original-title="Disabled by {{ setting_method }}"{% endif %}>
|
||||
{% if disabled %}data-bs-toggle="tooltip" data-bs-placement="top" data-bs-html="true" data-bs-original-title="Disabled by {{ setting_method }}"{% endif %}>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<label id="label-setting-{{ plugin }}-{{ setting_data['id'] }}"
|
||||
for="setting-{{ plugin }}-{{ setting_data['id'] }}"
|
||||
|
|
@ -294,12 +305,16 @@
|
|||
{% set setting_method = "autoconf" %}
|
||||
{% set disabled = true %}
|
||||
{% endif %}
|
||||
{% if plugin_data["type"] == "pro" and not is_pro_version %}
|
||||
{% set disabled = true %}
|
||||
{% set setting_method = "<i class='bx bx-diamond bx-xs'></i><span>Pro feature</span>" %}
|
||||
{% endif %}
|
||||
{% if is_readonly %}
|
||||
{% set disabled = true %}
|
||||
{% set setting_method = "readonly" %}
|
||||
{% endif %}
|
||||
<div class="col-12{% if settings|length > 1 %} col-md-6{% endif %}{% if settings|length > 2 and not multiple_multiples %} col-lg-4{% endif %} pb-2"
|
||||
{% if disabled %}data-bs-toggle="tooltip" data-bs-placement="top" data-bs-original-title="Disabled by {{ setting_method }}"{% endif %}>
|
||||
{% if disabled %}data-bs-toggle="tooltip" data-bs-placement="top" data-bs-html="true" data-bs-original-title="Disabled by {{ setting_method }}"{% endif %}>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<label id="label-multiple-setting-{{ plugin }}-{{ setting_data['id'] }}-{{ setting_suffix }}"
|
||||
for="multiple-setting-{{ plugin }}-{{ setting_data['id'] }}-{{ setting_suffix }}"
|
||||
|
|
@ -361,6 +376,7 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% elif pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
|
||||
{% elif "Plugin page uses old template" not in plugin_page and pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<div class="text-center text-primary">
|
||||
<p class="text-center relative w-full p-2 text-primary rounded-lg fw-bold">
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
{% set is_expired = pro_status == "expired" %}
|
||||
{% set is_suspended = pro_status == "suspended" %}
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-md-6 col-xl-4">
|
||||
<div class="col-12 col-xl-4">
|
||||
<div class="card p-4 position-relative h-100">
|
||||
<img class='position-absolute top-0 end-0 m-3'
|
||||
src="{{ pro_diamond_url if is_pro_version else url_for('static', filename='img/diamond-blue.svg') }}"
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
width="24px">
|
||||
<div class="card-header p-2">
|
||||
<div class="card-title">
|
||||
<h5 class="me-2 text-primary shine don-jose mb-0">Pro status</h5>
|
||||
<h5 class="me-2 text-primary shine don-jose mb-0">Status</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body position-relative">
|
||||
|
|
@ -44,9 +44,18 @@
|
|||
Delete or draft some services to reach the number of {{ pro_services }} services.
|
||||
</div>
|
||||
{% endif %}
|
||||
<a href="https://panel.bunkerweb.io/?utm_campaign=self&utm_source=ui#pro"
|
||||
class="fs-6 mt-2 p-2 courier-prime fst-italic text-primary shine">
|
||||
<i class="bx bx-link-external"></i>
|
||||
<a href="{% if is_pro_version %}https://panel.bunkerweb.io/clientarea.php?action=services&utm_campaign=self&utm_source=ui{% else %}https://panel.bunkerweb.io/order/bunkerweb-pro?utm_campaign=self&utm_source=ui{% endif %}"
|
||||
role="button"
|
||||
aria-pressed="true"
|
||||
class="btn btn-pro-now courier-prime"
|
||||
target="_blank"
|
||||
rel="noopener">
|
||||
<span class="me-1 me-md-2 d-flex h-100 justify-content-center align-items-center">
|
||||
<img src="{{ url_for('static', filename='img/diamond-white.svg') }}"
|
||||
alt="Pro plugin"
|
||||
width="18px"
|
||||
height="15.5px">
|
||||
</span>
|
||||
{% if is_pro_version %}
|
||||
All features available
|
||||
{% else %}
|
||||
|
|
@ -72,11 +81,13 @@
|
|||
<div class="col-12 col-xl-4">
|
||||
<div class="card p-4 position-relative h-100">
|
||||
<i class='bx bx-calendar bx-sm position-absolute top-0 end-0 m-3 {% if is_expired %}text-warning{% else %}text-primary{% endif %}'></i>
|
||||
<div class="card-header p-2">
|
||||
<div class="card-title">
|
||||
<h5 class="me-2 text-primary shine don-jose mb-0">Pro expiration date</h5>
|
||||
{% if is_pro_version %}
|
||||
<div class="card-header p-2">
|
||||
<div class="card-title">
|
||||
<h5 class="me-2 text-primary shine don-jose mb-0">Pro expiration date</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="card-body position-relative">
|
||||
<div class="d-flex align-items-center justify-content-center h-100 pb-2">
|
||||
<input id="expiration-date" type="hidden" value="{{ pro_expire }}" />
|
||||
|
|
@ -86,18 +97,20 @@
|
|||
class="visually-hidden"
|
||||
value="{{ pro_expire }}" />
|
||||
</div>
|
||||
<small class="position-absolute bottom-0 end-0 text-primary">
|
||||
{% if pro_expires_in != "Unknown" %}
|
||||
Expires in: {{ pro_expires_in }}
|
||||
{% else %}
|
||||
Unknown expiration date
|
||||
{% endif %}
|
||||
</small>
|
||||
{% if is_pro_version %}
|
||||
<small class="position-absolute bottom-0 end-0 text-primary">
|
||||
{% if pro_expires_in != "Unknown" %}
|
||||
Expires in: {{ pro_expires_in }}
|
||||
{% else %}
|
||||
Unknown expiration date
|
||||
{% endif %}
|
||||
</small>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 row g-3 m-0 p-0">
|
||||
<div class="col-12 col-md-6 col-xl-4">
|
||||
<div class="col-12 col-xl-8">
|
||||
<div class="card p-4 position-relative">
|
||||
<i class='bx bx-key bx-sm position-absolute top-0 end-0 m-3 {% if is_expired %}text-warning{% else %}text-primary{% endif %}'></i>
|
||||
<div class="card-header p-2">
|
||||
|
|
@ -139,15 +152,16 @@
|
|||
{% set setting_method = "readonly" %}
|
||||
{% endif %}
|
||||
{% include "models/input_setting.html" %}
|
||||
<button type="submit"
|
||||
class="btn btn-primary w-100 text-uppercase don-jose mt-3">
|
||||
{% if is_pro_version %}
|
||||
Update
|
||||
{% else %}
|
||||
Activate
|
||||
{% endif %}
|
||||
key
|
||||
</button>
|
||||
<div class="d-flex justify-content-center align-items-center">
|
||||
<button type="submit" class="btn btn-primary text-uppercase don-jose mt-3">
|
||||
{% if is_pro_version %}
|
||||
Update
|
||||
{% else %}
|
||||
Activate
|
||||
{% endif %}
|
||||
key
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -33,7 +33,10 @@
|
|||
class="btn btn-sm btn-link"
|
||||
target="_blank"
|
||||
rel="noreferrer">
|
||||
<i class='bx bxl-twitter bx-sm'></i>
|
||||
<img src="{{ url_for('static', filename='img/brands/Twitter-X-Logo.svg') }}"
|
||||
alt="X logo"
|
||||
width="20px"
|
||||
height="20px">
|
||||
</a>
|
||||
</div>
|
||||
<button type="button"
|
||||
|
|
|
|||
|
|
@ -33,7 +33,10 @@
|
|||
class="btn btn-sm btn-link"
|
||||
target="_blank"
|
||||
rel="noreferrer">
|
||||
<i class='bx bxl-twitter bx-sm'></i>
|
||||
<img src="{{ url_for('static', filename='img/brands/Twitter-X-Logo.svg') }}"
|
||||
alt="X logo"
|
||||
width="20px"
|
||||
height="20px">
|
||||
</a>
|
||||
</div>
|
||||
<button type="button"
|
||||
|
|
|
|||
Loading…
Reference in a new issue