diff --git a/ckan/html_resources/__init__.py b/ckan/html_resources/__init__.py index cb3abf7f65a..97ae7b676b9 100644 --- a/ckan/html_resources/__init__.py +++ b/ckan/html_resources/__init__.py @@ -121,7 +121,7 @@ def __init__(self, library, relpath, if argument is None: continue elif isinstance(argument, basestring): - mode_resource = Resource(library, argument, bottom=bottom, renderer=renderer) + mode_resource = Resource(library, argument, bottom=bottom, renderer=renderer, dont_bundle=dont_bundle) else: # The dependencies of a mode resource should be the same # or a subset of the dependencies this mode replaces. @@ -172,7 +172,7 @@ def min_path(path): if f.endswith('.css'): return path[:-4] + '.min.css' - def minify(filename, min_function): + def minify(filename, resource_path, min_function): ''' Minify file path using min_function. ''' # if the minified file was modified after the source file we can # assume that it is up-to-date @@ -187,10 +187,10 @@ def minify(filename, min_function): f.close() print 'minified %s' % path - def create_resource(filename, path, filepath): + def create_resource(path, lib_name): ''' create the fanstatic Resource ''' # resource_name is name of the file without the .js/.css - resource_name = '.'.join(filename.split('.')[:-1]) + rel_path, filename = os.path.split(path) kw = {} path_min = min_path(os.path.join(resource_path, filename)) if os.path.exists(path_min): @@ -200,12 +200,12 @@ def create_resource(filename, path, filepath): renderer = core.render_js if filename.endswith('.css'): renderer = core.render_css - if resource_name in depends: + if path in depends: dependencies = [] - for dependency in depends[resource_name]: - dependencies.append(getattr(module, dependency)) + for dependency in depends[path]: + dependencies.append(getattr(module, '%s/%s' % (lib_name, dependency))) kw['depends'] = dependencies - if resource_name in dont_bundle: + if path in dont_bundle: kw['dont_bundle'] = True # FIXME needs config.ini options enabled if False: @@ -215,11 +215,12 @@ def create_resource(filename, path, filepath): condition=condition, renderer=renderer, other_browsers=other_browsers) - + filename = os.path.join(rel_path, filename) resource = Resource(library, filename, **kw) # add the resource to this module - fanstatic_name = '%s/%s' % (filepath, resource_name) + fanstatic_name = '%s/%s' % (lib_name, filename) setattr(module, fanstatic_name, resource) + return resource order = [] dont_bundle = [] @@ -248,27 +249,35 @@ def create_resource(filename, path, filepath): module = sys.modules[__name__] # process each .js/.css file found + file_list = [] for dirname, dirnames, filenames in os.walk(resource_path): - for x in reversed(order): - if x in filenames: - filenames.remove(x) - filenames.insert(0, x) for f in filenames: + rel_path = dirname[len(path):] + if rel_path: + rel_path = rel_path[1:] + filepath = os.path.join(rel_path, f) if f.endswith('.js') and not f.endswith('.min.js'): - minify(f, jsmin) - create_resource(f, resource_path, path) + minify(f, dirname, jsmin) + file_list.append(filepath) if f.endswith('.css') and not f.endswith('.min.css'): - minify(f, cssmin) - create_resource(f, resource_path, path) + minify(f, dirname, cssmin) + file_list.append(filepath) + + for x in reversed(order): + if x in file_list: + file_list.remove(x) + file_list.insert(0, x) + for f in file_list: + create_resource(f, name) # add groups for group_name in groups: members = [] for member in groups[group_name]: - fanstatic_name = '%s/%s' % (path, member) + fanstatic_name = '%s/%s' % (name, member) members.append(getattr(module, fanstatic_name)) group = Group(members) - fanstatic_name = '%s/%s' % (path, group_name) + fanstatic_name = '%s/%s' % (name, group_name) setattr(module, fanstatic_name, group) # finally add the library to this module setattr(module, name, library) @@ -276,10 +285,13 @@ def create_resource(filename, path, filepath): registry = get_library_registry() registry.add(library) +base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'public', 'base', 'javascript')) +create_library('base', base_path) + -# create our libraries here from any subdirectories -for dirname, dirnames, filenames in os.walk(os.path.dirname(__file__)): - if dirname == os.path.dirname(__file__): - continue - lib_name = os.path.basename(dirname) - create_library(lib_name, lib_name) +### create our libraries here from any subdirectories +##for dirname, dirnames, filenames in os.walk(os.path.dirname(__file__)): +## if dirname == os.path.dirname(__file__): +## continue +## lib_name = os.path.basename(dirname) +## create_library(lib_name, lib_name)