refactor: Modularize UI components and utilities
- Extract UI components into separate JS files - Centralize configuration values in config.js - Introduce a dedicated logger module - Improve file tree drag-and-drop and undo functionality - Refactor modal handling to a single manager - Add URL routing support for SPA navigation - Implement view mode for read-only access
This commit is contained in:
		| @@ -78,27 +78,36 @@ class MarkdownEditorApp: | ||||
|         # Root and index.html | ||||
|         if path == '/' or path == '/index.html': | ||||
|             return self.handle_index(environ, start_response) | ||||
|          | ||||
|  | ||||
|         # Static files | ||||
|         if path.startswith('/static/'): | ||||
|             return self.handle_static(environ, start_response) | ||||
|          | ||||
|  | ||||
|         # Health check | ||||
|         if path == '/health' and method == 'GET': | ||||
|             start_response('200 OK', [('Content-Type', 'text/plain')]) | ||||
|             return [b'OK'] | ||||
|              | ||||
|  | ||||
|         # API for collections | ||||
|         if path == '/fs/' and method == 'GET': | ||||
|             return self.handle_collections_list(environ, start_response) | ||||
|  | ||||
|         # Check if path starts with a collection name (for SPA routing) | ||||
|         # This handles URLs like /notes/ttt or /documents/file.md | ||||
|         # MUST be checked BEFORE WebDAV routing to prevent WebDAV from intercepting SPA routes | ||||
|         path_parts = path.strip('/').split('/') | ||||
|         if path_parts and path_parts[0] in self.collections: | ||||
|             # This is a SPA route for a collection, serve index.html | ||||
|             # The client-side router will handle the path | ||||
|             return self.handle_index(environ, start_response) | ||||
|  | ||||
|         # All other /fs/ requests go to WebDAV | ||||
|         if path.startswith('/fs/'): | ||||
|             return self.webdav_app(environ, start_response) | ||||
|  | ||||
|         # Fallback for anything else (shouldn't happen with correct linking) | ||||
|         start_response('404 Not Found', [('Content-Type', 'text/plain')]) | ||||
|         return [b'Not Found'] | ||||
|         # Fallback: Serve index.html for all other routes (SPA routing) | ||||
|         # This allows client-side routing to handle any other paths | ||||
|         return self.handle_index(environ, start_response) | ||||
|      | ||||
|     def handle_collections_list(self, environ, start_response): | ||||
|         """Return list of available collections""" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user