Merge branch 'dev' into critical/security
@ -3,9 +3,11 @@
|
|||||||
### New features
|
### New features
|
||||||
TBD
|
TBD
|
||||||
### Bug fixes
|
### Bug fixes
|
||||||
TBD
|
- Remove webhook `custom` option from webook provider list as it's not currently an option ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/664))
|
||||||
### Tweaks
|
### Tweaks
|
||||||
TBD
|
- Homogenize Panel logos/branding ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/666))
|
||||||
|
- Retain previous tab when revisiting server details page (#272)([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/667))
|
||||||
|
- Add server name tag in panel header (#272)([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/667))
|
||||||
### Lang
|
### Lang
|
||||||
TBD
|
TBD
|
||||||
<br><br>
|
<br><br>
|
||||||
|
@ -36,6 +36,7 @@ class ServersController(metaclass=Singleton):
|
|||||||
self.management_helper = management_helper
|
self.management_helper = management_helper
|
||||||
self.servers_list = []
|
self.servers_list = []
|
||||||
self.stats = Stats(self.helper, self)
|
self.stats = Stats(self.helper, self)
|
||||||
|
self.server_subpage = {}
|
||||||
|
|
||||||
# **********************************************************************************
|
# **********************************************************************************
|
||||||
# Generic Servers Methods
|
# Generic Servers Methods
|
||||||
|
@ -481,6 +481,12 @@ class PanelHandler(BaseHandler):
|
|||||||
subpage = nh3.clean(self.get_argument("subpage", ""))
|
subpage = nh3.clean(self.get_argument("subpage", ""))
|
||||||
|
|
||||||
server_id = self.check_server_id()
|
server_id = self.check_server_id()
|
||||||
|
# load page the user was on last
|
||||||
|
server_subpage = self.controller.servers.server_subpage.get(server_id, "")
|
||||||
|
if subpage == "" and server_subpage != "":
|
||||||
|
subpage = self.controller.servers.server_subpage.get(server_id, "")
|
||||||
|
else:
|
||||||
|
self.controller.servers.server_subpage[server_id] = subpage
|
||||||
if server_id is None:
|
if server_id is None:
|
||||||
return
|
return
|
||||||
if not self.failed_server:
|
if not self.failed_server:
|
||||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 424 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.6 KiB |
10
app/frontend/static/assets/images/crafty-logo-square.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 425 425">
|
||||||
|
<!-- Background -->
|
||||||
|
<rect x="0" y="0" rx="105" ry="105" width="425" height="425" style="fill: #22283A"/>
|
||||||
|
<!-- green C -->
|
||||||
|
<path fill="hsl(160, 59%, 45%)" d="M 162.5 182.5 l 38 -15 q 0 -40 -40 -40 l -95 0 q -40 0 -40 40 l 0 90 q 0 40 40 40 l 95 0 q 40 0 40 -40 l -38 -20 l 0 28 l -100 0 l 0 -108 l 100 0 z"/>
|
||||||
|
<!-- blue C -->
|
||||||
|
<path fill="hsl(192, 99%, 45%)" d="M 262.5 182.5 l -38 -15 q 0 -40 40 -40 l 95 0 q 40 0 40 40 l 0 90 q 0 40 -40 40 l -95 0 q -40 0 -40 -40 l 38 -20 l 0 28 l 100 0 l 0 -108 l -100 0 z"/>
|
||||||
|
<!-- line thing in middle of Cs -->
|
||||||
|
<path fill="hsl(266, 71%, 57%)" d="M 142.5 191.5 q -10 0 -10 10 l 0 19 q 0 10 10 10 l 140 0 q 10 0 10 -10 l 0 -19 q 0 -10 -10 -10 z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 750 B |
@ -82,6 +82,9 @@
|
|||||||
<span class="mdi mdi-chevron-double-left"></span>
|
<span class="mdi mdi-chevron-double-left"></span>
|
||||||
<span class="mdi mdi-chevron-double-right"></span>
|
<span class="mdi mdi-chevron-double-right"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<span class="badge-pill badge-outline-primary" id="server-name-nav" style="display: none;"></span>
|
||||||
|
|
||||||
|
|
||||||
{% include notify.html %}
|
{% include notify.html %}
|
||||||
|
|
||||||
|
@ -248,12 +248,38 @@
|
|||||||
$("#player-body").html(text);
|
$("#player-body").html(text);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//used to get cookies from browser - this is part of tornados xsrf protection - it's for extra security
|
||||||
|
function getCookie(name) {
|
||||||
|
var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
|
||||||
|
return r ? r[1] : undefined;
|
||||||
|
}
|
||||||
|
const token = getCookie("_xsrf")
|
||||||
$(window).ready(function () {
|
$(window).ready(function () {
|
||||||
console.log("ready!");
|
console.log("ready!");
|
||||||
|
|
||||||
//if (webSocket) {
|
//if (webSocket) {
|
||||||
webSocket.on('update_server_details', update_server_details);
|
webSocket.on('update_server_details', update_server_details);
|
||||||
|
add_server_name();
|
||||||
//}
|
//}
|
||||||
});
|
});
|
||||||
|
async function add_server_name(){
|
||||||
|
let res = await fetch(`/api/v2/servers/${serverId}`, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'X-XSRFToken': token
|
||||||
|
},
|
||||||
|
});
|
||||||
|
let responseData = await res.json();
|
||||||
|
if (responseData.status === "ok") {
|
||||||
|
console.log(responseData)
|
||||||
|
$("#server-name-nav").html(`${responseData.data['server_name']}`)
|
||||||
|
$("#server-name-nav").show();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
bootbox.alert({
|
||||||
|
title: responseData.error,
|
||||||
|
message: responseData.error_data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
@ -43,8 +43,10 @@
|
|||||||
<form class="forms-sample" method="post" id="webhook_form"
|
<form class="forms-sample" method="post" id="webhook_form"
|
||||||
action="/panel/edit_webhook?id={{ data['server_stats']['server_id']['server_id'] }}&sch_id={{ data['webhook']['id'] }}">
|
action="/panel/edit_webhook?id={{ data['server_stats']['server_id']['server_id'] }}&sch_id={{ data['webhook']['id'] }}">
|
||||||
{% end %}
|
{% end %}
|
||||||
<select class="form-select form-control form-control-lg select-css" id="webhook_type" name="webhook_type">
|
<select class="form-select form-control form-control-lg select-css" id="webhook_type" name="webhook_type">
|
||||||
|
{% if data['new_webhook'] == False %}
|
||||||
<option value="{{data['webhook']['webhook_type']}}">{{data['webhook']['webhook_type']}}</option>
|
<option value="{{data['webhook']['webhook_type']}}">{{data['webhook']['webhook_type']}}</option>
|
||||||
|
{% end %}
|
||||||
{% for type in data['providers'] %}
|
{% for type in data['providers'] %}
|
||||||
{% if type != data['webhook']['webhook_type'] %}
|
{% if type != data['webhook']['webhook_type'] %}
|
||||||
<option value="{{type}}">{{type}}</option>
|
<option value="{{type}}">{{type}}</option>
|
||||||
|