From 32e0c959e8589f574d1c46b96d35f49c98721566 Mon Sep 17 00:00:00 2001 From: retoor <retoor@molodetz.nl> Date: Tue, 1 Apr 2025 16:21:29 +0200 Subject: [PATCH] Progress. --- src/snek/app.py | 2 ++ src/snek/templates/settings.html | 36 ++++++++++++++++++++++++ src/snek/templates/sidebar_settings.html | 14 +++++++++ src/snek/view/settings.py | 8 ++++++ src/snek/webdav.py | 5 ++-- 5 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/snek/templates/settings.html create mode 100644 src/snek/templates/sidebar_settings.html create mode 100644 src/snek/view/settings.py diff --git a/src/snek/app.py b/src/snek/app.py index 984fcf3..d043c0e 100644 --- a/src/snek/app.py +++ b/src/snek/app.py @@ -42,6 +42,7 @@ from snek.view.terminal import TerminalSocketView, TerminalView from snek.view.upload import UploadView from snek.view.web import WebView from snek.webdav import WebdavApplication +from snek.view.settings import SettingsView SESSION_KEY = b"c79a0c5fda4b424189c427d28c9f7c34" @@ -137,6 +138,7 @@ class Application(BaseApplication): self.router.add_view("/docs.html", DocsHTMLView) self.router.add_view("/docs.md", DocsMDView) self.router.add_view("/status.json", StatusView) + self.router.add_view("/settings.html", SettingsView) self.router.add_view("/web.html", WebView) self.router.add_view("/login.html", LoginView) self.router.add_view("/login.json", LoginView) diff --git a/src/snek/templates/settings.html b/src/snek/templates/settings.html new file mode 100644 index 0000000..cfb186c --- /dev/null +++ b/src/snek/templates/settings.html @@ -0,0 +1,36 @@ +{% extends "app.html" %} + +{% block sidebar %} + +{% include "sidebar_settings.html" %} + +{% endblock %} + +{% block head %} + <link href="https://cdn.bootcdn.net/ajax/libs/monaco-editor/0.20.0/min/vs/editor/editor.main.min.css" rel="stylesheet"> + + <script src="https://cdn.bootcdn.net/ajax/libs/monaco-editor/0.20.0/min/vs/loader.min.js"></script> + +{% endblock %} + +{% block main %} + +<h1>Setting page</h1> + +<div id="profile_description"></div> + + + +<script type="module"> + + require.config({ paths: { 'vs': 'https://cdn.bootcdn.net/ajax/libs/monaco-editor/0.20.0/min/vs' } }); + + require(['vs/editor/editor.main'], function () { +var editor = monaco.editor.create(document.getElementById('profile_description'), { + value: phpCode, + language: 'php' + }); + }) +</script> + +{% endblock main %} diff --git a/src/snek/templates/sidebar_settings.html b/src/snek/templates/sidebar_settings.html new file mode 100644 index 0000000..8e18412 --- /dev/null +++ b/src/snek/templates/sidebar_settings.html @@ -0,0 +1,14 @@ +<style> + .channel-list-item-highlight { + /* xxx */ + } +</style> +<aside class="sidebar" id="channelSidebar"> + <h2>Settings</h2> + <ul> + <li><a class="no-select" href="/settings.html">Profile</a></li> + <li><a class="no-select" href="/settings-notifications.html">Notifications</a></li> + <li><a class="no-select" href="/settings-privacy.html">Privacy</a></li> + </ul> + + </aside> diff --git a/src/snek/view/settings.py b/src/snek/view/settings.py new file mode 100644 index 0000000..fe181f2 --- /dev/null +++ b/src/snek/view/settings.py @@ -0,0 +1,8 @@ +from snek.system.view import BaseView + +class SettingsView(BaseView): + + login_required = True + + async def get(self): + return await self.render_template('settings.html') diff --git a/src/snek/webdav.py b/src/snek/webdav.py index a372b8b..9a2b9e4 100755 --- a/src/snek/webdav.py +++ b/src/snek/webdav.py @@ -219,8 +219,9 @@ class WebdavApplication(aiohttp.web.Application): etree.SubElement(prop, "{DAV:}displayname").text = full_path.name etree.SubElement(prop, "{DAV:}lockdiscovery") mimetype, _ = mimetypes.guess_type(full_path.name) - etree.SubElement(prop, "{DAV:}contenttype").text = mimetype - etree.SubElement(prop, "{DAV:}getcontentlength").text = str( + if full_path.is_file(): + etree.SubElement(prop, "{DAV:}contenttype").text = mimetype + etree.SubElement(prop, "{DAV:}getcontentlength").text = str( full_path.stat().st_size if full_path.is_file() else self.get_directory_size(full_path)