converted dpw section to SPA using htmx; renamed moongate new-document route to match other route prefixes; removed unused route names; removed unused all_documents() subs from all route files; new test file for htmx requests
renamed access_denied page; moved configuration of link & label settings from record.tt to routes using vars.next_route; moved alert notifications (success & error) into own template; fixed js to auto-resize textarea on page load
changed how DPW model handles file upload functions for checking and setting upload directory: * moved duplicate code for checking existance of uploaded file into discrete function * initialised '_upload_dir' value as a param during file check function to avoid requierement for duplication in route and model; put rudimentary date check on sqlite3 db (still permits invalid dates); new test files
major rewrite - combined separate docs-lib and moongate apps into single app using prefixes with multiple route files; merged DB functions into model which is now a D2 plugin, providing encapsulated model domains (infolib, moongate & dpw); uses route names to allow tt to call uri_for_route, but some caveats: * route names must be unique across all route files * uri_for_route cannot be used in any template loaded after a forward since the data required in request.uri_for_route($name) is deleted during the forwarding process leading to fatal error when tt calls the uri_for_route function; META function no longer works since tt WRAPPER function disabled to allow routes to define layout
changed $cols to $fields in App::DB to disambiguate from @cols; cosmetic change to gitlog() method for brevity; root ('/') route needs to capture query_param when forwarded; tests need cookie_headers for routes recently protected by authentication
reversed previous fix for init_db.sql schema, sqlite3 can execute multiple statements, failure in previous versions probably due to syntax error in users table insert statement; new routes.t file omitted from previous commit