diff --git a/htdocs/include/header.include.html b/htdocs/include/header.include.html index 84084bb..426d196 100644 --- a/htdocs/include/header.include.html +++ b/htdocs/include/header.include.html @@ -1,7 +1,7 @@
- - Receiver avatar + + Receiver avatar

${receiver_name}

${receiver_location} | Loc: ${locator}, ASL: ${receiver_asl} m
@@ -10,8 +10,8 @@

Status

Log

Receiver
-
Map
-
Settings
+
Map
+
Settings
diff --git a/htdocs/settings/general.html b/htdocs/settings/general.html index 1e6724d..dbe4b65 100644 --- a/htdocs/settings/general.html +++ b/htdocs/settings/general.html @@ -2,11 +2,11 @@ OpenWebRX Settings - - - + + + - + diff --git a/owrx/controllers/settings/__init__.py b/owrx/controllers/settings/__init__.py index e0ea25c..a7ff055 100644 --- a/owrx/controllers/settings/__init__.py +++ b/owrx/controllers/settings/__init__.py @@ -68,16 +68,10 @@ class SettingsFormController(AuthorizationMixin, WebpageController, metaclass=AB def indexAction(self): self.serve_template("settings/general.html", **self.template_variables()) - def header_variables(self): - variables = super().header_variables() - variables["assets_prefix"] = "../" - return variables - def template_variables(self): variables = super().template_variables() variables["content"] = self.render_sections() variables["title"] = self.getTitle() - variables["assets_prefix"] = "../" return variables def parseFormData(self): diff --git a/owrx/controllers/settings/bookmarks.py b/owrx/controllers/settings/bookmarks.py index 4ece8dd..83c9840 100644 --- a/owrx/controllers/settings/bookmarks.py +++ b/owrx/controllers/settings/bookmarks.py @@ -10,11 +10,6 @@ logger = logging.getLogger(__name__) class BookmarksController(AuthorizationMixin, WebpageController): - def header_variables(self): - variables = super().header_variables() - variables["assets_prefix"] = "../" - return variables - def template_variables(self): variables = super().template_variables() variables["bookmarks"] = self.render_table() diff --git a/owrx/controllers/settings/sdr.py b/owrx/controllers/settings/sdr.py index 4b28c68..447552f 100644 --- a/owrx/controllers/settings/sdr.py +++ b/owrx/controllers/settings/sdr.py @@ -13,16 +13,10 @@ from abc import ABCMeta class SdrDeviceListController(AuthorizationMixin, WebpageController): - def header_variables(self): - variables = super().header_variables() - variables["assets_prefix"] = "../" - return variables - def template_variables(self): variables = super().template_variables() variables["content"] = self.render_devices() variables["title"] = "SDR device settings" - variables["assets_prefix"] = "../" return variables def render_devices(self): @@ -134,16 +128,6 @@ class SdrDeviceController(SdrFormController): def getTitle(self): return self.device["name"] - def header_variables(self): - variables = super().header_variables() - variables["assets_prefix"] = "../../" - return variables - - def template_variables(self): - variables = super().template_variables() - variables["assets_prefix"] = "../../" - return variables - def render_sections(self): return super().render_sections() + self.render_profile_list(self.device["profiles"]) @@ -189,16 +173,6 @@ class NewSdrDeviceController(SettingsFormController): self.stack.addLayer(0, id_layer) self.stack.addLayer(1, self.data_layer) - def header_variables(self): - variables = super().header_variables() - variables["assets_prefix"] = "../../" - return variables - - def template_variables(self): - variables = super().template_variables() - variables["assets_prefix"] = "../../" - return variables - def getSections(self): return [ Section( @@ -251,16 +225,6 @@ class SdrProfileController(SdrFormController): def getTitle(self): return self.profile["name"] - def header_variables(self): - variables = super().header_variables() - variables["assets_prefix"] = "../../../" - return variables - - def template_variables(self): - variables = super().template_variables() - variables["assets_prefix"] = "../../../" - return variables - def indexAction(self): if self.profile is None: self.send_response("profile not found", code=404) diff --git a/owrx/controllers/template.py b/owrx/controllers/template.py index 253e7b7..a577b6a 100644 --- a/owrx/controllers/template.py +++ b/owrx/controllers/template.py @@ -19,14 +19,19 @@ class TemplateController(Controller): class WebpageController(TemplateController): + def get_document_root(self): + path_parts = [part for part in self.request.path[1:].split("/")] + levels = max(0, len(path_parts) - 1) + return "../" * levels + def header_variables(self): - variables = {"assets_prefix": ""} + variables = {"document_root": self.get_document_root()} variables.update(ReceiverDetails().__dict__()) return variables def template_variables(self): header = self.render_template("include/header.include.html", **self.header_variables()) - return {"header": header} + return {"header": header, "document_root": self.get_document_root()} class IndexController(WebpageController): diff --git a/owrx/http.py b/owrx/http.py index 4c16938..bf8ddc3 100644 --- a/owrx/http.py +++ b/owrx/http.py @@ -40,23 +40,23 @@ class RequestHandler(BaseHTTPRequestHandler): logger.debug("%s - - [%s] %s", self.address_string(), self.log_date_time_string(), format % args) def do_GET(self): - self.router.route(self, self.get_request("GET")) + self.router.route(self, self._build_request("GET")) def do_POST(self): - self.router.route(self, self.get_request("POST")) + self.router.route(self, self._build_request("POST")) def do_DELETE(self): - self.router.route(self, self.get_request("DELETE")) + self.router.route(self, self._build_request("DELETE")) - def get_request(self, method): - url = urlparse(self.path) - return Request(url, method, self.headers) + def _build_request(self, method): + return Request(self.path, method, self.headers) class Request(object): def __init__(self, url, method, headers): - self.path = url.path - self.query = parse_qs(url.query) + parsed_url = urlparse(url) + self.path = parsed_url.path + self.query = parse_qs(parsed_url.query) self.matches = None self.method = method self.headers = headers