def renderHeader(self, title, docType, for_print=0): """ Returns an XHTML string for the header of this page. """ # Check what iDevices and special features the node has hasGallery = helper.hasGalleryIdevice(self.node) hasEffects = helper.hasFX(self.node) hasHighlighter = helper.hasSH(self.node) hasJSGames = helper.hasGames(self.node) hasWikipedia = helper.hasWikipediaIdevice(self.node) hasMediaelement = helper.nodeHasMediaelement(self.node) # Get package language lang = G.application.config.locale if self.node.package.dublinCore.language != '': lang = self.node.package.dublinCore.language # Write page DocType and HTML start tag if docType == 'HTML5': html = u'<!DOCTYPE html>' + lineBreak html += u'<html lang="%s">%s' % (lang, lineBreak) else: html = u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + lineBreak html += u'<html lang="%s" xml:lang="%s" xmlns="http://www.w3.org/1999/xhtml">%s' % ( lang, lang, lineBreak) # HTML head start tag html += u'<head>' + lineBreak # Page charset html += u'<meta http-equiv="content-type" content="text/html; charset=utf-8" />' + lineBreak # Page title html += u'<title>%s</title>%s' % (title, lineBreak) # Favicon html += u'<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />' + lineBreak # If the page is not in HTML5, we need to specify the language here if docType != 'HTML5' and self.node.package.dublinCore.language != '': html += u'<meta http-equiv="content-language" content="%s" />%s' % ( lang, lineBreak) # Render the author META tag if self.node.package.author != "": html += u'<meta name="author" content="%s" />%s' % ( self.node.package.author, lineBreak) # Render the license META tag(s) html += common.getLicenseMetadata(self.node.package.license) # Render the generator META tag html += u'<meta name="generator" content="eXeLearning %s - exelearning.net" />%s' % ( release, lineBreak) # Render the description META tag if self.node.package.description != "": desc = self.node.package.description # If the description has any double quotes, we have to escape them desc = desc.replace('"', '"') html += u'<meta name="description" content="%s" />%s' % (desc, lineBreak) # Add CSS files html += u'<link rel="stylesheet" type="text/css" href="base.css" />' + lineBreak if hasWikipedia: html += u'<link rel="stylesheet" type="text/css" href="exe_wikipedia.css" />' + lineBreak if hasGallery: html += u'<link rel="stylesheet" type="text/css" href="exe_lightbox.css" />' + lineBreak if hasEffects: html += u'<link rel="stylesheet" type="text/css" href="exe_effects.css" />' + lineBreak if hasHighlighter: html += u'<link rel="stylesheet" type="text/css" href="exe_highlighter.css" />' + lineBreak if hasJSGames: html += u'<link rel="stylesheet" type="text/css" href="exe_games.css" />' + lineBreak html += u'<link rel="stylesheet" type="text/css" href="content.css" />' + lineBreak # Add HTML compatibility script to IE 9 if docType == "HTML5" or hasMediaelement: html += u'<!--[if lt IE 9]><script type="text/javascript" src="exe_html5.js"></script><![endif]-->' + lineBreak # Get the style style = G.application.config.styleStore.getStyle( self.node.package.style) # Add JS files if style.hasValidConfig: if style.get_jquery() == True: html += u'<script type="text/javascript" src="exe_jquery.js"></script>' + lineBreak else: html += u'<script type="text/javascript" src="%s"></script>%s' % ( style.get_jquery(), lineBreak) else: html += u'<script type="text/javascript" src="exe_jquery.js"></script>' + lineBreak if hasGallery: html += u'<script type="text/javascript" src="exe_lightbox.js"></script>' + lineBreak if hasEffects: html += u'<script type="text/javascript" src="exe_effects.js"></script>' + lineBreak if hasHighlighter: html += u'<script type="text/javascript" src="exe_highlighter.js"></script>' + lineBreak html += common.getJavaScriptStrings() + lineBreak if hasJSGames: # The games require additional strings html += common.getGamesJavaScriptStrings() + lineBreak html += u'<script type="text/javascript" src="exe_games.js"></script>' + lineBreak html += u'<script type="text/javascript" src="common.js"></script>' + lineBreak if common.hasMagnifier(self.node): html += u'<script type="text/javascript" src="mojomagnify.js"></script>' + lineBreak # include extra print-script for onload bit if for_print: html += u'<script type="text/javascript">' + lineBreak html += u'var interval;' + lineBreak html += u'function checkClose() {' + lineBreak html += u' if (document.hasFocus()) {' + lineBreak html += u' alert("' + _( "You can close this window") + u'");' + lineBreak html += u' clearInterval(interval);' + lineBreak #html += u' window.close();' + lineBreak html += u' }' + lineBreak html += u'}' + lineBreak html += u'function print_page() {' + lineBreak html += u' if(typeof document.hasFocus === "undefined") {' + lineBreak html += u' document.hasFocus = function () {' + lineBreak html += u' return document.visibilityState == "visible";' + lineBreak html += u' }' + lineBreak html += u' }' + lineBreak html += u' window.print();' + lineBreak html += u' interval = setInterval(checkClose, 300);' + lineBreak html += u'}' + lineBreak html += u'</script>' + lineBreak if style.hasValidConfig: html += style.get_extra_head() # Close head tag html += u'</head>' + lineBreak return html
def renderHeader(self, title, docType, for_print = 0): """ Returns an XHTML string for the header of this page. """ # Check what iDevices and special features the node has hasGallery = helper.hasGalleryIdevice(self.node) hasEffects = helper.hasFX(self.node) hasHighlighter = helper.hasSH(self.node) hasJSGames = helper.hasGames(self.node) hasWikipedia = helper.hasWikipediaIdevice(self.node) hasMediaelement = helper.nodeHasMediaelement(self.node) hasABCMusic = helper.nodeHasABCMusic(self.node) listIdevicesFiles = helper.addListIdevicesFiles(self.node) # Get package language lang = G.application.config.locale if self.node.package.dublinCore.language != '': lang = self.node.package.dublinCore.language # Write page DocType and HTML start tag if docType == 'HTML5': html = u'<!DOCTYPE html>' + lineBreak html += u'<html lang="%s">%s' % (lang, lineBreak) else: html = u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + lineBreak html += u'<html lang="%s" xml:lang="%s" xmlns="http://www.w3.org/1999/xhtml">%s' % (lang, lang, lineBreak) # HTML head start tag html += u'<head>' + lineBreak # Page charset html += u'<meta http-equiv="content-type" content="text/html; charset=utf-8" />' + lineBreak # Page title html += u'<title>%s</title>%s' % (title, lineBreak) # Favicon html += u'<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />' + lineBreak # If the page is not in HTML5, we need to specify the language here if docType != 'HTML5' and self.node.package.dublinCore.language != '': html += u'<meta http-equiv="content-language" content="%s" />%s' % (lang, lineBreak) # Render the author META tag if self.node.package.author != "": html += u'<meta name="author" content="%s" />%s' % (escape(self.node.package.author, True), lineBreak) # Render the license META tag(s) html += common.getLicenseMetadata(self.node.package.license) # Render the generator META tag html += u'<meta name="generator" content="eXeLearning %s - exelearning.net" />%s' % (release, lineBreak) # Render the description META tag if self.node.package.description != "": desc = self.node.package.description # If the description has any double quotes, we have to escape them desc = desc.replace('"', '"') html += u'<meta name="description" content="%s" />%s' % (desc, lineBreak) # Add CSS files html += u'<link rel="stylesheet" type="text/css" href="base.css" />' + lineBreak if hasWikipedia: html += u'<link rel="stylesheet" type="text/css" href="exe_wikipedia.css" />' + lineBreak if hasGallery: html += u'<link rel="stylesheet" type="text/css" href="exe_lightbox.css" />' + lineBreak if hasEffects: html += u'<link rel="stylesheet" type="text/css" href="exe_effects.css" />' + lineBreak if hasHighlighter: html += u'<link rel="stylesheet" type="text/css" href="exe_highlighter.css" />' + lineBreak if hasJSGames: html += u'<link rel="stylesheet" type="text/css" href="exe_games.css" />' + lineBreak if hasABCMusic: html += u'<link rel="stylesheet" type="text/css" href="exe_abcmusic.css" />' + lineBreak html += u'<link rel="stylesheet" type="text/css" href="content.css" />' + lineBreak # Add HTML compatibility script to IE 9 if docType == "HTML5" or hasMediaelement: html += u'<!--[if lt IE 9]><script type="text/javascript" src="exe_html5.js"></script><![endif]-->' + lineBreak # Get the style style = G.application.config.styleStore.getStyle(self.node.package.style) # Add JS files if style.hasValidConfig: if style.get_jquery() == True: html += u'<script type="text/javascript" src="exe_jquery.js"></script>' + lineBreak else: html += u'<script type="text/javascript" src="%s"></script>%s' % (style.get_jquery(), lineBreak) else: html += u'<script type="text/javascript" src="exe_jquery.js"></script>' + lineBreak if hasGallery: html += u'<script type="text/javascript" src="exe_lightbox.js"></script>' + lineBreak if hasEffects: html += u'<script type="text/javascript" src="exe_effects.js"></script>' + lineBreak if hasHighlighter: html += u'<script type="text/javascript" src="exe_highlighter.js"></script>' + lineBreak html += u'<script type="text/javascript" src="common_i18n.js"></script>' + lineBreak if hasJSGames: html += u'<script type="text/javascript" src="exe_games.js"></script>' + lineBreak if hasABCMusic: html += u'<script type="text/javascript" src="exe_abcmusic.js"></script>' + lineBreak html += u'<script type="text/javascript" src="common.js"></script>' + lineBreak for ideviceFile in set(listIdevicesFiles): html += ideviceFile if common.hasMagnifier(self.node): html += u'<script type="text/javascript" src="mojomagnify.js"></script>' + lineBreak # include extra print-script for onload bit if for_print: html += u'<script type="text/javascript">' + lineBreak html += u'var interval;' + lineBreak html += u'function checkClose() {' + lineBreak html += u' if (document.hasFocus()) {' + lineBreak html += u' alert("' + _("You can close this window") + u'");' + lineBreak html += u' clearInterval(interval);' + lineBreak #html += u' window.close();' + lineBreak html += u' }' + lineBreak html += u'}' + lineBreak html += u'function print_page() {' + lineBreak html += u' if(typeof document.hasFocus === "undefined") {' + lineBreak html += u' document.hasFocus = function () {' + lineBreak html += u' return document.visibilityState == "visible";' + lineBreak html += u' }' + lineBreak html += u' }' + lineBreak html += u' window.print();' + lineBreak html += u' interval = setInterval(checkClose, 300);' + lineBreak html += u'}' + lineBreak html += u'</script>' + lineBreak if style.hasValidConfig: html += style.get_extra_head() html += common.getExtraHeadContent(self.node.package) # Close head tag html += u'</head>' + lineBreak return html