51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
import yaml
|
|
|
|
def parseHTML(item):
|
|
if(not ('klickable' in item and item['klickable'] is False)):
|
|
item['lable'] = '<a href="' + item["url"] + '">' + item["lable"] + '</a>'
|
|
|
|
if('sub' not in item):
|
|
return '<li><span class="menuLable">' + item["lable"] + '</span></li>'
|
|
|
|
html = '<li><span class="menuLable sub">' + item["lable"] + '</span><ul class="submenu">'
|
|
html += genHTML(item['sub'], item['url'])
|
|
|
|
return html + '</ul></li>'
|
|
|
|
def genHTML(items, parentUrl):
|
|
html = ""
|
|
for item in items:
|
|
|
|
if(type(item) is dict):
|
|
if('url' not in item):
|
|
if('lable' not in item):
|
|
print('url or lable reqired')
|
|
continue
|
|
if('klickable' in item and item['klickable'] is False):
|
|
item["url"] = parentUrl
|
|
else:
|
|
item["url"] = parentUrl + '/' + item["lable"]
|
|
|
|
if(item["url"][0] != '/'):
|
|
item["url"] = parentUrl + '/' + item["url"]
|
|
|
|
#WARNING: XSS vanrable!
|
|
if('lable' not in item):
|
|
item["lable"] = item["url"].split('/')[-1]
|
|
|
|
html += parseHTML(item)
|
|
continue
|
|
|
|
|
|
if(type(item) is str):
|
|
html += parseHTML({"lable": item, "url": parentUrl + '/' + item})
|
|
continue
|
|
|
|
return html
|
|
|
|
def getSidebar(items, parentUrl):
|
|
html = '<aside><nav><ul id="sidemenu">'
|
|
html += genHTML(items, parentUrl)
|
|
html += '</ul></nav></aside>'
|
|
return html
|