diff --git a/app/classes/controllers/management_controller.py b/app/classes/controllers/management_controller.py index 47860fe1..7e7a38b0 100644 --- a/app/classes/controllers/management_controller.py +++ b/app/classes/controllers/management_controller.py @@ -10,6 +10,25 @@ class ManagementController: def __init__(self, management_helper): self.management_helper = management_helper + # ********************************************************************************** + # Config Methods + # ********************************************************************************** + @staticmethod + def set_login_image(path): + HelpersManagement.set_login_image(path) + + @staticmethod + def get_login_image(): + return HelpersManagement.get_login_image() + + @staticmethod + def set_login_opacity(opacity): + return HelpersManagement.set_login_opacity(opacity) + + @staticmethod + def get_login_opacity(): + return HelpersManagement.get_login_opacity() + # ********************************************************************************** # Host_Stats Methods # ********************************************************************************** @@ -94,14 +113,6 @@ class ManagementController: def delete_scheduled_task(schedule_id): return HelpersManagement.delete_scheduled_task(schedule_id) - @staticmethod - def set_login_image(path): - HelpersManagement.set_login_image(path) - - @staticmethod - def get_login_image(): - return HelpersManagement.get_login_image() - @staticmethod def update_scheduled_task(schedule_id, updates): return HelpersManagement.update_scheduled_task(schedule_id, updates) diff --git a/app/classes/models/management.py b/app/classes/models/management.py index 55c86bb7..7eab07a3 100644 --- a/app/classes/models/management.py +++ b/app/classes/models/management.py @@ -44,6 +44,7 @@ class AuditLog(BaseModel): class CraftySettings(BaseModel): secret_api_key = CharField(default="") login_photo = CharField(default="login_1.jpg") + login_opacity = IntegerField(default=100) class Meta: table_name = "crafty_settings" @@ -255,6 +256,9 @@ class HelpersManagement: ) return settings[0].secret_api_key + # ********************************************************************************** + # Config Methods + # ********************************************************************************** @staticmethod def get_login_image(): settings = CraftySettings.select(CraftySettings.login_photo).where( @@ -268,6 +272,19 @@ class HelpersManagement: CraftySettings.id == 1 ).execute() + @staticmethod + def get_login_opacity(): + settings = CraftySettings.select(CraftySettings.login_opacity).where( + CraftySettings.id == 1 + ) + return settings[0].login_opacity + + @staticmethod + def set_login_opacity(opacity): + CraftySettings.update({CraftySettings.login_opacity: opacity}).where( + CraftySettings.id == 1 + ).execute() + # ********************************************************************************** # Schedules Methods # ********************************************************************************** diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index cdd67146..2ce94b1b 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -356,6 +356,8 @@ class AjaxHandler(BaseHandler): elif page == "select_photo": if exec_user["superuser"]: photo = self.get_argument("photo", None) + opacity = self.get_argument("opacity", 100) + self.controller.management.set_login_opacity(int(opacity)) if photo == "login_1.jpg": self.controller.management.set_login_image("login_1.jpg") self.controller.cached_login = f"{photo}" diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 582517db..0e61f640 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -291,6 +291,7 @@ class PanelHandler(BaseHandler): # todo: make this actually pull and compare version data "update_available": self.helper.update_available, "background": self.controller.cached_login, + "login_opacity": self.controller.management.get_login_opacity(), "serverTZ": tz, "version_data": self.helper.get_version_string(), "failed_servers": self.controller.servers.failed_servers, @@ -883,6 +884,9 @@ class PanelHandler(BaseHandler): if item not in page_data["backgrounds"]: page_data["backgrounds"].append(item) page_data["background"] = self.controller.cached_login + page_data[ + "login_opacity" + ] = self.controller.management.get_login_opacity() else: page_data["managed_users"] = self.controller.users.get_managed_users( exec_user["user_id"] diff --git a/app/classes/web/public_handler.py b/app/classes/web/public_handler.py index 7f3f0c26..846402c3 100644 --- a/app/classes/web/public_handler.py +++ b/app/classes/web/public_handler.py @@ -40,6 +40,7 @@ class PublicHandler(BaseHandler): "lang_page": self.helper.get_lang_page(self.helper.get_setting("language")), "query": "", "background": self.controller.cached_login, + "login_opacity": self.controller.management.get_login_opacity(), } if self.request.query: diff --git a/app/frontend/templates/panel/panel_config.html b/app/frontend/templates/panel/panel_config.html index 050ea9b4..019c8009 100644 --- a/app/frontend/templates/panel/panel_config.html +++ b/app/frontend/templates/panel/panel_config.html @@ -237,16 +237,16 @@
-
+

{{ translate('panelConfig', 'loginImage', data['lang']) }}


-
+ {% raw xsrf_form_html() %} -
+
-
+
@@ -264,10 +264,10 @@ 'delete', data['lang']) }}
-
+
{{ translate('panelConfig', 'preview', data['lang']) }}:
-
+
@@ -286,16 +286,106 @@
-
- + +
+ +
+
+
+ Responsive image +
+
- Responsive image
+ 'apply', data['lang']) }} + 'cancel', data['lang']) }}
@@ -407,16 +497,29 @@ $('.select-photo').click(function () { var token = getCookie("_xsrf") let photo = $('#photo').find(":selected").val(); + let opacity = $('#modal_opacity').val(); $.ajax({ type: "POST", headers: { 'X-XSRFToken': token }, - url: '/ajax/select_photo?photo=' + photo, + url: '/ajax/select_photo?photo=' + photo + '&opacity=' + opacity, success: function (data) { window.location.reload(); }, }); }) + $(document).ready(function () { + let opacity = parseInt($("#modal_opacity").val()); + document.getElementById('login-form-background').style.background = 'rgb(34, 36, 55, ' + (opacity / 100) + ')'; + }); + + function previewOpacity() { + let opacity = parseInt($("#modal_opacity").val()) + console.debug("Selected Opacity = " + opacity + "%"); + document.getElementById('opacityValue').innerHTML = (opacity) + "%"; + document.getElementById('login-form-background').style.background = 'rgb(34, 36, 55, ' + (opacity / 100) + ')'; + } + function updateBackgroundSelect() { $("#photo").val($("#try_photo").val()).change(); } diff --git a/app/frontend/templates/public/login.html b/app/frontend/templates/public/login.html index e172a9a8..3974e539 100644 --- a/app/frontend/templates/public/login.html +++ b/app/frontend/templates/public/login.html @@ -36,8 +36,9 @@
-