def enabled_resources(which, verbose=False): """Return enabled YAFOWIL resources. ``which`` is either "js" or "css". """ result = list() registry = getUtility(IRegistry) for plugin_name in get_plugin_names(): resources = factory.resources_for(plugin_name) if not resources: continue resourcedir = resources['resourcedir'] for record in resources[which]: if not registry.get(record['group']): verbose and logger.warning( "Skipping resource '%s' for group '%s'" % (record['resource'], record['group'])) continue if 'order' not in record: record['order'] = sys.maxint if record['resource'].startswith('http'): record['url'] = record['resource'] record['path'] = None else: resdirname = '++resource++%s' % plugin_name record['url'] = '%s/%s' % (resdirname, record['resource']) record['path'] = os.path.join(resourcedir, record['resource']) result.append(record) verbose and logger.info("Activate resource '%s' for group '%s'" % (record['resource'], record['group'])) return sorted(result, key=itemgetter('order'))
def __init__(self, js_skip=[], css_skip=[]): """Initialize YAFOWIL resources. This object normally gets instanciated only once at application startup. :param js_skip: ignored resource groups when aggregating JS resources. :param css_skip: ignored resource groups when aggregating CSS resources. """ all_js = list() all_css = list() for plugin_name in get_plugin_names(): resources = factory.resources_for(plugin_name) if not resources: continue resources = copy.deepcopy(resources) resource_base = self.configure_resource_directory( plugin_name, resources['resourcedir']) for js in resources['js']: if js['group'] in js_skip: continue if not self._is_remote_resource(js['resource']): js['resource'] = resource_base + '/' + js['resource'] all_js.append(js) for css in resources['css']: if css['group'] in css_skip: continue if not self._is_remote_resource(css['resource']): css['resource'] = resource_base + '/' + css['resource'] all_css.append(css) all_js = sorted(all_js, key=lambda x: x['order']) all_css = sorted(all_css, key=lambda x: x['order']) self.js_resources = [res['resource'] for res in all_js] self.css_resources = [res['resource'] for res in all_css]
def yafowil_resource_directive(_context): """Register plugin resource directories as plone resource directories to be accessible via browser URL. """ for plugin_name in get_plugin_names(): resources = factory.resources_for(plugin_name) if not resources: continue resourceDirectory(_context, plugin_name, resources['resourcedir'])
def dispatch_resource(path, environ, start_response): plugin_name = path.split('/')[0][12:] resources = factory.resources_for(plugin_name) filepath = os.path.join(resources['resourcedir'], *path.split('/')[1:]) ct = 'text/plain' for key in CTMAP: if path.endswith(key): ct = CTMAP[key] break return resource_response(filepath, environ, start_response, ct)
def _extract_resources(which): result = list() registry = getUtility(IRegistry) for plugin_name in get_plugin_names(): resources = factory.resources_for(plugin_name) if not resources: continue for record in resources[which]: if not registry.get(record['group']): logger.warning("Skipping resource '%s' for group '%s'" % ( record['resource'], record['group'])) continue if 'order' not in record: record['order'] = sys.maxint if record['resource'].startswith('http'): record['url'] = record['resource'] else: resdirname = '++resource++%s' % plugin_name record['url'] = '%s/%s' % (resdirname, record['resource']) result.append(record) logger.info("Activate resource '%s' for group '%s'" % ( record['resource'], record['group'])) return sorted(result, key=itemgetter('order'))
def enabled_resources(which, verbose=True): """Return enabled YAFOWIL resources. ``which`` is either "js" or "css". """ result = list() registry = getUtility(IRegistry) for plugin_name in get_plugin_names(): resources = factory.resources_for(plugin_name) if not resources: continue resourcedir = resources['resourcedir'] for record in resources[which]: if not registry.get(record['group']): verbose and logger.warning( "Skipping resource '%s' for group '%s'" % ( record['resource'], record['group'] ) ) continue if 'order' not in record: record['order'] = sys.maxint if record['resource'].startswith('http'): record['url'] = record['resource'] record['path'] = None else: resdirname = '++resource++%s' % plugin_name record['url'] = '%s/%s' % (resdirname, record['resource']) record['path'] = os.path.join(resourcedir, record['resource']) result.append(record) verbose and logger.info( "Activate resource '%s' for group '%s' order: '%s'" % ( record['resource'], record['group'], record['order'] ) ) return sorted(result, key=itemgetter('order'))
def yafowil_resource_directive(_context): for plugin_name in get_plugin_names(): resources = factory.resources_for(plugin_name) if not resources: continue resourceDirectory(_context, plugin_name, resources['resourcedir'])