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
 |