-
Notifications
You must be signed in to change notification settings - Fork 0
/
article.py
151 lines (119 loc) · 5.08 KB
/
article.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#
# Neodym
#
# Copyright (C) by Andreas Zoglauer and contributors
# Please see the license file for more details.
#
# -----------------------------------------------------------------------------------
# Import external files
# Import neodym files
from page import ZPage
# -----------------------------------------------------------------------------------
# And article on the website, containing a main text body, potentially some features, associates CSS and Java script files, as well as a menu entry.
class ZArticle(ZPage):
def __init__(self):
super(ZArticle, self).__init__()
# The menu structure
self.mMenuLevel = 0
self.mMenuEntry = 0
self.mMenuTitle = ""
# The main body (contained in neodym-body)
self.mBody = ""
# An additional, specific CSS for this article
self.mCSSFileNames = []
# An additional, specific Javascipt file for this article
self.mJavaScriptFileNames = []
# Assign all additional content from the main text
def assign(self):
print("Assign Article")
if "CSS" in self.mDictionary:
self.mCSSFileNames.append(self.mDictionary["CSS"])
if "JS" in self.mDictionary:
self.mJavaScriptFileNames.append(self.mDictionary["JS"])
if "MenuLevel" in self.mDictionary:
self.mMenuLevel = int(self.mDictionary["MenuLevel"])
if "MenuEntry" in self.mDictionary:
self.mMenuEntry = int(self.mDictionary["MenuEntry"])
if "MenuTitle" in self.mDictionary:
self.mMenuTitle = self.mDictionary["MenuTitle"]
self.mBody = self.extractSingleTag("neodym-body")
if self.mBody == "":
print("ERROR: <neodym-body>...</neodym-body> tag not found in article")
def read(self, FileName):
print("Read Article")
super(ZArticle, self).read(FileName)
ZArticle.assign(self)
return True
# Assimilate a reader into this page
def assimilate(self, Reader):
print("Assim Article")
super(ZArticle, self).assimilate(Reader)
ZArticle.assign(self)
return True
def createPage(self, Title, SubTitle, Description, Logo, Footer, Menus):
Out = "<!DOCTYPE html>\n"
Out += "<html>\n"
Out += "\n"
Out += "<head>\n"
Out += " <meta charset=\"UTF-8\">\n"
Out += " <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n"
if Description != "":
Out += " <meta name=\"description\" content=\"" + Description + "\">\n"
Out += " <title>" + Title + "</title>\n"
Out += " <script type=\"text/javascript\" src=\"neodym.js\"></script>\n"
Out += " <link rel=\"stylesheet\" type=\"text/css\" href=\"neodym.css\">\n"
Out += " <link rel=\"stylesheet\" type=\"text/css\" href=\"neodym-user.css\">\n"
for Name in self.mCSSFileNames:
Out += " <link rel=\"stylesheet\" type=\"text/css\" href=\"" + Name + "\">\n"
for Name in self.mJavaScriptFileNames:
Out += " <script type=\"text/javascript\" src=\"" + Name + "\"></script>\n"
Out += "</head>\n"
Out += "\n"
Out += "<body>\n"
Out += " <div id=\"nd-master\">\n"
Out += " <div id=\"nd-header\">\n"
Out += " <div id=\"nd-upper-header-container\">\n"
if Logo != "":
Out += " <div id=\"nd-logo-container\">\n"
Out += " <img id=\"nd-logo\" src=\"" + Logo + "\" alt=\"MEGAlib Logo\">\n"
Out += " </div>\n"
Out += " <div id=\"nd-title-container\">\n"
Out += " <div id=\"nd-title\">" + Title + "</div>\n"
if SubTitle != "":
Out += " <div id=\"nd-subtitle\">" + SubTitle + "</div>\n"
Out += " </div>\n"
Out += " <div id=\"nd-menubutton\" onclick='ToggleSubMenu();'>\n"
Out += " <div id=\"nd-menubutton-text\">≡</div>\n"
Out += " </div>\n"
Out += " </div>\n"
Out += " <div id=\"nd-mainmenu\">\n"
Out += " <ul id=\"nd-mainmenu-list\">\n"
for Key in Menus:
if Key == self.mMenuEntry:
Out += " <li class=\"nd-mainmenu-element nd-mainmenu-element-activated\"><a class=\"nd-mainmenu-element-link\" href=\"" + Menus[Key].mFileName + "\">" + Menus[Key].mMenuTitle + "</a></li>\n"
else:
Out += " <li class=\"nd-mainmenu-element\"><a class=\"nd-mainmenu-element-link\" href=\"" + Menus[Key].mFileName + "\">" + Menus[Key].mMenuTitle + "</a></li>\n"
Out += " </ul>\n"
Out += " </div>\n"
Out += " </div>\n"
Out += " \n"
Out += " <div id=\"nd-content\" onclick=\"DeactivateSubMenu()\">\n"
Out += "\n"
Out += "<!-- --- body start --- -->\n"
Out += "\n"
Out += self.mBody
Out += "\n"
Out += "<!-- --- body end --- -->\n"
Out += "\n"
Out += " </div>\n"
if Footer != "":
Out += " <div id=\"nd-footer\">\n"
Out += " " + Footer + "<br>\n"
Out += " Powered by <a href=\"https://github.com/zoglauer/neodym\">Neodym</a>\n"
Out += " </div>\n"
Out += " </div>\n"
Out += "</body>\n"
Out += "\n"
Out += "</html>\n"
return Out
# -----------------------------------------------------------------------------------