Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

214 wiersze
6.2 KiB

  1. #: HTML Template of index.cgi
  2. index_template = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4. <head id="head">
  5. <!-- Web Notes Framework : www.webnotesframework.org -->
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <meta name="robots" content="index, follow" />
  8. <meta name="keywords" content="%(keywords)s" />
  9. <meta name="description" content="%(site_description)s" />
  10. <meta name="generator" content="Web Notes Framework Version v170 - Open Source Web Application Framework" />
  11. <title>%(title)s</title>
  12. <link type="text/css" rel="stylesheet" href="css/jquery-ui.css">
  13. <link type="text/css" rel="stylesheet" href="css/default.css">
  14. <link rel="Shortcut Icon" href="/favicon.ico">
  15. <script language="JavaScript" src="js/jquery/jquery.min.js"></script>
  16. <script language="JavaScript" src="js/jquery/jquery-ui.min.js"></script>
  17. <script type="text/javascript" src="js/tiny_mce_33/jquery.tinymce.js"></script>
  18. <script language="JavaScript" src="js/wnf.compressed.js"></script>
  19. %(import_form)s
  20. <script language="JavaScript">var _startup_data = %(startup_data)s;</script>
  21. <!--[if IE]><script language="javascript" type="text/javascript" src="js/jquery/excanvas.min.js"></script><![endif]-->
  22. %(add_in_head)s
  23. <script type="text/javascript">
  24. window.dhtmlHistory.create({ debugMode: false });
  25. </script>
  26. </head>
  27. <body>
  28. <div id="dialog_back"></div>
  29. <div id="startup_div" style="padding: 8px; font-size: 14px;"></div>
  30. <!-- Main Starts -->
  31. <div id="body_div">
  32. <!--static (no script) content-->
  33. <div class="no_script">
  34. %(content)s
  35. </div>
  36. </div>
  37. %(add_in_body)s
  38. </body>
  39. </html>
  40. '''
  41. redirect_template = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  42. <html>
  43. <head>
  44. <title>%s</title>
  45. <meta http-equiv="REFRESH" content="0; url=%s"></HEAD>
  46. <BODY style="font-family: Arial; padding: 8px; font-size: 14px; margin: 0px;">
  47. Redirecting...
  48. </BODY>
  49. </HTML>'''
  50. page_properties = {
  51. 'add_in_head':'',
  52. 'add_in_body':'',
  53. 'keywords':'',
  54. 'site_description':'',
  55. 'title':'',
  56. 'content':'',
  57. 'startup_data':'{}',
  58. 'import_form':'<script language="JavaScript" src="js/form.compressed.js"></script>'
  59. }
  60. import webnotes
  61. # remove 'id' attributes so they don't conflict
  62. # ---------------------------------------------
  63. def replace_id(match):
  64. #webnotes.msgprint(match.group('name'))
  65. return ''
  66. def scrub_ids(content):
  67. import re
  68. p = re.compile('id=\"(?P<name> [^\"]*)\"', re.VERBOSE)
  69. content = p.sub(replace_id, content)
  70. p = re.compile('id=\'(?P<name> [^\']*)\'', re.VERBOSE)
  71. content = p.sub(replace_id, content)
  72. return content
  73. def get_page_content(page):
  74. """
  75. Gets the HTML content from `static_content` or `content` property of a `Page`
  76. and loads it in global `page_properties`
  77. """
  78. from webnotes.model.code import get_code
  79. from webnotes.model.doc import Document
  80. global page_properties
  81. if not page: return
  82. if '/' in page: page = page.split('/')[0]
  83. if page=='Form': return
  84. try:
  85. doc = Document('Page', page)
  86. load_page_metatags(doc)
  87. template = '%(content)s'
  88. # content
  89. if doc.template:
  90. template = get_code(webnotes.conn.get_value('Page Template', doc.template, 'module'), 'Page Template', doc.template, 'html', fieldname='template')
  91. page_properties['content'] = get_code(doc.module, 'page', doc.name, 'html', fieldname='content')
  92. # dynamic (scripted) content
  93. if page_properties['content'] and page_properties['content'].startswith('#!python'):
  94. page_properties.update(webnotes.model.code.execute(page_properties['content']))
  95. page_properties['content'] = scrub_ids(template % {'content':page_properties['content']})
  96. except:
  97. pass
  98. def load_page_metatags(doc):
  99. global page_properties
  100. try:
  101. import startup
  102. except:
  103. startup = ''
  104. # page meta-tags
  105. page_properties['title'] = doc.page_title or doc.name
  106. page_properties['keywords'] = doc.keywords or webnotes.conn.get_value('Control Panel',None,'keywords') or ''
  107. page_properties['site_description'] = doc.site_description or webnotes.conn.get_value('Control Panel',None,'site_description') or ''
  108. page_properties['add_in_head'] = getattr(startup, 'add_in_head', '')
  109. page_properties['add_in_body'] = getattr(startup, 'add_in_body', '')
  110. # find the page to load as static
  111. # -------------------------------
  112. def load_properties():
  113. import webnotes.widgets.page
  114. import urllib
  115. page_url = webnotes.form_dict.get('_escaped_fragment_', webnotes.form_dict.get('page', ''))
  116. if page_url and page_url.lower().startswith('page/'):
  117. page_url = page_url[5:]
  118. if page_url:
  119. get_page_content(urllib.unquote(page_url))
  120. else:
  121. get_page_content(webnotes.user.get_home_page())
  122. # generate the page
  123. # -----------------
  124. def load_default_properties():
  125. if not page_properites['keywords']:
  126. page_properites['keywords'] = webnotes.conn.get_value('Control Panel',None,'keywords') or ''
  127. if not page_properites['site_description']:
  128. page_properites['site_description'] = webnotes.conn.get_value('Control Panel',None,'site_description') or ''
  129. # generate the page
  130. # -----------------
  131. def get():
  132. """
  133. returns the full rendered index.cgi
  134. Gets `keywords` and `site_description` from the `Control Panel`
  135. """
  136. import webnotes
  137. no_startup = webnotes.form.getvalue('no_startup') or None
  138. global index_template, redirect_template
  139. import webnotes.session_cache
  140. try:
  141. import json
  142. except: # python 2.4
  143. import simplejson as json
  144. page = webnotes.form_dict.get('page', '')
  145. # sid in public display
  146. # ---------------------
  147. if webnotes.form_dict.get('sid'):
  148. return redirect_template % ('Redirecting...', ('index.cgi' + (page and ('?page='+page) or '')))
  149. if '%(content)s' in index_template:
  150. load_properties()
  151. # load the session data
  152. # ---------------------
  153. try:
  154. sd = webnotes.session_cache.get()
  155. except:
  156. import webnotes.utils
  157. sd = {'exc':webnotes.utils.getTraceback()}
  158. # add debug messages
  159. sd['server_messages'] = '\n--------------\n'.join(webnotes.message_log)
  160. page_properties['startup_data'] = no_startup and '{}' or json.dumps(sd)
  161. # no form api required for guests
  162. if webnotes.session['user']=='Guest':
  163. page_properties['import_form'] = ''
  164. index_template = index_template % page_properties
  165. return index_template