Updating templating system

This commit is contained in:
Dita Aji Pratama 2024-01-13 12:01:14 +07:00
parent 39b01c5280
commit 5125ad3eba
17 changed files with 70 additions and 72 deletions

View File

@ -1,7 +1,5 @@
import os import os
from core import templatestaticdir
# template import
import templates.basic_bootstrap.main as basic_bootstrap
# pages directory # pages directory
page = { page = {
@ -21,11 +19,12 @@ dirconfig = {
'tools.staticdir.on' : True , 'tools.staticdir.on' : True ,
'tools.staticdir.dir' : './static/css' , 'tools.staticdir.dir' : './static/css' ,
}, },
'/js' :
{
'tools.staticdir.on' : True ,
'tools.staticdir.dir' : './static/js' ,
},
} }
def add(template): # template staticdir: dirconfig dirtemplate
for row in template: templatestaticdir.add(dirconfig, "templates")
dirconfig[ row['name'] ] = row['value']
# template staticdir
add(basic_bootstrap.static)

View File

@ -1,8 +1,7 @@
GV_base_url = "http://localhost:81" baseurl = "http://localhost:81"
GV_title = "CostaPy" title = "CostaPy"
GV_copyright = "Dita Aji Pratama"
GV_menu = { menu = {
"public": { "public": {
"topnav": [ "topnav": [
{ {

View File

@ -0,0 +1,9 @@
import os
def add(dirconfig, template_directory):
template_directory = "templates"
template_list = [d for d in os.listdir(template_directory) if os.path.isdir(os.path.join(template_directory, d))]
for template_name in template_list:
template_module = __import__(f"{template_directory}.{template_name}.main", fromlist=["static"])
for static in getattr(template_module, "static", []):
dirconfig[ static['name'] ] = static['value']

View File

@ -10,6 +10,8 @@ import modules.public.home as public_home
class handler(): class handler():
def index(self, **kwargs): def index(self, **kwargs):
kwargs["mako_website"] = basic_bootstrap.main(directory.page["public"], "home") kwargs["mako"] = {
"website" : bare.main(directory.page["public"], "home")
}
return public_home.main().html(kwargs) return public_home.main().html(kwargs)
index.exposed = True index.exposed = True

View File

@ -7,31 +7,21 @@ class main:
pass pass
def html(self, params): def html(self, params):
return Template(params["mako"]["website"]['template']).render(
interface_template = params["mako_website"]['template' ] title = globalvar.title,
topnav = params["mako_website"]['topnav' ] baseurl = globalvar.baseurl,
footer = params["mako_website"]['footer' ] topnav = Template(params["mako"]["website"]['topnav']).render(
container = params["mako_website"]['container' ] title = globalvar.title,
baseurl = globalvar.baseurl,
name = "World" menu = globalvar.menu['public']['topnav'],
user_roles = ["guest"],
user_roles = ["guest"]
active_page = "Home" active_page = "Home"
return Template(interface_template).render(
GV_title = globalvar.GV_title,
GV_base_url = globalvar.GV_base_url,
topnav = Template(topnav).render(
GV_title = globalvar.GV_title,
menu = globalvar.GV_menu['public']['topnav'],
user_roles = user_roles,
active_page = active_page
), ),
footer = Template(footer).render( footer = Template(params["mako"]["website"]['footer']).render(
copyright_holder = globalvar.GV_copyright, copyright = "Dita Aji Pratama",
), ),
container = Template(container).render( container = Template(params["mako"]["website"]['container']).render(
GV_base_url = globalvar.GV_base_url, baseurl = globalvar.baseurl,
greeting = "Hello " + name + ", " + "Welcome to " + globalvar.GV_title greeting = f"Hello world, welcome to {globalvar.title}"
) )
) )

View File

@ -1,3 +1,3 @@
<footer class="mt-auto bg-dark text-light p-3 text-center"> <footer class="mt-auto bg-dark text-light p-3 text-center">
© 2022 ${copyright_holder} © 2022 ${copyright}
</footer> </footer>

View File

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>${title}</title>
<script src="${baseurl}/bare/lib/jquery/jquery-3.7.0.min.js"></script>
<link href="${baseurl}/bare/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<script src="${baseurl}/bare/lib/bootstrap/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="${baseurl}/bare/css/style.css">
</head>
<body class="d-flex flex-column" style="min-height:100vh;">
${topnav}
<div class="mb-5">
${container}
</div>
${footer}
</body>
</html>

View File

@ -1,5 +1,5 @@
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top"> <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<a class="navbar-brand" href="/">${GV_title}</a> <a class="navbar-brand" href="${baseurl}">${title}</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>

View File

@ -1,26 +1,25 @@
from core import html from core import html
from config import directory
static = [ static = [
{ {
'name':'/basic_bootstrap/lib', 'name':'/bare/lib',
'value':{ 'value':{
'tools.staticdir.on' : True , 'tools.staticdir.on' : True ,
'tools.staticdir.dir' : './templates/basic_bootstrap/static/lib' , 'tools.staticdir.dir' : './templates/bare/static/lib' ,
} }
}, },
{ {
'name':'/basic_bootstrap/css', 'name':'/bare/css',
'value':{ 'value':{
'tools.staticdir.on' : True , 'tools.staticdir.on' : True ,
'tools.staticdir.dir' : './templates/basic_bootstrap/static/css' , 'tools.staticdir.dir' : './templates/bare/static/css' ,
} }
} }
] ]
def main(dir, page): def main(dir, page):
html_template = html.main.get_html("templates/basic_bootstrap/html") html_template = html.main.get_html("templates/bare/html")
html_page = html.main.get_html(dir) html_page = html.main.get_html(dir)
params_list = { params_list = {
"template" : html_template ["template.html" ] , "template" : html_template ["template.html" ] ,

View File

@ -1,20 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>${GV_title}</title>
<script src="${GV_base_url}/basic_bootstrap/lib/jquery/jquery-3.7.0.min.js"></script>
<link href="${GV_base_url}/basic_bootstrap/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<script src="${GV_base_url}/basic_bootstrap/lib/bootstrap/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="${GV_base_url}/basic_bootstrap/css/style.css">
</head>
<body class="d-flex flex-column" style="min-height:100vh;">
${topnav}
<div class="mb-5">
${container}
</div>
${footer}
</body>
</html>