Пример #1
0
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'))
Пример #2
0
    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]
Пример #3
0
    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]
Пример #4
0
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'])
Пример #5
0
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)
Пример #6
0
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'))
Пример #7
0
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'))
Пример #8
0
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'])