def execute(self, item, context): if isPage: from porcupine.core.session import SessionManager from porcupine.filters.output import JSMerge script_name = context.request.serverVariables["SCRIPT_NAME"] cookies_required = SessionManager._sm.requires_cookies no_cookies_url = '%s/{%s}%s%s' % ( script_name, context.session.sessionid, context.request.serverVariables['PATH_INFO'], context.request.get_query_string()) # get revision of quix core files quix_core_reg = ( pubdirs.dirs['__quix'].get_registration('core.js')) quix_core_files = ( quix_core_reg.get_filter_by_type(JSMerge)[1]['files']. split(',')) core_revision = JSMerge.get_revision(quix_core_files) vars = (bgcolor, title, script_name, script_name, core_revision, str(cookies_required).lower(), no_cookies_url) context.response.content_type = 'text/html' context.response.write((''' <!DOCTYPE html> <html style="background-color:%s"> <head> <title>%s</title> <script type="text/javascript" defer="defer" src="%s/__quix/lib/extensions.js"> </script> <script type="text/javascript" defer="defer" src="%s/__quix/core.js?r=%d"> </script> <script type="text/javascript"> (function() { document.cookiesEnabled = false; document.cookiesRequired = %s; var session_id = ( new RegExp("/\(?:{|%%7b)(.*?)\(?:}|%%7d)", "i")) .exec(document.location.href); if (session_id) session_id = session_id[1]; if (typeof document.cookie == "string" && document.cookie.length != 0) document.cookiesEnabled = true; if (!session_id && !document.cookiesEnabled) document.location.href = '%s'; })(); </script> </head> <body onload="QuiX.__init__('quix')"> <textarea id="quix" style="display:none">''' % vars).strip()) WebMethodDescriptor.execute(self, item, context) if isPage: context.response.write('</textarea></body></html>')
def get_revision(pubdir, path): """ Returns the most recent modification time of the files listed in a JSMerge post-processing filter of a certain registration. @param str pubdir: The name of the public directory @param str path: The registration's path @rtype int """ from porcupine.config import pubdirs from porcupine.filters.output import JSMerge registration = (pubdirs.dirs[pubdir].get_registration(path)) s_files = registration.get_filter_by_type(JSMerge)[1]['files'] if ',' in s_files: files = ([f.strip() for f in s_files.split(',')]) else: files = get_rto_by_name(s_files)() return JSMerge.get_revision(files)