diff --git a/.gitignore b/.gitignore index 39267c75f22..ea6f07afd1b 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ tmp/* solr_runtime/* fl_notes.txt *.ini +!ckan/migration/alembic.ini .noseids *~ .idea diff --git a/.travis.yml b/.travis.yml index 0531a077fef..376350d8472 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ flake8-steps: &flake8-steps before_script: - flake8 --version # stop the build if there are Python syntax errors or undefined names - - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude ./ckan/include/rjsmin.py + - flake8 . --count --select=E9,F63,F72,F82 --show-source --statistics --exclude ./ckan/include/rjsmin.py # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics script: diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 08988dbf37d..2b7c5f3a528 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -79,6 +79,39 @@ Removals and deprecations: dataset blueprint in CKAN>=2.9, and, in the same time, it's still working for Pylons package controller in CKAN<2.9 +v.2.8.3 2019-07-03 +================== + +General notes: + * Note: This version does not requires a requirements upgrade on source installations + * Note: This version does not requires a database upgrade + * Note: This version does not require a Solr schema upgrade + +Fixes: + +* Fix `include_total` in `datastore_search` (`#4446 `_) +* Fix problem with reindex-fast (`#4352 `_) +* Fix `ValueError` in `url_validator` (`#4629 `_) +* Strip local path when uploading file in IE (`#4608 `_) +* Increase size of h1 headings to 1.8em (`#4665 `_) +* Fix broken div nesting in the `user/read_base.html` (`#4672 `_) +* `package_search` parameter `fl` accepts list-like values (`#4464 `_) +* Use `chained_auth_function` with core auth functions (`#4491 `_) +* Allow translation of custom licenses (`#4594 `_) +* Fix delete button links (`#4598 `_) +* Fix hardcoded root paths (`#4662 `_) +* Fix reCaptcha (`#4732 `_) +* Fix incremented follower-counter (`#4767 `_) +* Fix breadcrumb on /datasets (`#4405 `_) +* Fix `root_path` when using mod_wsgi (`#4452 `_) +* Correctly insert root_path for urls generated with _external flag (`#4722 `_) +* Make reorder resources button translatable (`#4838 `_) +* Fix `feeds` urls generation (`#4854 `_) +* More robust auth functions for `resource_view_show` (`#4827 `_) +* Allow to customize the DataProxy URL (`#4874 `_) +* Allow custom CKAN callback URL for the DataPusher (`#4878 `_) +* Add `psycopg>=2.8` support (`#4841 `_) + v.2.8.2 2018-12-12 ================== @@ -252,6 +285,28 @@ Changes and deprecations: to specify this argument explicitly, as in future it'll become required. * The ``ckan.recaptcha.version`` config option is now removed, since v2 is the only valid version now (#4061) +v.2.7.6 2019-07-03 +================== + +General notes: + * Note: This version does not requires a requirements upgrade on source installations + * Note: This version does not requires a database upgrade + * Note: This version does not require a Solr schema upgrade + +Fixes: + + * Fix problem with reindex-fast (`#4352 `_) + * Fix `include_total` in `datastore_search` (`#4446 `_) + * Fix `ValueError` in `url_validator` (`#4629 `_) + * Strip local path when uploading file in IE (`#4608 `_) + * Increase size of h1 headings to 1.8em (`#4665 `_) + * Fix broken div nesting in the `user/read_base.html` (`#4672 `_) + * Use `get_action` to call activity actions (`#4684 `_) + * Make reorder resources button translatable (`#4838 `_) + * More robust auth functions for `resource_view_show` (`#4827 `_) + * Allow to customize the DataProxy URL (`#4874 `_) + * Allow custom CKAN callback URL for the DataPusher (`#4878 `_) + v2.7.5 2018-12-12 ================= @@ -286,7 +341,7 @@ General notes: This is due to a bug in the psycopg2 version pinned to the release. To solve it, upgrade psycopg2 with the following command:: - pip install --upgrade psycopg2==2.7.3.2 + pip install --upgrade psycopg2==2.8.2 * This release does not require a Solr schema upgrade, but if you are having the issues described in #3863 (datasets wrongly indexed in multilingual setups), @@ -376,6 +431,7 @@ Major changes: * Common requests code for Flask and Pylons (#3212) * Generate complete datastore dump files (#3344) * A new system for asynchronous background jobs (#3165) + * Chaining of action functions (#3494) Minor changes: * Renamed example theme plugin (#3576) @@ -450,6 +506,24 @@ Deprecations: jobs (http://docs.ckan.org/en/latest/maintaining/background-tasks.html). Extensions can still of course use Celery but they will need to handle the management themselves. +v.2.6.8 2019-07-03 +================== + +General notes: + * Note: This version does not requires a requirements upgrade on source installations + * Note: This version does not requires a database upgrade + * Note: This version does not require a Solr schema upgrade + +Fixes: + + * Fix broken div nesting in the `user/read_base.html` (`#4672 `_) + * Strip local path when uploading file in IE (`#4608 `_) + * Increase size of h1 headings to 1.8em (`#4665 `_) + * Fix `ValueError` in `url_validator` (`#4629 `_) + * More robust auth functions for `resource_view_show` (`#4827 `_) + * Allow to customize the DataProxy URL (`#4874 `_) + * Allow custom CKAN callback URL for the DataPusher (`#4878 `_) + v2.6.7 2018-12-12 ================= diff --git a/Dockerfile b/Dockerfile index 1ee8ba66211..d19856e20df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,10 @@ RUN apt-get -q -y update \ python-pip \ python-virtualenv \ python-wheel \ + python3-dev \ + python3-pip \ + python3-virtualenv \ + python3-wheel \ libpq-dev \ libxml2-dev \ libxslt-dev \ diff --git a/LICENSE.txt b/LICENSE.txt index 30b14db6ac5..5385316e7c1 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -2,7 +2,7 @@ License +++++++ CKAN - Data Catalogue Software -Copyright (c) 2006-2018 Open Knowledge International and contributors +Copyright (c) 2006-2018 Open Knowledge Foundation and contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/README.rst b/README.rst index 3ab9ae50589..a0f51d397fe 100644 --- a/README.rst +++ b/README.rst @@ -94,7 +94,7 @@ ckan-dev mailing list or on Gitter. Copying and License ------------------- -This material is copyright (c) 2006-2018 Open Knowledge International and contributors. +This material is copyright (c) 2006-2018 Open Knowledge Foundation and contributors. It is open and licensed under the GNU Affero General Public License (AGPL) v3.0 whose full text may be found at: diff --git a/ckan/authz.py b/ckan/authz.py index 5ac81f0229c..04a63251a86 100644 --- a/ckan/authz.py +++ b/ckan/authz.py @@ -206,7 +206,8 @@ def is_authorized(action, context, data_dict=None): return { 'success': False, 'msg': 'Action {0} requires an authenticated user'.format( - action) + (auth_function if not isinstance(auth_function, functools.partial) + else auth_function.func).__name__) } return auth_function(context, data_dict) diff --git a/ckan/cli/asset.py b/ckan/cli/asset.py new file mode 100644 index 00000000000..e10136de8db --- /dev/null +++ b/ckan/cli/asset.py @@ -0,0 +1,46 @@ +# encoding: utf-8 + +import logging + +import click +from webassets import script +from webassets.exceptions import BundleError + +from ckan.lib import webassets_tools +from ckan.cli import error_shout + +log = logging.getLogger(__name__) + + +@click.group(name=u'asset', short_help=u'WebAssets commands') +def asset(): + pass + + +@asset.command(u'build', short_help=u'Builds all bundles.') +def build(): + u'''Builds bundles, regardless of whether they are changed or not.''' + script.main(['build'], webassets_tools.env) + click.secho(u'Compile assets: SUCCESS', fg=u'green', bold=True) + + +@asset.command(u'watch', short_help=u'Watch changes in source files.') +def watch(): + u'''Start a daemon which monitors source files, and rebuilds bundles. + + This can be useful during development, if building is not + instantaneous, and you are losing valuable time waiting for the + build to finish while trying to access your site. + + ''' + script.main(['watch'], webassets_tools.env) + + +@asset.command(u'clean', short_help=u'Clear cache.') +def clean(): + u'''Will clear out the cache, which after a while can grow quite large.''' + try: + script.main(['clean'], webassets_tools.env) + except BundleError as e: + return error_shout(e) + click.secho(u'Clear cache: SUCCESS', fg=u'green', bold=True) diff --git a/ckan/cli/cli.py b/ckan/cli/cli.py index 8f608655de0..f3989d76938 100644 --- a/ckan/cli/cli.py +++ b/ckan/cli/cli.py @@ -5,8 +5,13 @@ import click from ckan.cli import config_tool from ckan.cli import ( + datapusher, click_config_option, db, load_config, search_index, server, - translation, user, + asset, + datastore, + translation, + dataset, + plugin_info, ) from ckan.config.middleware import make_app @@ -34,6 +39,10 @@ def ckan(ctx, config, *args, **kwargs): ckan.add_command(server.run) ckan.add_command(seed.seed) ckan.add_command(db.db) +ckan.add_command(datapusher.datapusher) ckan.add_command(search_index.search_index) +ckan.add_command(asset.asset) +ckan.add_command(datastore.datastore) ckan.add_command(translation.translation) -ckan.add_command(user.user) +ckan.add_command(dataset.dataset) +ckan.add_command(plugin_info.plugin_info) diff --git a/ckan/cli/datapusher.py b/ckan/cli/datapusher.py new file mode 100644 index 00000000000..65d02e79e23 --- /dev/null +++ b/ckan/cli/datapusher.py @@ -0,0 +1,101 @@ +# encoding: utf-8 + +from __future__ import print_function + +import logging + +import click + +import ckan.model as model +import ckan.plugins.toolkit as tk +import ckanext.datastore.backend as datastore_backend +from ckan.cli import error_shout + +log = logging.getLogger(__name__) + +question = ( + u"Data in any datastore resource that isn't in their source files " + u"(e.g. data added using the datastore API) will be permanently " + u"lost. Are you sure you want to proceed?" +) +requires_confirmation = click.option( + u'--yes', u'-y', is_flag=True, help=u'Always answer yes to questions' +) + + +def confirm(yes): + if yes: + return + click.confirm(question, abort=True) + + +@click.group() +def datapusher(): + u'''Perform commands in the datapusher. + ''' + + +@datapusher.command() +@requires_confirmation +def resubmit(yes): + u'''Resubmit udated datastore resources. + ''' + confirm(yes) + + resource_ids = datastore_backend.get_all_resources_ids_in_datastore() + _submit(resource_ids) + + +@datapusher.command() +@click.argument(u'package', required=False) +@requires_confirmation +def submit(package, yes): + u'''Submits resources from package. + + If no package ID/name specified, submits all resources from all + packages. + ''' + confirm(yes) + + if not package: + ids = tk.get_action(u'package_list')({ + u'model': model, + u'ignore_auth': True + }, {}) + else: + ids = [package] + + for id in ids: + package_show = tk.get_action(u'package_show') + try: + pkg = package_show({ + u'model': model, + u'ignore_auth': True + }, {u'id': id}) + except Exception as e: + error_shout(e) + error_shout(u"Package '{}' was not found".format(package)) + raise click.Abort() + if not pkg[u'resources']: + continue + resource_ids = [r[u'id'] for r in pkg[u'resources']] + _submit(resource_ids) + + +def _submit(resources): + click.echo(u'Submitting {} datastore resources'.format(len(resources))) + user = tk.get_action(u'get_site_user')({ + u'model': model, + u'ignore_auth': True + }, {}) + datapusher_submit = tk.get_action(u'datapusher_submit') + for id in resources: + click.echo(u'Submitting {}...'.format(id), nl=False) + data_dict = { + u'resource_id': id, + u'ignore_hash': True, + } + if datapusher_submit({u'user': user[u'name']}, data_dict): + click.echo(u'OK') + else: + click.echo(u'Fail') diff --git a/ckan/cli/dataset.py b/ckan/cli/dataset.py new file mode 100644 index 00000000000..f62056a47e0 --- /dev/null +++ b/ckan/cli/dataset.py @@ -0,0 +1,87 @@ +# encoding: utf-8 + +import logging +import pprint + +import click +from six import text_type + +import ckan.logic as logic +import ckan.model as model + +log = logging.getLogger(__name__) + + +@click.group() +def dataset(): + u'''Manage datasets + ''' + + +@dataset.command() +@click.argument(u'package') +def show(package): + u'''Shows dataset properties. + ''' + dataset = _get_dataset(package) + click.echo(pprint.pformat(dataset.as_dict())) + + +@dataset.command() +def list(): + u'''Lists datasets. + ''' + click.echo(u'Datasets:') + datasets = model.Session.query(model.Package) + click.echo(u'count = %i' % datasets.count()) + for dataset in datasets: + state = ( + u'(%s)' % dataset.state + ) if dataset.state != u'active' else u'' + + click.echo( + u'%s %s %s' % + (click.style(dataset.id, bold=True), dataset.name, state) + ) + + +@dataset.command() +@click.argument(u'package') +def delete(package): + u'''Changes dataset state to 'deleted'. + ''' + dataset = _get_dataset(package) + old_state = dataset.state + + model.repo.new_revision() + dataset.delete() + model.repo.commit_and_remove() + dataset = _get_dataset(package) + click.echo( + u'%s %s -> %s' % ( + dataset.name, click.style(old_state, fg=u'red'), + click.style(dataset.state, fg=u'green') + ) + ) + + +@dataset.command() +@click.argument(u'package') +def purge(package): + u'''Removes dataset from db entirely. + ''' + dataset = _get_dataset(package) + name = dataset.name + + site_user = logic.get_action(u'get_site_user')({u'ignore_auth': True}, {}) + context = {u'user': site_user[u'name']} + logic.get_action(u'dataset_purge')(context, {u'id': package}) + click.echo(u'%s purged' % name) + + +def _get_dataset(package): + dataset = model.Package.get(text_type(package)) + assert dataset, u'Could not find dataset matching reference: {}'.format( + package + ) + return dataset diff --git a/ckan/cli/datastore.py b/ckan/cli/datastore.py new file mode 100644 index 00000000000..276f4ab7cd0 --- /dev/null +++ b/ckan/cli/datastore.py @@ -0,0 +1,126 @@ +# encoding: utf-8 + +import logging +import os +import re + +import click + +from ckan.cli import error_shout +from ckan.common import config + +import ckanext.datastore as datastore_module +from ckanext.datastore.backend.postgres import identifier +from ckanext.datastore.controller import DUMP_FORMATS, dump_to + +log = logging.getLogger(__name__) + + +@click.group() +def datastore(): + u'''Perform commands to set up the datastore. + ''' + + +@datastore.command( + u'set-permissions', + short_help=u'Generate SQL for permission configuration.' +) +def set_permissions(): + u'''Emit an SQL script that will set the permissions for the datastore + users as configured in your configuration file.''' + + write_url = parse_db_config(u'ckan.datastore.write_url') + read_url = parse_db_config(u'ckan.datastore.read_url') + db_url = parse_db_config(u'sqlalchemy.url') + + # Basic validation that read and write URLs reference the same database. + # This obviously doesn't check they're the same database (the hosts/ports + # could be different), but it's better than nothing, I guess. + + if write_url[u'db_name'] != read_url[u'db_name']: + click.secho( + u'The datastore write_url and read_url must refer to the same ' + u'database!', + fg=u'red', + bold=True + ) + raise click.Abort() + + sql = permissions_sql( + maindb=db_url[u'db_name'], + datastoredb=write_url[u'db_name'], + mainuser=db_url[u'db_user'], + writeuser=write_url[u'db_user'], + readuser=read_url[u'db_user'] + ) + + click.echo(sql) + + +def permissions_sql(maindb, datastoredb, mainuser, writeuser, readuser): + template_filename = os.path.join( + os.path.dirname(datastore_module.__file__), u'set_permissions.sql' + ) + with open(template_filename) as fp: + template = fp.read() + return template.format( + maindb=identifier(maindb), + datastoredb=identifier(datastoredb), + mainuser=identifier(mainuser), + writeuser=identifier(writeuser), + readuser=identifier(readuser) + ) + + +@datastore.command() +@click.argument(u'resource-id', nargs=1) +@click.argument( + u'output-file', + type=click.File(u'wb'), + default=click.get_binary_stream(u'stdout') +) +@click.option(u'--format', default=u'csv', type=click.Choice(DUMP_FORMATS)) +@click.option(u'--offset', type=click.IntRange(0, None), default=0) +@click.option(u'--limit', type=click.IntRange(0)) +@click.option(u'--bom', is_flag=True) # FIXME: options based on format +@click.pass_context +def dump(ctx, resource_id, output_file, format, offset, limit, bom): + u'''Dump a datastore resource. + ''' + flask_app = ctx.obj.app.apps[u'flask_app']._wsgi_app + with flask_app.test_request_context(): + dump_to( + resource_id, + output_file, + fmt=format, + offset=offset, + limit=limit, + options={u'bom': bom}, + sort=u'_id', + search_params={} + ) + + +def parse_db_config(config_key=u'sqlalchemy.url'): + u''' Takes a config key for a database connection url and parses it into + a dictionary. Expects a url like: + + 'postgres://tester:pass@localhost/ckantest3' + ''' + url = config[config_key] + regex = [ + u'^\\s*(?P\\w*)', u'://', u'(?P[^:]*)', u':?', + u'(?P[^@]*)', u'@', u'(?P[^/:]*)', u':?', + u'(?P[^/]*)', u'/', u'(?P[\\w.-]*)' + ] + db_details_match = re.match(u''.join(regex), url) + if not db_details_match: + click.secho( + u'Could not extract db details from url: %r' % url, + fg=u'red', + bold=True + ) + raise click.Abort() + db_details = db_details_match.groupdict() + return db_details diff --git a/ckan/cli/db.py b/ckan/cli/db.py index 860668cfd64..8a6ab70fccd 100644 --- a/ckan/cli/db.py +++ b/ckan/cli/db.py @@ -1,7 +1,8 @@ # encoding: utf-8 +import os import logging - +import ckan.migration as migration_repo import click from ckan.cli import error_shout @@ -44,8 +45,8 @@ def cleandb(): @db.command(u'upgrade', short_help=u'Upgrade the database') -@click.option(u'-v', u'--version', help=u'Migration version') -def updatedb(version=None): +@click.option(u'-v', u'--version', help=u'Migration version', default=u'head') +def updatedb(version): u'''Upgrading the database''' try: import ckan.model as model @@ -56,17 +57,49 @@ def updatedb(version=None): click.secho(u'Upgrading DB: SUCCESS', fg=u'green', bold=True) -@db.command(u'version', short_help=u'Returns current version of data schema') -def version(): - u'''Return current version''' - log.info(u"Returning current DB version") +@db.command(u'downgrade', short_help=u'Downgrade the database') +@click.option(u'-v', u'--version', help=u'Migration version', default=u'base') +def downgradedb(version): + u'''Downgrading the database''' try: - from ckan.model import Session - ver = Session.execute(u'select version from ' - u'migrate_version;').fetchall() - click.secho( - u"Latest data schema version: {0}".format(ver[0][0]), - bold=True - ) + import ckan.model as model + model.repo.downgrade_db(version) except Exception as e: error_shout(e) + else: + click.secho(u'Downgrading DB: SUCCESS', fg=u'green', bold=True) + + +@db.command(u'version', short_help=u'Returns current version of data schema') +@click.option(u'--hash', is_flag=True) +def version(hash): + u'''Return current version''' + log.info(u"Returning current DB version") + import ckan.model as model + model.repo.setup_migration_version_control() + current = model.repo.current_version() + if not hash: + current = _version_hash_to_ordinal(current) + click.secho( + u'Current DB version: {}'.format(current), + fg=u'green', bold=True + ) + + +def _version_hash_to_ordinal(version): + if u'base' == version: + return 0 + versions_dir = os.path.join( + os.path.dirname(migration_repo.__file__), u'versions' + ) + versions = sorted(os.listdir(versions_dir)) + + # latest version looks like `123abc (head)` + if version.endswith(u'(head)'): + return int(versions[-1].split(u'_')[0]) + for name in versions: + if version in name: + return int(name.split(u'_')[0]) + error_shout(u'Version `{}` was not found in {}'.format( + version, versions_dir + )) diff --git a/ckan/cli/plugin_info.py b/ckan/cli/plugin_info.py new file mode 100644 index 00000000000..9f6a8ac47d2 --- /dev/null +++ b/ckan/cli/plugin_info.py @@ -0,0 +1,93 @@ +# encoding: utf-8 + +import click + + +@click.command( + name=u'plugin-info', + short_help=u'Provide info on installed plugins.' +) +def plugin_info(): + u''' print info about current plugins from the .ini file''' + import ckan.plugins as p + interfaces = {} + plugins = {} + for name in dir(p): + item = getattr(p, name) + try: + if issubclass(item, p.Interface): + interfaces[item] = {u'class': item} + except TypeError: + pass + + for interface in interfaces: + for plugin in p.PluginImplementations(interface): + name = plugin.name + if name not in plugins: + plugins[name] = { + u'doc': plugin.__doc__, + u'class': plugin, + u'implements': [] + } + plugins[name][u'implements'].append(interface.__name__) + + for plugin in plugins: + p = plugins[plugin] + click.echo(plugin + u':') + click.echo(u'-' * (len(plugin) + 1)) + if p[u'doc']: + click.echo(p[u'doc']) + click.echo(u'Implements:') + for i in p[u'implements']: + extra = None + if i == u'ITemplateHelpers': + extra = _template_helpers(p[u'class']) + if i == u'IActions': + extra = _actions(p[u'class']) + click.echo(u' {i}'.format(i=i)) + if extra: + click.echo(extra) + click.echo() + + +def _template_helpers(plugin_class): + u''' Return readable helper function info. ''' + helpers = plugin_class.get_helpers() + return _function_info(helpers) + + +def _actions(plugin_class): + u''' Return readable action function info. ''' + actions = plugin_class.get_actions() + return _function_info(actions) + + +def _function_info(functions): + u''' Take a dict of functions and output readable info ''' + import inspect + output = [] + for function_name in functions: + fn = functions[function_name] + args_info = inspect.getargspec(fn) + params = args_info.args + num_params = len(params) + if args_info.varargs: + params.append(u'*' + args_info.varargs) + if args_info.keywords: + params.append(u'**' + args_info.keywords) + if args_info.defaults: + offset = num_params - len(args_info.defaults) + for i, v in enumerate(args_info.defaults): + params[i + offset] = params[i + offset] + u'=' + repr(v) + # is this a classmethod if so remove the first parameter + if inspect.ismethod(fn) and inspect.isclass(fn.__self__): + params = params[1:] + params = u', '.join(params) + output.append(u' {function_name}({params})'.format( + function_name=function_name, params=params)) + # doc string + if fn.__doc__: + bits = fn.__doc__.split(u'\n') + for bit in bits: + output.append(u' {bit}'.format(bit=bit)) + return (u'\n').join(output) diff --git a/ckan/config/deployment.ini_tmpl b/ckan/config/deployment.ini_tmpl index 0ed97f60336..1699498bd92 100644 --- a/ckan/config/deployment.ini_tmpl +++ b/ckan/config/deployment.ini_tmpl @@ -13,7 +13,8 @@ [DEFAULT] -# WARNING: *THIS SETTING MUST BE SET TO FALSE ON A PRODUCTION ENVIRONMENT* +# WARNING: *THIS SETTING MUST BE SET TO FALSE ON A PUBLIC ENVIRONMENT* +# With debug mode enabled, a visitor to your site could execute malicious commands. debug = false [server:main] @@ -119,10 +120,6 @@ ckan.views.default_views = image_view text_view recline_view ## Front-End Settings -# Uncomment following configuration to enable using of Bootstrap 2 -#ckan.base_public_folder = public-bs2 -#ckan.base_templates_folder = templates-bs2 - ckan.site_title = CKAN ckan.site_logo = /base/images/ckan-logo.png ckan.site_description = @@ -160,6 +157,11 @@ ckan.feeds.author_link = #ckan.max_resource_size = 10 #ckan.max_image_size = 2 +## Webassets Settings +#ckan.webassets.use_x_sendfile = false +#ckan.webassets.path = /var/lib/ckan/webassets + + ## Datapusher settings # Make sure you have set up the DataStore diff --git a/ckan/config/environment.py b/ckan/config/environment.py index 963d7e5d726..16c5842afcf 100644 --- a/ckan/config/environment.py +++ b/ckan/config/environment.py @@ -24,6 +24,7 @@ import ckan.logic as logic import ckan.authz as authz import ckan.lib.jinja_extensions as jinja_extensions +from ckan.lib.webassets_tools import webassets_init from ckan.lib.i18n import build_js_translations from ckan.common import _, ungettext, config @@ -76,14 +77,14 @@ def find_controller(self, controller): # Pylons paths root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - valid_base_public_folder_names = ['public', 'public-bs2'] + valid_base_public_folder_names = ['public'] static_files = app_conf.get('ckan.base_public_folder', 'public') app_conf['ckan.base_public_folder'] = static_files if static_files not in valid_base_public_folder_names: raise CkanConfigurationException( 'You provided an invalid value for ckan.base_public_folder. ' - 'Possible values are: "public" and "public-bs2".' + 'Possible values are: "public".' ) log.info('Loading static files from %s' % static_files) @@ -163,6 +164,8 @@ def update_config(): plugin might have changed the config values (for instance it might change ckan.site_url) ''' + webassets_init() + for plugin in p.PluginImplementations(p.IConfigurer): # must do update in place as this does not work: # config = plugin.update_config(config) @@ -248,14 +251,14 @@ def update_config(): config['pylons.h'] = helpers.helper_functions # Templates and CSS loading from configuration - valid_base_templates_folder_names = ['templates', 'templates-bs2'] + valid_base_templates_folder_names = ['templates'] templates = config.get('ckan.base_templates_folder', 'templates') config['ckan.base_templates_folder'] = templates if templates not in valid_base_templates_folder_names: raise CkanConfigurationException( 'You provided an invalid value for ckan.base_templates_folder. ' - 'Possible values are: "templates" and "templates-bs2".' + 'Possible values are: "templates".' ) jinja2_templates_path = os.path.join(root, templates) @@ -290,6 +293,10 @@ def update_config(): # CONFIGURATION OPTIONS HERE (note: all config options will override # any Pylons config options) + # Enable pessimistic disconnect handling (added in SQLAlchemy 1.2) + # to eliminate database errors due to stale pooled connections + config.setdefault('pool_pre_ping', True) + # Initialize SQLAlchemy engine = sqlalchemy.engine_from_config(config) model.init_model(engine) diff --git a/ckan/config/middleware/flask_app.py b/ckan/config/middleware/flask_app.py index c6d437a7221..699e478886c 100644 --- a/ckan/config/middleware/flask_app.py +++ b/ckan/config/middleware/flask_app.py @@ -8,7 +8,7 @@ import itertools import pkgutil -from flask import Flask, Blueprint +from flask import Flask, Blueprint, send_from_directory from flask.ctx import _AppCtxGlobals from flask.sessions import SessionInterface @@ -23,6 +23,7 @@ from repoze.who.config import WhoConfig from repoze.who.middleware import PluggableAuthenticationMiddleware +import ckan import ckan.model as model from ckan.lib import base from ckan.lib import helpers @@ -30,7 +31,8 @@ from ckan.common import config, g, request, ungettext import ckan.lib.app_globals as app_globals import ckan.lib.plugins as lib_plugins - +import ckan.plugins.toolkit as toolkit +from ckan.lib.webassets_tools import get_webassets_path from ckan.plugins import PluginImplementations from ckan.plugins.interfaces import IBlueprint, IMiddleware, ITranslation @@ -40,7 +42,6 @@ set_controller_and_action ) -import ckan.lib.plugins as lib_plugins import logging from logging.handlers import SMTPHandler log = logging.getLogger(__name__) @@ -183,6 +184,9 @@ def hello_world(): def hello_world_post(): return 'Hello World, this was posted to Flask' + # WebAssets + _setup_webassets(app) + # Auto-register all blueprints defined in the `views` folder _register_core_blueprints(app) _register_error_handler(app) @@ -388,8 +392,8 @@ def can_handle_request(self, environ): `origin` can be either 'core' or 'extension' depending on where the route was defined. ''' - urls = self.url_map.bind_to_environ(environ) + try: rule, args = urls.match(return_rule=True) origin = 'core' @@ -397,6 +401,12 @@ def can_handle_request(self, environ): origin = 'extension' log.debug('Flask route match, endpoint: {0}, args: {1}, ' 'origin: {2}'.format(rule.endpoint, args, origin)) + + # Disable built-in flask's ability to prepend site root to + # generated url, as we are going to use locale and existing + # logic is not flexible enough for this purpose + environ['SCRIPT_NAME'] = '' + return (True, self.app_name, origin) except HTTPException: return (False, self.app_name) @@ -473,12 +483,20 @@ def filter(self, log_record): log_record.headers = request.headers return True - mailhost = tuple(config.get('smtp.server', 'localhost').split(":")) + smtp_server = config.get('smtp.server', 'localhost') + mailhost = tuple(smtp_server.split(':')) \ + if ':' in smtp_server else smtp_server + credentials = None + if config.get('smtp.user'): + credentials = (config.get('smtp.user'), config.get('smtp.password')) + secure = () if asbool(config.get('smtp.starttls')) else None mail_handler = SMTPHandler( mailhost=mailhost, fromaddr=config.get('error_email_from'), toaddrs=[config.get('email_to')], - subject='Application Error' + subject='Application Error', + credentials=credentials, + secure=secure ) mail_handler.setFormatter(logging.Formatter(''' @@ -493,3 +511,15 @@ def filter(self, log_record): context_provider = ContextualFilter() app.logger.addFilter(context_provider) app.logger.addHandler(mail_handler) + + +def _setup_webassets(app): + app.use_x_sendfile = toolkit.asbool( + config.get('ckan.webassets.use_x_sendfile') + ) + + webassets_folder = get_webassets_path() + + @app.route('/webassets/') + def webassets(path): + return send_from_directory(webassets_folder, path) diff --git a/ckan/i18n/am/LC_MESSAGES/ckan.mo b/ckan/i18n/am/LC_MESSAGES/ckan.mo new file mode 100644 index 00000000000..99c5b564c21 Binary files /dev/null and b/ckan/i18n/am/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/am/LC_MESSAGES/ckan.po b/ckan/i18n/am/LC_MESSAGES/ckan.po new file mode 100644 index 00000000000..31536ff7195 --- /dev/null +++ b/ckan/i18n/am/LC_MESSAGES/ckan.po @@ -0,0 +1,4811 @@ +# Translations template for ckan. +# Copyright (C) 2018 ORGANIZATION +# This file is distributed under the same license as the ckan project. +# FIRST AUTHOR , 2018. +# +# Translators: +# Khalid Mohammed , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ckan 2.8.0b0\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2018-03-27 16:10+0200\n" +"PO-Revision-Date: 2018-03-27 14:15+0000\n" +"Last-Translator: Khalid Mohammed , 2019\n" +"Language-Team: Amharic (https://www.transifex.com/okfn/teams/11162/am/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.5.3\n" +"Language: am\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: ckanext/datapusher/helpers.py:21 +msgid "Complete" +msgstr "ተጠናቋል" + +#: ckanext/datapusher/helpers.py:22 +msgid "Pending" +msgstr "በመጠባበቅ ላይ" + +#: ckanext/datapusher/helpers.py:23 +msgid "Submitting" +msgstr "ማስገባት" + +#: ckan/controllers/package.py:681 ckanext/datapusher/helpers.py:24 +msgid "Error" +msgstr "ስህተት" + +#: ckanext/datapusher/helpers.py:29 +msgid "Not Uploaded Yet" +msgstr "ገና አልተጫነም" + +#: ckan/controllers/package.py:613 ckan/controllers/package.py:1076 +#: ckan/controllers/package.py:1096 ckan/controllers/package.py:1163 +#: ckan/controllers/package.py:1346 ckan/controllers/package.py:1424 +#: ckan/controllers/package.py:1455 ckan/controllers/package.py:1563 +#: ckan/controllers/package.py:1614 ckanext/datapusher/plugin.py:59 +#: ckanext/datastore/controller.py:80 ckanext/resourceproxy/controller.py:33 +msgid "Resource not found" +msgstr "መረጃው አልተገኘም" + +#: ckan/controllers/api.py:66 ckan/controllers/group.py:156 +#: ckan/controllers/home.py:27 ckan/controllers/package.py:144 +#: ckan/controllers/package.py:315 ckan/controllers/revision.py:34 +#: ckan/controllers/tag.py:27 ckan/controllers/user.py:58 +#: ckan/controllers/user.py:83 ckan/controllers/user.py:86 +#: ckan/controllers/user.py:117 ckan/controllers/user.py:598 +#: ckan/views/dashboard.py:24 ckan/views/user.py:59 ckan/views/user.py:62 +#: ckan/views/user.py:87 ckan/views/user.py:110 ckan/views/user.py:476 +#: ckanext/datapusher/plugin.py:68 +msgid "Not authorized to see this page" +msgstr "ይሀን ገጽ ለማየት ፍቃድ የሎትም!" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:12 +#: ckanext/datapusher/templates/datapusher/resource_data.html:12 +msgid "Upload to DataStore" +msgstr "መረጃ ማከማቻው ውስጥ ጫን" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:19 +#: ckanext/datapusher/templates/datapusher/resource_data.html:19 +msgid "Upload error:" +msgstr "የመጫን ላይ የተፈጠረ ስህተት:" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:25 +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:27 +#: ckanext/datapusher/templates/datapusher/resource_data.html:25 +#: ckanext/datapusher/templates/datapusher/resource_data.html:27 +msgid "Error:" +msgstr "ስህተት:" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:36 +#: ckanext/datapusher/templates/datapusher/resource_data.html:36 +msgid "Error traceback:" +msgstr "የስህተቱ ምንጭ:" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:48 +#: ckanext/datapusher/templates/datapusher/resource_data.html:48 +msgid "Status" +msgstr "ወቅታዊ ሁኔታ" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:52 +#: ckanext/datapusher/templates/datapusher/resource_data.html:52 +msgid "Last updated" +msgstr "የተሻሻለበት የመጨረሻ ጊዜ" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:56 +#: ckanext/datapusher/templates/datapusher/resource_data.html:56 +msgid "Never" +msgstr "በጭራሽ" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:62 +#: ckanext/datapusher/templates/datapusher/resource_data.html:62 +msgid "Upload Log" +msgstr "የተሻሻለበት ዝርዝር ማስታወሻ" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:76 +#: ckanext/datapusher/templates/datapusher/resource_data.html:76 +msgid "Details" +msgstr "ዝርዝሮች" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:83 +#: ckanext/datapusher/templates/datapusher/resource_data.html:83 +msgid "End of log" +msgstr "የማስታወሻ መጨረሻ" + +#: ckanext/datapusher/templates-bs2/package/resource_edit_base.html:5 +#: ckanext/datapusher/templates/package/resource_edit_base.html:5 +msgid "DataStore" +msgstr "የመረጃ ማከማቻ" + +#: ckanext/datastore/controller.py:53 +#, python-format +msgid "format: must be one of %s" +msgstr "ቅርጸት: %s ከነዚ አንዱ መሆን አለበት።" + +#: ckanext/datastore/controller.py:65 +msgid "DataStore resource not found" +msgstr "የመረጃ ማከማቻው አልተገኘም" + +#: ckanext/datastore/controller.py:101 +msgid "" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" +msgstr "" +"ይህ ዳታ መዝገበ-ቃላት ተቀምጠዋል፤ማንኛውም አይነት መሻሪያዎች ወይም ማሻሻያዎች የሚተገበሩበት በቀጣዩ የመረጃ ማከማቻ " +"ውስጥ በሚደረግ የመረጃ ምዝገባ ጊዜ ነው።" + +#: ckanext/datastore/backend/postgres.py:1032 +msgid "" +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." +msgstr "" +"መረጃው ያልተፈቀደ ነው። (ለምሳሌ: በመረጃው ውስጥ ያለ ቁጥራዊ እሴት ከተሰጠው ገደብ ያለፈ ነው ወይም ወደ ጽሁፍ መስክ" +" ተገብቷል)" + +#: ckanext/datastore/logic/action.py:258 ckanext/datastore/logic/action.py:286 +#: ckanext/datastore/logic/action.py:344 ckanext/datastore/logic/action.py:457 +msgid "Resource \"{0}\" was not found." +msgstr "የመረጃ ምንጭ \"{0}\" አልተገኘም።" + +#: ckanext/datastore/logic/auth.py:19 +msgid "User {0} not authorized to update resource {1}" +msgstr "ተጠቃሚ {0} ይሀንን የመረጃ ምንጭ ለማሻሻል ፍቃድ የለውም።" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:19 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:21 +msgid "CKAN Data API" +msgstr "የ CKAN የመረጃ ኤፒአይ" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:23 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:25 +msgid "Access resource data via a web API with powerful query support" +msgstr "ጠንካራ የጠያቂ ድጋፍ ባለው የድር ኤፒአይ በመጠቀም መረጃ ያግኙ።" + +#: ckanext/datastore/templates/ajax_snippets/api_info.html:26 +msgid "" +" Further information in the main CKAN Data API and DataStore documentation.

" +msgstr "" +" ለበለጠ መረጃ የ CKAN የመረጃ ኤፒአይ እና የመረጃ ማከማቻ መግለጫ ሰነድ.

" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:33 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:35 +msgid "Endpoints" +msgstr "ማገባደጃ" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:37 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:39 +msgid "" +"The Data API can be accessed via the following actions of the CKAN action " +"API." +msgstr "የመረጃው ኤፒአይ በሚከተሉት የ CKAN ኤፒአይ ድርጊት ሂደቶች ማግኝት ይችላሉ።" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:42 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:44 +msgid "Create" +msgstr "ፍጠር" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:46 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:48 +msgid "Update / Insert" +msgstr "አሻሽል / አስገባ" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:50 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:52 +msgid "Query" +msgstr "መጠይቅ" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:54 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:56 +msgid "Query (via SQL)" +msgstr "መጠይቅ (በ SQL)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:66 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:68 +msgid "Querying" +msgstr "በመጠይቅ ላይ" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:70 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:72 +msgid "Query example (first 5 results)" +msgstr "የመጠይቅ ምሳሌ (የመጀመሪያ 5 ውጤቶች)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:75 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:77 +msgid "Query example (results containing 'jones')" +msgstr "የመጠይቅ ምሳሌ ('ጆንስ'ን የያዙ ውጤቶች)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:80 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:82 +msgid "Query example (via SQL statement)" +msgstr "የመጠይቅ ምሳሌ (በ SQL አረፍተ ነገር በኩል)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:91 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:93 +msgid "Example: Javascript" +msgstr "ምሳሌ: ጃቫስክሪፕት" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:95 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:97 +msgid "A simple ajax (JSONP) request to the data API using jQuery." +msgstr "jQuery በመጠቀም ወደ መረጃ ኤፒአይ ቀላል የአጃክስ (JSONP) ጥያቄ" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:116 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:118 +msgid "Example: Python" +msgstr "ምሳሌ: ፓይቶን" + +#: ckan/templates/group/member_new.html:60 +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:26 +#: ckanext/datastore/templates/datastore/dictionary.html:20 +msgid "Save" +msgstr "አስቀምጥ" + +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:16 +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:3 +msgid "Field {num}." +msgstr "መስክ {num}" + +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:12 +msgid "Type Override" +msgstr "የእሴት አይነት መሻር" + +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:18 +#: ckanext/datastore/templates-bs2/package/resource_read.html:20 +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:20 +#: ckanext/datastore/templates/package/resource_read.html:21 +#: ckanext/datatablesview/templates/datatables/datatables_form.html:18 +msgid "Label" +msgstr "መለዮ" + +#: ckan/templates/group/snippets/group_form.html:20 +#: ckan/templates/organization/snippets/organization_form.html:20 +#: ckan/templates/package/snippets/package_basic_fields.html:19 +#: ckan/templates/package/snippets/resource_form.html:34 +#: ckan/templates/package/snippets/view_form.html:9 +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:21 +#: ckanext/datastore/templates-bs2/package/resource_read.html:21 +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:24 +#: ckanext/datastore/templates/package/resource_read.html:22 +msgid "Description" +msgstr "መግለጫ" + +#: ckanext/datastore/templates-bs2/package/resource_edit_base.html:6 +#: ckanext/datastore/templates-bs2/package/resource_read.html:14 +#: ckanext/datastore/templates/package/resource_edit_base.html:6 +#: ckanext/datastore/templates/package/resource_read.html:14 +msgid "Data Dictionary" +msgstr "የመረጃ መዝገበ-ቃላት" + +#: ckanext/datastore/templates-bs2/package/resource_read.html:18 +#: ckanext/datastore/templates/package/resource_read.html:19 +#: ckanext/datatablesview/templates/datatables/datatables_form.html:17 +msgid "Column" +msgstr "አምድ" + +#: ckanext/datastore/templates-bs2/package/resource_read.html:19 +#: ckanext/datastore/templates/package/resource_read.html:20 +msgid "Type" +msgstr "አይነት" + +#: ckan/public-bs2/base/javascript/modules/activity-stream.js:97 +#: ckan/public-bs2/base/javascript/modules/popover-context.js:62 +#: ckan/public/base/javascript/modules/activity-stream.js:97 +#: ckan/public/base/javascript/modules/popover-context.js:62 +#: ckan/templates/tests/mock_json_resource_preview_template.html:7 +#: ckan/templates/tests/mock_resource_preview_template.html:7 +#: ckanext/datastore/templates-bs2/package/snippets/data_api_button.html:8 +#: ckanext/datastore/templates/package/snippets/data_api_button.html:7 +#: ckanext/example_theme_docs/v18_snippet_api/fanstatic/example_theme_popover.js:21 +#: ckanext/example_theme_docs/v19_01_error/fanstatic/example_theme_popover.js:21 +#: ckanext/example_theme_docs/v19_02_error_handling/fanstatic/example_theme_popover.js:8 +#: ckanext/example_theme_docs/v20_pubsub/fanstatic/example_theme_popover.js:8 +#: ckanext/example_theme_docs/v21_custom_jquery_plugin/fanstatic/example_theme_popover.js:8 +#: ckanext/reclineview/theme/templates/recline_view.html:14 +#: ckanext/textview/theme/templates/text_view.html:9 +msgid "Loading..." +msgstr "በመጫን ላይ" + +#: ckanext/datastore/templates-bs2/package/snippets/data_api_button.html:10 +#: ckanext/datastore/templates/package/snippets/data_api_button.html:9 +msgid "Data API" +msgstr "የመረጃ ኤፒአይ" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:24 +msgid "" +" Further information in the main CKAN Data API and DataStore documentation.

" +msgstr "" +" ለበለጠ መረጃ የ CKAN የመረጃ ኤፒአይ እና የመረጃ ማከማቻ መግለጫ ሰነድ.

" + +#: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 +msgid "Table" +msgstr "ሰንጠረዥ" + +#: ckanext/datatablesview/templates/datatables/datatables_form.html:6 +msgid "Responsive display" +msgstr "ተግባቢ እይታ" + +#: ckanext/datatablesview/templates/datatables/datatables_form.html:12 +msgid "Show Columns" +msgstr "አምዶችን አሳይ" + +#: ckanext/datatablesview/templates/datatables/datatables_view.html:28 +msgid "Hide/Unhide Columns" +msgstr "አምዶችን ሸሽግ / አትሸሽግ" + +#: ckanext/example_iconfigurer/templates/admin/config.html:11 +msgid "Datasets per page" +msgstr "የመረጃ ስብስቦች በገጽ" + +#: ckanext/example_iconfigurer/templates/admin/config.html:13 +msgid "Test conf" +msgstr "የመዋቅር ፍተሻ" + +#: ckan/templates/group/read.html:13 ckan/templates/organization/read.html:19 +#: ckan/templates/package/search.html:29 +#: ckan/templates/snippets/sort_by.html:14 +#: ckanext/example_idatasetform/templates/package/search.html:12 +msgid "Relevance" +msgstr "ተገቢነት" + +#: ckan/templates/group/index.html:20 ckan/templates/group/read.html:14 +#: ckan/templates/organization/bulk_process.html:97 +#: ckan/templates/organization/index.html:20 +#: ckan/templates/organization/read.html:20 +#: ckan/templates/package/search.html:30 +#: ckan/templates/snippets/search_form.html:4 +#: ckan/templates/snippets/simple_search.html:10 +#: ckan/templates/snippets/sort_by.html:15 +#: ckanext/example_idatasetform/templates/package/search.html:13 +msgid "Name Ascending" +msgstr "በስም ከታች ወደላይ ደርድር" + +#: ckan/templates/group/index.html:20 ckan/templates/group/read.html:15 +#: ckan/templates/organization/bulk_process.html:98 +#: ckan/templates/organization/index.html:20 +#: ckan/templates/organization/read.html:21 +#: ckan/templates/package/search.html:31 +#: ckan/templates/snippets/search_form.html:4 +#: ckan/templates/snippets/simple_search.html:10 +#: ckan/templates/snippets/sort_by.html:16 +#: ckanext/example_idatasetform/templates/package/search.html:14 +msgid "Name Descending" +msgstr "በስም ከላይ ወደታች ደርድር" + +#: ckan/templates/group/read.html:16 +#: ckan/templates/organization/bulk_process.html:99 +#: ckan/templates/organization/read.html:22 +#: ckan/templates/package/search.html:32 +#: ckan/templates/package/snippets/resource_form.html:53 +#: ckan/templates/snippets/sort_by.html:17 +#: ckanext/example_idatasetform/templates/package/search.html:15 +msgid "Last Modified" +msgstr "ለመጨረሻ ጊዜ የተሻሻለው" + +#: ckanext/example_idatasetform/templates/package/search.html:16 +msgid "Custom Field Ascending" +msgstr "የራስ የተበጀ የመዘርዘሪያ ገለጻ ከታች ወደላይ ደርድር" + +#: ckanext/example_idatasetform/templates/package/search.html:17 +msgid "Custom Field Descending" +msgstr "የራስ የተበጀ የመዘርዘሪያ ገለጻ ከላይ ወደታች ደርድር" + +#: ckan/templates/group/read.html:17 ckan/templates/organization/read.html:23 +#: ckan/templates/package/search.html:33 +#: ckan/templates/snippets/package_item.html:50 +#: ckan/templates/snippets/popular.html:3 +#: ckan/templates/snippets/sort_by.html:19 +#: ckanext/example_idatasetform/templates/package/search.html:18 +msgid "Popular" +msgstr "ታዋቂ" + +#: ckanext/example_idatasetform/templates/package/snippets/additional_info.html:6 +#: ckanext/example_idatasetform/templates/package/snippets/package_basic_fields.html:4 +#: ckanext/example_idatasetform/templates/package/snippets/resource_form.html:6 +msgid "Custom Text" +msgstr "በራስ የተዘጋጀ ጽሁፍ" + +#: ckanext/example_idatasetform/templates/package/snippets/package_basic_fields.html:4 +msgid "custom text" +msgstr "በራስ የተዘጋጀ ጽሁፍ" + +#: ckanext/example_idatasetform/templates/package/snippets/package_metadata_fields.html:11 +msgid "Country Code" +msgstr "የአገር ኮድ" + +#: ckanext/example_idatasetform/templates/package/snippets/resource_form.html:6 +msgid "custom resource text" +msgstr "በራስ የተዘጋጀ የመረጃ ምንጭ ጽሁፍ" + +#: ckanext/example_itranslation/templates/home/index.html:4 +msgid "This is an untranslated string" +msgstr "ይህ ያልተተረጎመ ቃል/ሃረግ/አረፍተነገር ነው።" + +#: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:20 +#: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:19 +msgid "This group has no description" +msgstr "ይህ ቡድን መግለጫ የለውም።" + +#: ckan/templates/group/snippets/group_item.html:32 +#: ckan/templates/organization/snippets/organization_item.html:31 +#: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:23 +#: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:22 +msgid "{num} Dataset" +msgid_plural "{num} Datasets" +msgstr[0] "{num} የመረጃ ስብስብ" +msgstr[1] "{num} የመረጃ ስብስቦች" + +#: ckan/templates/group/snippets/group_item.html:34 +#: ckan/templates/organization/snippets/organization_item.html:33 +#: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:25 +#: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:24 +msgid "0 Datasets" +msgstr "0 የመረጃ ስብስቦች" + +#: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 +msgid "CKAN's data previewing tool has many powerful features" +msgstr "የ CKAN ምረጃ ቅድመ-እይታ መሣሪያ ብዙ ጠንካራ ገፅታዎች አሉት።" + +#: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 +#: ckan/templates/group/snippets/info.html:32 +#: ckan/templates/package/followers.html:3 +#: ckan/templates/package/followers.html:6 +#: ckan/templates/package/snippets/info.html:24 +#: ckan/templates/snippets/context/group.html:13 +#: ckan/templates/snippets/context/user.html:15 +#: ckan/templates/snippets/organization.html:55 +#: ckan/templates/user/followers.html:3 ckan/templates/user/followers.html:7 +#: ckan/templates/user/read_base.html:49 +#: ckanext/example_theme_docs/v18_snippet_api/templates/ajax_snippets/example_theme_popover.html:12 +msgid "Followers" +msgstr "ተከታዮች" + +#: ckan/logic/__init__.py:99 ckan/logic/action/__init__.py:60 +#: ckan/templates/package/edit_base.html:21 +#: ckan/templates/package/resources.html:5 +#: ckan/templates/package/snippets/package_context.html:12 +#: ckan/templates/package/snippets/resources.html:20 +#: ckan/templates/snippets/context/dataset.html:13 +#: ckanext/example_theme_docs/v18_snippet_api/templates/ajax_snippets/example_theme_popover.html:15 +msgid "Resources" +msgstr "የመረጃ ምንጭ" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:80 +#: ckan/public/base/javascript/modules/image-upload.js:80 +#: ckan/templates/macros/form.html:424 ckanext/imageview/plugin.py:27 +#: ckanext/imageview/plugin.py:32 +msgid "Image" +msgstr "ምስል" + +#: ckanext/imageview/theme/templates/image_form.html:3 +msgid "Image url" +msgstr "የምስል ዩአርኤል(URL)" + +#: ckanext/imageview/theme/templates/image_form.html:3 +msgid "eg. http://example.com/image.jpg (if blank uses resource url)" +msgstr "eg. http://example.com/image.jpg (ባዶ ጥቅል ዩአርኤልን ከተጠቀመ)" + +#: ckanext/reclineview/plugin.py:101 +msgid "Data Explorer" +msgstr "የመረጃ አስሽ" + +#: ckanext/reclineview/plugin.py:171 +#: ckanext/reclineview/theme/public/recline_view.js:200 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Graph" +msgstr "ግራፍ" + +#: ckanext/reclineview/plugin.py:231 +#: ckanext/reclineview/theme/public/recline_view.js:207 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Map" +msgstr "ካርታ" + +#: ckanext/reclineview/theme/public/recline_view.js:28 +#: ckanext/reclineview/theme/public/recline_view.min.js:1 +msgid "error loading view" +msgstr "እይታን በመጫን ላይ የተፈጠረ ስህተት" + +#: ckanext/reclineview/theme/public/recline_view.js:75 +#: ckanext/reclineview/theme/public/recline_view.min.js:5 +msgid "Could not load view" +msgstr "እይታን መጫን አልቻለም" + +#: ckanext/reclineview/theme/public/recline_view.js:77 +#: ckanext/reclineview/theme/public/recline_view.min.js:5 +msgid "DataStore returned an error" +msgstr "የመረጃ ማከማቻው(DataStore) ስህተት መልሷል" + +#: ckanext/reclineview/theme/public/recline_view.js:79 +#: ckanext/reclineview/theme/public/recline_view.min.js:5 +msgid "DataProxy returned an error" +msgstr "የመረጃ ተኪው(DataProxy) ስህተት መልሷል" + +#: ckanext/reclineview/theme/public/recline_view.js:193 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Grid" +msgstr "ፍርግርግ" + +#: ckan/templates/package/snippets/view_form_filters.html:46 +#: ckanext/reclineview/theme/public/recline_view.js:215 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Filters" +msgstr "ማጣሪያዎች" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:3 +#: ckanext/reclineview/theme/templates/recline_map_form.html:3 +msgid "Row offset" +msgstr "የረድፍ መነሻ" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:3 +#: ckanext/reclineview/theme/templates/recline_map_form.html:3 +msgid "eg: 0" +msgstr "ምሳሌ፡ 0" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:4 +#: ckanext/reclineview/theme/templates/recline_map_form.html:4 +msgid "Number of rows" +msgstr "የረድፎች ቁጥር" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:4 +#: ckanext/reclineview/theme/templates/recline_map_form.html:4 +msgid "eg: 100" +msgstr "ምሳሌ፡ 100" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:6 +msgid "Graph type" +msgstr "የግራፍ አይነት" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:7 +msgid "Group (Axis 1)" +msgstr "ቡድን (ዘንግ 1)" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:8 +msgid "Series (Axis 2)" +msgstr "ተከታታይ (ዘንግ 2)" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:6 +msgid "Field type" +msgstr "የመስክ አይነት" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:7 +msgid "Latitude field" +msgstr "የላቲቱድ(Latitude) መስክ" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:8 +msgid "Longitude field" +msgstr "የሎንግቱድ(Longitude) መስክ" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:9 +msgid "GeoJSON field" +msgstr "የ GeoJSON መስክ" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:10 +msgid "Auto zoom to features" +msgstr "ወደ ባህሪያት በራስ-አጉላ" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:11 +msgid "Cluster markers" +msgstr "ክላስተር ሰሪዎች" + +#: ckanext/stats/templates/ckanext/stats/index.html:10 +msgid "Total number of Datasets" +msgstr "የመረጃ ስብስቦች ጠቅላላ ብዛት" + +#: ckanext/stats/templates/ckanext/stats/index.html:17 +#: ckanext/stats/templates/ckanext/stats/index.html:40 +msgid "Date" +msgstr "ቀን" + +#: ckanext/stats/templates/ckanext/stats/index.html:18 +msgid "Total datasets" +msgstr "ጠቅላላ የመረጃ ስብስቦች" + +#: ckanext/stats/templates/ckanext/stats/index.html:33 +#: ckanext/stats/templates/ckanext/stats/index.html:179 +msgid "Dataset Revisions per Week" +msgstr "የመረጃ ስብስቦች ሳምንታዊ ግምገማ" + +#: ckanext/stats/templates/ckanext/stats/index.html:41 +msgid "All dataset revisions" +msgstr "የመረጃ ስብስቦች ጠቅላላ ግምገማ" + +#: ckanext/stats/templates/ckanext/stats/index.html:42 +msgid "New datasets" +msgstr "አዳዲስ የመረጃ ስብስቦች" + +#: ckanext/stats/templates/ckanext/stats/index.html:58 +#: ckanext/stats/templates/ckanext/stats/index.html:180 +msgid "Top Rated Datasets" +msgstr "ከፍተኛ ደረጃ የተሰጣቸው የመረጃ ስብስቦች" + +#: ckanext/stats/templates/ckanext/stats/index.html:64 +msgid "Average rating" +msgstr "አማካኝ ደረጃ" + +#: ckanext/stats/templates/ckanext/stats/index.html:65 +msgid "Number of ratings" +msgstr "የደረጃ ሰጪዎች ብዛት" + +#: ckanext/stats/templates/ckanext/stats/index.html:79 +msgid "No ratings" +msgstr "የተሰጡ ደረጃዎች የሉም" + +#: ckanext/stats/templates/ckanext/stats/index.html:84 +#: ckanext/stats/templates/ckanext/stats/index.html:181 +msgid "Most Edited Datasets" +msgstr "በብዛት የታደሱ የመረጃ ስብስቦች" + +#: ckan/logic/converters.py:148 ckan/logic/validators.py:151 +#: ckan/logic/validators.py:193 ckan/templates/package/read_base.html:19 +#: ckan/tests/config/test_middleware.py:619 +#: ckanext/stats/templates/ckanext/stats/index.html:89 +msgid "Dataset" +msgstr "የመረጃ ስብስብ" + +#: ckanext/stats/templates/ckanext/stats/index.html:90 +msgid "Number of edits" +msgstr "ጠቅላላ አርትዖቶች(እድሳቶች)" + +#: ckanext/stats/templates/ckanext/stats/index.html:103 +msgid "No edited datasets" +msgstr "የታደሱ የመረጃ ስብስቦች የሉም" + +#: ckanext/stats/templates/ckanext/stats/index.html:108 +#: ckanext/stats/templates/ckanext/stats/index.html:182 +msgid "Largest Groups" +msgstr "ትላልቅ ቡድኖች" + +#: ckan/logic/converters.py:173 ckan/logic/validators.py:246 +#: ckanext/stats/templates/ckanext/stats/index.html:113 +msgid "Group" +msgstr "ቡድን" + +#: ckanext/stats/templates/ckanext/stats/index.html:114 +msgid "Number of datasets" +msgstr "የመረጃ ስብስቦች ብዛት" + +#: ckanext/stats/templates/ckanext/stats/index.html:127 +msgid "No groups" +msgstr "ምንም ቡድኖች የሉም" + +#: ckanext/stats/templates/ckanext/stats/index.html:132 +#: ckanext/stats/templates/ckanext/stats/index.html:183 +msgid "Top Tags" +msgstr "ከፍተኛ መለያዎች" + +#: ckanext/stats/templates/ckanext/stats/index.html:136 +msgid "Tag Name" +msgstr "የመለያ ስም" + +#: ckanext/stats/templates/ckanext/stats/index.html:137 +#: ckanext/stats/templates/ckanext/stats/index.html:157 +msgid "Number of Datasets" +msgstr "የመረጃ ስብስቦች ብዛት" + +#: ckanext/stats/templates/ckanext/stats/index.html:152 +#: ckanext/stats/templates/ckanext/stats/index.html:184 +msgid "Users Creating Most Datasets" +msgstr "ብዙ የመረጃ ስብስቦችን የፈጠሩ ተጠቃሚዎች" + +#: ckan/logic/converters.py:123 ckan/logic/validators.py:216 +#: ckan/logic/validators.py:233 ckan/logic/validators.py:714 +#: ckan/templates/group/members.html:14 +#: ckan/templates/organization/members.html:19 +#: ckanext/stats/templates/ckanext/stats/index.html:156 +msgid "User" +msgstr "ተጠቃሚ" + +#: ckanext/stats/templates/ckanext/stats/index.html:175 +msgid "Statistics Menu" +msgstr "የስታቲሥቲክስ ማውጫ" + +#: ckanext/stats/templates/ckanext/stats/index.html:178 +msgid "Total Number of Datasets" +msgstr "ጠቅላላ የመረጃ ስብስቦች ብዛት" + +#: ckanext/textview/plugin.py:67 ckanext/textview/plugin.py:69 +msgid "Text" +msgstr "ጽሁፍ" + +#: ckanext/webpageview/plugin.py:22 ckanext/webpageview/plugin.py:27 +msgid "Website" +msgstr "ድረ-ጣብያ" + +#: ckanext/webpageview/theme/templates/webpage_form.html:3 +msgid "Web Page url" +msgstr "ድረ-ገጽ ዩአርኤል(URL)" + +#: ckanext/webpageview/theme/templates/webpage_form.html:3 +msgid "eg. http://example.com (if blank uses resource url)" +msgstr "eg. http://example.com (ባዶ ጥቅል ዩአርኤልን ከተጠቀመ)" + +#: ckan/templates/dataviewer/snippets/data_preview.html:23 +#: ckan/templates/package/snippets/resource_view.html:64 +#: ckanext/webpageview/theme/templates/webpage_view.html:2 +msgid "Your browser does not support iframes." +msgstr "የእርሶ አሳሽ(browser) 'iframes'ን አይጠቀምም/አይደግፍም።" + +#: ckan/authz.py:207 +#, python-format +msgid "Authorization function not found: %s" +msgstr "የፈቀዳ(Authorization) ተግባር አልተገኘም፡ %s" + +#: ckan/authz.py:219 ckan/templates/header.html:11 +msgid "Admin" +msgstr "አስተዳዳሪ" + +#: ckan/authz.py:223 +msgid "Editor" +msgstr "አርታዒ" + +#: ckan/authz.py:227 +msgid "Member" +msgstr "አባል" + +#: ckan/controllers/admin.py:34 ckan/views/admin.py:76 +msgid "Need to be system administrator to administer" +msgstr "ለማስተዳደር የስርዐቱ አስተዳዳሪ(system administrator) መሆን አለቦት" + +#: ckan/controllers/admin.py:50 ckan/templates/admin/config.html:14 +msgid "Site Title" +msgstr "የጣብያው ስም" + +#: ckan/controllers/admin.py:51 ckan/templates/admin/config.html:16 +msgid "Style" +msgstr "አቀራረብ" + +#: ckan/controllers/admin.py:52 ckan/templates/admin/config.html:18 +msgid "Site Tag Line" +msgstr "የጣብያው መለያ መስመር" + +#: ckan/controllers/admin.py:53 +msgid "Site Tag Logo" +msgstr "የጣብያው መለያ አርማ" + +#: ckan/controllers/admin.py:55 ckan/templates/admin/config.html:25 +#: ckan/templates/group/about.html:3 ckan/templates/group/read_base.html:19 +#: ckan/templates/header.html:88 ckan/templates/home/about.html:3 +#: ckan/templates/home/about.html:6 ckan/templates/home/about.html:16 +#: ckan/templates/organization/about.html:3 +#: ckan/templates/organization/read_base.html:19 +#: ckan/templates/user/edit_user_form.html:14 +msgid "About" +msgstr "ምንነት" + +#: ckan/controllers/admin.py:55 ckan/templates/admin/config.html:25 +msgid "About page text" +msgstr "ስለ ገጽ ጽሁፉ" + +#: ckan/controllers/admin.py:56 ckan/templates/admin/config.html:27 +msgid "Intro Text" +msgstr "መግቢያ ጽሁፍ" + +#: ckan/controllers/admin.py:56 ckan/templates/admin/config.html:27 +msgid "Text on home page" +msgstr "መነሻ ገጽ ላይ ያለው ጽሁፍ" + +#: ckan/controllers/admin.py:57 ckan/templates/admin/config.html:29 +msgid "Custom CSS" +msgstr "የራስ CSS" + +#: ckan/controllers/admin.py:57 ckan/templates/admin/config.html:29 +msgid "Customisable css inserted into the page header" +msgstr "በራስ መሻሻል የሚችህል CSS በገጹ አናት ላይ ገብቷል" + +#: ckan/controllers/admin.py:58 ckan/templates/admin/config.html:31 +msgid "Homepage" +msgstr "መነሻ ገጽ" + +#: ckan/controllers/admin.py:161 ckan/views/admin.py:175 +#, python-format +msgid "" +"Cannot purge package %s as associated revision %s includes non-deleted " +"packages %s" +msgstr " ተዛማጅ ከለሳው %s ያልጠፉ ጥቅሎችን(ፓኬጆችን) %s ስለሚያካትት ጥቅል(ፓኬጅ) %s'ን ማጽዳት አይቻልም።" + +#: ckan/controllers/admin.py:183 ckan/views/admin.py:197 +#, python-format +msgid "Problem purging revision %s: %s" +msgstr "ክለሳ %s 'ን የማጽዳት ችግር: %s" + +#: ckan/controllers/admin.py:185 ckan/views/admin.py:199 +msgid "Purge complete" +msgstr "ጽዳቱ ሙሉ በሙሉ ተጠናቋል" + +#: ckan/controllers/admin.py:187 ckan/views/admin.py:201 +msgid "Action not implemented." +msgstr "ድርጊቱ/እርምጃው አልተተገበረም" + +#: ckan/controllers/api.py:127 ckan/controllers/api.py:218 +#: ckan/views/api.py:112 ckan/views/api.py:299 +msgid "Access denied" +msgstr "እንዳይገቡ ተከልክሏል" + +#: ckan/controllers/api.py:133 ckan/controllers/api.py:227 +#: ckan/logic/action/create.py:911 ckan/logic/converters.py:123 +#: ckan/logic/converters.py:148 ckan/logic/converters.py:173 +#: ckan/logic/validators.py:151 ckan/logic/validators.py:172 +#: ckan/logic/validators.py:193 ckan/logic/validators.py:202 +#: ckan/logic/validators.py:216 ckan/logic/validators.py:233 +#: ckan/logic/validators.py:246 ckan/logic/validators.py:270 +#: ckan/logic/validators.py:714 ckan/views/api.py:119 ckan/views/api.py:308 +msgid "Not found" +msgstr "አልተገኘም" + +#: ckan/controllers/api.py:139 ckan/views/api.py:126 +msgid "Bad request" +msgstr "አግባብ የሌለው ጥያቄ" + +#: ckan/controllers/api.py:167 +#, python-format +msgid "Action name not known: %s" +msgstr "የድርጊቱ/እርምጃው ስም አይታወክም፡ %s" + +#: ckan/controllers/api.py:188 ckan/views/api.py:268 +#, python-format +msgid "JSON Error: %s" +msgstr "JSON ስህተት: %s" + +#: ckan/controllers/api.py:194 ckan/views/api.py:274 +#, python-format +msgid "Bad request data: %s" +msgstr "አግባብ የሌለው የመረጃ ጥያቄ: %s" + +#: ckan/controllers/api.py:283 +msgid "No revision specified" +msgstr "ምንም ክለሳ አልተገለጸም" + +#: ckan/controllers/api.py:287 +#, python-format +msgid "There is no revision with id: %s" +msgstr "መለያ ቁጥር %s ያለው ክለሳ የለም" + +#: ckan/controllers/api.py:297 +msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" +msgstr "የሚታሰሰውን ቃል አላስገቡም ('since_id=UUID' ወይም 'since_time=TIMESTAMP')" + +#: ckan/controllers/api.py:309 +#, python-format +msgid "Could not read parameters: %r" +msgstr "የተሰጡትን ፓራሜትሮች ማንበብ አልተቻለም፡ %r" + +#: ckan/controllers/api.py:370 +#, python-format +msgid "Bad search option: %s" +msgstr "ልክ ያልሆነ የፍለጋ አማርጭ ፡ %s" + +#: ckan/controllers/api.py:373 +#, python-format +msgid "Unknown register: %s" +msgstr "ያልታወከ ተመዝጋቢ፡ %s" + +#: ckan/controllers/api.py:382 +#, python-format +msgid "Malformed qjson value: %r" +msgstr "በትክክል ያልተሰራ የ qjson ዋጋ፡ %r" + +#: ckan/controllers/api.py:392 +msgid "Request params must be in form of a json encoded dictionary." +msgstr "የጥያቀው ፓራትሮች በ json encoded dictionary ቅርጽ መሆን አለባቸው።" + +#: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 +#: ckan/controllers/group.py:226 ckan/controllers/group.py:394 +#: ckan/controllers/group.py:504 ckan/controllers/group.py:537 +#: ckan/controllers/group.py:567 ckan/controllers/group.py:578 +#: ckan/controllers/group.py:632 ckan/controllers/group.py:653 +#: ckan/controllers/group.py:714 ckan/controllers/group.py:746 +#: ckan/controllers/group.py:779 ckan/controllers/group.py:836 +#: ckan/controllers/group.py:933 ckan/controllers/package.py:1265 +#: ckan/controllers/package.py:1280 ckan/logic/action/create.py:1373 +#: ckan/views/feed.py:143 +msgid "Group not found" +msgstr "ቡድኑ አልተገኘም" + +#: ckan/controllers/feed.py:245 ckan/logic/action/create.py:1373 +#: ckan/views/feed.py:160 +msgid "Organization not found" +msgstr "ድርጅቱ አልተገኘም" + +#: ckan/controllers/group.py:130 ckan/controllers/group.py:581 +msgid "Incorrect group type" +msgstr "የተሳሳተ የቡድን አይነት" + +#: ckan/controllers/group.py:306 ckan/controllers/home.py:61 +#: ckan/controllers/package.py:256 ckan/lib/helpers.py:1036 +#: ckan/templates/header.html:87 ckan/templates/organization/edit_base.html:5 +#: ckan/templates/organization/edit_base.html:8 +#: ckan/templates/organization/index.html:3 +#: ckan/templates/organization/index.html:6 +#: ckan/templates/organization/index.html:18 +#: ckan/templates/organization/read_base.html:3 +#: ckan/templates/organization/read_base.html:6 +#: ckan/templates/package/base.html:14 ckan/views/home.py:46 +msgid "Organizations" +msgstr "ድርጅቶች" + +#: ckan/controllers/group.py:307 ckan/controllers/home.py:62 +#: ckan/controllers/package.py:257 ckan/lib/helpers.py:1037 +#: ckan/templates/group/base_form_page.html:6 ckan/templates/group/edit.html:4 +#: ckan/templates/group/edit_base.html:3 ckan/templates/group/edit_base.html:8 +#: ckan/templates/group/index.html:3 ckan/templates/group/index.html:6 +#: ckan/templates/group/index.html:18 ckan/templates/group/members.html:3 +#: ckan/templates/group/read_base.html:3 ckan/templates/group/read_base.html:6 +#: ckan/templates/header.html:88 ckan/templates/package/group_list.html:5 +#: ckan/templates/package/read_base.html:20 +#: ckan/templates/revision/diff.html:16 ckan/templates/revision/read.html:84 +#: ckan/tests/config/test_middleware.py:632 ckan/views/home.py:47 +msgid "Groups" +msgstr "ቡድኖች" + +#: ckan/controllers/group.py:308 ckan/controllers/home.py:63 +#: ckan/controllers/package.py:258 ckan/lib/helpers.py:1038 +#: ckan/logic/__init__.py:110 +#: ckan/templates/package/snippets/package_basic_fields.html:24 +#: ckan/templates/snippets/context/dataset.html:17 +#: ckan/templates/tag/index.html:3 ckan/templates/tag/index.html:6 +#: ckan/templates/tag/index.html:12 ckan/views/home.py:48 +msgid "Tags" +msgstr "መለዮዎች" + +#: ckan/controllers/group.py:309 ckan/controllers/home.py:64 +#: ckan/controllers/package.py:259 ckan/lib/helpers.py:1039 +#: ckan/views/home.py:49 +msgid "Formats" +msgstr "ቅርጸቶች" + +#: ckan/controllers/group.py:310 ckan/controllers/home.py:65 +#: ckan/controllers/package.py:260 ckan/lib/helpers.py:1040 +#: ckan/views/home.py:50 +msgid "Licenses" +msgstr "ፈቃዶች" + +#: ckan/controllers/group.py:396 ckan/controllers/group.py:513 +#: ckan/controllers/package.py:345 ckan/controllers/package.py:576 +#: ckan/controllers/package.py:789 ckan/controllers/package.py:1409 +#: ckan/controllers/package.py:1443 +#, python-format +msgid "User %r not authorized to edit %s" +msgstr "ተጠቃሚ %r ይህን %s ለማደስ ፍቃድ የለውም" + +#: ckan/controllers/group.py:443 +msgid "Not authorized to perform bulk update" +msgstr "ሰፊ ማሻሻያ ለማድረግ ፍቃድ የሎትም" + +#: ckan/controllers/group.py:461 +msgid "Unauthorized to create a group" +msgstr "ቡድን ለመፍጠር ፈካድ የሎትም" + +#: ckan/controllers/group.py:539 ckan/controllers/group.py:569 +#: ckan/controllers/package.py:944 ckan/controllers/package.py:992 +#: ckan/controllers/user.py:250 ckan/controllers/user.py:380 +#: ckan/controllers/user.py:551 ckan/views/user.py:193 ckan/views/user.py:300 +#: ckan/views/user.py:620 +msgid "Integrity Error" +msgstr "የአደረጃጀት ስህተት" + +#: ckan/controllers/group.py:595 +#, python-format +msgid "User %r not authorized to edit %s authorizations" +msgstr "ተጠቃሚ %r ይህን %s ፈቃዶችን ለማደስ ፍቃድ የለውም" + +#: ckan/controllers/group.py:615 ckan/controllers/group.py:630 +#, python-format +msgid "Unauthorized to delete group %s" +msgstr "%s ቡድን ለመሰረዝ ፍቃድ የለውም" + +#: ckan/controllers/group.py:621 +msgid "Organization has been deleted." +msgstr "ድርጅቱ ተሰርዟል።" + +#: ckan/controllers/group.py:623 +msgid "Group has been deleted." +msgstr "ቡድኑ ተሰርዟል።" + +#: ckan/controllers/group.py:625 +#, python-format +msgid "%s has been deleted." +msgstr "%s ተሰርዟል።" + +#: ckan/controllers/group.py:657 +#, python-format +msgid "User %r not authorized to edit members of %s" +msgstr "ተጠቃሚ %r የ %s አባላትን ለማደስ ፍቃድ የለውም" + +#: ckan/controllers/group.py:670 +#, python-format +msgid "Unauthorized to create group %s members" +msgstr "የ %s ቡድን ውስጥ አባላትን ለመፍጠር ፍቃድ የለውም" + +#: ckan/controllers/group.py:712 +#, python-format +msgid "Unauthorized to add member to group %s" +msgstr "የ %s ቡድን ውስጥ አባላትን ለመጨመር ፍቃድ የለውም" + +#: ckan/controllers/group.py:731 ckan/controllers/group.py:744 +#, python-format +msgid "Unauthorized to delete group %s members" +msgstr "የ %s ቡድን ውስጥ አባላትን ለማጥፋት ፍቃድ የለውም" + +#: ckan/controllers/group.py:738 +msgid "Group member has been deleted." +msgstr "የቡድን አባል ተሰርዟል።" + +#: ckan/controllers/group.py:762 ckan/controllers/package.py:436 +msgid "Select two revisions before doing the comparison." +msgstr "ንጽጽሩን ከማድረግዎ በፊት ሁለት ለውጦችን(ክለሳዎችን) ይምረጡ።" + +#: ckan/controllers/group.py:786 +msgid "CKAN Group Revision History" +msgstr "የ CKAN ቡድን ክለሳ ታሪክ" + +#: ckan/controllers/group.py:790 +msgid "Recent changes to CKAN Group: " +msgstr "በ CKAN ቡድን ላይ የቅርብ ጊዜ ለውጦች: " + +#: ckan/controllers/group.py:811 ckan/controllers/package.py:487 +msgid "Log message: " +msgstr "የምዝገባ(ማስታወሻ) መልእክት" + +#: ckan/controllers/group.py:861 ckan/controllers/package.py:1193 +#: ckan/controllers/user.py:719 ckan/views/user.py:650 +msgid "You are now following {0}" +msgstr "አሁን {0} ን እየተከተልክ ነው" + +#: ckan/controllers/group.py:881 ckan/controllers/package.py:1212 +#: ckan/controllers/user.py:739 ckan/views/user.py:672 +msgid "You are no longer following {0}" +msgstr "{0} ን ከአሁን በኋላ አይከተሉትም" + +#: ckan/controllers/group.py:901 ckan/controllers/user.py:584 +#: ckan/views/user.py:697 +#, python-format +msgid "Unauthorized to view followers %s" +msgstr "ተከታዮችን %s ለማየት ፍቃድ የለዎትም" + +#: ckan/controllers/home.py:35 +msgid "This site is currently off-line. Database is not initialised." +msgstr "ይህ ጣቢያ በአሁኑ ሰዓት ከመስመር ውጭ ነው፤ ዳታቤዙ አልተነሳም።" + +#: ckan/controllers/home.py:73 ckan/views/home.py:58 +#, python-format +msgid "Please update your profile and add your email address. " +msgstr "እባክዎን ፕሮፋሎዎን ያሻሽሉ እና የኢሜይል አድራሻዎን ያክሉ።" + +#: ckan/controllers/home.py:75 ckan/views/home.py:60 +#, python-format +msgid "%s uses your email address if you need to reset your password." +msgstr "የይለፍ ቃልዎን ዳግም ማጽደቅ ከፈለጉ %s የኢሜይል አድራሻዎን ይጠቀማል።" + +#: ckan/controllers/package.py:304 +msgid "Invalid search query: {error_message}" +msgstr "ልክ ያልኾነ የፍለጋ መጠይቅ: {error_message}" + +#: ckan/controllers/package.py:323 +msgid "Parameter \"{parameter_name}\" is not an integer" +msgstr "ፓራሜትር \"{parameter_name}\" ኢንቲጀር አይደለም" + +#: ckan/controllers/package.py:343 ckan/controllers/package.py:351 +#: ckan/controllers/package.py:389 ckan/controllers/package.py:456 +#: ckan/controllers/package.py:775 ckan/controllers/package.py:823 +#: ckan/controllers/package.py:841 ckan/controllers/package.py:942 +#: ckan/controllers/package.py:990 ckan/controllers/package.py:1042 +#: ckan/controllers/package.py:1089 ckan/controllers/package.py:1237 +#: ckan/controllers/package.py:1253 ckan/controllers/package.py:1316 +#: ckan/controllers/package.py:1415 ckan/controllers/package.py:1450 +#: ckan/controllers/package.py:1557 +msgid "Dataset not found" +msgstr "የመረጃ ስብስቡ አልተገኘም" + +#: ckan/controllers/package.py:377 ckan/controllers/package.py:379 +#: ckan/controllers/package.py:381 +#, python-format +msgid "Invalid revision format: %r" +msgstr "ልክ ያልሆነ የክለሳ ቅርጸት: %r" + +#: ckan/controllers/package.py:415 +msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." +msgstr "ይህን \"{package_type}\" አይነት የመረጃ ስብስብን መመልከት አይደገፍም ({file_!r})።" + +#: ckan/controllers/package.py:454 ckan/controllers/package.py:839 +#: ckan/controllers/package.py:940 ckan/controllers/package.py:988 +#: ckan/controllers/package.py:1239 +#, python-format +msgid "Unauthorized to read package %s" +msgstr "ጥቅል %s ለማንበብ ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:463 +msgid "CKAN Dataset Revision History" +msgstr "የ CKAN የመረጃ ስብስብ ክለሳ ታሪክ" + +#: ckan/controllers/package.py:466 +msgid "Recent changes to CKAN Dataset: " +msgstr "በ CKAN የመረጃ ስብስብ ላይ የቅርብ ጊዜ ለውጦች: " + +#: ckan/controllers/package.py:522 +msgid "Unauthorized to create a package" +msgstr "ጥቅል ለመፍጠር ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:598 +msgid "Unauthorized to edit this resource" +msgstr "ይህን የመረጃ ምንጭ ለማደስ ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:666 +msgid "Unauthorized to update dataset" +msgstr "የመረጃ ስብስብ ለማሻሻል ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:668 ckan/controllers/package.py:705 +#: ckan/controllers/package.py:731 +msgid "The dataset {id} could not be found." +msgstr "የመለያ ቁጥር(ID) {id} ያለው የመረጃ ስብስብ ሊገኝ አልቻለም።" + +#: ckan/controllers/package.py:672 +msgid "You must add at least one data resource" +msgstr "ቢያንስ አንድ የመረጃ ምንጭ መጨመር አለብዎት" + +#: ckan/controllers/package.py:703 +msgid "Unauthorized to create a resource" +msgstr "የመረጃ ምንጭ ለመፍጠር ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:736 +msgid "Unauthorized to create a resource for this package" +msgstr "ለዚህ ጥቅል የመረጃ ምንጭ ለመፍጠር ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:950 +msgid "Unable to add package to search index." +msgstr "ለፍለጋ ኢንዴክስ ጥቅል ማከል አልተቻለም።" + +#: ckan/controllers/package.py:998 +msgid "Unable to update search index." +msgstr "የፍለጋ ኢንዴክስ ማሻሻል አልቻለም።" + +#: ckan/controllers/package.py:1035 +msgid "Dataset has been deleted." +msgstr "የመረጃ ስብስብ ተሰርዟል።" + +#: ckan/controllers/package.py:1040 ckan/controllers/package.py:1058 +#, python-format +msgid "Unauthorized to delete package %s" +msgstr "ይህን %s ጥቅል ለመሰረዝ ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:1063 +msgid "Resource has been deleted." +msgstr "የመረጃ ምንጭ ተሰርዟል።" + +#: ckan/controllers/package.py:1074 +#, python-format +msgid "Unauthorized to delete resource %s" +msgstr "ይህን %s የመረጃ ምንጭ ለመሰረዝ ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:1133 ckan/controllers/package.py:1576 +msgid "Resource view not found" +msgstr "የመረጃ ምንጩ እይታ አልተገኘም" + +#: ckan/controllers/package.py:1172 +msgid "Resource data not found" +msgstr "የመረጃ ምንጩ መረጃ አልተገኘም" + +#: ckan/controllers/package.py:1181 +msgid "No download is available" +msgstr "ምንም የሚወርድ ነገር የለም" + +#: ckan/controllers/package.py:1318 +#, python-format +msgid "Unauthorized to read dataset %s" +msgstr "ይህን %s የመረጃ ስብስብ ለማንበብ ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:1426 +#, python-format +msgid "Unauthorized to read resource %s" +msgstr "ይህን %s የመረጃ ምንጭ ለማንበብ ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:1490 +msgid "Unauthorized to edit resource" +msgstr "የመረጃ ምንጭ ለማደስ ፍቃድ የለዎትም" + +#: ckan/controllers/package.py:1508 +msgid "View not found" +msgstr "እይታ አልተገኘም" + +#: ckan/controllers/package.py:1514 +msgid "View Type Not found" +msgstr "የእይታ አይነት አልተገኘም" + +#: ckan/controllers/package.py:1570 +msgid "Bad resource view data" +msgstr "መጥፎ የመረጃ እይታ" + +#: ckan/controllers/package.py:1579 +msgid "Resource view not supplied" +msgstr "የመረጃ እይታ አልቀረበም" + +#: ckan/controllers/package.py:1608 +msgid "No preview has been defined." +msgstr "ምንም ቅድመ-እይታ አልተገለጸም።" + +#: ckan/controllers/revision.py:45 +msgid "CKAN Repository Revision History" +msgstr "የ CKAN ማከማቻ ክለሳ ታሪክ" + +#: ckan/controllers/revision.py:47 +msgid "Recent changes to the CKAN repository." +msgstr "በ CKAN ማከማቻ ላይ የቅርብ ጊዜ ለውጦች" + +#: ckan/controllers/revision.py:111 +#, python-format +msgid "Datasets affected: %s.\n" +msgstr "የተለወጡ የመረጃ ስብስቦች: %s.\n" + +#: ckan/controllers/revision.py:191 +msgid "Revision updated" +msgstr "የተሻሻለ ክለሳ" + +#: ckan/controllers/tag.py:60 +msgid "Other" +msgstr "ሌላ" + +#: ckan/controllers/tag.py:74 +msgid "Tag not found" +msgstr "መለዮ አልተገኘም" + +#: ckan/controllers/user.py:162 ckan/views/user.py:290 +msgid "Unauthorized to register as a user." +msgstr "እንደ ተተቃሚ ለመመዝገብ ፍቃድ የለዎትም።" + +#: ckan/controllers/user.py:180 +msgid "Unauthorized to create a user" +msgstr "ተጠቃሚ ለመፍጠር ፍቃድ የለዎትም" + +#: ckan/controllers/user.py:211 ckan/views/user.py:426 +msgid "Unauthorized to delete user with id \"{user_id}\"." +msgstr "የመለያ ቁጥር(ID) \"{user_id}\" ያለውን ተጠቃሚ ለመሰረዝ ፍቃድ የለዎትም" + +#: ckan/controllers/user.py:225 ckan/controllers/user.py:288 +#: ckan/views/user.py:168 ckan/views/user.py:444 +msgid "No user specified" +msgstr "ምንም ተጠቃሚ አልተጠቀሰም" + +#: ckan/controllers/user.py:231 ckan/controllers/user.py:313 +#: ckan/controllers/user.py:376 ckan/controllers/user.py:547 +#: ckan/views/user.py:218 ckan/views/user.py:246 ckan/views/user.py:450 +#: ckan/views/user.py:616 +#, python-format +msgid "Unauthorized to edit user %s" +msgstr "ተጠቃሚ %s ን ለማደስ ፍቃድ የለዎትም" + +#: ckan/controllers/user.py:233 ckan/controllers/user.py:248 +#: ckan/controllers/user.py:315 ckan/controllers/user.py:378 +#: ckan/controllers/user.py:523 ckan/controllers/user.py:549 +#: ckan/logic/auth/update.py:179 ckan/views/user.py:220 ckan/views/user.py:248 +#: ckan/views/user.py:315 ckan/views/user.py:452 ckan/views/user.py:573 +#: ckan/views/user.py:618 +msgid "User not found" +msgstr "ተጠቃሚ አልተገኘም" + +#: ckan/controllers/user.py:235 ckan/controllers/user.py:368 +#: ckan/views/user.py:226 ckan/views/user.py:454 +msgid "Profile updated" +msgstr "ፕሮፋይል ተሻሽⶀል" + +#: ckan/controllers/user.py:246 ckan/views/user.py:313 +#, python-format +msgid "Unauthorized to create user %s" +msgstr "ተጠቃሚ %s ለመፍጠር ፍቃድ የለዎትም" + +#: ckan/controllers/user.py:252 ckan/views/user.py:306 +msgid "Bad Captcha. Please try again." +msgstr "መጥፎ Captcha፤ እባክዎ እንደገና ይሞክሩ።" + +#: ckan/controllers/user.py:266 ckan/views/user.py:325 +#, python-format +msgid "" +"User \"%s\" is now registered but you are still logged in as \"%s\" from " +"before" +msgstr "ተጠቃሚ \"%s\" አሁን ተመዝግቧል፤ ነገር ግን እርስዎ እንደ \"%s\" በመጠቀም ላይ ነዎት።" + +#: ckan/controllers/user.py:294 ckan/views/user.py:174 +msgid "Unauthorized to edit a user." +msgstr "ተጠቃሚን ለማደስ ፍቃድ የለዎትም።" + +#: ckan/controllers/user.py:321 ckan/views/user.py:252 +#, python-format +msgid "User %s not authorized to edit %s" +msgstr "ተጠቃሚ %s %sን ለማደስ ፍቃድ የለውም" + +#: ckan/controllers/user.py:386 ckan/views/user.py:210 +msgid "Password entered was incorrect" +msgstr "ያስገቡት የይለፍ ቃል የተሳሳተ ነው" + +#: ckan/controllers/user.py:387 ckan/templates/user/edit_user_form.html:29 +#: ckan/views/user.py:212 +msgid "Old Password" +msgstr "የድሮ የይለፍ ቃል" + +#: ckan/controllers/user.py:387 ckan/views/user.py:212 +msgid "incorrect password" +msgstr "የተሳሳተ የይለፍ ቃል" + +#: ckan/controllers/user.py:427 ckan/views/user.py:386 +msgid "Login failed. Bad username or password." +msgstr "ለመግባት ያደረጉት ሙከራ የተሳሳተ ልዩ ስም ወይም ይለፍ ቃል በማስገባትዎ አልተሳካም።" + +#: ckan/controllers/user.py:460 ckan/views/user.py:504 +msgid "Unauthorized to request reset password." +msgstr "የይለፍ ቃል ዳግም የማጽደቅ ጥያቄ ለማቅረብ ፍቃድ የለውም" + +#: ckan/controllers/user.py:489 ckan/views/user.py:530 +#, python-format +msgid "\"%s\" matched several users" +msgstr "\"%s\" ከብዙ ተጠቃሚዎች ጋር ተዛምዷል(ተመሳስⶀል )" + +#: ckan/controllers/user.py:491 ckan/controllers/user.py:493 +#: ckan/views/user.py:532 ckan/views/user.py:534 +#, python-format +msgid "No such user: %s" +msgstr "%s የሚባል ተጠቃሚ የለም" + +#: ckan/controllers/user.py:498 ckan/views/user.py:542 +msgid "Please check your inbox for a reset code." +msgstr "እባክዎ ዳግም ማስጀመሪያ ኮድ ለማግኘት የኢሜይልዎን ገቢ መልዕክት ሳጥንዎን ይመልከቱ።" + +#: ckan/controllers/user.py:502 ckan/views/user.py:546 +#, python-format +msgid "Could not send reset link: %s" +msgstr "ዳግም ማስጀመር አገናኝ(link) %s መላክ አልተቻለም" + +#: ckan/controllers/user.py:515 ckan/views/user.py:568 +msgid "Unauthorized to reset password." +msgstr "የይለፍ ቃል ዳግም ለማጽደቅ ፍቃድ የለውም።" + +#: ckan/controllers/user.py:527 ckan/views/user.py:577 +msgid "Invalid reset key. Please try again." +msgstr "ያስገቡት ልክ ያልሆነ ዳግም ማስጀመሪያ ቁልፍ ነው፤ እባክዎ እንደገና ይሞክሩ።" + +#: ckan/controllers/user.py:544 ckan/views/user.py:613 +msgid "Your password has been reset." +msgstr "የይለፍ ቃልዎ ዳግም ተዘጋጅቷል።" + +#: ckan/controllers/user.py:566 +msgid "Your password must be 4 characters or longer." +msgstr "የይለፍ ቃልዎ 4 ትዕምርት(character) ወይም ከዚያ በላይ መሆን አለበት።" + +#: ckan/controllers/user.py:569 ckan/views/user.py:592 +msgid "The passwords you entered do not match." +msgstr "ያስገባኸው የይለፍ ቃል ከበፊቱ ጋር አይመሳሰልም።" + +#: ckan/controllers/user.py:572 ckan/views/user.py:595 +msgid "You must provide a password" +msgstr "የይለፍ ቃል መስጠት(ማቅረብ) አለብዎት" + +#: ckan/controllers/user.py:640 ckan/views/dashboard.py:58 +msgid "Follow item not found" +msgstr "የሚከተሉት ንጥል አልተገኘም" + +#: ckan/controllers/user.py:644 ckan/views/dashboard.py:62 +msgid "{0} not found" +msgstr "{0} አልተገኘም" + +#: ckan/controllers/user.py:658 ckan/views/dashboard.py:76 +msgid "Everything" +msgstr "ሁሉም ነገር" + +#: ckan/controllers/util.py:18 ckan/logic/action/__init__.py:62 +msgid "Missing Value" +msgstr "የጠፋ(የተረሳ) ዋጋ" + +#: ckan/controllers/util.py:23 +msgid "Redirecting to external site is not allowed." +msgstr "ወደ ውጫዊ ጣብያ መቀየር አይፈቀድም።" + +#: ckan/lib/activity_streams.py:60 +msgid "{actor} added the tag {tag} to the dataset {dataset}" +msgstr "{actor} መለዮ {tag} የመረጃ ስብስብ {dataset} ላይ ጨመረ።" + +#: ckan/lib/activity_streams.py:63 +msgid "{actor} updated the group {group}" +msgstr "{actor} ቡድን {group} አሻሻለ።" + +#: ckan/lib/activity_streams.py:66 +msgid "{actor} updated the organization {organization}" +msgstr "{actor} ድርጅት {organization} አሻሻለ።" + +#: ckan/lib/activity_streams.py:69 +msgid "{actor} updated the dataset {dataset}" +msgstr "{actor} የመረጃ ስብስብ {dataset} አሻሻለ።" + +#: ckan/lib/activity_streams.py:72 +msgid "{actor} changed the extra {extra} of the dataset {dataset}" +msgstr "{actor} የመረጃ ስብስብ {dataset} ን ተጨማሪ(ትርፍ) {extra} ለወጠ።" + +#: ckan/lib/activity_streams.py:75 +msgid "{actor} updated the resource {resource} in the dataset {dataset}" +msgstr "{actor} የመረጃ ስብስብ {dataset} ን የመረጃ ምንጭ {resource} አሻሻለ።" + +#: ckan/lib/activity_streams.py:78 +msgid "{actor} updated their profile" +msgstr "{actor} ፕሮፋይላቸውን አሻሽለዋል።" + +#: ckan/lib/activity_streams.py:81 +msgid "{actor} deleted the group {group}" +msgstr "{actor} ቡድን {group} ን አጠፋ።" + +#: ckan/lib/activity_streams.py:84 +msgid "{actor} deleted the organization {organization}" +msgstr "{actor} ድርጅት {organization} ን አጠፋ።" + +#: ckan/lib/activity_streams.py:87 +msgid "{actor} deleted the dataset {dataset}" +msgstr "{actor} የመረጃ ስብስብ {dataset} ን አጠፋ።" + +#: ckan/lib/activity_streams.py:90 +msgid "{actor} deleted the extra {extra} from the dataset {dataset}" +msgstr "{actor} ከመረጃ ስብስብ {dataset} ተጨማሪ(ትርፍ) {extra} ን አጠፋ።" + +#: ckan/lib/activity_streams.py:93 +msgid "{actor} deleted the resource {resource} from the dataset {dataset}" +msgstr "{actor} ከመረጃ ስብስብ {dataset} የመረጃ ምንጭ {resource} አጠፋ።" + +#: ckan/lib/activity_streams.py:97 +msgid "{actor} created the group {group}" +msgstr "{actor} ቡድን {group} ፈጠረ።" + +#: ckan/lib/activity_streams.py:100 +msgid "{actor} created the organization {organization}" +msgstr "{actor} ድርጅት {organization} ፈጠረ።" + +#: ckan/lib/activity_streams.py:103 +msgid "{actor} created the dataset {dataset}" +msgstr "{actor} የመረጃ ስብስብ {dataset} ፈጠረ።" + +#: ckan/lib/activity_streams.py:106 +msgid "{actor} added the extra {extra} to the dataset {dataset}" +msgstr "{actor} ለመረጃ ስብስብ {dataset} ን ተጨማሪ(ትርፍ) {extra} ፈጠረ።" + +#: ckan/lib/activity_streams.py:109 +msgid "{actor} added the resource {resource} to the dataset {dataset}" +msgstr "{actor} ለመረጃ ስብስብ {dataset} ን የመረጃ ምንጭ {resource} ፈጠረ።" + +#: ckan/lib/activity_streams.py:112 +msgid "{actor} signed up" +msgstr "{actor} ተመዝግቧል" + +#: ckan/lib/activity_streams.py:115 +msgid "{actor} removed the tag {tag} from the dataset {dataset}" +msgstr "{actor} ከመረጃ ስብስብ {dataset} መለዮ {tag} አጠፋ።" + +#: ckan/lib/activity_streams.py:118 +msgid "{actor} started following {dataset}" +msgstr "{actor} የመረጃ ስብስብ {dataset} ን መከተል ጀመረ።" + +#: ckan/lib/activity_streams.py:121 +msgid "{actor} started following {user}" +msgstr "{actor} ተጠቃሚ {user} ን መከተል ጀመረ።" + +#: ckan/lib/activity_streams.py:124 +msgid "{actor} started following {group}" +msgstr "{actor} ቡድን {group} ን መከተል ጀመረ።" + +#: ckan/lib/datapreview.py:265 ckan/templates/group/edit_base.html:16 +#: ckan/templates/organization/edit_base.html:17 +#: ckan/templates/package/resource_read.html:38 +#: ckan/templates/package/resource_views.html:4 +msgid "View" +msgstr "እይታ" + +#: ckan/lib/email_notifications.py:103 +msgid "{n} new activity from {site_title}" +msgid_plural "{n} new activities from {site_title}" +msgstr[0] "{n} አዲስ እንቅስቃሴ ከ {site_title}" +msgstr[1] "{n} አዲስ እንቅስቃሴዎች ከ {site_title}" + +#: ckan/lib/formatters.py:19 +msgid "January" +msgstr "ጥር" + +#: ckan/lib/formatters.py:23 +msgid "February" +msgstr "የካቲት" + +#: ckan/lib/formatters.py:27 +msgid "March" +msgstr "መጋቢት" + +#: ckan/lib/formatters.py:31 +msgid "April" +msgstr "ሚያዚያ" + +#: ckan/lib/formatters.py:35 +msgid "May" +msgstr "ግንቦት" + +#: ckan/lib/formatters.py:39 +msgid "June" +msgstr "ሰኔ" + +#: ckan/lib/formatters.py:43 +msgid "July" +msgstr "ሃምሌ" + +#: ckan/lib/formatters.py:47 +msgid "August" +msgstr "ነሃሴ" + +#: ckan/lib/formatters.py:51 +msgid "September" +msgstr "መስከረም" + +#: ckan/lib/formatters.py:55 +msgid "October" +msgstr "ጥምቀት" + +#: ckan/lib/formatters.py:59 +msgid "November" +msgstr "ህዳር" + +#: ckan/lib/formatters.py:63 +msgid "December" +msgstr "ታህሳስ" + +#: ckan/lib/formatters.py:114 +msgid "Just now" +msgstr "አሁን" + +#: ckan/lib/formatters.py:116 +msgid "{mins} minute ago" +msgid_plural "{mins} minutes ago" +msgstr[0] "ከ {mins} ደቂቃ በፊት" +msgstr[1] "ከ {mins} ደቂቃዎች በፊት" + +#: ckan/lib/formatters.py:119 +msgid "{hours} hour ago" +msgid_plural "{hours} hours ago" +msgstr[0] "ከ {hours} ሰዐት በፊት" +msgstr[1] "ከ {hours} ሰዐታት በፊት" + +#: ckan/lib/formatters.py:125 +msgid "{days} day ago" +msgid_plural "{days} days ago" +msgstr[0] "ከ {days} ቀን በፊት" +msgstr[1] "ከ {days} ቀናት በፊት" + +#: ckan/lib/formatters.py:128 +msgid "{months} month ago" +msgid_plural "{months} months ago" +msgstr[0] "ከ {months} ወር በፊት" +msgstr[1] "ከ {months} ወራት በፊት" + +#: ckan/lib/formatters.py:130 +msgid "over {years} year ago" +msgid_plural "over {years} years ago" +msgstr[0] "ከ {years} ዓመት በፊት" +msgstr[1] "ከ {years} ዓመታት በፊት" + +#: ckan/lib/formatters.py:146 +msgid "{month} {day}, {year}, {hour:02}:{min:02} ({timezone})" +msgstr "" + +#: ckan/lib/formatters.py:151 +msgid "{month} {day}, {year}" +msgstr "" + +#: ckan/lib/formatters.py:167 +msgid "{bytes} bytes" +msgstr "" + +#: ckan/lib/formatters.py:169 +msgid "{kibibytes} KiB" +msgstr "" + +#: ckan/lib/formatters.py:171 +msgid "{mebibytes} MiB" +msgstr "" + +#: ckan/lib/formatters.py:173 +msgid "{gibibytes} GiB" +msgstr "" + +#: ckan/lib/formatters.py:175 +msgid "{tebibytes} TiB" +msgstr "" + +#: ckan/lib/formatters.py:187 +msgid "{n}" +msgstr "" + +#: ckan/lib/formatters.py:189 +msgid "{k}k" +msgstr "" + +#: ckan/lib/formatters.py:191 +msgid "{m}M" +msgstr "" + +#: ckan/lib/formatters.py:193 +msgid "{g}G" +msgstr "" + +#: ckan/lib/formatters.py:195 +msgid "{t}T" +msgstr "" + +#: ckan/lib/formatters.py:197 +msgid "{p}P" +msgstr "" + +#: ckan/lib/formatters.py:199 +msgid "{e}E" +msgstr "" + +#: ckan/lib/formatters.py:201 +msgid "{z}Z" +msgstr "" + +#: ckan/lib/formatters.py:203 +msgid "{y}Y" +msgstr "" + +#: ckan/lib/helpers.py:1251 +msgid "Update your avatar at gravatar.com" +msgstr "አቫታርዎን gravatar.com ላይ ያሻሽሉ" + +#: ckan/lib/helpers.py:1523 ckan/lib/helpers.py:1536 +msgid "Unknown" +msgstr "ያልታወቀ" + +#: ckan/lib/helpers.py:1587 +msgid "Unnamed resource" +msgstr "ያልተሰየመ የመረጃ ምንጭ" + +#: ckan/lib/helpers.py:1627 +msgid "Created new dataset." +msgstr "አዲስ የመረጃ ስብስብ ተፈጠⶂል።" + +#: ckan/lib/helpers.py:1629 +msgid "Edited resources." +msgstr "የተለወጡ የመረጃ ምንጮች" + +#: ckan/lib/helpers.py:1631 +msgid "Edited settings." +msgstr "የታደሱ ውቅሮች" + +#: ckan/lib/helpers.py:1877 +msgid "{number} view" +msgid_plural "{number} views" +msgstr[0] "{number} እይታ" +msgstr[1] "{number} እይታዎች" + +#: ckan/lib/helpers.py:1879 +msgid "{number} recent view" +msgid_plural "{number} recent views" +msgstr[0] "{number} የቅርብ ጊዜ እይታ" +msgstr[1] "{number} የቅርብ ጊዜ እይታዎች" + +#: ckan/lib/mailer.py:46 +#, python-format +msgid "%s <%s>" +msgstr "" + +#: ckan/lib/mailer.py:116 +msgid "No recipient email address available!" +msgstr "ምንም የተቀባይ የኢሜይል አድራሻ የለም!" + +#: ckan/lib/mailer.py:134 ckan/templates/home/snippets/stats.html:17 +msgid "organization" +msgstr "ድርጅት" + +#: ckan/lib/mailer.py:135 ckan/templates/home/snippets/stats.html:23 +msgid "group" +msgstr "ቡድን" + +#: ckan/lib/navl/dictization_functions.py:16 +#: ckan/lib/navl/dictization_functions.py:19 +#: ckan/lib/navl/dictization_functions.py:22 +#: ckan/lib/navl/dictization_functions.py:25 +#: ckan/lib/navl/dictization_functions.py:28 +#: ckan/lib/navl/dictization_functions.py:31 +#: ckan/lib/navl/dictization_functions.py:34 +#: ckan/lib/navl/dictization_functions.py:37 ckan/lib/navl/validators.py:27 +#: ckan/lib/navl/validators.py:34 ckan/lib/navl/validators.py:54 +#: ckan/logic/action/get.py:2033 ckan/logic/action/update.py:261 +#: ckan/logic/validators.py:615 +msgid "Missing value" +msgstr "የጠፋ(የተረሳ) ዋጋ" + +#: ckan/lib/navl/validators.py:68 +#, python-format +msgid "The input field %(name)s was not expected." +msgstr "የግብዓት መስኩ %(name)s አልተጠበቀም።" + +#: ckan/lib/navl/validators.py:120 +msgid "Please enter an integer value" +msgstr "እባክዎ ኢንቲጀር እሴትን ያስገቡ" + +#: ckan/lib/navl/validators.py:126 +msgid "Must be a Unicode string value" +msgstr "የዩኒኮድ ሕብረቁምፊ(string) እሴት መሆን አለበት" + +#: ckan/logic/__init__.py:99 ckan/logic/action/__init__.py:60 +msgid "Package resource(s) invalid" +msgstr "ጥቅል መርጃ (ዎች) አያገለግሉም" + +#: ckan/logic/__init__.py:106 ckan/logic/__init__.py:108 +#: ckan/logic/action/__init__.py:62 ckan/logic/action/__init__.py:64 +msgid "Extras" +msgstr "ተጨማሪ(ትርፍ) ነገሮች" + +#: ckan/logic/converters.py:76 ckan/logic/converters.py:91 +#, python-format +msgid "Tag vocabulary \"%s\" does not exist" +msgstr "የመለዮ ዝርዝር \"%s\" የለም" + +#: ckan/logic/converters.py:182 +msgid "Could not parse as valid JSON" +msgstr "" + +#: ckan/logic/validators.py:35 ckan/logic/validators.py:44 +msgid "An organization must be provided" +msgstr "ድርጅት መሰጠት አለበት" + +#: ckan/logic/validators.py:49 +msgid "Organization does not exist" +msgstr "ድርጅት የለም" + +#: ckan/logic/validators.py:54 +msgid "You cannot add a dataset to this organization" +msgstr "ወደዚህ ድርጅት የመረጃ ስብስብ መጨመር አይችሉም" + +#: ckan/logic/validators.py:94 +msgid "Invalid integer" +msgstr "ልክ ያልሆነ ኢንቲጀር" + +#: ckan/logic/validators.py:99 +msgid "Must be a natural number" +msgstr "ተፈጥሯዊ ቁጥር መሆን አለበት" + +#: ckan/logic/validators.py:105 +msgid "Must be a postive integer" +msgstr "አዎንታዊ ኢንቲጀር መሆን አለበት" + +#: ckan/logic/validators.py:132 +msgid "Date format incorrect" +msgstr "የቀን ቅርጸት ትክክል አይደለም" + +#: ckan/logic/validators.py:141 +msgid "No links are allowed in the log_message." +msgstr "በ log_message ውስጥ ምንም አገናኞች(links) አይፈቀዱም" + +#: ckan/logic/validators.py:161 +msgid "Dataset id already exists" +msgstr "የመረጃ ስብስቡ መለያ ቁጥር አስቀድሞም ይገኛል" + +#: ckan/logic/validators.py:202 +msgid "Resource" +msgstr "የመረጃ ምንጭ" + +#: ckan/logic/validators.py:256 +msgid "That group name or ID does not exist." +msgstr "ያ የቡድን ስም ወይም መለያ ቁጥር የለም።" + +#: ckan/logic/validators.py:270 +msgid "Activity type" +msgstr "የእንቅስቃሴ አይነት" + +#: ckan/logic/validators.py:333 +msgid "Names must be strings" +msgstr "" + +#: ckan/logic/validators.py:337 +msgid "That name cannot be used" +msgstr "ስሞች ሕብረቁምፊዎች መሆን አለባቸው" + +#: ckan/logic/validators.py:340 +#, python-format +msgid "Must be at least %s characters long" +msgstr "ቢያንስ %s ቁምፊዎች(characters) መሆን አለበት" + +#: ckan/logic/validators.py:342 ckan/logic/validators.py:631 +#, python-format +msgid "Name must be a maximum of %i characters long" +msgstr "ስም ቢበዛ % i ቁምፊዎች መሆን አለበት" + +#: ckan/logic/validators.py:345 +msgid "" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" +msgstr "" +"የእንግሊዘኛ አነስተኛ ፊደል ና ቁጥር ቁምፊዎች(ascii characters) እና እነዚህን ምልክቶች '-_'መሆን አለበት።" + +#: ckan/logic/validators.py:363 +msgid "That URL is already in use." +msgstr "ያ ዩአርኤል አስቀድሞ ጥቅም ላይ ውሏል።" + +#: ckan/logic/validators.py:368 +#, python-format +msgid "Name \"%s\" length is less than minimum %s" +msgstr "ስም \"%s\" ርዝመት ከአነስተኛው ገደብ %s በታች ነው" + +#: ckan/logic/validators.py:372 +#, python-format +msgid "Name \"%s\" length is more than maximum %s" +msgstr "ስም \"%s\" ርዝመት ከከፍተኛው ገደብ %s በታች ነው" + +#: ckan/logic/validators.py:378 +#, python-format +msgid "Version must be a maximum of %i characters long" +msgstr "ስሪት ቢበዛ % i ቁምፊዎች መሆን አለበት" + +#: ckan/logic/validators.py:396 +#, python-format +msgid "Duplicate key \"%s\"" +msgstr "የተደገመ ቁልፍ \"%s\"" + +#: ckan/logic/validators.py:412 +msgid "Group name already exists in database" +msgstr "የቡድን ስም የመረጃ-ጎታ(database) ውስጥ ይገኛል" + +#: ckan/logic/validators.py:418 +#, python-format +msgid "Tag \"%s\" length is less than minimum %s" +msgstr "መለዮ \"%s\" ርዝመት ከአነስተኛው ገደብ %s በታች ነው" + +#: ckan/logic/validators.py:422 +#, python-format +msgid "Tag \"%s\" length is more than maximum %i" +msgstr "መለዮ \"%s\" ርዝመት ከከፍተኛው ገደብ %i በታች ነው" + +#: ckan/logic/validators.py:430 +#, python-format +msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." +msgstr "" +"መለዮ \"%s\" ነጠላ የአነስተኛ ፊደል (ascii) እና ቁጥር ቁምፊዎች(characters) እና እነዚህን ምልክቶች " +"'-_'መሆን አለበት።" + +#: ckan/logic/validators.py:438 +#, python-format +msgid "Tag \"%s\" must not be uppercase" +msgstr "መለዮ \"%s\" የእንግሊዘኛ አቢይ ሆሄ(uppercase) መሆን የለበትም" + +#: ckan/logic/validators.py:547 +msgid "User names must be strings" +msgstr "ልዩ-ስሞች ሕብረቁምፊዎች መሆን አለባቸው" + +#: ckan/logic/validators.py:562 +msgid "That login name is not available." +msgstr "ያ የመለያ ስም አልተገኘም።" + +#: ckan/logic/validators.py:566 +msgid "That login name can not be modified." +msgstr "ያ የመለያ ስም መለወጥ አይቻልም።" + +#: ckan/logic/validators.py:577 +msgid "Please enter both passwords" +msgstr "እባክዎ ሁለቱንም የይለፍ ቃላት ያስገቡ" + +#: ckan/logic/validators.py:585 +msgid "Passwords must be strings" +msgstr "የይለፍ-ቃላት ህብረቁምፊዎች መሆን አለባቸው" + +#: ckan/logic/validators.py:589 +msgid "Your password must be 8 characters or longer" +msgstr "የይለፍ ቃልዎ 8 ቁምፊዎች ወይም ከዚያ በላይ መሆን አለበት" + +#: ckan/logic/validators.py:598 +msgid "The passwords you entered do not match" +msgstr "ያስገባሃቸው የይለፍ ቃሎች አይዛመዱም" + +#: ckan/logic/validators.py:619 +msgid "" +"Edit not allowed as it looks like spam. Please avoid links in your " +"description." +msgstr "" +"አይፈለጌ መልዕክት ይመስላል ስለሚመስሉ አርትኦት(እደሳ) አይፈቀድም። እባክዎ በእርስዎ ዝርዝር ውስጥ ያሉ አገናኞችን " +"ያስወግዱ!" + +#: ckan/logic/validators.py:628 +#, python-format +msgid "Name must be at least %s characters long" +msgstr "ስም ቢያንስ %s ቁምፊዎች መሆን አለበት" + +#: ckan/logic/validators.py:636 +msgid "That vocabulary name is already in use." +msgstr "ያን የቃላት-ዝርዝር ስም አስቀድሞም ጥቅም ላይ ውሏል። " + +#: ckan/logic/validators.py:642 +#, python-format +msgid "Cannot change value of key from %s to %s. This key is read-only" +msgstr "የቁልፍ እሴት ከ %s ወደ %s መለወጥ አይቻልም። ይህ ቁልፍ ተነባቢ ብቻ ነው!" + +#: ckan/logic/validators.py:651 +msgid "Tag vocabulary was not found." +msgstr "የመለያ ዝርዝር አልተገኘም። " + +#: ckan/logic/validators.py:664 +#, python-format +msgid "Tag %s does not belong to vocabulary %s" +msgstr "መለያ %s የዝርዝር %s አይደለም" + +#: ckan/logic/validators.py:670 +msgid "No tag name" +msgstr "ምንም የመለያ ስም የለም" + +#: ckan/logic/validators.py:683 +#, python-format +msgid "Tag %s already belongs to vocabulary %s" +msgstr "መለያ %s ቀድሞውኑ የዝርዝር %s ነው" + +#: ckan/logic/validators.py:706 +msgid "Please provide a valid URL" +msgstr "እባክህ ልክ የሆነ ዩአርኤል ያቅርቡ" + +#: ckan/logic/validators.py:720 +msgid "role does not exist." +msgstr "ሚናው የለም።" + +#: ckan/logic/validators.py:749 +msgid "Datasets with no organization can't be private." +msgstr "ምንም ድርጅት የሌላቸው የመረጃ ስብስቦች የግል ሊሆኑ አይችሉም።" + +#: ckan/logic/validators.py:755 +msgid "Not a list" +msgstr "ዝርዝር አይደለም" + +#: ckan/logic/validators.py:758 +msgid "Not a string" +msgstr "ሕብረቁምፊ(string) አይደለም" + +#: ckan/logic/validators.py:790 +msgid "This parent would create a loop in the hierarchy" +msgstr "ይህ ወላጅ በሥነ-ተዋረድ ውስጥ ሁረት ይፈጥራል" + +#: ckan/logic/validators.py:800 +msgid "\"filter_fields\" and \"filter_values\" should have the same length" +msgstr "\"filter_fields\" እና \"filter_values\" ተመሳሳይ ርዝመት ሊኖራቸው ይገባል" + +#: ckan/logic/validators.py:811 +msgid "\"filter_fields\" is required when \"filter_values\" is filled" +msgstr "\"filter_values\" ሲሞላ \"filter_fields\" ያስፈልጋል" + +#: ckan/logic/validators.py:814 +msgid "\"filter_values\" is required when \"filter_fields\" is filled" +msgstr "\"filter_fields\" ሲሞላ \"filter_values\" ያስፈልጋል" + +#: ckan/logic/validators.py:828 +msgid "There is a schema field with the same name" +msgstr "ተመሳሳይ ስም ያለው የመርጃ መስክ አለ" + +#: ckan/logic/validators.py:854 +msgid "Email {email} is not a valid format" +msgstr "ኢሜል {email} ትክክለኛ ቅርጸት የለውም" + +#: ckan/logic/action/create.py:184 ckan/logic/action/create.py:668 +#, python-format +msgid "REST API: Create object %s" +msgstr "REST ኤፒአይ: ቅንጣት %s ፍጠር" + +#: ckan/logic/action/create.py:547 +#, python-format +msgid "REST API: Create package relationship: %s %s %s" +msgstr "REST ኤፒአይ: ጥቅል ግንኙነት %s %s %s ፍጠር" + +#: ckan/logic/action/create.py:588 +#, python-format +msgid "REST API: Create member object %s" +msgstr "REST ኤፒአይ: የአባል ቅንጣት %s ፍጠር" + +#: ckan/logic/action/create.py:807 +msgid "Trying to create an organization as a group" +msgstr "አንድ ድርጅት እንደ ቡድን የመፍጠር ሙከራ" + +#: ckan/logic/action/create.py:896 +msgid "You must supply a package id or name (parameter \"package\")." +msgstr "የጥቅል መለያ ቁጥር ወይም ስም (parameter \"package\") ማቅረብ አለብዎት።" + +#: ckan/logic/action/create.py:899 +msgid "You must supply a rating (parameter \"rating\")." +msgstr "ደረጃ አሰጣጥ (parameter \"package\") ማቅረብ አለብዎት።" + +#: ckan/logic/action/create.py:904 +msgid "Rating must be an integer value." +msgstr "ደረጃ የቁጥር እሴት መሆን አለበት።" + +#: ckan/logic/action/create.py:908 +#, python-format +msgid "Rating must be between %i and %i." +msgstr "ደረጃ በ %i እና በ %i መካከል መሆን አለበት።" + +#: ckan/logic/action/create.py:1078 +msgid "Error sending the invite email, the user was not created: {0}" +msgstr "የግብዣ ኢሜይል መላክ ላይ ስህተት አጋጥሟል ፤ ተጠቃሚ {0} አልተፈጠረም" + +#: ckan/logic/action/create.py:1254 ckan/logic/action/create.py:1261 +msgid "You must be logged in to follow users" +msgstr "ተጠቃሚዎችን ለመከታተል መግባት አለቦት" + +#: ckan/logic/action/create.py:1274 +msgid "You cannot follow yourself" +msgstr "እራስዎን መከተል አይችሉም" + +#: ckan/logic/action/create.py:1282 ckan/logic/action/create.py:1339 +#: ckan/logic/action/create.py:1478 +msgid "You are already following {0}" +msgstr "{0}ን አስቀድመው እየተከታተሉ ነው" + +#: ckan/logic/action/create.py:1313 ckan/logic/action/create.py:1321 +msgid "You must be logged in to follow a dataset." +msgstr "የመረጃ-ስብስብን ለመከተል መግባት አለብዎት" + +#: ckan/logic/action/create.py:1379 +msgid "User {username} does not exist." +msgstr "ተጠቃሚ {username} የለም።" + +#: ckan/logic/action/create.py:1454 ckan/logic/action/create.py:1462 +msgid "You must be logged in to follow a group." +msgstr "ቡድንን ለመከተል መግባት አለብዎት።" + +#: ckan/logic/action/delete.py:54 +msgid " Delete User: {0}" +msgstr "ተጠቃሚ {0}ን አጥፋ" + +#: ckan/logic/action/delete.py:92 +#, python-format +msgid "REST API: Delete Package: %s" +msgstr "REST ኤፒአይ: ጥቅል %s አጥፋ" + +#: ckan/logic/action/delete.py:276 ckan/logic/action/delete.py:372 +#, python-format +msgid "REST API: Delete %s" +msgstr "REST ኤፒአይ: %s አጥፋ" + +#: ckan/logic/action/delete.py:318 +#, python-format +msgid "REST API: Delete Member: %s" +msgstr "REST ኤፒአይ: አባል %s አጥፋ" + +#: ckan/logic/action/delete.py:358 +msgid "Organization cannot be deleted while it still has datasets" +msgstr "ድርጅት የመረጃ-ስብስቦች እስካሉት ድረስ ሊጠፋ አይችልም" + +#: ckan/logic/action/delete.py:560 ckan/logic/action/delete.py:586 +#: ckan/logic/action/get.py:2432 ckan/logic/action/update.py:906 +msgid "id not in data" +msgstr "መረጃው ውስጥ መለያ ቁጥር የለም" + +#: ckan/logic/action/delete.py:564 ckan/logic/action/get.py:2435 +#: ckan/logic/action/update.py:910 +#, python-format +msgid "Could not find vocabulary \"%s\"" +msgstr "የቃላት ዝርዝር \"%s\" ሊገኝ አልተቻለም" + +#: ckan/logic/action/delete.py:594 +#, python-format +msgid "Could not find tag \"%s\"" +msgstr "የቃላት ዝርዝር መለዮ \"%s\" ሊገኝ አልተቻለም" + +#: ckan/logic/action/delete.py:607 ckan/logic/action/delete.py:611 +msgid "You must be logged in to unfollow something." +msgstr "አንድ ነገርን ላለመከተል መግባት አለብዎት" + +#: ckan/logic/action/delete.py:622 +msgid "You are not following {0}." +msgstr "እርስዎ {0}ን እየተከተሉ አይደለም።" + +#: ckan/logic/action/get.py:1095 ckan/logic/action/update.py:77 +#: ckan/logic/action/update.py:91 +msgid "Resource was not found." +msgstr "የመረጃ-ምንጩ አልተገኘም።" + +#: ckan/logic/action/get.py:2037 +msgid "Do not specify if using \"query\" parameter" +msgstr "የ \"query\" ፓራሜትር በመጠቀም ላይ ከሆንክ መጠቀስ የለብህም" + +#: ckan/logic/action/get.py:2046 +msgid "Must be : pair(s)" +msgstr ": ጥንድ (ዎች) መሆን አለበት" + +#: ckan/logic/action/get.py:2078 +msgid "Field \"{field}\" not recognised in resource_search." +msgstr "መስክ \"{field}\" በምንጭ ጥናት(resource_search) ውስጥ አልተጠቀሰም።" + +#: ckan/logic/action/update.py:265 ckan/logic/action/update.py:991 +msgid "Package was not found." +msgstr "ጥቅሉ አልተገኘም።" + +#: ckan/logic/action/update.py:308 ckan/logic/action/update.py:526 +#: ckan/logic/action/update.py:1009 +#, python-format +msgid "REST API: Update object %s" +msgstr "REST ኤፒአይ: ቅንጣት %s አሻሽል" + +#: ckan/logic/action/update.py:405 +#, python-format +msgid "REST API: Update package relationship: %s %s %s" +msgstr "REST ኤፒአይ: ጥቅል ግንኙነት %s %s %s አሻሽል" + +#: ckan/logic/action/update.py:766 +msgid "TaskStatus was not found." +msgstr "የስራ ወቅታዊ አቋም አልተገኘም።" + +#: ckan/logic/action/update.py:995 +msgid "Organization was not found." +msgstr "ድርጅት አልተገኘም።" + +#: ckan/logic/auth/create.py:27 ckan/logic/auth/create.py:45 +#, python-format +msgid "User %s not authorized to create packages" +msgstr "ተጠቃሚ %s ጥቅሎችን ለመፍጠር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:31 ckan/logic/auth/update.py:45 +#, python-format +msgid "User %s not authorized to edit these groups" +msgstr "ተጠቃሚ %s እነዚህን ቡድኖች ለማደስ ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:38 +#, python-format +msgid "User %s not authorized to add dataset to this organization" +msgstr "ተጠቃሚ %s ለዚህ ድርጅት የመረጃ-ስብስብ ለመጨመር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:61 +msgid "No dataset id provided, cannot check auth." +msgstr "ምንም የመረጃ-ስብስቡ መለያ ቁጥር አልተሰጠም ፤ ፈቃድዎን ማረጋገጥ አልተቻለም።" + +#: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 +#: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 +msgid "No package found for this resource, cannot check auth." +msgstr "ለእዚህ የመረጃ-ምንጭ ምንም ጥቅል(ፓኬጅ) አልተገኘም ፤ ፈቃድዎን ማረጋገጥ አልተቻለም።" + +#: ckan/logic/auth/create.py:76 +#, python-format +msgid "User %s not authorized to create resources on dataset %s" +msgstr "ተጠቃሚ %s በመረጃ-ስብስብ %s ላይ መረጃዎችን ለመፍጠር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:108 +#, python-format +msgid "User %s not authorized to edit these packages" +msgstr "ተጠቃሚ %s እነዚህን ጥቅሎች ለማደስ ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:119 +#, python-format +msgid "User %s not authorized to create groups" +msgstr "ተጠቃሚ %s ቡድኖች ለመፍጠር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:129 +#, python-format +msgid "User %s not authorized to create organizations" +msgstr "ተጠቃሚ %s ድርጅቶች ለመፍጠር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:145 +msgid "User {user} not authorized to create users via the API" +msgstr "ተጠቃሚ {user} ተጠቃሚዎች በኤፒአይ በኩል ለመፍጠር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:148 +msgid "Not authorized to create users" +msgstr "ተጠቃሚዎች በኤፒአይ በኩል ለመፍጠር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:189 +msgid "Group was not found." +msgstr "ቡድኑ አልተገኘም።" + +#: ckan/logic/auth/create.py:220 +#, python-format +msgid "User %s not authorized to add members" +msgstr "ተጠቃሚ %s አባላት ለመጨመር ፈቃድ የለውም" + +#: ckan/logic/auth/create.py:244 ckan/logic/auth/update.py:115 +#, python-format +msgid "User %s not authorized to edit group %s" +msgstr "ተጠቃሚ %s ቡድን %sን ለማደስ ፈቃድ የለውም" + +#: ckan/logic/auth/delete.py:40 +#, python-format +msgid "User %s not authorized to delete resource %s" +msgstr "ተጠቃሚ %s የመረጃ-ምንጭ %sን ለማጥፋት ፈቃድ የለውም" + +#: ckan/logic/auth/delete.py:56 +msgid "Resource view not found, cannot check auth." +msgstr "የመረጃ እይታው አልተገኘም ፤ ፈቃድዎን ማረጋገጥ አልተቻለም።" + +#: ckan/logic/auth/delete.py:73 +#, python-format +msgid "User %s not authorized to delete relationship %s" +msgstr "ተጠቃሚ %s ግንኙነት %sን ለማጥፋት ፈቃድ የለውም" + +#: ckan/logic/auth/delete.py:82 +#, python-format +msgid "User %s not authorized to delete groups" +msgstr "ተጠቃሚ %s ቡድኖች ለማጥፋት ፈቃድ የለውም" + +#: ckan/logic/auth/delete.py:86 +#, python-format +msgid "User %s not authorized to delete group %s" +msgstr "ተጠቃሚ %s ቡድን %sን ለማጥፋት ፈቃድ የለውም" + +#: ckan/logic/auth/delete.py:103 +#, python-format +msgid "User %s not authorized to delete organizations" +msgstr "ተጠቃሚ %s ድርጅቶች ለማጥፋት ፈቃድ የለውም" + +#: ckan/logic/auth/delete.py:107 +#, python-format +msgid "User %s not authorized to delete organization %s" +msgstr "ተጠቃሚ %s ድርጅት %sን ለማጥፋት ፈቃድ የለውም" + +#: ckan/logic/auth/delete.py:120 +#, python-format +msgid "User %s not authorized to delete task_status" +msgstr "ተጠቃሚ %s የሥራ ሁኔታን ለማጥፋት ፈቃድ የለውም" + +#: ckan/logic/auth/get.py:13 ckan/logic/auth/get.py:270 +msgid "Not authorized" +msgstr "ፈቃድ የለዎትም" + +#: ckan/logic/auth/get.py:109 +#, python-format +msgid "User %s not authorized to read these packages" +msgstr "ተጠቃሚ %s እነዚህን ጥቅሎች(ፓኬጆች) ለማንበብ ፈቃድ የለውም" + +#: ckan/logic/auth/get.py:124 +#, python-format +msgid "User %s not authorized to read package %s" +msgstr "ተጠቃሚ %s ጥቅል(ፓኬጅ) %sን ለማንበብ ፈቃድ የለውም" + +#: ckan/logic/auth/get.py:143 +#, python-format +msgid "User %s not authorized to read resource %s" +msgstr "ተጠቃሚ %s የመረጃ-ምንጭ %sን ለማንበብ ፈቃድ የለውም" + +#: ckan/logic/auth/get.py:170 +#, python-format +msgid "User %s not authorized to read group %s" +msgstr "ተጠቃሚ %s ቡድን %sን ለማንበብ ፈቃድ የለውም" + +#: ckan/logic/auth/get.py:237 +msgid "You must be logged in to access your dashboard." +msgstr "ዳሽቦርድዎን ለማግኘት መግባት አለብዎት" + +#: ckan/logic/auth/update.py:39 +#, python-format +msgid "User %s not authorized to edit package %s" +msgstr "ተጠቃሚ %s ጥቅል(ፓኬጅ) %sን ለማደስ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:71 +#, python-format +msgid "User %s not authorized to edit resource %s" +msgstr "ተጠቃሚ %s የመረጃ-ምንጭ %sን ለማደስ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:100 +#, python-format +msgid "User %s not authorized to change state of package %s" +msgstr "ተጠቃሚ %s የጥቅል(ፓኬጅ) %sን ሁኔታ(አቇም) ለመለወጥ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:128 +#, python-format +msgid "User %s not authorized to edit organization %s" +msgstr "ተጠቃሚ %s ድርጅት %sን ለማደስ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:145 +#, python-format +msgid "User %s not authorized to change state of group %s" +msgstr "ተጠቃሚ %s የቡድን %sን ሁኔታ(አቇም) ለመለወጥ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:162 +#, python-format +msgid "User %s not authorized to edit permissions of group %s" +msgstr "ተጠቃሚ %s የቡድን %sን ፈቃድ ለመለወጥ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:190 +msgid "Have to be logged in to edit user" +msgstr "ተጠቃሚን ለማደስ መግባት አለብህ" + +#: ckan/logic/auth/update.py:198 +#, python-format +msgid "User %s not authorized to edit user %s" +msgstr "ተጠቃሚ %s ተጠቃሚ %sን ለማደስ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:209 +msgid "User {0} not authorized to update user {1}" +msgstr "ተጠቃሚ {0} ተጠቃሚ {1}ን ለማሻሻል ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:217 +#, python-format +msgid "User %s not authorized to change state of revision" +msgstr "ተጠቃሚ %s የክለሳውን ሁኔታ(አቇም) ለመለወጥ ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:226 +#, python-format +msgid "User %s not authorized to update task_status table" +msgstr "ተጠቃሚ %s የሥራ ሁኔታ ሰንጠረዥን ለማሻሻል ፈቃድ የለውም" + +#: ckan/logic/auth/update.py:240 +#, python-format +msgid "User %s not authorized to update term_translation table" +msgstr "ተጠቃሚ %s የቃል ትርጉም ሰንጠረዥን ለማሻሻል ፈቃድ የለውም" + +#: ckan/model/license.py:223 +msgid "License not specified" +msgstr "ፈቃድ አልተጠቀሰም" + +#: ckan/model/license.py:233 +msgid "Open Data Commons Public Domain Dedication and License (PDDL)" +msgstr "" + +#: ckan/model/license.py:243 +msgid "Open Data Commons Open Database License (ODbL)" +msgstr "" + +#: ckan/model/license.py:253 +msgid "Open Data Commons Attribution License" +msgstr "ክፍት የመረጃ የጋራ ባለቤትነት ፈቃድ" + +#: ckan/model/license.py:264 +msgid "Creative Commons CCZero" +msgstr "የጋራ የፈጠራ ሲሲዜሮ(CCZero)" + +#: ckan/model/license.py:273 +msgid "Creative Commons Attribution" +msgstr "የጋራ የፈጠራ ባለቤትነት" + +#: ckan/model/license.py:283 +msgid "Creative Commons Attribution Share-Alike" +msgstr "የጋራ ፈጠራ ባለቤትነት ተመሳሳይ-አጋሪ" + +#: ckan/model/license.py:292 +msgid "GNU Free Documentation License" +msgstr "GNU ነጻ ሰነድ ፈቃድ" + +#: ckan/model/license.py:302 +msgid "Other (Open)" +msgstr "ለላ(ክፍት)" + +#: ckan/model/license.py:312 +msgid "Other (Public Domain)" +msgstr "ሌላ (የህዝብ ጎራ/Domain)" + +#: ckan/model/license.py:322 +msgid "Other (Attribution)" +msgstr "ሌላ (እውቅና)" + +#: ckan/model/license.py:334 +msgid "UK Open Government Licence (OGL)" +msgstr "" + +#: ckan/model/license.py:342 +msgid "Creative Commons Non-Commercial (Any)" +msgstr "ንግድ ያልሆነ የጋራ ፈጠራ (ማንኛውም)" + +#: ckan/model/license.py:350 +msgid "Other (Non-Commercial)" +msgstr "ሌላ (ንግድ ያልሆነ)" + +#: ckan/model/license.py:358 +msgid "Other (Not Open)" +msgstr "ሌላ (ይፋ ያልሆነ)" + +#: ckan/model/package_relationship.py:54 +#, python-format +msgid "depends on %s" +msgstr "በ %s ላይ ጥገኛ ነው" + +#: ckan/model/package_relationship.py:54 +#, python-format +msgid "is a dependency of %s" +msgstr "የ %s ጥገኝነት ነው" + +#: ckan/model/package_relationship.py:55 +#, python-format +msgid "derives from %s" +msgstr "የሚወጣው ከ %s ነው" + +#: ckan/model/package_relationship.py:55 +#, python-format +msgid "has derivation %s" +msgstr "አወጣጥ %s አለው" + +#: ckan/model/package_relationship.py:56 +#, python-format +msgid "links to %s" +msgstr "ከ %s ጋር ያገናኛል" + +#: ckan/model/package_relationship.py:56 +#, python-format +msgid "is linked from %s" +msgstr "ከ %s የተገናኘ ነው" + +#: ckan/model/package_relationship.py:57 +#, python-format +msgid "is a child of %s" +msgstr "የ %s ልጅ ነው" + +#: ckan/model/package_relationship.py:57 +#, python-format +msgid "is a parent of %s" +msgstr "የ %s ወላጅ ነው" + +#: ckan/model/package_relationship.py:61 +#, python-format +msgid "has sibling %s" +msgstr "%s የሚባል አቻ አለው" + +#: ckan/public-bs2/base/javascript/modules/api-info.js:96 +#: ckan/public/base/javascript/modules/api-info.js:96 +msgid "There is no API data to load for this resource" +msgstr "ለዚህ የመረጃ-ምንጭ ምንም የሚጫን የኤፒአይ መረጃ የለም" + +#: ckan/public-bs2/base/javascript/modules/api-info.js:124 +#: ckan/public/base/javascript/modules/api-info.js:124 +msgid "Failed to load data API information" +msgstr "የኤፒአይ መረጃ መጫን አልተሳካም" + +#: ckan/public-bs2/base/javascript/modules/autocomplete.js:195 +#: ckan/public/base/javascript/modules/autocomplete.js:195 +msgid "Start typing…" +msgstr "መተየብ(መጻፍ) ይጀምሩ..." + +#: ckan/public-bs2/base/javascript/modules/autocomplete.js:195 +#: ckan/public/base/javascript/modules/autocomplete.js:195 +msgid "No matches found" +msgstr "ምንም ተዛማጆች አልተገኙም" + +#: ckan/public-bs2/base/javascript/modules/autocomplete.js:204 +#: ckan/public/base/javascript/modules/autocomplete.js:204 +#, python-format +msgid "Input is too short, must be at least one character" +msgid_plural "Input is too short, must be at least %(num)d characters" +msgstr[0] "ግብዓቱ በጣም አጭር ነው ፤ ቢያንስ አንድ ቁምፊ(ትዕምርት) መሆን አለበት" +msgstr[1] "ግብዓቱ በጣም አጭር ነው ፤ ቢያንስ %(num)d ቁምፊዎች(ትዕምርቶች) መሆን አለበት" + +#: ckan/public-bs2/base/javascript/modules/basic-form.js:4 +#: ckan/public/base/javascript/modules/basic-form.js:4 +msgid "There are unsaved modifications to this form" +msgstr "በዚህ ቅጽ ላይ ያልተቀመጡ(ያልተያዙ) ለውጦች አሉ" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:97 +#: ckan/public/base/javascript/modules/confirm-action.js:101 +msgid "Please Confirm Action" +msgstr "እባክዎን እርምጃውን(ድርጊቱን) ያረጋግጡ" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:100 +#: ckan/public/base/javascript/modules/confirm-action.js:104 +msgid "Are you sure you want to perform this action?" +msgstr " ይህንን እርምጃ ማከናወን መፈለግዎን እርግጠኛ ነዎት?" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:102 +#: ckan/public/base/javascript/modules/confirm-action.js:106 +#: ckan/templates/user/new_user_form.html:9 +#: ckan/templates/user/perform_reset.html:26 +msgid "Confirm" +msgstr "አረጋግጥ" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:103 +#: ckan/public-bs2/base/javascript/modules/resource-reorder.js:59 +#: ckan/public-bs2/base/javascript/modules/resource-view-reorder.js:53 +#: ckan/public/base/javascript/modules/confirm-action.js:107 +#: ckan/public/base/javascript/modules/resource-reorder.js:59 +#: ckan/public/base/javascript/modules/resource-view-reorder.js:53 +#: ckan/templates/admin/confirm_reset.html:9 +#: ckan/templates/group/confirm_delete.html:14 +#: ckan/templates/group/confirm_delete_member.html:15 +#: ckan/templates/organization/confirm_delete.html:14 +#: ckan/templates/organization/confirm_delete_member.html:15 +#: ckan/templates/package/confirm_delete.html:15 +#: ckan/templates/package/confirm_delete_resource.html:14 +msgid "Cancel" +msgstr "ሰርዝ" + +#: ckan/public-bs2/base/javascript/modules/follow.js:70 +#: ckan/public/base/javascript/modules/follow.js:70 +#: ckan/templates/snippets/follow_button.html:9 +msgid "Unfollow" +msgstr "አትከተል" + +#: ckan/public-bs2/base/javascript/modules/follow.js:73 +#: ckan/public/base/javascript/modules/follow.js:73 +#: ckan/templates/snippets/follow_button.html:14 +msgid "Follow" +msgstr "ተከተል" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:60 +#: ckan/public/base/javascript/modules/image-upload.js:60 +msgid "Link" +msgstr "አገናኝ(ሊንክ)" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:61 +#: ckan/public/base/javascript/modules/image-upload.js:61 +msgid "Link to a URL on the internet (you can also link to an API)" +msgstr "በኢንተርኔት ላይ ወደ ዩአርኤል አገናኝ (ወደ ኤ.ፒ.አይ መገናኘት ይችላሉ)" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:68 +#: ckan/public/base/javascript/modules/image-upload.js:68 +msgid "Upload" +msgstr "አስቀምጥ" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:72 +#: ckan/public/base/javascript/modules/image-upload.js:72 +#: ckan/templates/group/snippets/group_item.html:43 +#: ckan/templates/macros/form.html:241 +#: ckan/templates/snippets/search_form.html:69 +msgid "Remove" +msgstr "አስወግድ" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:87 +#: ckan/public/base/javascript/modules/image-upload.js:87 +msgid "Upload a file on your computer" +msgstr "በኮምፒዩተርዎ ውስጥ ያለ ፋይል ያስቀምጡ" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:110 +#: ckan/public-bs2/base/javascript/modules/image-upload.js:178 +#: ckan/public-bs2/base/javascript/modules/slug-preview.js:56 +#: ckan/public/base/javascript/modules/image-upload.js:110 +#: ckan/public/base/javascript/modules/image-upload.js:178 +#: ckan/public/base/javascript/modules/slug-preview.js:56 +#: ckan/templates/group/snippets/group_form.html:18 +#: ckan/templates/organization/snippets/organization_form.html:18 +#: ckan/templates/package/snippets/package_basic_fields.html:13 +#: ckan/templates/package/snippets/resource_form.html:26 +msgid "URL" +msgstr "ዩአርኤል" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:119 +#: ckan/public-bs2/base/javascript/modules/image-upload.js:209 +#: ckan/public/base/javascript/modules/image-upload.js:119 +#: ckan/public/base/javascript/modules/image-upload.js:209 +msgid "File" +msgstr "ፋይል" + +#: ckan/public-bs2/base/javascript/modules/resource-reorder.js:56 +#: ckan/public-bs2/base/javascript/modules/resource-view-reorder.js:50 +#: ckan/public/base/javascript/modules/resource-reorder.js:56 +#: ckan/public/base/javascript/modules/resource-view-reorder.js:50 +msgid "Save order" +msgstr "ቅደም-ተከተሉን አስቀምጥ" + +#: ckan/public-bs2/base/javascript/modules/resource-reorder.js:69 +#: ckan/public-bs2/base/javascript/modules/resource-view-reorder.js:59 +#: ckan/public/base/javascript/modules/resource-reorder.js:69 +#: ckan/public/base/javascript/modules/resource-view-reorder.js:59 +msgid "Saving..." +msgstr "እያስቀመጠ..." + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:57 +#: ckan/public/base/javascript/modules/resource-upload-field.js:57 +msgid "Upload a file" +msgstr "ፋይል አስቀምጥ" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:144 +#: ckan/public/base/javascript/modules/resource-upload-field.js:144 +msgid "An Error Occurred" +msgstr "ስህተት ተፈጥሯል" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:201 +#: ckan/public/base/javascript/modules/resource-upload-field.js:201 +msgid "Unable to upload file" +msgstr "ፋይል ማስቀመጥ አልተቻለም" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:252 +#: ckan/public/base/javascript/modules/resource-upload-field.js:252 +msgid "Unable to authenticate upload" +msgstr "ማስቀመጡን ማረጋገጥ አልተቻለም" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:260 +#: ckan/public/base/javascript/modules/resource-upload-field.js:260 +msgid "Resource uploaded" +msgstr "የመረጃ ምንጩ ተቀምⶆል" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:266 +#: ckan/public/base/javascript/modules/resource-upload-field.js:266 +msgid "Unable to get data for uploaded file" +msgstr "ለተቀመጠው ፋይል መረጃ ለማግኘት አልተቻለም" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:272 +#: ckan/public/base/javascript/modules/resource-upload-field.js:272 +msgid "" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" +msgstr "ፋይል እያስቀመጡ ነው ፤ ወደ ሌላ ቦታ መሄድ ማስቆም እንደሚፈልጉ እርግጠኛ ነዎት?" + +#: ckan/public-bs2/base/javascript/modules/resource-view-filters.js:9 +#: ckan/public/base/javascript/modules/resource-view-filters.js:9 +#: ckan/templates/package/snippets/view_form_filters.html:16 +msgid "Add Filter" +msgstr "ማጣሪያ ጨምር" + +#: ckan/public-bs2/base/javascript/modules/resource-view-filters.js:52 +#: ckan/public/base/javascript/modules/resource-view-filters.js:52 +msgid "Select a field" +msgstr "መስክ ምረጥ" + +#: ckan/public-bs2/base/javascript/modules/slug-preview.js:57 +#: ckan/public/base/javascript/modules/slug-preview.js:57 +#: ckan/templates/group/edit_base.html:20 ckan/templates/group/members.html:28 +#: ckan/templates/organization/bulk_process.html:65 +#: ckan/templates/organization/edit.html:3 +#: ckan/templates/organization/edit_base.html:22 +#: ckan/templates/organization/members.html:33 +#: ckan/templates/package/edit_base.html:11 +#: ckan/templates/package/resource_edit.html:3 +#: ckan/templates/package/resource_edit_base.html:12 +#: ckan/templates/package/snippets/resource_item.html:56 +msgid "Edit" +msgstr "አድስ" + +#: ckan/public-bs2/base/javascript/modules/table-toggle-more.js:25 +#: ckan/public/base/javascript/modules/table-toggle-more.js:25 +msgid "Show more" +msgstr "ተጨማሪ አሳይ" + +#: ckan/public-bs2/base/javascript/modules/table-toggle-more.js:26 +#: ckan/public/base/javascript/modules/table-toggle-more.js:26 +msgid "Hide" +msgstr "ደብቅ" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:13 +#: ckan/public-bs2/base/test/spec/module.spec.js:385 +#: ckan/public/base/test/spec/i18n.spec.js:13 +#: ckan/public/base/test/spec/module.spec.js:385 +msgid "foo" +msgstr "ፎ.." + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:17 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:46 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:50 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:54 +#: ckan/public/base/test/spec/i18n.spec.js:17 +#: ckan/public/base/test/spec/i18n.spec.js:46 +#: ckan/public/base/test/spec/i18n.spec.js:50 +#: ckan/public/base/test/spec/i18n.spec.js:54 +msgid "no translation" +msgid_plural "no translations" +msgstr[0] "ምንም ትርጉም የለም" +msgstr[1] "ምንም ትርጉሞች የሉም" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:22 +#: ckan/public/base/test/spec/i18n.spec.js:22 +#, python-format +msgid "hello %(name)s!" +msgstr "ሰላም %(name)s!" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:29 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:76 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:81 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:86 +#: ckan/public/base/test/spec/i18n.spec.js:29 +#: ckan/public/base/test/spec/i18n.spec.js:76 +#: ckan/public/base/test/spec/i18n.spec.js:81 +#: ckan/public/base/test/spec/i18n.spec.js:86 +#, python-format +msgid "no %(attr)s translation" +msgid_plural "no %(attr)s translations" +msgstr[0] "ምንም %(attr)s ትርጉም የለም" +msgstr[1] "ምንም %(attr)s ትርጉሞች የሉም" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:39 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:40 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:41 +#: ckan/public-bs2/base/test/spec/module.spec.js:395 +#: ckan/public-bs2/base/test/spec/module.spec.js:396 +#: ckan/public-bs2/base/test/spec/module.spec.js:397 +#: ckan/public/base/test/spec/i18n.spec.js:39 +#: ckan/public/base/test/spec/i18n.spec.js:40 +#: ckan/public/base/test/spec/i18n.spec.js:41 +#: ckan/public/base/test/spec/module.spec.js:395 +#: ckan/public/base/test/spec/module.spec.js:396 +#: ckan/public/base/test/spec/module.spec.js:397 +msgid "bar" +msgid_plural "bars" +msgstr[0] "ባር" +msgstr[1] "ባሮች" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:61 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:65 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:69 +#: ckan/public/base/test/spec/i18n.spec.js:61 +#: ckan/public/base/test/spec/i18n.spec.js:65 +#: ckan/public/base/test/spec/i18n.spec.js:69 +#, python-format +msgid "%(color)s shirt" +msgid_plural "%(color)s shirts" +msgstr[0] "%(color)s ሸሚዝ" +msgstr[1] "%(color)s ሸሚዞች" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:93 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:94 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:95 +#: ckan/public/base/test/spec/i18n.spec.js:93 +#: ckan/public/base/test/spec/i18n.spec.js:94 +#: ckan/public/base/test/spec/i18n.spec.js:95 +#, python-format +msgid "%(num)d item" +msgid_plural "%(num)d items" +msgstr[0] "%(num)d እቃ" +msgstr[1] "%(num)d እቃዎች" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:100 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:105 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:110 +#: ckan/public/base/test/spec/i18n.spec.js:100 +#: ckan/public/base/test/spec/i18n.spec.js:105 +#: ckan/public/base/test/spec/i18n.spec.js:110 +#, python-format +msgid "%(num)d missing translation" +msgid_plural "%(num)d missing translations" +msgstr[0] "%(num)d ትርጉም የሌለው" +msgstr[1] "%(num)d ትርጉም የሌላቸው" + +#: ckan/templates/error_document_template.html:3 +#, python-format +msgid "Error %(error_code)s" +msgstr "ስህተት %(error_code)s" + +#: ckan/templates/footer.html:9 +msgid "About {0}" +msgstr "ስለ {0}" + +#: ckan/templates/footer.html:15 +msgid "CKAN API" +msgstr "የ CKAN ኤፒአይ(API)" + +#: ckan/templates/footer.html:16 +msgid "CKAN Association" +msgstr "የ CKAN ማህበር" + +#: ckan/templates/footer.html:24 +msgid "" +"Powered by CKAN" +msgstr "" +"አምራች CKAN" + +#: ckan/templates/header.html:9 +msgid "Sysadmin settings" +msgstr "የዋና አስተዳደሩ ውቅሮች" + +#: ckan/templates/header.html:16 +msgid "View profile" +msgstr "መገለጫ(ፕሮፋይል) ይመልከቱ" + +#: ckan/templates/header.html:23 +#, python-format +msgid "Dashboard (%(num)d new item)" +msgid_plural "Dashboard (%(num)d new items)" +msgstr[0] "ዳሽቦርድ (%(num)d አዲስ እቃ)" +msgstr[1] "ዳሽቦርድ (%(num)d አዲስ እቃዎች)" + +#: ckan/templates/header.html:27 ckan/templates/user/dashboard.html:6 +msgid "Dashboard" +msgstr "ዳሽቦርድ" + +#: ckan/templates/header.html:33 ckan/templates/user/dashboard.html:16 +msgid "Edit settings" +msgstr "ቅንብሮችን አድስ" + +#: ckan/templates/header.html:35 +msgid "Settings" +msgstr "ቅንብሮች" + +#: ckan/templates/header.html:40 ckan/templates/header.html:42 +msgid "Log out" +msgstr "ውጣ" + +#: ckan/templates/header.html:52 ckan/templates/user/logout_first.html:14 +msgid "Log in" +msgstr "ይግቡ" + +#: ckan/templates/header.html:54 ckan/templates/user/new.html:3 +msgid "Register" +msgstr "ይመዝገቡ" + +#: ckan/templates/group/read_base.html:17 +#: ckan/templates/group/snippets/info.html:36 ckan/templates/header.html:87 +#: ckan/templates/organization/bulk_process.html:20 +#: ckan/templates/organization/edit_base.html:23 +#: ckan/templates/organization/read_base.html:17 +#: ckan/templates/package/base.html:7 ckan/templates/package/base.html:17 +#: ckan/templates/package/base.html:21 ckan/templates/package/search.html:4 +#: ckan/templates/package/snippets/new_package_breadcrumb.html:1 +#: ckan/templates/revision/diff.html:11 ckan/templates/revision/read.html:65 +#: ckan/templates/snippets/context/group.html:17 +#: ckan/templates/snippets/context/user.html:19 +#: ckan/templates/snippets/organization.html:59 +#: ckan/templates/user/read.html:11 ckan/templates/user/read_base.html:19 +#: ckan/templates/user/read_base.html:53 +msgid "Datasets" +msgstr "የመረጃ ስብስቦች" + +#: ckan/templates/header.html:94 +msgid "Search Datasets" +msgstr "የመረጃ ስብስቦች ፈልግ" + +#: ckan/templates/header.html:95 ckan/templates/home/snippets/search.html:11 +#: ckan/templates/snippets/simple_search.html:5 +#: ckan/templates/user/snippets/user_search.html:6 +msgid "Search" +msgstr "ፈልግ" + +#: ckan/templates/page.html:6 +msgid "Skip to content" +msgstr "ወደ ይዘት ዝለል" + +#: ckan/templates/activity_streams/activity_stream_items.html:9 +msgid "Load less" +msgstr "ያነሰ ጫን" + +#: ckan/templates/activity_streams/activity_stream_items.html:17 +msgid "Load more" +msgstr "የበዛ ጫን" + +#: ckan/templates/activity_streams/activity_stream_items.html:23 +msgid "No activities are within this activity stream" +msgstr "በዚህ የእንቅስቃሴ ዥረት ውስጥ ምንም እንቅስቃሴዎች የሉም" + +#: ckan/templates/admin/base.html:3 +msgid "Administration" +msgstr "አስተዳደር" + +#: ckan/templates/admin/base.html:8 +msgid "Sysadmins" +msgstr "ዋና አስተዳደሪዎች" + +#: ckan/templates/admin/base.html:9 +msgid "Config" +msgstr "ውቅር" + +#: ckan/templates/admin/base.html:10 ckan/templates/admin/trash.html:29 +msgid "Trash" +msgstr "መጣያ" + +#: ckan/templates/admin/config.html:23 ckan/templates/macros/autoform.html:62 +msgid "Site logo" +msgstr "የጣቢያ አርማ" + +#: ckan/templates/admin/config.html:35 +#: ckan/templates/admin/confirm_reset.html:7 +msgid "Are you sure you want to reset the config?" +msgstr "ውቅሩን ዳግም ማጽደቅ እንደሚፈልጉ እርግጠኛ ነዎት?" + +#: ckan/templates/admin/config.html:35 +msgid "Reset" +msgstr "ዳግም አጽድቅ" + +#: ckan/templates/admin/config.html:36 +msgid "Update Config" +msgstr "ውቅሩን አሻሽል" + +#: ckan/templates/admin/config.html:45 +msgid "CKAN config options" +msgstr "የ CKAN የውቅር አማራጮች" + +#: ckan/templates/admin/config.html:52 +#, python-format +msgid "" +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " +"Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" +"

Custom CSS: This is a block of CSS that appears in " +"<head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" +msgstr "" +"

የጣቢያ ርዕስ: ይህ የ CKAN አብነት መጠሪያ ነው። በ CKAN ውስጥ በተለያዩ " +"ቦታዎች ይታያል።

አቀማመጥ: የተለያዩ ቀለል በጣም ፈጣን የሆኑ የቀለም ገጽትዎች " +"ይምረጡ።

የጣቢያ አርማ አርማ: ይህ በሁሉንም የ CKAN አብነቶች ራስጌ ላይ " +"ይገኛል።

ምንነት: ይህ ጽሑፍ በዚህ የ CKAN አብነት ስለ ገጽ ላይ ይታያል።

መግቢያ " +"ጽሑፍ: ይህ ጽሑፍ በዚህ የ CKAN አብነት የመነሻ ገጽ " +"ላይ ለጎብኚዎች እንደ አቀባበል ይታያል።

ብጁ CSS: ይህ በእያንዳንዱ ገፅ " +"<ራስ> ያለ የራስ ማሳመሪያ ነው። አብነቶቹን ይበልጥ በራስ ሙሉ በሙሉ ለማሳመር ከፈለጉ" +" የ CKAN ሰነድን እንዲያነቡ እንመክራለን። " +"

መነሻ ገጽ: ይሄ በመነሻ ገጽዎ ላይ ለሚታዩ ሞደሎች ቀድሞ የተበጀውን አቀማመጥ " +"ለመምረጥ ነው።

" + +#: ckan/templates/admin/confirm_reset.html:3 +#: ckan/templates/admin/confirm_reset.html:10 +msgid "Confirm Reset" +msgstr "ዳግም ማጽደቅን ያረጋግጡ" + +#: ckan/templates/admin/index.html:15 +msgid "Administer CKAN" +msgstr "CKANን አስተዳድር" + +#: ckan/templates/admin/index.html:20 +#, python-format +msgid "" +"

As a sysadmin user you have full control over this CKAN instance. " +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" +msgstr "" +"

ዋና አስተዳዳሪ እንደመሆንዎ መጠን በዚህ የ CKAN አብነት ላይ ሙሉ ቁጥጥር አለዎት። በጥንቃቄ ይቀጥሉ!

" +"

የዋና አስተዳዳሪ ስራዎችን ለማወቅ እና የአጠቃቀም መመሪያን ለማግኘት የ CKAN ዋና አስተዳዳሪ መመሪያን ይመልከቱ።

" + +#: ckan/templates/admin/trash.html:20 +msgid "Purge" +msgstr "አጥፋ" + +#: ckan/templates/admin/trash.html:32 +msgid "

Purge deleted datasets forever and irreversibly.

" +msgstr "

የመረጃ ስብስቦቹ ፈጽሞ በማይሽር መልኩ ጠፍተዋል።

" + +#: ckan/templates/dataviewer/snippets/data_preview.html:9 +msgid "This resource can not be previewed at the moment." +msgstr "ይህ መረጃ በአሁኑ ጊዜ በቅድመ-እይታ ሊታይ አይችልም።" + +#: ckan/templates/dataviewer/snippets/data_preview.html:11 +#: ckan/templates/package/resource_read.html:133 +#: ckan/templates/package/snippets/resource_view.html:34 +msgid "Click here for more information." +msgstr "ለተጨማሪ መረጃ እዚህ ጠቅ ያድርጉ።" + +#: ckan/templates/dataviewer/snippets/data_preview.html:18 +#: ckan/templates/package/snippets/resource_view.html:41 +msgid "Download resource" +msgstr "የመረጃ ምንጭ አውርድ" + +#: ckan/templates/dataviewer/snippets/no_preview.html:3 +msgid "No preview available." +msgstr "ምንም ቅድመ እይታ አይገኝም።" + +#: ckan/templates/dataviewer/snippets/no_preview.html:5 +msgid "More details..." +msgstr "ተጨማሪ ዝርዝሮች..." + +#: ckan/templates/dataviewer/snippets/no_preview.html:12 +#, python-format +msgid "No handler defined for data type: %(type)s." +msgstr "ስለ %(type)s የመረጃ አይነት ምንም ተቆጣጣሪ አልተገለጸም።" + +#: ckan/templates/development/snippets/form.html:5 +msgid "Standard" +msgstr "መደበኛ" + +#: ckan/templates/development/snippets/form.html:5 +msgid "Standard Input" +msgstr "መደበኛ ግብዓት" + +#: ckan/templates/development/snippets/form.html:6 +msgid "Medium" +msgstr "መካከለኛ" + +#: ckan/templates/development/snippets/form.html:6 +msgid "Medium Width Input" +msgstr "መካከለኛ ስፋት ግብዓት" + +#: ckan/templates/development/snippets/form.html:7 +msgid "Full" +msgstr "ሙሉ" + +#: ckan/templates/development/snippets/form.html:7 +msgid "Full Width Input" +msgstr "ሙሉ ስፋት ግብዓት" + +#: ckan/templates/development/snippets/form.html:8 +msgid "Large" +msgstr "ትልቅ" + +#: ckan/templates/development/snippets/form.html:8 +msgid "Large Input" +msgstr "ትልቅ ግብዓት" + +#: ckan/templates/development/snippets/form.html:9 +msgid "Prepend" +msgstr "ጭማሪ" + +#: ckan/templates/development/snippets/form.html:9 +msgid "Prepend Input" +msgstr "ጭማሪ Input" + +#: ckan/templates/development/snippets/form.html:13 +msgid "Custom Field (empty)" +msgstr "የራስ መስክ (ባዶ)" + +#: ckan/templates/development/snippets/form.html:19 +#: ckan/templates/snippets/custom_form_fields.html:20 +#: ckan/templates/snippets/custom_form_fields.html:37 +msgid "Custom Field" +msgstr "የራስ መስክ " + +#: ckan/templates/development/snippets/form.html:22 +msgid "Markdown" +msgstr "ምልክት ማድረግ" + +#: ckan/templates/development/snippets/form.html:23 +msgid "Textarea" +msgstr "የጽሑፍ ቦታ" + +#: ckan/templates/development/snippets/form.html:24 +msgid "Select" +msgstr "ምረጥ" + +#: ckan/templates/group/activity_stream.html:3 +#: ckan/templates/group/activity_stream.html:6 +#: ckan/templates/group/read_base.html:18 +#: ckan/templates/organization/activity_stream.html:3 +#: ckan/templates/organization/activity_stream.html:6 +#: ckan/templates/organization/read_base.html:18 +#: ckan/templates/package/activity.html:3 +#: ckan/templates/package/activity.html:6 +#: ckan/templates/package/read_base.html:21 +#: ckan/templates/user/activity_stream.html:3 +#: ckan/templates/user/activity_stream.html:6 +#: ckan/templates/user/read_base.html:20 +msgid "Activity Stream" +msgstr "የእንቅስቃሴ ዥረት" + +#: ckan/templates/group/admins.html:3 ckan/templates/group/admins.html:6 +#: ckan/templates/organization/admins.html:3 +#: ckan/templates/organization/admins.html:6 +msgid "Administrators" +msgstr "አስተዳዳሪዎች" + +#: ckan/templates/group/base_form_page.html:7 +msgid "Add a Group" +msgstr "ቡድን ጨምር" + +#: ckan/templates/group/base_form_page.html:11 +msgid "Group Form" +msgstr "የቡድን ቅፅ" + +#: ckan/templates/group/confirm_delete.html:3 +#: ckan/templates/group/confirm_delete.html:15 +#: ckan/templates/group/confirm_delete_member.html:3 +#: ckan/templates/group/confirm_delete_member.html:16 +#: ckan/templates/organization/confirm_delete.html:3 +#: ckan/templates/organization/confirm_delete.html:15 +#: ckan/templates/organization/confirm_delete_member.html:3 +#: ckan/templates/organization/confirm_delete_member.html:16 +#: ckan/templates/package/confirm_delete.html:3 +#: ckan/templates/package/confirm_delete.html:16 +#: ckan/templates/package/confirm_delete_resource.html:3 +#: ckan/templates/package/confirm_delete_resource.html:15 +msgid "Confirm Delete" +msgstr "ማጥፋትን አረጋግጥ" + +#: ckan/templates/group/confirm_delete.html:11 +msgid "Are you sure you want to delete group - {name}?" +msgstr " ቡድን {name}ን ለማጥፋት መፈለግዎን እርግጠኛ ነዎት?" + +#: ckan/templates/group/confirm_delete_member.html:11 +#: ckan/templates/organization/confirm_delete_member.html:11 +msgid "Are you sure you want to delete member - {name}?" +msgstr "አባል {name}ን ለማጥፋት መፈለግዎን እርግጠኛ ነዎት?" + +#: ckan/templates/group/edit.html:7 ckan/templates/group/edit_base.html:3 +#: ckan/templates/group/edit_base.html:11 +#: ckan/templates/group/read_base.html:12 +#: ckan/templates/organization/edit_base.html:11 +#: ckan/templates/organization/read_base.html:12 +#: ckan/templates/package/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 +msgid "Manage" +msgstr "አስተካክል" + +#: ckan/templates/group/edit.html:12 +msgid "Edit Group" +msgstr "ቡድን አድስ" + +#: ckan/templates/group/edit_base.html:21 ckan/templates/group/members.html:3 +#: ckan/templates/organization/edit_base.html:24 +#: ckan/templates/organization/members.html:3 +msgid "Members" +msgstr "አባላት" + +#: ckan/templates/group/history.html:3 ckan/templates/group/history.html:6 +#: ckan/templates/package/history.html:3 ckan/templates/package/history.html:6 +msgid "History" +msgstr "ታሪክ" + +#: ckan/templates/group/index.html:13 +#: ckan/templates/user/dashboard_groups.html:7 +msgid "Add Group" +msgstr "ቡድን ጨምር" + +#: ckan/templates/group/index.html:20 +msgid "Search groups..." +msgstr "ቡድኖችን ፈልግ..." + +#: ckan/templates/group/index.html:29 +msgid "There are currently no groups for this site" +msgstr "በአሁኑ ጊዜ ለዚህ ጣቢያ ምንም ቡድኖች የሉም።" + +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 +msgid "How about creating one?" +msgstr "ለምን አሁን አይፈጥሩም?" + +#: ckan/templates/group/member_new.html:8 +#: ckan/templates/organization/member_new.html:10 +msgid "Back to all members" +msgstr "ወደ ሁሉም አባላት ተመለስ" + +#: ckan/templates/group/member_new.html:10 +#: ckan/templates/organization/member_new.html:7 +#: ckan/templates/organization/member_new.html:12 +msgid "Edit Member" +msgstr "አባል አድስ" + +#: ckan/templates/group/member_new.html:10 +#: ckan/templates/group/member_new.html:64 ckan/templates/group/members.html:6 +#: ckan/templates/organization/member_new.html:7 +#: ckan/templates/organization/member_new.html:12 +#: ckan/templates/organization/member_new.html:63 +#: ckan/templates/organization/members.html:8 +msgid "Add Member" +msgstr "አባል ጨምር" + +#: ckan/templates/group/member_new.html:18 +#: ckan/templates/organization/member_new.html:19 +msgid "Existing User" +msgstr "ነባር ተጠቃሚ" + +#: ckan/templates/group/member_new.html:21 +#: ckan/templates/organization/member_new.html:22 +msgid "If you wish to add an existing user, search for their username below." +msgstr "ነባር ተጠቃሚን መጨመር ካሰቡ ከታች ልዩ ስማቸውን ይፈልጉ።" + +#: ckan/templates/group/member_new.html:38 +#: ckan/templates/organization/member_new.html:39 +msgid "or" +msgstr "ወይም" + +#: ckan/templates/group/member_new.html:42 +#: ckan/templates/organization/member_new.html:43 +msgid "New User" +msgstr "አዲስ ተጠቃሚ" + +#: ckan/templates/group/member_new.html:45 +#: ckan/templates/organization/member_new.html:46 +msgid "If you wish to invite a new user, enter their email address." +msgstr "አዲስ ተጠቃሚ ለመጋበዝ ከፈለጉ የኢሜል አድራሻቸውን ያስገቡ።" + +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 +#: ckan/templates/organization/member_new.html:54 +#: ckan/templates/organization/members.html:20 +msgid "Role" +msgstr "ሚና" + +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 +#: ckan/templates/organization/member_new.html:57 +#: ckan/templates/organization/members.html:36 +msgid "Are you sure you want to delete this member?" +msgstr "ይህን አባል ማጥፋት ይፈልጋሉ እርግጠኛ ነዎት?" + +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 +#: ckan/templates/group/snippets/group_form.html:38 +#: ckan/templates/organization/bulk_process.html:47 +#: ckan/templates/organization/member_new.html:57 +#: ckan/templates/organization/members.html:36 +#: ckan/templates/organization/snippets/organization_form.html:38 +#: ckan/templates/package/edit_view.html:19 +#: ckan/templates/package/snippets/package_form.html:39 +#: ckan/templates/package/snippets/resource_form.html:67 +#: ckan/templates/revision/read.html:24 +#: ckan/templates/user/edit_user_form.html:45 +msgid "Delete" +msgstr "አጥፋ" + +#: ckan/templates/group/member_new.html:77 +#: ckan/templates/organization/member_new.html:76 +msgid "What are roles?" +msgstr "ሚናዎች ምንድን ናቸው?" + +#: ckan/templates/group/member_new.html:80 +msgid "" +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " +"datasets from groups

" +msgstr "" +"

አስተዳዳሪ: የቡድን መረጃ ማርትዕ(ማደስ) እና የድርጅት አባላትን ማስተዳደር " +"ይችላል።

አባል: በቡድኖች ውስጥ የመረጃ ስብስቦችን መጨመር/ማስወገድ ይችላሉ። " +"

" + +#: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 +#: ckan/templates/group/new.html:7 +msgid "Create a Group" +msgstr "ቡድን ፍጠር" + +#: ckan/templates/group/new_group_form.html:17 +msgid "Update Group" +msgstr "ቡድን አሻሽል" + +#: ckan/templates/group/new_group_form.html:19 +msgid "Create Group" +msgstr "ቡድን ፍጠር" + +#: ckan/templates/group/read.html:19 ckan/templates/organization/read.html:25 +#: ckan/templates/snippets/search_form.html:3 +msgid "Search datasets..." +msgstr "የመረጃ ስብስቦችን ፈልግ..." + +#: ckan/templates/group/snippets/feeds.html:3 +msgid "Datasets in group: {group}" +msgstr "በቡድን {group} ውስጥ ያሉ የመረጃ ስብስቦች" + +#: ckan/templates/group/snippets/feeds.html:4 +#: ckan/templates/organization/snippets/feeds.html:4 +msgid "Recent Revision History" +msgstr "የቅርብ ጊዜ የክለሳ ታሪክ" + +#: ckan/templates/group/snippets/group_form.html:10 +#: ckan/templates/organization/snippets/organization_form.html:10 +#: ckan/templates/package/snippets/resource_form.html:30 +msgid "Name" +msgstr "ስም" + +#: ckan/templates/group/snippets/group_form.html:10 +msgid "My Group" +msgstr "ቡድኔ" + +#: ckan/templates/group/snippets/group_form.html:18 +msgid "my-group" +msgstr "ቡድኔ" + +#: ckan/templates/group/snippets/group_form.html:20 +msgid "A little information about my group..." +msgstr "ስለ ቡድኔ ትንሽ መረጃ..." + +#: ckan/templates/group/snippets/group_form.html:38 +msgid "Are you sure you want to delete this Group?" +msgstr "ይህን ቡድን ለማጥፋት እንደሚፈልጉ እርግጠኛ ነዎት?" + +#: ckan/templates/group/snippets/group_form.html:41 +msgid "Save Group" +msgstr "ቡድን አስቀምጥ" + +#: ckan/templates/group/snippets/group_item.html:38 +#: ckan/templates/group/snippets/group_item.html:39 +msgid "View {name}" +msgstr "{name} አሳይ" + +#: ckan/templates/group/snippets/group_item.html:43 +msgid "Remove dataset from this group" +msgstr "ከዚህ ቡድን የመረጃ ስብስብ ያስወግዱ" + +#: ckan/templates/group/snippets/helper.html:4 +msgid "What are Groups?" +msgstr "ቡድኖች ምንድን ናቸው?" + +#: ckan/templates/group/snippets/helper.html:8 +msgid "" +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " +msgstr "" +"የተለያዩ የመረጃ ስብስቦችን በብዛት ለመፍጠር ፣ ለማቀናበር እና ለመቆጣጠር የ CKAN ቡድኖችን መጠቀም ይችላሉ። ለምሳሌ" +" ያህል የመረጃ ስብስቦችን ለአንድ ፕሮጀክት ፣ ቡድን ወይም በሆነ በተለየ ጭብጥ ለማንሸራሸር ፤ ሰዎች የራስዎን የታተሙ " +"የመረጃ ስብስቦች በቀላል መንገድ እንዲፈልጉ እና እንዲያገኙ ያስችላል።" + +#: ckan/templates/group/snippets/history_revisions.html:10 +#: ckan/templates/package/snippets/history_revisions.html:10 +msgid "Compare" +msgstr "አነጻጽር" + +#: ckan/templates/group/snippets/info.html:16 +#: ckan/templates/organization/bulk_process.html:72 +#: ckan/templates/package/read.html:21 +#: ckan/templates/package/snippets/package_basic_fields.html:118 +#: ckan/templates/snippets/organization.html:37 +#: ckan/templates/snippets/package_item.html:42 +msgid "Deleted" +msgstr "ተፍⶆል" + +#: ckan/templates/group/snippets/info.html:24 +#: ckan/templates/package/snippets/package_context.html:7 +#: ckan/templates/snippets/organization.html:45 +msgid "read more" +msgstr "ተጨማሪ ያንብቡ" + +#: ckan/templates/group/snippets/revisions_table.html:7 +#: ckan/templates/package/snippets/revisions_table.html:7 +#: ckan/templates/revision/read.html:5 ckan/templates/revision/read.html:9 +#: ckan/templates/revision/read.html:39 +#: ckan/templates/revision/snippets/revisions_list.html:4 +msgid "Revision" +msgstr "ክለሳ" + +#: ckan/templates/group/snippets/revisions_table.html:8 +#: ckan/templates/package/snippets/revisions_table.html:8 +#: ckan/templates/revision/read.html:53 +#: ckan/templates/revision/snippets/revisions_list.html:5 +msgid "Timestamp" +msgstr "የጊዜ ማህተም" + +#: ckan/templates/group/snippets/revisions_table.html:9 +#: ckan/templates/package/snippets/additional_info.html:25 +#: ckan/templates/package/snippets/additional_info.html:30 +#: ckan/templates/package/snippets/package_metadata_fields.html:14 +#: ckan/templates/package/snippets/revisions_table.html:9 +#: ckan/templates/revision/read.html:50 +#: ckan/templates/revision/snippets/revisions_list.html:6 +msgid "Author" +msgstr "ጸሃፊ(ደራሲ)" + +#: ckan/templates/group/snippets/revisions_table.html:10 +#: ckan/templates/package/snippets/revisions_table.html:10 +#: ckan/templates/revision/read.html:56 +#: ckan/templates/revision/snippets/revisions_list.html:8 +msgid "Log Message" +msgstr "የምዝገባ(ማስታወሻ) መልእክት" + +#: ckan/templates/home/index.html:4 +msgid "Welcome" +msgstr "እንኳን ደህና መጡ!" + +#: ckan/templates/home/snippets/about_text.html:1 +msgid "" +"

CKAN is the world’s leading open-source data portal platform.

" +"

CKAN is a complete out-of-the-box software solution that makes data " +"accessible and usable – by providing tools to streamline publishing, " +"sharing, finding and using data (including storage of data and provision of " +"robust data APIs). CKAN is aimed at data publishers (national and regional " +"governments, companies and organizations) wanting to make their data open " +"and available.

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " +"government portals, as well as city and municipal sites in the US, UK, " +"Argentina, Finland and elsewhere.

CKAN: http://ckan.org/
CKAN Tour: http://ckan.org/tour/
Features " +"overview: http://ckan.org/features/

" +msgstr "" +"

CKAN በዓለም ቀዳሚ አዕምሯዊ ነጻ የግልጽ መረጃ ማስቀመጫ እና መለዋወጫ መድረክ ነው።

CKAN መረጃን " +"ሙሉ ለሙሉ ማተም ፣ ማጋራት ፣ በቀላሉ ማግኘት እና መጠቀም (የመረጃ ማከማቸት እና ጠንካራ መረጃ ኤፒአይዎች አቅርቦትን " +"ያካትታል) የሚያስችሉ መሳሪያዎችህን የያዘ የተⶁላ ሶፍትዌር ነው።

CKAN መረጃዎቻቸውን ለህብረተሰቡ ክፍት እና " +"ተደራሽ ለማድረግ የሚፈልጉ ታላላቅ አታሚዎች (ብሄራዊ እና ክልላዊ መንግሥታት, ኩባንያዎች እና ድርጅቶች) የታለመ ነው። " +"CKAN በዓለም ዙሪያ ያሉ መንግስታዊ እና የተጠቃሚ ቡድኖች ጥቅም ላይ ይውላል ፤ የተለያዩ አከባቢያዊ ፣ ሃገራዊ እና " +"አለም አቀፋዊ የመንግስትና የማህበረሰብ የመረጃ መድረኮችንም ይሸፍናል። ለምሳሌ፣ እንደ ዩናይትድ ኪንግደም data.gov.uk ፣ የአውሮፓ ህብረት publicdata.eu ፣ ብራዚላውያን dados.gov.br ፣ የደች እና የኔዘርላንድ መንግስት ፖርቶች" +" እንዲሁም በአሜሪካ ፣ በእንግሊዝ ፣ በአርጀንቲና በፊንላንድ እና በሌሎች ቦታዎች የከተማ እና ማዘጋጃ ጣቢያዎች " +"ይጠቀማሉ።

CKAN: http://ckan.org/
የ CKAN ጉብኝት: " +"http://ckan.org/tour/
የባህሪያት አጠቃላይ እይታ " +"href=\"http://ckan.org/features/\"> http://ckan.org/features/

" + +#: ckan/templates/home/snippets/promoted.html:8 +msgid "Welcome to CKAN" +msgstr "ወደ CKAN እንኳን ደህና መጡ" + +#: ckan/templates/home/snippets/promoted.html:10 +msgid "" +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " +msgstr "" +"ይህ ስለ CKAN ወይም በአጠቃላይ ስለ ጣቢያው ጥሩ የምዕራፍ አንቀፅ ነው። እዚህ ለመሄድ ምንም ግልባጭ የለንም ነገር " +"ግን በቅርብ ጊዜ እንሰራለን። " + +#: ckan/templates/home/snippets/promoted.html:19 +msgid "This is a featured section" +msgstr "ይህ ተለይቶ የቀረበ ክፍል ነው" + +#: ckan/templates/home/snippets/search.html:2 +msgid "E.g. environment" +msgstr "ለምሳሌ:- አካባቢ" + +#: ckan/templates/home/snippets/search.html:6 +msgid "Search data" +msgstr "መረጃ ፈልግ" + +#: ckan/templates/home/snippets/search.html:8 +msgid "Search datasets" +msgstr "የመረጃ ስብስብ ፈልግ" + +#: ckan/templates/home/snippets/search.html:16 +msgid "Popular tags" +msgstr "ታዋቂ ማለዮዎች" + +#: ckan/templates/home/snippets/stats.html:5 +msgid "{0} statistics" +msgstr "{0} ስታቲስቲክስ" + +#: ckan/templates/home/snippets/stats.html:11 +msgid "dataset" +msgstr "የመረጃ ስብስብ" + +#: ckan/templates/home/snippets/stats.html:11 +msgid "datasets" +msgstr "የመረጃ ስብስቦች" + +#: ckan/templates/home/snippets/stats.html:17 +msgid "organizations" +msgstr "ድርጅቶች" + +#: ckan/templates/home/snippets/stats.html:23 +msgid "groups" +msgstr "ቡድኖች" + +#: ckan/templates/macros/form.html:126 +#, python-format +msgid "" +"You can use Markdown formatting here" +msgstr "" +"እዚህጋ ምልክታዊ ቅርጸት/አቀማመጥ (Markdown formatting) መጠቀም ይችላሉ " + +#: ckan/templates/macros/form.html:277 +msgid "This field is required" +msgstr "ይሄን ቦታ መሞላት ያስፈልጋል" + +#: ckan/templates/macros/form.html:277 +msgid "Custom" +msgstr "የራስ ምርጫ" + +#: ckan/templates/macros/form.html:302 +msgid "The form contains invalid entries:" +msgstr "ቅጹ ልክ ያልኾኑ ግቤቶች(entries) አሉት " + +#: ckan/templates/macros/form.html:407 +msgid "Required field" +msgstr "መሞላት ያለበት" + +#: ckan/templates/macros/form.html:422 +msgid "http://example.com/my-image.jpg" +msgstr "" + +#: ckan/templates/macros/form.html:423 +msgid "Image URL" +msgstr "የምስል URL" + +#: ckan/templates/macros/form.html:438 +msgid "Clear Upload" +msgstr "የተከማቸውን አጽዳ" + +#: ckan/templates/organization/base_form_page.html:5 +msgid "Organization Form" +msgstr "የድርጅት ፎርም" + +#: ckan/templates/organization/bulk_process.html:3 +#: ckan/templates/organization/bulk_process.html:11 +msgid "Edit datasets" +msgstr "የመረጃ ስብስቦችን አድስ" + +#: ckan/templates/organization/bulk_process.html:16 +msgid " found for \"{query}\"" +msgstr "ለ \"{query}\" የተገኘ" + +#: ckan/templates/organization/bulk_process.html:18 +msgid "Sorry no datasets found for \"{query}\"" +msgstr "እናዝናለን ለ \"{query}\" ምንም የመረጃ ስብስቦች አልተገኙም" + +#: ckan/templates/organization/bulk_process.html:37 +msgid "Make public" +msgstr "ይፋ አድርገው" + +#: ckan/templates/organization/bulk_process.html:41 +msgid "Make private" +msgstr "የግል አድርግ" + +#: ckan/templates/organization/bulk_process.html:70 +#: ckan/templates/package/read.html:18 +#: ckan/templates/snippets/package_item.html:40 +msgid "Draft" +msgstr "ረቂቅ" + +#: ckan/templates/organization/bulk_process.html:75 +#: ckan/templates/package/read.html:11 +#: ckan/templates/package/snippets/package_basic_fields.html:98 +#: ckan/templates/snippets/package_item.html:31 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 +msgid "Private" +msgstr "የግል" + +#: ckan/templates/organization/bulk_process.html:88 +msgid "This organization has no datasets associated to it" +msgstr "ይህ ድርጅት ከእሱ ጋር የተያያዘ የመረጃ ስብስቦች የለውም" + +#: ckan/templates/organization/confirm_delete.html:11 +msgid "Are you sure you want to delete organization - {name}?" +msgstr "{name} ይህን ድርጅት ማጥፋት እንደሚፋልጉ እርግጠኛ ነዎት?" + +#: ckan/templates/organization/edit.html:6 +#: ckan/templates/organization/snippets/info.html:13 +#: ckan/templates/organization/snippets/info.html:16 +msgid "Edit Organization" +msgstr "ድርጅትን አድስ" + +#: ckan/templates/organization/index.html:13 +#: ckan/templates/user/dashboard_organizations.html:7 +msgid "Add Organization" +msgstr "ድርጅትን ጨምር" + +#: ckan/templates/organization/index.html:20 +msgid "Search organizations..." +msgstr "ድርጅት ፈልግ..." + +#: ckan/templates/organization/index.html:29 +msgid "There are currently no organizations for this site" +msgstr "በአሁኑ ጊዜ ለዚህ ጣቢያ ምንም ድርጅቶች የሉም " + +#: ckan/templates/organization/member_new.html:31 +#: ckan/templates/user/edit_user_form.html:8 +#: ckan/templates/user/logout_first.html:10 +#: ckan/templates/user/new_user_form.html:5 +#: ckan/templates/user/perform_reset.html:22 +#: ckan/templates/user/read_base.html:76 +#: ckan/templates/user/request_reset.html:16 +#: ckan/templates/user/snippets/login_form.html:20 +msgid "Username" +msgstr "ልዩ ስም" + +#: ckan/templates/organization/member_new.html:49 +msgid "Email address" +msgstr "የኢሜይል አድራሻ" + +#: ckan/templates/organization/member_new.html:59 +msgid "Update Member" +msgstr "አባል አሻሽል" + +#: ckan/templates/organization/member_new.html:79 +msgid "" +"

Admin: Can add/edit and delete datasets, as well as " +"manage organization members.

Editor: Can add and " +"edit datasets, but not manage organization members.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" +msgstr "" +"

አስተዳዳሪ:የመረጃ ስብስቦችን መጨመር ፣ ማደስ እና ማጥፋት ይችላል ፤ እንዲሁም የድርጅት" +" አባላትን ማስተዳደር ይችላል።

አርታዒ: የመረጃ ስብስቦችን መጨመር እና ማደስ " +"ይችላል ፤ ነገር ግን የድርጅት አባላትን ማስተዳደር አይችልም።

አባል: የድርጅቱን " +"የግል የመረጃ ስብስቦች ሊያዩ ይችላሉ፤ ነገር ግን ማሻሻልም ሆነ አዲስ መጨመር አይችልም።

" + +#: ckan/templates/organization/members.html:14 +msgid "{count} member" +msgid_plural "{count} members" +msgstr[0] "" +msgstr[1] "" + +#: ckan/templates/organization/new.html:3 +#: ckan/templates/organization/new.html:5 +#: ckan/templates/organization/new.html:7 +#: ckan/templates/organization/new.html:12 +msgid "Create an Organization" +msgstr "ድርጅት ፍጠር" + +#: ckan/templates/organization/new_organization_form.html:17 +msgid "Update Organization" +msgstr "ድርጅት አሻሽል" + +#: ckan/templates/organization/new_organization_form.html:19 +msgid "Create Organization" +msgstr "ድርጅት ፍጠር" + +#: ckan/templates/organization/snippets/feeds.html:3 +msgid "Datasets in organization: {group}" +msgstr "በድርጅት ውስጥ ያሉ የመረጃ ስብስቦች : {group}" + +#: ckan/templates/organization/snippets/help.html:4 +#: ckan/templates/organization/snippets/helper.html:4 +msgid "What are Organizations?" +msgstr "ድርጅቶች ምንድን ናቸው?" + +#: ckan/templates/organization/snippets/help.html:7 +msgid "" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" +msgstr "" +"

ድርጅቶች እንደ የመረጃ ስብስብ ማተሚያ (ለለምሳሌ፡ የጤና ዲፓርትመንት) ሆነው ያገለግላሉ። ይህ ማለት የመረጃ " +"ስብስቦች የሚታተሙት በግለሰብ ሳይሆን በነዚህ ድርጅቶች ነው።

በድርጅቶች ውስጥ አስተዳዳሪዎች በተጠቀሰው " +"ድርጅት (ለምሳሌ የብሄራዊ ስታቲስቲክስ ጽ/ቤት) ውስጥ ለአባላቶቻቸው የየራሳቸው ሚና እና የመረጃ ስብስቦችን የማተም " +"መብት እንዲያገኙ ፈቃድ መስጠት ይችላሉ።" + +#: ckan/templates/organization/snippets/helper.html:8 +msgid "" +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " +msgstr "" +"የ CKAN ድርጅቶች የተለያዩ የመረጃ ስብስቦችን ለመፍጠር ፣ ለማስተዳደር እና ለማተም ያገለግላሉ። ተጠቃሚዎች " +"በድርጅታቸው ውስጥ ለመፍጠር ፣ ለማደስ እና ለማተም በፍቃድ ደረጃቸው የሚወሰን የተለያዩ ሚናዎች ሊኖራቸው ይችላል።" + +#: ckan/templates/organization/snippets/organization_form.html:10 +msgid "My Organization" +msgstr "ድርጅቴ" + +#: ckan/templates/organization/snippets/organization_form.html:18 +msgid "my-organization" +msgstr "ድርጅቴ" + +#: ckan/templates/organization/snippets/organization_form.html:20 +msgid "A little information about my organization..." +msgstr "ስለ ድርጅቴ ትንሽ መረጃ" + +#: ckan/templates/organization/snippets/organization_form.html:38 +msgid "" +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." +msgstr "" +" ይህን ድርጅት ለማጥፋት መፈለግዎን እርግጠኛ ነዎት? ማስታወሻ * በዚህ ድርጅት ውስጥ ንብረት የሆኑ የህዝብ ወይም የግል" +" የመረጃ ስብስቦች እስካሉ ድረስ ማጥፋት አይችሉም።" + +#: ckan/templates/organization/snippets/organization_form.html:41 +msgid "Save Organization" +msgstr "ድርጅቱን አስቀምጥ" + +#: ckan/templates/organization/snippets/organization_item.html:42 +#: ckan/templates/organization/snippets/organization_item.html:43 +msgid "View {organization_name}" +msgstr "{organization_name} አሳይ" + +#: ckan/templates/package/base.html:22 ckan/templates/package/new.html:9 +#: ckan/templates/package/snippets/new_package_breadcrumb.html:2 +msgid "Create Dataset" +msgstr "የመረጃ ስብስብ ፍጠር" + +#: ckan/templates/package/base_form_page.html:22 +msgid "What are datasets?" +msgstr "የመረጃ ስብስቦች ምንድናቸው?" + +#: ckan/templates/package/base_form_page.html:25 +msgid "" +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " +msgstr "" +"የ CKAN የመረጃ-ስብስብ ቋሚ ዩአርኤል ያላቸው የመረጃ ምንጮችን(ለምሳሌ፡ ፋይሎች) እስከ መግለጫቸውና ሌሎች መረጃዎች " +"የያዘ ስብስብ ነው። የመረጃ ስብስቦች ተጠቃሚዎች መረጃ ሲፈልጉ የሚመለከⶆቸው ናቸው።" + +#: ckan/templates/package/confirm_delete.html:12 +msgid "Are you sure you want to delete dataset - {name}?" +msgstr "የመረጃ ስብስብ {name}ን ማጥፋት መፈለግዎን እርግጠኛ ነዎት?" + +#: ckan/templates/package/confirm_delete_resource.html:11 +msgid "Are you sure you want to delete resource - {name}?" +msgstr "የመረጃ ምንጭ {name}ን ማጥፋት መፈለግዎን እርግጠኛ ነዎት?" + +#: ckan/templates/package/edit_base.html:16 +msgid "View dataset" +msgstr "የመረጃ ስብስብ አሳይ" + +#: ckan/templates/package/edit_base.html:20 +msgid "Edit metadata" +msgstr "የመረጃ ስብስብ አድስ" + +#: ckan/templates/package/edit_view.html:3 +#: ckan/templates/package/edit_view.html:4 +#: ckan/templates/package/edit_view.html:8 +#: ckan/templates/package/edit_view.html:12 +msgid "Edit view" +msgstr "እይታን አድስ" + +#: ckan/templates/package/edit_view.html:20 +#: ckan/templates/package/new_view.html:28 +#: ckan/templates/package/snippets/resource_item.html:32 +msgid "Preview" +msgstr "ቅድመ-እይታ" + +#: ckan/templates/package/edit_view.html:21 +msgid "Update" +msgstr "አሻሽል" + +#: ckan/templates/package/group_list.html:14 +msgid "Associate this group with this dataset" +msgstr "ይህን ቡድን ከዚህ የመረጃ ስብስብ ጋር አጎዳኝ" + +#: ckan/templates/package/group_list.html:14 +msgid "Add to group" +msgstr "ወደ ቡድን ጨምር" + +#: ckan/templates/package/group_list.html:23 +msgid "There are no groups associated with this dataset" +msgstr "ከዚህ የመረጃ ስብስብ ጋር የተዛመዱ ቡድኖች የሉም" + +#: ckan/templates/package/new_package_form.html:15 +msgid "Update Dataset" +msgstr "የመረጃ ስብስብ አሻሽል" + +#: ckan/templates/package/new_resource.html:5 +msgid "Add data to the dataset" +msgstr "ወደዚህ የመረጃ ስብስብ መረጃ ጨምር" + +#: ckan/templates/package/new_resource.html:11 +#: ckan/templates/package/new_resource_not_draft.html:8 +msgid "Add New Resource" +msgstr "አዲስ የመረጃ ምንጭ ጨምር" + +#: ckan/templates/package/new_resource_not_draft.html:3 +#: ckan/templates/package/new_resource_not_draft.html:4 +msgid "Add resource" +msgstr "የመረጃ ምንጭ ጨምር" + +#: ckan/templates/package/new_resource_not_draft.html:16 +msgid "New resource" +msgstr "አዲስ የመረጃ ምንጭ" + +#: ckan/templates/package/new_view.html:3 +#: ckan/templates/package/new_view.html:4 +#: ckan/templates/package/new_view.html:8 +#: ckan/templates/package/new_view.html:12 +msgid "Add view" +msgstr "እይታ ጨምር" + +#: ckan/templates/package/new_view.html:19 +msgid "" +" Data Explorer views may be slow and unreliable unless the DataStore " +"extension is enabled. For more information, please see the Data Explorer " +"documentation. " +msgstr "" +"የመረጃ ማከማቻ የውጫዊ ቅጥያ ከሌለ የውሂብ አሳሽ እይታዎች ፈጣን እና አስተማማኝ ላይሆኑ ይችላሉ። ለተጨማሪ መረጃ " +"እባክዎ የመረጃ አሳሽ " +"ሰነዶችን ይመልከቱ። " + +#: ckan/templates/package/new_view.html:29 +#: ckan/templates/package/snippets/resource_form.html:83 +msgid "Add" +msgstr "ጨምር" + +#: ckan/templates/package/read_base.html:32 +#, python-format +msgid "" +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." +msgstr "" +"ይህ የዚህ የመረጃ ስብስብ በ%(timestamp)s የታደሰው የቀድሞ ክለሳ ነው። አሁን ካለው ወቅታዊ ክለሳ ጋር በከፍተኛ ሁኔታ ሊለያይ ይችላል።" + +#: ckan/templates/package/resource_edit_base.html:17 +msgid "All resources" +msgstr "ሁሉም የመረጃ ምንጮች" + +#: ckan/templates/package/resource_edit_base.html:19 +msgid "View resource" +msgstr "የመረጃ ምንጮች አሳይ" + +#: ckan/templates/package/resource_edit_base.html:24 +#: ckan/templates/package/resource_edit_base.html:30 +msgid "Edit resource" +msgstr "የመረጃ ምንጭ አድስ" + +#: ckan/templates/package/resource_edit_base.html:26 +msgid "Views" +msgstr "እይታዎች" + +#: ckan/templates/package/resource_read.html:40 +msgid "API Endpoint" +msgstr "የኤፒአይ መጨረሻ" + +#: ckan/templates/package/resource_read.html:42 +#: ckan/templates/package/snippets/resource_item.html:47 +msgid "Go to resource" +msgstr "ወደ መረጃ ምንጭ ሂድ" + +#: ckan/templates/package/resource_read.html:44 +#: ckan/templates/package/snippets/resource_item.html:44 +msgid "Download" +msgstr "አውርድ" + +#: ckan/templates/package/resource_read.html:76 +#: ckan/templates/package/resource_read.html:78 +msgid "URL:" +msgstr "ዩአርኤል:" + +#: ckan/templates/package/resource_read.html:86 +msgid "From the dataset abstract" +msgstr "ከመረጃ ስብስቡ ጭብጥ" + +#: ckan/templates/package/resource_read.html:88 +#, python-format +msgid "Source: %(dataset)s" +msgstr "ምንጭ: %(dataset)s" + +#: ckan/templates/package/resource_read.html:127 +msgid "There are no views created for this resource yet." +msgstr "ለዚህ የመረጃ ምንጭ የተፈጠረ እይታ ገና የለም።" + +#: ckan/templates/package/resource_read.html:131 +msgid "Not seeing the views you were expecting?" +msgstr "የጠበቋቸውን እይታዎች እያዩ አይደለም?" + +#: ckan/templates/package/resource_read.html:136 +msgid "Here are some reasons you may not be seeing expected views:" +msgstr "የተጠበቁትን እይታዎች ላያገኙ የሚችሉባቸው አንዳንድ ምክንያቶች እነሆ:" + +#: ckan/templates/package/resource_read.html:138 +msgid "No view has been created that is suitable for this resource" +msgstr "ለእዚህ የመረጃ ምንጭ ተስማሚ የሆነ ምንም እይታ አልተፈጠረም" + +#: ckan/templates/package/resource_read.html:139 +msgid "The site administrators may not have enabled the relevant view plugins" +msgstr "የድረ ገፁ አስተዳዳሪዎች ተያያዥ የማሳያ ተሰኪዎችን ላያካትቱ ይችላሉ" + +#: ckan/templates/package/resource_read.html:140 +msgid "" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" +msgstr "" +"አንድ እይታ የመረጃ ማከማቻውን ከፈለገ የመረጃ ማከማቻ መጫወቻው ሊነቃ አልቻለም ፤ ወይም መረጃው በመረጃ ማከማቻው ውስጥ" +" ላይሆን ይችላል ፤ ወይም የመረጃ ማከማቻው መረጃውን አስተናግዶ አልጨረሰም።" + +#: ckan/templates/package/resource_read.html:162 +msgid "Additional Information" +msgstr "ተጭማሪ መረጃ" + +#: ckan/templates/package/resource_read.html:166 +#: ckan/templates/package/snippets/additional_info.html:6 +#: ckan/templates/revision/diff.html:43 +#: ckan/templates/snippets/additional_info.html:11 +msgid "Field" +msgstr "መስክ" + +#: ckan/templates/package/resource_read.html:167 +#: ckan/templates/package/snippets/additional_info.html:7 +#: ckan/templates/snippets/additional_info.html:12 +msgid "Value" +msgstr "ዋጋ" + +#: ckan/templates/package/resource_read.html:172 +msgid "Data last updated" +msgstr "መረጃው መጨረሻ የተሻሻለው" + +#: ckan/templates/package/resource_read.html:173 +#: ckan/templates/package/resource_read.html:177 +#: ckan/templates/package/resource_read.html:181 +#: ckan/templates/package/resource_read.html:185 +msgid "unknown" +msgstr "ያልታወቀ" + +#: ckan/templates/package/resource_read.html:176 +msgid "Metadata last updated" +msgstr "ልዕለ-መረጃ ለመጨረሻ ጊዜ የተሻሻለው" + +#: ckan/templates/package/resource_read.html:180 +#: ckan/templates/package/snippets/additional_info.html:70 +msgid "Created" +msgstr "ተፈጥሯል" + +#: ckan/templates/package/resource_read.html:184 +#: ckan/templates/package/snippets/resource_form.html:39 +#: ckan/templates/package/snippets/resource_info.html:16 +msgid "Format" +msgstr "ቅርጸት" + +#: ckan/templates/package/resource_read.html:188 +#: ckan/templates/package/snippets/package_basic_fields.html:30 +#: ckan/templates/snippets/license.html:21 +msgid "License" +msgstr "ፈቃድ" + +#: ckan/templates/package/resource_views.html:10 +msgid "New view" +msgstr "አዲስ ዕይታ" + +#: ckan/templates/package/resource_views.html:28 +msgid "This resource has no views" +msgstr "ይህ መረጃ ምንም እይታ የለውም" + +#: ckan/templates/package/resources.html:8 +msgid "Add new resource" +msgstr "አዲስ የመረጃ ምንጭ ይጨምሩ" + +#: ckan/templates/package/resources.html:20 +#: ckan/templates/package/snippets/resources_list.html:26 +#, python-format +msgid "" +"

This dataset has no data, why not " +"add some?

" +msgstr "" +"

ይህ የመረጃ ስብስብ ምንም መረጃ የለውም ፣ ለምን " +"አይጨምሩም?

" + +#: ckan/templates/package/search.html:52 +msgid "API" +msgstr "ኤፒአይ" + +#: ckan/templates/package/search.html:53 +msgid "API Docs" +msgstr "የኤፒአይ ሰነዶች" + +#: ckan/templates/package/search.html:55 +msgid "full {format} dump" +msgstr "ሙሉ {format} ጭነት" + +#: ckan/templates/package/search.html:56 +#, python-format +msgid "" +" You can also access this registry using the %(api_link)s (see " +"%(api_doc_link)s) or download a %(dump_link)s. " +msgstr "" +"እንዲሁም ይሄን %(api_link)s በመጠቀም ይህን መዝገብ መድረስ ይችላሉ። (see %(api_doc_link)sን " +"ተመልከት ወይም %(dump_link)sን አውርድ)" + +#: ckan/templates/package/search.html:60 +#, python-format +msgid "" +" You can also access this registry using the %(api_link)s (see " +"%(api_doc_link)s). " +msgstr "" +"እንዲሁም ይሄን %(api_link)s በመጠቀም ይህን መዝገብ መድረስ ይችላሉ። (see %(api_doc_link)sን " +"ተመልከት)" + +#: ckan/templates/package/view_edit_base.html:9 +msgid "All views" +msgstr "ሁሉም እይታዎች" + +#: ckan/templates/package/view_edit_base.html:12 +msgid "View view" +msgstr "እይታን አሳይ" + +#: ckan/templates/package/view_edit_base.html:37 +msgid "View preview" +msgstr "ቅድመ-ዕይታ አሳይ" + +#: ckan/templates/package/snippets/additional_info.html:2 +#: ckan/templates/snippets/additional_info.html:7 +msgid "Additional Info" +msgstr "ተጨማሪ መረጃ" + +#: ckan/templates/package/snippets/additional_info.html:14 +#: ckan/templates/package/snippets/package_metadata_fields.html:6 +msgid "Source" +msgstr "ምንጭ" + +#: ckan/templates/package/snippets/additional_info.html:37 +#: ckan/templates/package/snippets/additional_info.html:42 +#: ckan/templates/package/snippets/package_metadata_fields.html:20 +msgid "Maintainer" +msgstr "ጠብቂ" + +#: ckan/templates/package/snippets/additional_info.html:49 +#: ckan/templates/package/snippets/package_metadata_fields.html:10 +msgid "Version" +msgstr "ስሪት" + +#: ckan/templates/package/snippets/additional_info.html:56 +#: ckan/templates/package/snippets/package_basic_fields.html:114 +#: ckan/templates/user/read_base.html:91 +msgid "State" +msgstr "ወቅታዊ ሁኔታ" + +#: ckan/templates/package/snippets/additional_info.html:62 +msgid "Last Updated" +msgstr "መጨረሻ የተሻሻለው" + +#: ckan/templates/package/snippets/cannot_create_package.html:10 +msgid "Before you can create a dataset you need to create an organization." +msgstr "የመረጃ ስብስብን ከመፍጠርዎ በፊት ድርጅት መፍጠር ያስፈልግዎታል።" + +#: ckan/templates/package/snippets/cannot_create_package.html:13 +msgid "Create a new organization" +msgstr "አዲስ ድርጅት ፍጠር" + +#: ckan/templates/package/snippets/cannot_create_package.html:18 +msgid "There are no organizations to which you can assign this dataset." +msgstr "ይህንን የመረጃ ስብስብ ሊመድቡ የሚችሉበት ምንም ድርጅት የለም።" + +#: ckan/templates/package/snippets/cannot_create_package.html:19 +msgid "" +"Ask a system administrator to create an organization before you can " +"continue." +msgstr "ከመቀጠልዎ በፊት አንድ ድርጅት እንዲፈጥር የስርዓት አስተዳዳሪውን ይጠይቁ።" + +#: ckan/templates/package/snippets/package_basic_fields.html:4 +#: ckan/templates/package/snippets/view_form.html:8 +msgid "Title" +msgstr "ርዕስ" + +#: ckan/templates/package/snippets/package_basic_fields.html:4 +msgid "eg. A descriptive title" +msgstr "ምሳሌ፡ ገላጭ ርዕስ" + +#: ckan/templates/package/snippets/package_basic_fields.html:13 +msgid "eg. my-dataset" +msgstr "ምሳሌ፡ የመረጃ ስብስቤ" + +#: ckan/templates/package/snippets/package_basic_fields.html:19 +msgid "eg. Some useful notes about the data" +msgstr "ምሳሌ፡ ስለ መረጃው አንዳንድ ጠቃሚ ማስታወሻዎች" + +#: ckan/templates/package/snippets/package_basic_fields.html:24 +msgid "eg. economy, mental health, government" +msgstr "ምሳሌ፡ ኢኮኖሚ ፣ የአእምሮ ጤና ፣ መንግስት" + +#: ckan/templates/package/snippets/package_basic_fields.html:45 +msgid "" +" License definitions and additional information can be found at opendefinition.org " +msgstr "" +"የፍቃድ መግለጫዎች እና ተጨማሪ መረጃዎች በ opendefinition.org ማግኘት " +"ይችላሉ።" + +#: ckan/templates/package/snippets/package_basic_fields.html:76 +#: ckan/templates/snippets/organization.html:23 +msgid "Organization" +msgstr "ድርጅት" + +#: ckan/templates/package/snippets/package_basic_fields.html:80 +msgid "No organization" +msgstr "ምንም ድርጅት የለም" + +#: ckan/templates/package/snippets/package_basic_fields.html:95 +msgid "Visibility" +msgstr "የታይነት ደረጃ" + +#: ckan/templates/package/snippets/package_basic_fields.html:98 +msgid "Public" +msgstr "ይፋ" + +#: ckan/templates/package/snippets/package_basic_fields.html:117 +msgid "Active" +msgstr "ንቁ" + +#: ckan/templates/package/snippets/package_form.html:28 +msgid "" +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." +msgstr "" +"ከዚህ በላይ የመረጡት የመረጃ ፈቃድ በዚህ የመረጃ ስብስብ ውስጥ ያከሏቸው ማናቸውም የመገልገያ ፋይሎች ይዘት " +"ብቻ ይመለከታል። ይህን ቅጽ በማስገባት በመረጃ ስርዓት ፈቃድ መሠረት" +" ወደ ቅጽ (ፎርሙ) ያስገባኸውን ሜታዳታ ዋጋ ለመልቀቅ ተስማምተሃል።" + +#: ckan/templates/package/snippets/package_form.html:39 +msgid "Are you sure you want to delete this dataset?" +msgstr "ይህን የመረጃ ስብስብ ማጥፋት መፈለግዎን እርግጠኛ ነዎት?" + +#: ckan/templates/package/snippets/package_form.html:43 +msgid "Next: Add Data" +msgstr "ቀጣይ፡ መረጃ ይጨምሩ" + +#: ckan/templates/package/snippets/package_metadata_fields.html:6 +msgid "http://example.com/dataset.json" +msgstr "" + +#: ckan/templates/package/snippets/package_metadata_fields.html:10 +msgid "1.0" +msgstr "" + +#: ckan/templates/package/snippets/package_metadata_fields.html:14 +#: ckan/templates/package/snippets/package_metadata_fields.html:20 +#: ckan/templates/user/new_user_form.html:6 +msgid "Joe Bloggs" +msgstr "Siham Mohammmed" + +#: ckan/templates/package/snippets/package_metadata_fields.html:16 +msgid "Author Email" +msgstr "የጸሃፊው ኢሜይል" + +#: ckan/templates/package/snippets/package_metadata_fields.html:16 +#: ckan/templates/package/snippets/package_metadata_fields.html:22 +#: ckan/templates/user/new_user_form.html:7 +msgid "joe@example.com" +msgstr "khayo7mhmd@gmail.com" + +#: ckan/templates/package/snippets/package_metadata_fields.html:22 +msgid "Maintainer Email" +msgstr "የተቆጣጣሪው ኢሜይል" + +#: ckan/templates/package/snippets/resource_edit_form.html:12 +msgid "Update Resource" +msgstr "መረጃ አሻሽል" + +#: ckan/templates/package/snippets/resource_form.html:26 +msgid "Data" +msgstr "መረጃ" + +#: ckan/templates/package/snippets/resource_form.html:26 +msgid "http://example.com/external-data.csv" +msgstr "" + +#: ckan/templates/package/snippets/resource_form.html:30 +msgid "eg. January 2011 Gold Prices" +msgstr "ምሳሌ፡ ነሃሴ 1989 የተወለዱ ህጻናት" + +#: ckan/templates/package/snippets/resource_form.html:34 +msgid "Some useful notes about the data" +msgstr "ስለዚህ መረጃ አንዳንድ ጠቃሚ ማስታወሻዎችህ" + +#: ckan/templates/package/snippets/resource_form.html:39 +msgid "eg. CSV, XML or JSON" +msgstr "ምሳሌ፡ CSV, XML ወይም JSON" + +#: ckan/templates/package/snippets/resource_form.html:42 +msgid "This will be guessed automatically. Leave blank if you wish" +msgstr "ይህ በራስ-ሰር(automatically) ስለሚገመት ከፈለጉ ባዶውን መተው ይችላሉ" + +#: ckan/templates/package/snippets/resource_form.html:53 +msgid "eg. 2012-06-05" +msgstr "ምሳሌ፡ 1997-08-20" + +#: ckan/templates/package/snippets/resource_form.html:55 +msgid "File Size" +msgstr "የፋይል መጠን" + +#: ckan/templates/package/snippets/resource_form.html:55 +msgid "eg. 1024" +msgstr "ምሳሌ፡ 1024" + +#: ckan/templates/package/snippets/resource_form.html:57 +#: ckan/templates/package/snippets/resource_form.html:59 +msgid "MIME Type" +msgstr "የ MIME አይነት" + +#: ckan/templates/package/snippets/resource_form.html:57 +#: ckan/templates/package/snippets/resource_form.html:59 +msgid "eg. application/json" +msgstr "ምሳሌ፡ application/json" + +#: ckan/templates/package/snippets/resource_form.html:67 +msgid "Are you sure you want to delete this resource?" +msgstr "ይህን የመረጃ ምንጭ ማጥፋት መፈለግዎን እርግጠኛ ነዎት?" + +#: ckan/templates/package/snippets/resource_form.html:73 +msgid "Previous" +msgstr "በፊት" + +#: ckan/templates/package/snippets/resource_form.html:76 +msgid "Save & add another" +msgstr "አስከምጥና ሌላ ጨምር" + +#: ckan/templates/package/snippets/resource_form.html:79 +msgid "Finish" +msgstr "ጨርስ" + +#: ckan/templates/package/snippets/resource_help.html:2 +msgid "What's a resource?" +msgstr "የመረጃ ምንጭ ምንድነው?" + +#: ckan/templates/package/snippets/resource_help.html:4 +msgid "A resource can be any file or link to a file containing useful data." +msgstr "የመረጃ ምንጭ ማንኛውም ፋይል ወይም ጠቃሚ መረጃ ወዳለው ፋይል የሚያደርስ አገናኝ(ሊንክ) ማለት ነው።" + +#: ckan/templates/package/snippets/resource_item.html:23 +msgid "Explore" +msgstr "አስስ" + +#: ckan/templates/package/snippets/resource_item.html:35 +msgid "More information" +msgstr "ለበለጠ መረጃ" + +#: ckan/templates/package/snippets/resource_view.html:10 +msgid "Fullscreen" +msgstr "ሙሉ ማያ" + +#: ckan/templates/package/snippets/resource_view.html:18 +msgid "Embed" +msgstr "አካት" + +#: ckan/templates/package/snippets/resource_view.html:32 +msgid "This resource view is not available at the moment." +msgstr "ይሀን የመረጃ ምንጭ እይታ ለጊዜው አይገኝም።" + +#: ckan/templates/package/snippets/resource_view.html:74 +msgid "Embed resource view" +msgstr "የመረጃ ምንጭ እይታ አካት" + +#: ckan/templates/package/snippets/resource_view.html:77 +msgid "" +"You can copy and paste the embed code into a CMS or blog software that " +"supports raw HTML" +msgstr "" +"የመክተቻውን ኮድ ጥሬ HTML ወደ ሚደግፍ CMS ወይም የብሎግ ሶፍትዌር ቀድቶ መለተፍ(copy and paste) ይችላሉ" + +#: ckan/templates/package/snippets/resource_view.html:80 +msgid "Width" +msgstr "ስፋት" + +#: ckan/templates/package/snippets/resource_view.html:83 +msgid "Height" +msgstr "ርዝመት" + +#: ckan/templates/package/snippets/resource_view.html:86 +msgid "Code" +msgstr "ኮድ" + +#: ckan/templates/package/snippets/resource_views_list.html:8 +msgid "Resource Preview" +msgstr "የመረጃ ምንጭ ቅድመ-ዕይታ" + +#: ckan/templates/package/snippets/resources_list.html:13 +msgid "Data and Resources" +msgstr "መረጃ እና የመረጃ ምንጮች" + +#: ckan/templates/package/snippets/resources_list.html:30 +msgid "This dataset has no data" +msgstr "ይህ የመረጃ ስብስብ ምንም መረጃ የለውም" + +#: ckan/templates/package/snippets/revisions_table.html:24 +#, python-format +msgid "Read dataset as of %s" +msgstr "የመረጃ ስብስብ እንደ %s አንብብ" + +#: ckan/templates/package/snippets/stages.html:23 +#: ckan/templates/package/snippets/stages.html:25 +msgid "Create dataset" +msgstr "የመረጃ ስብስብ ፍጠር" + +#: ckan/templates/package/snippets/stages.html:30 +#: ckan/templates/package/snippets/stages.html:34 +#: ckan/templates/package/snippets/stages.html:36 +msgid "Add data" +msgstr "መረጃ ጨምር" + +#: ckan/templates/package/snippets/view_form.html:8 +msgid "eg. My View" +msgstr "ምሳሌ፡ የኔ እይታ" + +#: ckan/templates/package/snippets/view_form.html:9 +msgid "eg. Information about my view" +msgstr "ምሳሌ፡ ገለጻ ስለኔ እይታ" + +#: ckan/templates/package/snippets/view_form_filters.html:28 +msgid "Remove Filter" +msgstr "ማጣሪያ አስወግድ" + +#: ckan/templates/package/snippets/view_help.html:2 +msgid "What's a view?" +msgstr "እይታ ምንድነው?" + +#: ckan/templates/package/snippets/view_help.html:4 +msgid "A view is a representation of the data held against a resource" +msgstr "እይታ ማለት በሆነ ምንጭ የተደገፈ አንጻራዊ የመረጃ ውክልና ነው።" + +#: ckan/templates/revision/diff.html:6 +msgid "Differences" +msgstr "ልዩነቶች" + +#: ckan/templates/revision/diff.html:13 ckan/templates/revision/diff.html:18 +#: ckan/templates/revision/diff.html:23 +msgid "Revision Differences" +msgstr "የክለሳ ልዩነቶች" + +#: ckan/templates/revision/diff.html:44 +msgid "Difference" +msgstr "ልዩነት" + +#: ckan/templates/revision/diff.html:54 +msgid "No Differences" +msgstr "ምንም ልዩነቶች የሉም" + +#: ckan/templates/revision/list.html:3 ckan/templates/revision/list.html:6 +#: ckan/templates/revision/list.html:10 +msgid "Revision History" +msgstr "የክለሳ ታሪክ ዝርዝር" + +#: ckan/templates/revision/list.html:6 ckan/templates/revision/read.html:8 +msgid "Revisions" +msgstr "ክለሳዎች" + +#: ckan/templates/revision/read.html:30 +msgid "Undelete" +msgstr "አታጥፋ" + +#: ckan/templates/revision/read.html:64 +msgid "Changes" +msgstr "ለውጦች" + +#: ckan/templates/revision/read.html:74 +msgid "Datasets' Tags" +msgstr "የመረጃ ስብስቦችህ መለዮ" + +#: ckan/templates/revision/snippets/revisions_list.html:7 +msgid "Entity" +msgstr "አካል" + +#: ckan/templates/snippets/activity_item.html:3 +msgid "New activity item" +msgstr "አዲስ የእንቅስቃሴ ንጥል" + +#: ckan/templates/snippets/add_dataset.html:6 +msgid "Add Dataset" +msgstr "የመረጃ ስብስብ ጨምር" + +#: ckan/templates/snippets/datapusher_status.html:8 +msgid "Datapusher status: {status}." +msgstr "የመረጃ ገፊው(Datapusher) ወቅታዊ ሁነታ፡ {status} ።" + +#: ckan/templates/snippets/disqus_trackback.html:2 +msgid "Trackback URL" +msgstr "የምንጭ ፍለጋ URL" + +#: ckan/templates/snippets/facet_list.html:82 +msgid "Show More {facet_type}" +msgstr "ተጨማሪ አሳይ {facet_type}" + +#: ckan/templates/snippets/facet_list.html:85 +msgid "Show Only Popular {facet_type}" +msgstr "ታዋኪ የሆኑትን ብቻ አሳይ {facet_type}" + +#: ckan/templates/snippets/facet_list.html:89 +msgid "There are no {facet_type} that match this search" +msgstr "ከዚ ፍለጋ ጋር የሚመሳሰል {facet_type} የለም" + +#: ckan/templates/snippets/home_breadcrumb_item.html:2 +msgid "Home" +msgstr "መነሻ" + +#: ckan/templates/snippets/language_selector.html:3 +msgid "Language" +msgstr "ቋንቋ" + +#: ckan/templates/snippets/language_selector.html:11 +#: ckan/templates/snippets/search_form.html:42 +#: ckan/templates/snippets/simple_search.html:15 +#: ckan/templates/snippets/sort_by.html:22 +msgid "Go" +msgstr "ሂድ" + +#: ckan/templates/snippets/license.html:14 +msgid "No License Provided" +msgstr "ምንም አይነት ፍቃድ አላቀረቡም" + +#: ckan/templates/snippets/license.html:28 +msgid "This dataset satisfies the Open Definition." +msgstr "ይሀ የመረጃ ስብስብ የመረጃን ግልጽነት ትርጉም ያሟላል።" + +#: ckan/templates/snippets/organization.html:48 +msgid "There is no description for this organization" +msgstr "ለዚህ ድርጅት ምንም መግለጫ የለም" + +#: ckan/templates/snippets/package_item.html:57 +msgid "This dataset has no description" +msgstr "ይህ የመረጃ ስብስብ ምንም መግለጫ የለውም" + +#: ckan/templates/snippets/search_form.html:33 +#: ckan/templates/snippets/simple_search.html:8 +#: ckan/templates/snippets/sort_by.html:12 +msgid "Order by" +msgstr "ቅደም ተከተል" + +#: ckan/templates/snippets/search_form.html:74 +msgid "Filter Results" +msgstr "ውጤቶችን አታራ" + +#: ckan/templates/snippets/search_form.html:81 +msgid "

Please try another search.

" +msgstr "

እባክዎን ሌላ ፍለጋ ይሞክሩ።

" + +#: ckan/templates/snippets/search_form.html:87 +msgid "" +"

There was an error while searching." +" Please try again.

" +msgstr "" +"

በፍለጋው ላይ ችግር አጋጥሟል እባክዎ እንደገና " +"ይሞክሩ።

" + +#: ckan/templates/snippets/search_result_text.html:15 +msgid "{number} dataset found for \"{query}\"" +msgid_plural "{number} datasets found for \"{query}\"" +msgstr[0] "ለ \"{query}\" {number} የመረጃ ስብስብ ተገኝቷል" +msgstr[1] "ለ \"{query}\" {number} የመረጃ ስብስቦች ተገኝተዋል" + +#: ckan/templates/snippets/search_result_text.html:16 +msgid "No datasets found for \"{query}\"" +msgstr "ለ \"{query}\" ምንም አይነት የመረጃ ስብስብ አልተገኘም" + +#: ckan/templates/snippets/search_result_text.html:17 +msgid "{number} dataset found" +msgid_plural "{number} datasets found" +msgstr[0] "{number} የመረጃ ስብስብ ተገኝቷል" +msgstr[1] "{number} የመረጃ ስብስቦች ተገኝተዋል" + +#: ckan/templates/snippets/search_result_text.html:18 +msgid "No datasets found" +msgstr "ምንም አይነት የመረጃ ስብስብ አልተገኘም" + +#: ckan/templates/snippets/search_result_text.html:21 +msgid "{number} group found for \"{query}\"" +msgid_plural "{number} groups found for \"{query}\"" +msgstr[0] "ለ \"{query}\" {number} ቡድን ተገኝቷል" +msgstr[1] "ለ \"{query}\" {number} ቡድኖች ተገኝተዋል" + +#: ckan/templates/snippets/search_result_text.html:22 +msgid "No groups found for \"{query}\"" +msgstr "ለ \"{query}\" ምንም አይነት ቡድኖች አልተገኙም" + +#: ckan/templates/snippets/search_result_text.html:23 +msgid "{number} group found" +msgid_plural "{number} groups found" +msgstr[0] "{number} ቡድን ተገኝቷል" +msgstr[1] "{number} ቡድኖች ተገኝተዋል" + +#: ckan/templates/snippets/search_result_text.html:24 +msgid "No groups found" +msgstr "ምንም አይነት ቡድኖች አልተገኙም" + +#: ckan/templates/snippets/search_result_text.html:27 +msgid "{number} organization found for \"{query}\"" +msgid_plural "{number} organizations found for \"{query}\"" +msgstr[0] "ለ \"{query}\" {number} ድርጅት ተገኝቷል" +msgstr[1] "ለ \"{query}\" {number} ድርጅቶች ተገኝተዋል" + +#: ckan/templates/snippets/search_result_text.html:28 +msgid "No organizations found for \"{query}\"" +msgstr "ለ \"{query}\" ምንም አይነት ድርጅቶች አልተገኙም" + +#: ckan/templates/snippets/search_result_text.html:29 +msgid "{number} organization found" +msgid_plural "{number} organizations found" +msgstr[0] "{number} ድርጅት ተገኝቷል" +msgstr[1] "{number} ድርጅቶች ተገኝተዋል" + +#: ckan/templates/snippets/search_result_text.html:30 +msgid "No organizations found" +msgstr "ምንም አይነት ድርጅቶች አልተገኙም" + +#: ckan/templates/snippets/social.html:5 +msgid "Social" +msgstr "ማህበራዊ" + +#: ckan/templates/snippets/subscribe.html:2 +msgid "Subscribe" +msgstr "ይዘዙ" + +#: ckan/templates/snippets/subscribe.html:4 +#: ckan/templates/user/edit_user_form.html:12 +#: ckan/templates/user/new_user_form.html:7 +#: ckan/templates/user/read_base.html:82 +msgid "Email" +msgstr "ኢሜይል" + +#: ckan/templates/snippets/subscribe.html:5 +msgid "RSS" +msgstr "" + +#: ckan/templates/snippets/context/user.html:23 +#: ckan/templates/user/read_base.html:57 +msgid "Edits" +msgstr "አርትዖቶች" + +#: ckan/templates/tag/index.html:33 ckan/templates/tag/index.html:34 +msgid "Search Tags" +msgstr "መለያዎችን ፈልግ" + +#: ckan/templates/user/dashboard.html:19 ckan/templates/user/dashboard.html:37 +msgid "News feed" +msgstr "የዜና ቋት" + +#: ckan/templates/user/dashboard.html:20 +#: ckan/templates/user/dashboard_datasets.html:12 +msgid "My Datasets" +msgstr "ስብስቦቼ" + +#: ckan/templates/user/dashboard.html:21 +#: ckan/templates/user/dashboard_organizations.html:12 +msgid "My Organizations" +msgstr "ድርጅቶቼ" + +#: ckan/templates/user/dashboard.html:22 +#: ckan/templates/user/dashboard_groups.html:12 +msgid "My Groups" +msgstr "ቡድኖቼ" + +#: ckan/templates/user/dashboard.html:39 +msgid "Activity from items that I'm following" +msgstr "እንቅስቃሴ እየተከተልኳቸው ካሉት ንጥሎች" + +#: ckan/templates/user/dashboard_datasets.html:17 +#: ckan/templates/user/read.html:20 +msgid "You haven't created any datasets." +msgstr "ምንም የመረጃ ስብስቦች አልፈጠሩም።" + +#: ckan/templates/user/dashboard_datasets.html:19 +#: ckan/templates/user/dashboard_groups.html:22 +#: ckan/templates/user/dashboard_organizations.html:23 +#: ckan/templates/user/read.html:22 +msgid "Create one now?" +msgstr "አሁን ይፍጠር?" + +#: ckan/templates/user/dashboard_groups.html:20 +msgid "You are not a member of any groups." +msgstr "የማንኛውም ቡድን አባል አይደሉም።" + +#: ckan/templates/user/dashboard_organizations.html:21 +msgid "You are not a member of any organizations." +msgstr "የማንኛቸውም ድርጅቶች አባል አይደሉም።" + +#: ckan/templates/user/edit.html:6 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/list.html:6 ckan/templates/user/list.html:13 +#: ckan/templates/user/read_base.html:5 ckan/templates/user/read_base.html:8 +#: ckan/templates/user/snippets/user_search.html:2 +msgid "Users" +msgstr "ተጠቃሚዎች" + +#: ckan/templates/user/edit.html:17 +msgid "Account Info" +msgstr "የአካውንቶ መረጃ" + +#: ckan/templates/user/edit.html:19 +msgid "" +" Your profile lets other CKAN users know about who you are and what you do. " +msgstr " መገለጫህ(ፕሮፋይልህ) ስለማን እንደሆንክ እና ምን እንደምታደርግ ሌሎች የ CKAN ተጠቃሚዎችን ያሳውቃቸዋል።" + +#: ckan/templates/user/edit_user_form.html:7 +msgid "Change details" +msgstr "ዝርዝሮችን ለውጥ" + +#: ckan/templates/user/edit_user_form.html:10 +msgid "Full name" +msgstr "ሙሉ ስም" + +#: ckan/templates/user/edit_user_form.html:10 +msgid "eg. Joe Bloggs" +msgstr "ምሳሌ: ሙና መሀመድ" + +#: ckan/templates/user/edit_user_form.html:12 +msgid "eg. joe@example.com" +msgstr "ምሳሌ: muna@example.com" + +#: ckan/templates/user/edit_user_form.html:14 +msgid "A little information about yourself" +msgstr "ስለራስዎ ትንሽ መረጃ" + +#: ckan/templates/user/edit_user_form.html:17 +msgid "Subscribe to notification emails" +msgstr "ለማስታወቅያ ኢሜል መዝግብ" + +#: ckan/templates/user/edit_user_form.html:26 +msgid "Change password" +msgstr "የይለፍ ቃል ቀይር" + +#: ckan/templates/user/edit_user_form.html:29 +msgid "Sysadmin Password" +msgstr "የአስተዳዳሪ ይለፍ ቃል" + +#: ckan/templates/user/edit_user_form.html:37 +#: ckan/templates/user/logout_first.html:11 +#: ckan/templates/user/new_user_form.html:8 +#: ckan/templates/user/perform_reset.html:25 +#: ckan/templates/user/snippets/login_form.html:22 +msgid "Password" +msgstr "የይለፍ ቃል " + +#: ckan/templates/user/edit_user_form.html:39 +msgid "Confirm Password" +msgstr "የይለፍ ቃሉን አረጋግጥ" + +#: ckan/templates/user/edit_user_form.html:45 +msgid "Are you sure you want to delete this User?" +msgstr "ይህን ተጠቃሚ መሰረዝ እንደሚፈልጉ እርግጠኛ ነዎት ?" + +#: ckan/templates/user/edit_user_form.html:50 +msgid "Are you sure you want to regenerate the API key?" +msgstr "እርግጠኛ ነዎት የኤፒአይ ቁልፉን እንደገና ማደስ እንደሚፈልጉ እርግጠኛ ነዎት ?" + +#: ckan/templates/user/edit_user_form.html:50 +msgid "Regenerate API Key" +msgstr "የኤፒአይ ቁልፍ ዳግም ያድሱ" + +#: ckan/templates/user/edit_user_form.html:54 +msgid "Update Profile" +msgstr "ፕሮፋይል አሻሽል" + +#: ckan/templates/user/list.html:3 +#: ckan/templates/user/snippets/user_search.html:11 +msgid "All Users" +msgstr "ሁሉም ተጠቃሚዎች" + +#: ckan/templates/user/login.html:3 ckan/templates/user/login.html:6 +#: ckan/templates/user/login.html:12 +#: ckan/templates/user/snippets/login_form.html:28 +msgid "Login" +msgstr "ግባ" + +#: ckan/templates/user/login.html:25 +msgid "Need an Account?" +msgstr "አካውንት ይፈልጋሉ?" + +#: ckan/templates/user/login.html:27 +msgid "Then sign right up, it only takes a minute." +msgstr "እንድዳውስ ባንድ አፍታ ይመዝገቡ።" + +#: ckan/templates/user/login.html:30 +msgid "Create an Account" +msgstr "አካውንት ፍጠር" + +#: ckan/templates/user/login.html:42 +msgid "Forgotten your password?" +msgstr "የይለፍ ቃልዎን ረስተዋል?" + +#: ckan/templates/user/login.html:44 +msgid "No problem, use our password recovery form to reset it." +msgstr "ምንም ችግር የለም፤ ዳግም ለማስጀመር የይለፍ ቃል መልሶ ማግኛ ቅርጸታችንን ይጠቀሙ።" + +#: ckan/templates/user/login.html:47 +msgid "Forgot your password?" +msgstr "የይለፍ ቃልዎን ረስተዋል?" + +#: ckan/templates/user/logout.html:3 ckan/templates/user/logout.html:9 +msgid "Logged Out" +msgstr "ዘግተው ወጥተዋል" + +#: ckan/templates/user/logout.html:11 +msgid "You are now logged out." +msgstr "አሁን ዘግተው ወጥተዋል።" + +#: ckan/templates/user/logout_first.html:9 +msgid "You're already logged in as {user}." +msgstr "አስቀድመው እንደ {user} ሆነው ገብተዋል።" + +#: ckan/templates/user/logout_first.html:9 +msgid "Logout" +msgstr "ውጣ" + +#: ckan/templates/user/logout_first.html:12 +#: ckan/templates/user/snippets/login_form.html:24 +msgid "Remember me" +msgstr "አስታውሰኝ" + +#: ckan/templates/user/logout_first.html:20 +msgid "You're already logged in" +msgstr "አስቀድመው ገብተዋል" + +#: ckan/templates/user/logout_first.html:22 +msgid "You need to log out before you can log in with another account." +msgstr "በሌላ አካውንት መግባት ከመቻልዎ በፊት መውጣት ያስፈልግዎታል።" + +#: ckan/templates/user/logout_first.html:23 +msgid "Log out now" +msgstr "አሁን ዘግተው ይውጡ" + +#: ckan/templates/user/new.html:6 +msgid "Registration" +msgstr "ምዝገባ" + +#: ckan/templates/user/new.html:14 +msgid "Register for an Account" +msgstr "አካውንት ለማግኘት ይመዝገቡ" + +#: ckan/templates/user/new.html:26 +msgid "Why Sign Up?" +msgstr "ለምን መመዝገብ አስፈለገ?" + +#: ckan/templates/user/new.html:28 +msgid "Create datasets, groups and other exciting things" +msgstr "" +"የመረጃ ስብስቦችን፣ ቡድኖችን፣ ድርጅቶችን እና ሌሎች አስደሳች ነገሮችን መፍጠር እንዲሁም ማግኘት ይችላሉ። መረጃዎቹንም " +"በፈለጉት አቀራረብ ማየትና በፈለጉት ቅርጸት ማውረድ ይችላሉ። ከዛም ባለፈ በጣብያው ላይ ባሉት የእይታና ቅድመ-እይታ " +"መሳሪያዎች ማገናዘብ፣ ማጥናት... ወዘተ ይችላሉ።" + +#: ckan/templates/user/new_user_form.html:5 +msgid "username" +msgstr "ልዩ ስም" + +#: ckan/templates/user/new_user_form.html:6 +msgid "Full Name" +msgstr "ሙሉ ስም" + +#: ckan/templates/user/new_user_form.html:19 +msgid "Create Account" +msgstr "አካውንት ፍጠር" + +#: ckan/templates/user/perform_reset.html:4 +#: ckan/templates/user/perform_reset.html:14 +msgid "Reset Your Password" +msgstr "የይለፍ ቃልዎን ዳግም ያጽድቁ" + +#: ckan/templates/user/perform_reset.html:7 +msgid "Password Reset" +msgstr "የይለፍ ቃል ዳግም አጽድቅ" + +#: ckan/templates/user/perform_reset.html:21 +msgid "You can also change username. It can not be modified later." +msgstr "እንዲሁም ልዩ ስምዎን መቀየር ይችላሉ። በኋላ መለወጥ አይቻልም።" + +#: ckan/templates/user/perform_reset.html:29 +msgid "Update Password" +msgstr "የይለፍ ቃል አሻሻል" + +#: ckan/templates/user/perform_reset.html:43 +#: ckan/templates/user/request_reset.html:32 +msgid "How does this work?" +msgstr "ይሄ እንዴት ነው የሚሰራው?" + +#: ckan/templates/user/perform_reset.html:45 +msgid "Simply enter a new password and we'll update your account" +msgstr "በቀላሉ አዲስ የይለፍ ቃል ያስገቡና መለያዎን እናሻሽላለን።" + +#: ckan/templates/user/read.html:27 +msgid "User hasn't created any datasets." +msgstr "ተጠቃሚ የመረጃ ስብስብ አልፈጠረም።" + +#: ckan/templates/user/read_base.html:39 +msgid "You have not provided a biography." +msgstr "ስለራስዎ የገለጹት ነገር የለም።" + +#: ckan/templates/user/read_base.html:41 +msgid "This user has no biography." +msgstr "ይህ ተጠቃሚ ስለራሱ የገለጸው ነገር የለም።" + +#: ckan/templates/user/read_base.html:73 +msgid "Open ID" +msgstr "ክፍት የመለዮ ቁጥር(ID)" + +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 +msgid "This means only you can see this" +msgstr "ይህ ማለት ይሀን ማየት የሚችሉት እርስዎ ብቻ ኖት" + +#: ckan/templates/user/read_base.html:87 +msgid "Member Since" +msgstr "አባል የሆኑበት ጊዜ" + +#: ckan/templates/user/read_base.html:96 +msgid "API Key" +msgstr "የኤፒአይ ቁልፍ" + +#: ckan/templates/user/request_reset.html:3 +#: ckan/templates/user/request_reset.html:13 +msgid "Reset your password" +msgstr "የይለፍ ቃልዎን ዳግም ያጽድቁ" + +#: ckan/templates/user/request_reset.html:6 +msgid "Password reset" +msgstr "የይለፍ ቃል ዳግም አጽደቅ" + +#: ckan/templates/user/request_reset.html:19 +msgid "Request reset" +msgstr "ዳግም ለማጽደቅ ጥያቄ" + +#: ckan/templates/user/request_reset.html:34 +msgid "" +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." +msgstr "" +"የተጠቃሚ ስምዎን(username) ወደ ሳጥኑ ውስጥ ያስገቡ እና አዲስ የይለፍ ቃል ለማስገባት አገናኝ(link) ያለው " +"ኢሜይል እንልክልዎታለን።" + +#: ckan/templates/user/snippets/followee_dropdown.html:15 +#: ckan/templates/user/snippets/followee_dropdown.html:16 +msgid "Activity from:" +msgstr "እንቅስቃሴ ከ " + +#: ckan/templates/user/snippets/followee_dropdown.html:23 +msgid "Search list..." +msgstr "የፍለጋ ዝርዝር..." + +#: ckan/templates/user/snippets/followee_dropdown.html:44 +msgid "You are not following anything" +msgstr "ምንም ነገር እየተከተሉ አይደለም" + +#: ckan/templates/user/snippets/followers.html:9 +msgid "No followers" +msgstr "ምንም ተከታዮች የሉም" + +#: ckan/templates/user/snippets/user_search.html:5 +msgid "Search Users" +msgstr "ተጠቃሚዎችን ፈልግ" + +#: ckan/views/user.py:588 +msgid "Your password must be 8 characters or longer." +msgstr "የይለፍ ቃልዎ 8 ትዕምርቶች(characters) ወይም ከዚያ በላይ መሆን አለበት" diff --git a/ckan/i18n/ar/LC_MESSAGES/ckan.po b/ckan/i18n/ar/LC_MESSAGES/ckan.po index 8c525954147..833f5225372 100644 --- a/ckan/i18n/ar/LC_MESSAGES/ckan.po +++ b/ckan/i18n/ar/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Arabic translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Omar Isbaitan , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,14 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Omar Isbaitan , 2018\n" -"Language: ar\n" "Language-Team: Arabic (https://www.transifex.com/okfn/teams/11162/ar/)\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : " -"n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,17 +117,17 @@ msgstr "لم يتم العثور على مصدر مخزن البيانات" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"البيانات غير صالحة (على سبيل المثال: قيمة رقمية خارج النطاق أو تم إدراجها" -" في حقل نص)." +"البيانات غير صالحة (على سبيل المثال: قيمة رقمية خارج النطاق أو تم إدراجها في" +" حقل نص)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -151,8 +151,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -161,8 +160,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "بلإمكان الوصول لبيانات ال API عن طريق خطوات ال CKAN الخاصة بال API " #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -275,8 +274,7 @@ msgstr "واجهة برمجة تطبيقات API البيانات" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:46 ckanext/reclineview/plugin.py:128 @@ -758,8 +756,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"لا يمكن تطهير الحزمة %s لأنها ترتبط في تنقيح %s الذي يشمل الحزم التي لا " -"يمكن حذف %s" +"لا يمكن تطهير الحزمة %s لأنها ترتبط في تنقيح %s الذي يشمل الحزم التي لا يمكن" +" حذف %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1054,8 +1052,8 @@ msgstr "إضافة تحديث ملفك الشخصي و إض #, python-format msgid "%s uses your email address if you need to reset your password." msgstr "" -" %s يستخدم عنوان البريد الإلكتروني الخاص بك إذا كنت تحتاج إلى إعادة " -"تعيين كلمة السر " +" %s يستخدم عنوان البريد الإلكتروني الخاص بك إذا كنت تحتاج إلى إعادة تعيين " +"كلمة السر " #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1814,8 +1812,8 @@ msgstr "" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2574,8 +2572,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2754,37 +2752,35 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" -msgstr "" -"

عنوان موقع الكتروني :هذا هو عنوان هذه الحالة CKAN " -"يظهر في أماكن مختلفة في جميع أنحاء CKAN.

نمط : " -"اختر من قائمة من الأشكال البسيطة لنظام الألوان الرئيسي للحصول على سمة " -"مخصصة سريعة للغاية.

Site Tag Logo: هذا هو " -"الشعار الذي يظهر في رأس كل قوالب نماذج CKAN.

حول " -": سيظهر هذا النص في حالات CKAN هذه " -"حول الصفحة .

نص المقدمة: سيظهر هذا النص في " -"حالات CKAN هذه الصفحة الرئيسية ترحيب " -"بالزوار.

Custom CSS: هذه كتلة من CSS تظهر في " -" <head> علامة من كل صفحة. إذا كنت ترغب في تخصيص " -"القوالب بشكل كامل فإننا نوصي بذلك قراءة الوثائق .

الصفحة الرئيسية: " -" هذا هو لاختيار تخطيط محدد مسبقا للوحدات التي تظهر على صفحتك " -"الرئيسية.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" +msgstr "" +"

عنوان موقع الكتروني :هذا هو عنوان هذه الحالة CKAN يظهر " +"في أماكن مختلفة في جميع أنحاء CKAN.

نمط : اختر من " +"قائمة من الأشكال البسيطة لنظام الألوان الرئيسي للحصول على سمة مخصصة سريعة " +"للغاية.

Site Tag Logo: هذا هو الشعار الذي يظهر في" +" رأس كل قوالب نماذج CKAN.

حول : سيظهر هذا النص في " +"حالات CKAN هذه حول الصفحة .

نص" +" المقدمة: سيظهر هذا النص في حالات CKAN هذه الصفحة الرئيسية ترحيب بالزوار.

" +"Custom CSS: هذه كتلة من CSS تظهر في <head> " +"علامة من كل صفحة. إذا كنت ترغب في تخصيص القوالب بشكل كامل فإننا نوصي بذلك قراءة الوثائق .

" +"

الصفحة الرئيسية: هذا هو لاختيار تخطيط محدد مسبقا " +"للوحدات التي تظهر على صفحتك الرئيسية.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2799,9 +2795,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2965,8 +2960,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -2998,7 +2994,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -3047,19 +3044,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3080,13 +3080,13 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

مشرف: يمكنه تعديل معلومات المجموعة ، وكذلك إدارة " -"أعضاء المؤسسة.

عضو: يمكن إضافة / إزالة جدولة " -"البيانات من المجموعات

" +"

مشرف: يمكنه تعديل معلومات المجموعة ، وكذلك إدارة أعضاء " +"المؤسسة.

عضو: يمكن إضافة / إزالة جدولة البيانات من " +"المجموعات

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3156,15 +3156,15 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"يمكنك استخدام مجموعات CKAN لإنشاء مجموعات من جدولة البيانات وإدارتها. " -"يمكن أن يكون ذلك لفهرسة مجموعات البيانات لمشروع أو فريق معين ، أو لموضوع " -"معين ، أو كطريقة بسيطة جدًا لمساعدة الأشخاص في البحث عن جدولة البيانات " -"المنشورة الخاصة بك والبحث عنها." +"يمكنك استخدام مجموعات CKAN لإنشاء مجموعات من جدولة البيانات وإدارتها. يمكن " +"أن يكون ذلك لفهرسة مجموعات البيانات لمشروع أو فريق معين ، أو لموضوع معين ، " +"أو كطريقة بسيطة جدًا لمساعدة الأشخاص في البحث عن جدولة البيانات المنشورة " +"الخاصة بك والبحث عنها." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3227,14 +3227,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3244,23 +3243,23 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

يعد CKAN منصة البوابة الرئيسية للبيانات المفتوحة المصدر في العالم.

" -" CKAN هو حل برمجي جاهز بالكامل يجعل الوصول إلى البيانات أمرًا قابلاً " +"

يعد CKAN منصة البوابة الرئيسية للبيانات المفتوحة المصدر في العالم.

" +"CKAN هو حل برمجي جاهز بالكامل يجعل الوصول إلى البيانات أمرًا قابلاً " "للاستخدام وقابلاً للاستخدام - من خلال توفير أدوات لتبسيط النشر والمشاركة " -"وإيجاد واستخدام البيانات(بما في ذلك تخزين البيانات وتوفير بيانات قوية " -"APIs). تهدف CKAN إلى ناشري البيانات نظرة عامة على الميزات(الحكومات " -"الوطنية والإقليمية والشركات والمؤسسات) الراغبين في جعل بياناتهم مفتوحة " -"ومتاحة.

تستخدم CKAN من قبل الحكومات ومجموعات المستخدمين في جميع " -"أنحاء العالم وتمتلك مجموعة متنوعة من بوابات البيانات الرسمية والمجتمعية " -"بما في ذلك بوابات الحكومة المحلية والوطنية والدولية ، مثل المملكة المتحدة" -" data.gov.ukوالاتحاد الأوروبي " +"

تستخدم CKAN من قبل الحكومات ومجموعات المستخدمين في جميع أنحاء العالم " +"وتمتلك مجموعة متنوعة من بوابات البيانات الرسمية والمجتمعية بما في ذلك بوابات" +" الحكومة المحلية والوطنية والدولية ، مثل المملكة المتحدة data.gov.ukوالاتحاد الأوروبيpublicdata.euوالبرازيلdados.gov.br، بوابات الحكومة الهولندية " "وهولندا ، فضلا عن مواقع المدينة والبلديات في الولايات المتحدة والمملكة " "المتحدة والأرجنتين وفنلندا وغيرها.

CKAN: http://ckan.org/
CKAN Tour: http//ckan.org/toue/
نظرة عامة " -"على الميزات:http//ckan.org/toue/
نظرة عامة على " +"الميزات:http//ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3269,11 +3268,11 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"هذه فقرة تمهيدية لطيفة حول CKAN أو الموقع الكتروني العام. ليس لدينا أي " -"نسخة للذهاب هنا بعد ولكن سنعمل قريبا" +"هذه فقرة تمهيدية لطيفة حول CKAN أو الموقع الكتروني العام. ليس لدينا أي نسخة " +"للذهاب هنا بعد ولكن سنعمل قريبا" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3318,12 +3317,12 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"يمكنك استخدام تنسيق علامة مائلةهنا" #: ckan/templates/macros/form.html:265 @@ -3393,8 +3392,8 @@ msgstr "مسودة" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "خاص" @@ -3448,14 +3447,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

مشرف: يمكن إضافة / تحرير وحذف جدولة البيانات ، وكذلك " -"إدارة أعضاء المؤسسة.

محرر: يمكن إضافة وتحرير " -"جدولة البيانات ، ولكن لا يمكنك إدارة أعضاء المؤسسة.

" -"

العضو: يمكن عرض جدولة البيانات الخاصة للمؤسسة ، ولكن " -"لا تضيف جدولة بيانات جديدة.

" +"إدارة أعضاء المؤسسة.

محرر: يمكن إضافة وتحرير جدولة " +"البيانات ، ولكن لا يمكنك إدارة أعضاء المؤسسة.

العضو:" +" يمكن عرض جدولة البيانات الخاصة للمؤسسة ، ولكن لا تضيف جدولة بيانات " +"جديدة.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3499,29 +3498,28 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" -msgstr "" -"

تعمل المنظمات مثل دوائر النشر لمجموعات البيانات (على سبيل المثال ، " -"وزارة الصحة). وهذا يعني أنه يمكن نشر مجموعات البيانات من قِبل قسم ما " -"بدلاً من مستخدم فردي

داخل المؤسسات ، يمكن للمشرفين تعيين أدوار " -"وتفويض أعضائها ، مما يمنح المستخدمين الفرديين الحق في نشر مجموعات " -"البيانات من تلك المنظمة المعينة (على سبيل المثال ، مكتب الإحصائيات " -"الوطنية)

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" +msgstr "" +"

تعمل المنظمات مثل دوائر النشر لمجموعات البيانات (على سبيل المثال ، وزارة " +"الصحة). وهذا يعني أنه يمكن نشر مجموعات البيانات من قِبل قسم ما بدلاً من " +"مستخدم فردي

داخل المؤسسات ، يمكن للمشرفين تعيين أدوار وتفويض أعضائها" +" ، مما يمنح المستخدمين الفرديين الحق في نشر مجموعات البيانات من تلك المنظمة " +"المعينة (على سبيل المثال ، مكتب الإحصائيات الوطنية)

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"تُستخدم مؤسسات CKAN لإنشاء مجموعات من جدولة البيانات وإدارتها ونشرها. " -"يمكن أن يكون للمستخدمين أدوارًا مختلفة داخل مؤسسة ، بناءً على مستوى " -"التفويض الخاص بهم لإنشاء و تحرير ونشر." +"تُستخدم مؤسسات CKAN لإنشاء مجموعات من جدولة البيانات وإدارتها ونشرها. يمكن " +"أن يكون للمستخدمين أدوارًا مختلفة داخل مؤسسة ، بناءً على مستوى التفويض الخاص" +" بهم لإنشاء و تحرير ونشر." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3537,9 +3535,8 @@ msgstr "معلومات قليلة عن منظمتي ..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3562,13 +3559,13 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "جدولة البيانات CKAN عبارة عن مجموعة من موارد البيانات (مثل الملفات) ، " -"بالإضافة إلى وصف ومعلومات أخرى ، على عنوان URL ثابت. جدولة البيانات هي ما" -" يراه المستخدمون عند البحث عن البيانات." +"بالإضافة إلى وصف ومعلومات أخرى ، على عنوان URL ثابت. جدولة البيانات هي ما " +"يراه المستخدمون عند البحث عن البيانات." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3649,15 +3646,14 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"قد تكون طرق عرض مستكشف البيانات بطيئة وغير موثوق بها الا إذا تم تمكين " -"ملحق مخزن البيانات , لمزيد من المعلومات, يرجى الاطلاع علىوثيقة مستكشف " -"البيانات" +"قد تكون طرق عرض مستكشف البيانات بطيئة وغير موثوق بها الا إذا تم تمكين ملحق " +"مخزن البيانات , لمزيد من المعلومات, يرجى الاطلاع علىوثيقة مستكشف البيانات" #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3667,12 +3663,11 @@ msgstr "" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"هذه نسخة قديمة من جدولة البيانات هذه , كما تم تعديلها على %(timestamp)s. " -"قد تختلف اختلافا كبيرا عن المراجعة الحالية" +"هذه نسخة قديمة من جدولة البيانات هذه , كما تم تعديلها على %(timestamp)s. قد " +"تختلف اختلافا كبيرا عن المراجعة الحالية" #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3741,13 +3736,13 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"إذا تطلبت المشاهدة استخدام مخزن البيانات ، فقد لا يتم تمكين المكوّن " -"الإضافي لـ مخزن البيانات ، أو ربما لم يتم دفع البيانات إلى مخزن البيانات " -"، أو لم ينته مخزن البيانات من معالجة البيانات حتى الآن" +"إذا تطلبت المشاهدة استخدام مخزن البيانات ، فقد لا يتم تمكين المكوّن الإضافي " +"لـ مخزن البيانات ، أو ربما لم يتم دفع البيانات إلى مخزن البيانات ، أو لم " +"ينته مخزن البيانات من معالجة البيانات حتى الآن" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3814,8 +3809,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3955,18 +3950,17 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." -msgstr "" -"ينطبق ترخيص البيانات الذي تحدده أعلاه فقط على محتويات أي ملفات " -"موارد تضيفها إلى جدولة البيانات هذه. بإرسال هذا النموذج ، فإنك توافق على " -"إصدار قيمت البيانات الوصفية التي تدخلها في النموذج تحت رخصة قاعدة " -"البيانات المفتوحة." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." +msgstr "" +"ينطبق ترخيص البيانات الذي تحدده أعلاه فقط على محتويات أي ملفات موارد " +"تضيفها إلى جدولة البيانات هذه. بإرسال هذا النموذج ، فإنك توافق على إصدار " +"قيمت البيانات الوصفية التي تدخلها في النموذج تحت رخصة قاعدة البيانات " +"المفتوحة." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4301,11 +4295,11 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" -"

كان هناك خطأ أثناء البحث. حاول " -"مرة أخرى.

" +"

كان هناك خطأ أثناء البحث. حاول مرة " +"أخرى.

" #: ckan/templates/snippets/search_result_text.html:15 msgid "{number} dataset found for \"{query}\"" @@ -4475,9 +4469,9 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " -msgstr "يتيح ملف التعريف الخاص بك لمستخدمي CKAN الآخرين معرفة من أنت وماذا تفعل." +" Your profile lets other CKAN users know about who you are and what you do. " +msgstr "" +"يتيح ملف التعريف الخاص بك لمستخدمي CKAN الآخرين معرفة من أنت وماذا تفعل." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4568,7 +4562,8 @@ msgstr "" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." -msgstr "لا توجد مشكلة ، استخدم نموذج استرداد كلمة السر الخاص بنا لإعادة تعيينه." +msgstr "" +"لا توجد مشكلة ، استخدم نموذج استرداد كلمة السر الخاص بنا لإعادة تعيينه." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4700,11 +4695,11 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"أدخل اسم المستخدم الخاص بك في المربع وسوف نرسل لك رسالة بريد إلكتروني " -"تحتوي على رابط لإدخال كلمة سر جديدة." +"أدخل اسم المستخدم الخاص بك في المربع وسوف نرسل لك رسالة بريد إلكتروني تحتوي " +"على رابط لإدخال كلمة سر جديدة." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4726,4 +4721,3 @@ msgstr "" #: ckan/templates/user/snippets/user_search.html:5 msgid "Search Users" msgstr "" - diff --git a/ckan/i18n/bg/LC_MESSAGES/ckan.po b/ckan/i18n/bg/LC_MESSAGES/ckan.po index bfb1a7cf4d4..42652933d34 100644 --- a/ckan/i18n/bg/LC_MESSAGES/ckan.po +++ b/ckan/i18n/bg/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Bulgarian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Ivaylo Petrov, 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,14 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Ivaylo Petrov, 2018\n" -"Language: bg\n" -"Language-Team: Bulgarian (https://www.transifex.com/okfn/teams/11162/bg/)" -"\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Bulgarian (https://www.transifex.com/okfn/teams/11162/bg/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,14 +117,14 @@ msgstr "Ресурсът от DataStore хранилището не е наме #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -149,8 +149,7 @@ msgstr "Достъп до ресурсни данни чрез уеб API със msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -159,8 +158,8 @@ msgstr "Крайни точки" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" "Това Data API е достъпно само чрез следните действия от CKAN API за " "действия." @@ -273,8 +272,7 @@ msgstr "Data API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -752,8 +750,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Пакет %s не може да бъде прочистен, тъй като свързаната ревизия %s " -"съдържа пакети, които не са изтрити %s" +"Пакет %s не може да бъде прочистен, тъй като свързаната ревизия %s съдържа " +"пакети, които не са изтрити %s" #: ckan/controllers/admin.py:183 #, python-format @@ -847,7 +845,8 @@ msgstr "Няма ревизия с индентификатор: %s" #: ckan/controllers/api.py:514 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" -msgstr "Липсващо условие на търсене ('since_id=UUID' или 'since_time=TIMESTAMP')" +msgstr "" +"Липсващо условие на търсене ('since_id=UUID' или 'since_time=TIMESTAMP')" #: ckan/controllers/api.py:526 #, python-format @@ -1037,19 +1036,21 @@ msgstr "Нямате право да виждате тези последова #: ckan/controllers/home.py:35 msgid "This site is currently off-line. Database is not initialised." -msgstr "В момента тази страница е недостъпна. Базата данни не е инициализирана." +msgstr "" +"В момента тази страница е недостъпна. Базата данни не е инициализирана." #: ckan/controllers/home.py:73 #, python-format msgid "Please update your profile and add your email address. " -msgstr "Моля, обновете профила си и добавете своя имейл адрес." +msgstr "" +"Моля, обновете профила си и добавете своя имейл адрес." #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." msgstr "" -"%s използвайte своя имейл адрес, ако имате нужда да възстановите паролата" -" си." +"%s използвайte своя имейл адрес, ако имате нужда да възстановите паролата " +"си." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1410,8 +1411,7 @@ msgstr "{actor} изтри набора от данни {dataset}" #: ckan/lib/activity_streams.py:90 msgid "{actor} deleted the extra {extra} from the dataset {dataset}" msgstr "" -"{actor} изтри допълнителната информация {extra} от набора от данни " -"{dataset}" +"{actor} изтри допълнителната информация {extra} от набора от данни {dataset}" #: ckan/lib/activity_streams.py:93 msgid "{actor} deleted the resource {resource} from the dataset {dataset}" @@ -1432,8 +1432,7 @@ msgstr "{actor} създаде набора от данни {dataset}" #: ckan/lib/activity_streams.py:106 msgid "{actor} added the extra {extra} to the dataset {dataset}" msgstr "" -"{actor} добави допълнителна информация {extra} към набора от данни " -"{dataset}" +"{actor} добави допълнителна информация {extra} към набора от данни {dataset}" #: ckan/lib/activity_streams.py:109 msgid "{actor} added the resource {resource} to the dataset {dataset}" @@ -1784,8 +1783,8 @@ msgstr "Името може да е най-много %i символа" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1867,8 +1866,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Редакцията не е приета, тъй като прилича на спам. Моля, избягвайте връзки" -" (URL адреси) в описанието." +"Редакцията не е приета, тъй като прилича на спам. Моля, избягвайте връзки " +"(URL адреси) в описанието." #: ckan/logic/validators.py:620 #, python-format @@ -1883,8 +1882,8 @@ msgstr "Това име на речник вече се използва" #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"Стойността на ключа не може да бъде променена от %s на %s. Ключът може " -"само да се чете, без да се променя." +"Стойността на ключа не може да бъде променена от %s на %s. Ключът може само " +"да се чете, без да се променя." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -1970,8 +1969,7 @@ msgstr "Опит за създаване на организация като г #: ckan/logic/action/create.py:893 msgid "You must supply a package id or name (parameter \"package\")." msgstr "" -"Трябва да се зададе идентификатор или име на пакет (параметър " -"\"package\")." +"Трябва да се зададе идентификатор или име на пакет (параметър \"package\")." #: ckan/logic/action/create.py:896 msgid "You must supply a rating (parameter \"rating\")." @@ -2111,7 +2109,8 @@ msgstr "Потребител %s няма право да редактира те #: ckan/logic/auth/create.py:38 #, python-format msgid "User %s not authorized to add dataset to this organization" -msgstr "Потребител %s няма право да добавя набори от данни към тази организация" +msgstr "" +"Потребител %s няма право да добавя набори от данни към тази организация" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." @@ -2121,8 +2120,7 @@ msgstr "" #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"Не е намерен пакет за този ресурс, автентичността не може да бъде " -"проверена." +"Не е намерен пакет за този ресурс, автентичността не може да бъде проверена." #: ckan/logic/auth/create.py:76 #, python-format @@ -2315,7 +2313,8 @@ msgstr "" #: ckan/model/license.py:232 msgid "Open Data Commons Public Domain Dedication and License (PDDL)" -msgstr "Open Data Commons Лиценз за Предоставяне на Обществено Достояние (PDDL)" +msgstr "" +"Open Data Commons Лиценз за Предоставяне на Обществено Достояние (PDDL)" #: ckan/model/license.py:242 msgid "Open Data Commons Open Database License (ODbL)" @@ -2485,8 +2484,8 @@ msgstr "Връзка" #: ckan/public/base/javascript/modules/image-upload.js:61 msgid "Link to a URL on the internet (you can also link to an API)" msgstr "" -"Посочване на връзка към URL адрес в интернет (можете също така да " -"посочите връзка към API)" +"Посочване на връзка към URL адрес в интернет (можете също така да посочите " +"връзка към API)" #: ckan/public/base/javascript/modules/image-upload.js:68 msgid "Upload" @@ -2554,11 +2553,11 @@ msgstr "Неуспешно зареждане на информацията за #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"В момента качвате файл. Сигурни ли сте, че искате да излезете от " -"страницата и да прекъснете качването?" +"В момента качвате файл. Сигурни ли сте, че искате да излезете от страницата " +"и да прекъснете качването?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2734,40 +2733,39 @@ msgstr "CKAN настройки за конфигурация" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Заглавие на сайта: Това е заглавието на настоящата " "инсталация на CKAN. То се появява на различни места в CKAN.

" "

Стил: Изберете от списък от прости разновидности на " -"главната цветова гама, за да получите бързо персонализирана работеща " -"тема.

Лого на сайта: Това е логото, което се " -"появява в заглавната част на всички примерни шаблони в CKAN.

" -"

Относно: Този текст ще се появи на следните места в " -"CKAN Относно.

Уводен " +"главната цветова гама, за да получите бързо персонализирана работеща тема. " +"

Лого на сайта: Това е логото, което се появява в " +"заглавната част на всички примерни шаблони в CKAN.

" +"

Относно: Този текст ще се появи на следните места в CKAN" +" Относно.

Уводен " "Текст: Този текст ще се появи на следното място в CKAN Начална страница като приветствие към " -"посетителите.

Custom CSS: Това е CSS код, който " -"се появява при етикета <head> на всяка страница. Ако " -"желаете по-пълно персонализиране на шаблоните, препоръчваме да прочетете " -"документацията.

Начална страница: Оттук " -"можете да изберете предварително зададена подредба за модулите, които се " -"появяват на Вашата начална страница.

" +"посетителите.

Custom CSS: Това е CSS код, който се " +"появява при етикета <head> на всяка страница. Ако желаете" +" по-пълно персонализиране на шаблоните, препоръчваме да прочетете документацията.

" +"

Начална страница: Оттук можете да изберете " +"предварително зададена подредба за модулите, които се появяват на Вашата " +"начална страница.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2782,9 +2780,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2948,8 +2945,9 @@ msgstr "Сигурни ли сте, че искате да изтриете то #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Управление" @@ -2981,7 +2979,8 @@ msgstr "Търсене в групи..." msgid "There are currently no groups for this site" msgstr "Не са налични групи за тази страница" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Искате ли да създадете?" @@ -3014,8 +3013,8 @@ msgstr "Съществуващ потребител" #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." msgstr "" -"Ако желаете да добавите съществуващ потребител, потърсете потребителското" -" му име по-долу." +"Ако желаете да добавите съществуващ потребител, потърсете потребителското му" +" име по-долу." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3032,19 +3031,22 @@ msgstr "Нов потребител" msgid "If you wish to invite a new user, enter their email address." msgstr "Ако желаете да поканите потребител, въведете неговия имейл адрес." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Роля" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Сигурни ли сте, че искате да изтриете този член?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3065,14 +3067,13 @@ msgstr "Какво представляват ролите?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Администратор: Може да редактира информация за групи," -" както и да управлява членове на организация.

" -"

Член: Може да добавя/премахва набори данни от " -"групи.

" +"

Администратор: Може да редактира информация за групи, " +"както и да управлява членове на организация.

Член: " +"Може да добавя/премахва набори данни от групи.

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3142,16 +3143,16 @@ msgstr "Какво представляват групите?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Можете да използвате CKAN Групи за създаване и управляване на колекции от" -" данни. Това би могло да включва каталогизиране на данни за определен " -"проект или екип, както и по определена тема, и представлява много лесен " -"начин да улесните потребителите в намирането и търсенето на данните, " -"които Вие сте публикували." +"Можете да използвате CKAN Групи за създаване и управляване на колекции от " +"данни. Това би могло да включва каталогизиране на данни за определен проект " +"или екип, както и по определена тема, и представлява много лесен начин да " +"улесните потребителите в намирането и търсенето на данните, които Вие сте " +"публикували." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3214,14 +3215,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3232,25 +3232,25 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN е водещата световна платформа-портал за отворени данни с отворен " -"код.

CKAN е напълно готово за употреба софтуерно решение, което " -"прави данните достъпни и използваеми – чрез предоставянето на инструменти" -" за улесняване на публикуването, споделянето, откриването и използването " -"на данни (включително съхраняването на данни и осигуряването на основни " -"данни за APIs). CKAN е предназначен за всички, които публикуват данни " -"(органи на централно и местно управление, търговски дружества и " -"неправителствени организации) и които искат публикуваните от тях данни да" -" станат отворени и достъпни.

CKAN се използва от правителствения " -"сектор и от групи от потребители по целия свят и задвижва различни " -"официални и общностни портали за данни, включително портали за управление" -" на местно, национално и международно равнище, като правителствения " -"портал на Великобритания data.gov.uk, " -"на Европейския съюз publicdata.eu, " -"на Бразилия dados.gov.br, на " -"Нидерландия, както и сайтове на градове и общини в САЩ, Обединеното " -"кралство, Аржентина, Финландия и други места.

CKAN:

CKAN е напълно готово за употреба софтуерно решение, което прави" +" данните достъпни и използваеми – чрез предоставянето на инструменти за " +"улесняване на публикуването, споделянето, откриването и използването на " +"данни (включително съхраняването на данни и осигуряването на основни данни " +"за APIs). CKAN е предназначен за всички, които публикуват данни (органи на " +"централно и местно управление, търговски дружества и неправителствени " +"организации) и които искат публикуваните от тях данни да станат отворени и " +"достъпни.

CKAN се използва от правителствения сектор и от групи от " +"потребители по целия свят и задвижва различни официални и общностни портали " +"за данни, включително портали за управление на местно, национално и " +"международно равнище, като правителствения портал на Великобритания data.gov.uk, на Европейския съюз publicdata.eu, на Бразилия dados.gov.br, на Нидерландия, както и " +"сайтове на градове и общини в САЩ, Обединеното кралство, Аржентина, " +"Финландия и други места.

CKAN: http://ckan.org/
CKAN обиколка: http://ckan.org/tour/
Преглед на" -" особености: http://ckan.org/tour/
Преглед на " +"особености: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3259,11 +3259,11 @@ msgstr "Добре дошли в CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Това е въвеждащ текст за CKAN или най-общо за сайта. Все още нямаме " -"по-подробно описание, но скоро ще имаме." +"Това е въвеждащ текст за CKAN или най-общо за сайта. Все още нямаме по-" +"подробно описание, но скоро ще имаме." #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3308,8 +3308,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3380,8 +3380,8 @@ msgstr "Чернова" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Частен" @@ -3435,15 +3435,15 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Администратор: Може да добавя/редактира и изтрива " -"набори от данни, както и да управлява членове на организация.

" -"

Редактор: Може да добавя и редактира набори от данни," -" но не и да управлява членове на организация.

" -"Член: Може да разглежда частните набори от данни на " -"организацията, но не и да добавя нови набори от данни.

" +"

Администратор: Може да добавя/редактира и изтрива набори" +" от данни, както и да управлява членове на организация.

" +"

Редактор: Може да добавя и редактира набори от данни, но" +" не и да управлява членове на организация.

Член: " +"Може да разглежда частните набори от данни на организацията, но не и да " +"добавя нови набори от данни.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3483,24 +3483,24 @@ msgstr "Какво представляват организациите?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN Организациите се използват за създаване, управление и публикуване на" -" колекции набори от данни. Потребителите могат да имат различни роли в " -"дадена Организация в зависимост от техните права за създаване, " -"редактиране и публикуване." +"CKAN Организациите се използват за създаване, управление и публикуване на " +"колекции набори от данни. Потребителите могат да имат различни роли в дадена" +" Организация в зависимост от техните права за създаване, редактиране и " +"публикуване." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3516,9 +3516,8 @@ msgstr "Малко информация за моята организация.. #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Сигурни ли сте, че искате да изтриете тази организация? Това действие ще " "изтрие всички публични и частни набори от данни, принадлежащи на тази " @@ -3544,14 +3543,13 @@ msgstr "Какво представляват наборите от данни?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"CKAN набор от данни представлява колекция ресурси от данни (като " -"файлове), наред с описание и друга информация, достъпни на определен URL " -"адрес. Наборите от данни са онова, което потребителите виждат, когато " -"търсят данни." +"CKAN набор от данни представлява колекция ресурси от данни (като файлове), " +"наред с описание и друга информация, достъпни на определен URL адрес. " +"Наборите от данни са онова, което потребителите виждат, когато търсят данни." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3632,9 +3630,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3645,13 +3643,12 @@ msgstr "Добавяне" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Това е стара ревизия на този набор от данни, след редакция на " -"%(timestamp)s. Може съществено да се различава от настоящата ревизия." +"Това е стара ревизия на този набор от данни, след редакция на %(timestamp)s." +" Може съществено да се различава от настоящата " +"ревизия." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3720,9 +3717,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3790,8 +3787,8 @@ msgstr "Добавяне на нов ресурс" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Този набор от данни не съдържа данни, защо да не добавите някакви?

" @@ -3814,8 +3811,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -"Може също така да получите достъп до този регистър, като използвате " -"връзките %(api_link)s (see %(api_doc_link)s) или свалите %(dump_link)s." +"Може също така да получите достъп до този регистър, като използвате връзките" +" %(api_link)s (see %(api_doc_link)s) или свалите %(dump_link)s." #: ckan/templates/package/search.html:60 #, python-format @@ -3939,12 +3936,11 @@ msgstr "Активен" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4055,7 +4051,8 @@ msgstr "Какво е ресурс?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." -msgstr "Ресурс е всеки файл или връзка към файл, който съдържа полезна информация." +msgstr "" +"Ресурс е всеки файл или връзка към файл, който съдържа полезна информация." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4280,8 +4277,8 @@ msgstr "

Моля, опитайте да потърсите о #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4428,11 +4425,10 @@ msgstr "Информация за акаунт" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Вашият профил позволява на други CKAN потребители да се запознаят с Вас и" -" това, с което се занимавате. " +"Вашият профил позволява на други CKAN потребители да се запознаят с Вас и " +"това, с което се занимавате. " #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4524,8 +4520,8 @@ msgstr "Забравена парола?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Няма проблем, използвайте нашия формуляр за възстановяване на паролата, " -"за да я подновите." +"Няма проблем, използвайте нашия формуляр за възстановяване на паролата, за " +"да я подновите." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4657,8 +4653,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Напишете потребителското си име в полето и ние ще Ви изпратим имейл с " "връзка, на която да въведете нова парола." @@ -4687,4 +4683,3 @@ msgstr "Търсене на потребители" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/ca/LC_MESSAGES/ckan.po b/ckan/i18n/ca/LC_MESSAGES/ckan.po index 243223cc54d..7a78fb24b9c 100644 --- a/ckan/i18n/ca/LC_MESSAGES/ckan.po +++ b/ckan/i18n/ca/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Catalan translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,13 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: ca\n" "Language-Team: Catalan (https://www.transifex.com/okfn/teams/11162/ca/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -115,19 +116,19 @@ msgstr "Recurs de la DataStore no trobat" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" "S'ha desat el diccionari de dades. Qualsevol nou canvi de tipus de camp " "tindrà efecte el proper cop que el recurs es pugi a la DataStore" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Les dades són invàlides (per exemple: un valor numèric fora del seu rang " -"o que ha sigut afegit en un camp de text)." +"Les dades són invàlides (per exemple: un valor numèric fora del seu rang o " +"que ha sigut afegit en un camp de text)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -153,8 +154,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Més informació a la main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Més informació a la documentació de la API de dades i la DataStore.

" -" " +"target=\"_blank\">documentació de la API de dades i la DataStore.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -420,8 +418,8 @@ msgstr "0 Conjunts de dades" #: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 msgid "CKAN's data previewing tool has many powerful features" msgstr "" -"Les eines de visualització de dades de CKAN tenen moltes característiques" -" útils" +"Les eines de visualització de dades de CKAN tenen moltes característiques " +"útils" #: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 #: ckan/templates/group/snippets/info.html:32 @@ -460,8 +458,8 @@ msgstr "URL de la imatge" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "eg. http://example.com/image.jpg (if blank uses resource url)" msgstr "" -"p.ex. http://example.com/image.jpg (si es deixa en blanc s'usa la URL del" -" recurs)" +"p.ex. http://example.com/image.jpg (si es deixa en blanc s'usa la URL del " +"recurs)" #: ckanext/reclineview/plugin.py:101 msgid "Data Explorer" @@ -687,7 +685,8 @@ msgstr "URL del lloc web" #: ckanext/webpageview/theme/templates/webpage_form.html:3 msgid "eg. http://example.com (if blank uses resource url)" -msgstr "p.ex. http://example.com (si es deixa en blanc s'usa la URL del recurs)" +msgstr "" +"p.ex. http://example.com (si es deixa en blanc s'usa la URL del recurs)" #: ckan/templates/dataviewer/snippets/data_preview.html:23 #: ckan/templates/package/snippets/resource_view.html:56 @@ -771,8 +770,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"No es pot purgar el paquet %s ja que la revisió associada %s inclou " -"paquets de dades no esborrats %s" +"No es pot purgar el paquet %s ja que la revisió associada %s inclou paquets " +"de dades no esborrats %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1110,8 +1109,8 @@ msgstr "Format de revisió invàlid: %r" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." msgstr "" -"Visualitzar conjunts de dades de tipus \"{package_type}\" no està " -"suportat ({file_lr})." +"Visualitzar conjunts de dades de tipus \"{package_type}\" no està suportat " +"({file_lr})." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1155,7 +1154,8 @@ msgstr "No teniu autorització per a crear un recurs" #: ckan/controllers/package.py:714 msgid "Unauthorized to create a resource for this package" -msgstr "No teniu autorització per a afegir un recurs a aquest conjunt de dades" +msgstr "" +"No teniu autorització per a afegir un recurs a aquest conjunt de dades" #: ckan/controllers/package.py:928 msgid "Unable to add package to search index." @@ -1302,8 +1302,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"L'usuari \"%s\" ha estat registrat, pero encara teniu la sessió iniciada " -"com a \"%s\"" +"L'usuari \"%s\" ha estat registrat, pero encara teniu la sessió iniciada com" +" a \"%s\"" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1347,8 +1347,8 @@ msgstr "Usuari desconegut: %s" #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." msgstr "" -"Si us plau, comproveu la vostra safata d'entrada per veure si heu rebut " -"un codi de reinici" +"Si us plau, comproveu la vostra safata d'entrada per veure si heu rebut un " +"codi de reinici" #: ckan/controllers/user.py:503 #, python-format @@ -1417,11 +1417,13 @@ msgstr "{actor} ha modificat el conjunt de dades {dataset}" #: ckan/lib/activity_streams.py:72 msgid "{actor} changed the extra {extra} of the dataset {dataset}" -msgstr "{actor} ha canviat l'element extra {extra} del conjunt de dades {dataset}" +msgstr "" +"{actor} ha canviat l'element extra {extra} del conjunt de dades {dataset}" #: ckan/lib/activity_streams.py:75 msgid "{actor} updated the resource {resource} in the dataset {dataset}" -msgstr "{actor} ha actualitzat el recurs {resource} del conjunt de dades {dataset}" +msgstr "" +"{actor} ha actualitzat el recurs {resource} del conjunt de dades {dataset}" #: ckan/lib/activity_streams.py:78 msgid "{actor} updated their profile" @@ -1445,7 +1447,8 @@ msgstr "{actor} ha esborrat l'extra {extra} del conjunt de dades {dataset}" #: ckan/lib/activity_streams.py:93 msgid "{actor} deleted the resource {resource} from the dataset {dataset}" -msgstr "{actor} ha esborrat el recurs {resource} del conjunt de dades {dataset}" +msgstr "" +"{actor} ha esborrat el recurs {resource} del conjunt de dades {dataset}" #: ckan/lib/activity_streams.py:97 msgid "{actor} created the group {group}" @@ -1812,11 +1815,11 @@ msgstr "El nom ha de tenir com a màxim %i caràcters" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" -"Ha de ser en minúscules i només contenir números i lletres sense " -"caràcters especials (excepte -_)" +"Ha de ser en minúscules i només contenir números i lletres sense caràcters " +"especials (excepte -_)" #: ckan/logic/validators.py:361 msgid "That URL is already in use." @@ -1915,8 +1918,8 @@ msgstr "Aquest nom de vocabulari ja existeix." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"No es pot canviar el valor de la clau de %s a %s. Aquesta clau és de " -"només lectura." +"No es pot canviar el valor de la clau de %s a %s. Aquesta clau és de només " +"lectura." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2148,8 +2151,8 @@ msgstr "L'usuari %s no està autoritzat a editar aquests grups" #, python-format msgid "User %s not authorized to add dataset to this organization" msgstr "" -"L'usuari %s no té autorització per a afegir un conjunt de dades a aquesta" -" organització" +"L'usuari %s no té autorització per a afegir un conjunt de dades a aquesta " +"organització" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." @@ -2221,7 +2224,8 @@ msgstr "L'usuari %s no té autorització per a eliminar el recurs %s" #: ckan/logic/auth/delete.py:56 msgid "Resource view not found, cannot check auth." -msgstr "No s'ha trobat la vista del recurs, no es pot comprovar l'autorització." +msgstr "" +"No s'ha trobat la vista del recurs, no es pot comprovar l'autorització." #: ckan/logic/auth/delete.py:73 #, python-format @@ -2294,7 +2298,8 @@ msgstr "L'usuari %s no té autorització per a modificar el recurs %s" #: ckan/logic/auth/update.py:100 #, python-format msgid "User %s not authorized to change state of package %s" -msgstr "L'usuari %s no està autoritzat a canviar l'estat del conjunt de dades %s" +msgstr "" +"L'usuari %s no està autoritzat a canviar l'estat del conjunt de dades %s" #: ckan/logic/auth/update.py:128 #, python-format @@ -2333,13 +2338,13 @@ msgstr "L'usuari %s no està autoritzat a canviar l'estat de la revisió" #, python-format msgid "User %s not authorized to update task_status table" msgstr "" -"L'usuari %s no està autoritzat a actualitzar la taula de l'estat de " -"tasques" +"L'usuari %s no està autoritzat a actualitzar la taula de l'estat de tasques" #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" -msgstr "L'usuari %s no està autoritzat a actualitzar la taula term_translation" +msgstr "" +"L'usuari %s no està autoritzat a actualitzar la taula term_translation" #: ckan/logic/auth/update.py:262 msgid "Valid API key needed to edit a package" @@ -2475,7 +2480,8 @@ msgstr "No s'ha trobat coincidències" msgid "Input is too short, must be at least one character" msgid_plural "Input is too short, must be at least %(num)d characters" msgstr[0] "L'entrada de dades és massa curta, almenys ha de tenir un caràcter" -msgstr[1] "L'entrada de dades és massa curta, almenys ha de tenir %(num)d caràcters" +msgstr[1] "" +"L'entrada de dades és massa curta, almenys ha de tenir %(num)d caràcters" #: ckan/public/base/javascript/modules/basic-form.js:4 msgid "There are unsaved modifications to this form" @@ -2592,11 +2598,11 @@ msgstr "No es pot obtenir les dades per a l'arxiu carregat" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Esteu pujant un arxiu. Esteu segurs que voleu marxar de la pàgina i " -"aturar la pujada?" +"Esteu pujant un arxiu. Esteu segurs que voleu marxar de la pàgina i aturar " +"la pujada?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2865,41 +2871,38 @@ msgstr "Opcions de configuració de CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Títol del lloc: Aquest és el títol d'aquesta " -"instància de CKAN. Apareix en diversos llocs de CKAN.

" -"

Estil: Escolliu d'una llista de variacions simples " -"dels principals esquemes de colors per a obtenir un tema operatiu " -"ràpidament.

Titular del Logo del site: Aquest és " -"el log que apareix a la capçalera de totes les plantilles de la instància" -" de CKAN.

Sobre: Aquest text apareixerà en " -"aquestes instàncies de CKAN Pàgiona " -"sobre....

Text introductori: Aquest text " -"apareixerà on aquestes instàncies de CKAN Inici com a benvinguda als visitants.

" -"

CSS personalitzat: Aquest és un bloc de CSS que " -"apareix al tag <head> de totes les pàgines. Si " -"desitgeu personalitzar les plantilles de forma més complerta, us " -"recomanem que llegiu la " -"documentació.

Pàgina d'inici: Permet escollir" -" una distribució predefinida per als mòduls que apareixen a la vostra " -"pàgina d'inici.

" +"

Títol del lloc: Aquest és el títol d'aquesta instància " +"de CKAN. Apareix en diversos llocs de CKAN.

Estil: " +"Escolliu d'una llista de variacions simples dels principals esquemes de " +"colors per a obtenir un tema operatiu ràpidament.

Titular del" +" Logo del site: Aquest és el log que apareix a la capçalera de " +"totes les plantilles de la instància de CKAN.

Sobre:" +" Aquest text apareixerà en aquestes instàncies de CKAN Pàgiona sobre....

Text " +"introductori: Aquest text apareixerà on aquestes instàncies de CKAN" +" Inici com a benvinguda als visitants.

" +"

CSS personalitzat: Aquest és un bloc de CSS que apareix " +"al tag <head> de totes les pàgines. Si desitgeu " +"personalitzar les plantilles de forma més complerta, us recomanem que llegiu la documentació.

" +"

Pàgina d'inici: Permet escollir una distribució " +"predefinida per als mòduls que apareixen a la vostra pàgina d'inici.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2914,15 +2917,13 @@ msgstr "Administrar CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Com a administrador del sistema teniu control absolut sobre aquest " -"lloc. Aneu amb compte!

Per a més informació sobre les " -"funcionalitats dels administradors de sistema, vegeu la guia d'administració del " -"sistema

de CKAN " +"

Com a administrador del sistema teniu control absolut sobre aquest lloc." +" Aneu amb compte!

Per a més informació sobre les funcionalitats dels " +"administradors de sistema, vegeu la guia d'administració del sistema

de CKAN " #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3087,8 +3088,9 @@ msgstr "Segur que voleu esborrar el membre - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Gestiona" @@ -3120,7 +3122,8 @@ msgstr "Cercar grups..." msgid "There are currently no groups for this site" msgstr "Ara mateix no hi ha grups en aquest lloc" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "En voleu crear un?" @@ -3169,19 +3172,22 @@ msgstr "Usuari nou" msgid "If you wish to invite a new user, enter their email address." msgstr "Si voleu convidar un nou usuari, introduïu el seu correu electrònic. " -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rol" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Segur que voleu eliminar aquest membre?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3202,13 +3208,13 @@ msgstr "Què són els rols?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Admin: Pot editer informació del grup, així com " -"gestionar els membres del grup

Membre: Pot afegir" -" i treure conjunts de dades del grup

" +"gestionar els membres del grup

Membre: Pot afegir i " +"treure conjunts de dades del grup

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3278,15 +3284,15 @@ msgstr "Què són els grups?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Podeu usar els grups de CKAN per crear i gestinar col·leccions de " -"conjunts de dades. Per exemple per agrupar conjunts de dades per a un " -"projecte o equip en particular, per a un temàtica en particular, o per " -"ajudar a la gent a cercar i trobar els vostres propis conjunts de dades." +"Podeu usar els grups de CKAN per crear i gestinar col·leccions de conjunts " +"de dades. Per exemple per agrupar conjunts de dades per a un projecte o " +"equip en particular, per a un temàtica en particular, o per ajudar a la gent" +" a cercar i trobar els vostres propis conjunts de dades." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3349,14 +3355,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3367,21 +3372,20 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN és la plataforma líder mundial en programari lliure per a " -"dades.

CKAN és una solució completa i a punt per a ser usada, que " -"fa les dades accessibles i usables - proporcionant eines per a la " -"publicació continuada, compartició, llocalització i ús de les dades " -"(incloent l'emmagatzematge de dades i la provisió de robustes APIs). CKAN" -" es dirigeix als publicadors de dades (governs regionals i nacionals, " -"companyies i organitzacions) que volen fer que les seves dades estiguin " -"obertes i disponibles.

CKAN l'usen governs i grups d'usuaris arreu" -" del món i potencia una varietat de portals de dades oficials i " -"comunitaris, incloent portals per a governs locals, nacionals i " -"internacionals, tals com el d'Anglaterra suchdata.gov.uk i el de la Unió Europea publicdata.eu, el brasileny dados.gov.br, El govern holandès, com " -"també de ciutats d'Anglaterra, Estats Units, Argentina, Finlàndia i " -"d'altres llocs.

CKAN:

CKAN és una solució completa i a punt per a ser usada, que fa " +"les dades accessibles i usables - proporcionant eines per a la publicació " +"continuada, compartició, llocalització i ús de les dades (incloent " +"l'emmagatzematge de dades i la provisió de robustes APIs). CKAN es dirigeix " +"als publicadors de dades (governs regionals i nacionals, companyies i " +"organitzacions) que volen fer que les seves dades estiguin obertes i " +"disponibles.

CKAN l'usen governs i grups d'usuaris arreu del món i " +"potencia una varietat de portals de dades oficials i comunitaris, incloent " +"portals per a governs locals, nacionals i internacionals, tals com el " +"d'Anglaterra suchdata.gov.uk i el de la " +"Unió Europea publicdata.eu, el " +"brasileny dados.gov.br, El govern " +"holandès, com també de ciutats d'Anglaterra, Estats Units, Argentina, " +"Finlàndia i d'altres llocs.

CKAN: http://ckan.org/
Volta per CKAN: http://ckan.org/tour/
Resum de " "funcinalitats: Markdown formatting here" msgstr "" "Podeu usar Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Admin: Pot crear/modificar i esborrar conjunts de " "dades, i gestionar membres de les organitzacions.

" -"

Editor: Pot afegir i editar conjunts de dades, però " -"no pot gestionar membres de les organitzacions.

" -"

Member: Pot veure els conjunts de dades privats de " -"l'organització, però no pot afegir-ne de nous.

" +"

Editor: Pot afegir i editar conjunts de dades, però no " +"pot gestionar membres de les organitzacions.

Member:" +" Pot veure els conjunts de dades privats de l'organització, però no pot " +"afegir-ne de nous.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3625,32 +3628,31 @@ msgstr "Què són les organitzacions?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Les organitzacions actuen com a entitats publicadores dels conjunts " -"de dades (per exemple, Departament de Salut). Això significa que els " -"conjunts de dades poden ser publicats i són mantinguts per tot el " -"departament en comptes d'un usuari individual.

Dins d'una " -"organització, els administradors poden assignar rols i autoritzat " -"membres, donant permís a usuaris individuals per publicar conjunts de " -"dades en aquella organització en particular. (p.ex Oficina Nacional " -"d'Estadística).

" +"

Les organitzacions actuen com a entitats publicadores dels conjunts de " +"dades (per exemple, Departament de Salut). Això significa que els conjunts " +"de dades poden ser publicats i són mantinguts per tot el departament en " +"comptes d'un usuari individual.

Dins d'una organització, els " +"administradors poden assignar rols i autoritzat membres, donant permís a " +"usuaris individuals per publicar conjunts de dades en aquella organització " +"en particular. (p.ex Oficina Nacional d'Estadística).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Les organitzacions de CKAN s'uses per crear, gestionar i publicar " -"col·leccions de conjunts de dades. Els usuaris poden tenir diferents rols" -" dins de la organització, depenent del seu nivell d'autorització per " -"crear, editar i publicar conjunts de dades." +"col·leccions de conjunts de dades. Els usuaris poden tenir diferents rols " +"dins de la organització, depenent del seu nivell d'autorització per crear, " +"editar i publicar conjunts de dades." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3666,9 +3668,8 @@ msgstr "Una mica d'informació sobre la meva organització..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Esteu segurs que voleu esborrar aquesta organització? Atenció: no es pot " "eliminar un organització mentre contingui conjunts de dades, públics o " @@ -3694,14 +3695,14 @@ msgstr "Què són els conjunts de dades?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -" Un conjunt de dades de CKAN és una col·lecció de recursos de dades (com " -"per exemple arxius), junt amb una descripció i altra informació, en una " -"URL concreta. Els conjunts de dades són el que els usuaris veuen quan " -"cerquen dades." +" Un conjunt de dades de CKAN és una col·lecció de recursos de dades (com per" +" exemple arxius), junt amb una descripció i altra informació, en una URL " +"concreta. Els conjunts de dades són el que els usuaris veuen quan cerquen " +"dades." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3782,15 +3783,15 @@ msgstr "Afegir vista" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" "L'explorador de dades pot ser lent i poc fiable si la extensió de la " -"DataStore no està habilitada. Per a més informació, si us plau consulteu " -"la documentació " -"de l'explorador de dades. " +"DataStore no està habilitada. Per a més informació, si us plau consulteu la " +"documentació de " +"l'explorador de dades. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3800,12 +3801,11 @@ msgstr "Afegir" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Aquesta és una revisió antiga d'aquest conjunt de dades, tal i com " -"s'edità el %(timestamp)s. Pot diferir significativament de la revisió actual." #: ckan/templates/package/resource_edit_base.html:17 @@ -3864,8 +3864,7 @@ msgstr "No veieu les vistes esperades?" #: ckan/templates/package/resource_read.html:118 msgid "Here are some reasons you may not be seeing expected views:" msgstr "" -"Aquestes són algunes possibles raons per les quals no es mostren les " -"vistes:" +"Aquestes són algunes possibles raons per les quals no es mostren les vistes:" #: ckan/templates/package/resource_read.html:120 msgid "No view has been created that is suitable for this resource" @@ -3873,17 +3872,18 @@ msgstr "No s'ha creat un vista adequada per a aquest recurs" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" -msgstr "Els administradors del lloc no han habilitat els connectors rellevants" +msgstr "" +"Els administradors del lloc no han habilitat els connectors rellevants" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"Si la vista requeriex que les dades estiguin a la DataStore, el connector" -" de la DataStore pot no estar habilitat, o les dades no s'han incorporat " -"a la DataStore o la DataStore encara no ha acabat de processar les dades" +"Si la vista requeriex que les dades estiguin a la DataStore, el connector de" +" la DataStore pot no estar habilitat, o les dades no s'han incorporat a la " +"DataStore o la DataStore encara no ha acabat de processar les dades" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3950,8 +3950,8 @@ msgstr "Afegir nou recurs" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Aquest conjunt de dades no té dades, perquè no afegir-ne?

" @@ -4039,13 +4039,15 @@ msgstr "Crear una nova organització" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." -msgstr "No hi ha organitzacions a les que pugueu assignar aquest conjunt de dades" +msgstr "" +"No hi ha organitzacions a les que pugueu assignar aquest conjunt de dades" #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" "Ask a system administrator to create an organization before you can " "continue." -msgstr "Demaneu a un administrador que creï una organització abans de continuar" +msgstr "" +"Demaneu a un administrador que creï una organització abans de continuar" #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -4073,8 +4075,8 @@ msgid "" " License definitions and additional information can be found at opendefinition.org " msgstr "" -"Les definicions de llicències i la informació addicional la podeu trobar " -"a opendefinition.org " +"Les definicions de llicències i la informació addicional la podeu trobar a " +"opendefinition.org " #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -4099,17 +4101,16 @@ msgstr "Actiu" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"La llicència de dades que seleccioneu al camp superior només " -"s'aplica als continguts de qualsevol recurs que afegiu a aquest conjunt " -"de dades. Enviant aquest formulari. accepteu publicar les " -"metadades introduïdes en el formulari sota la llicència de dades que seleccioneu al camp superior només s'aplica" +" als continguts de qualsevol recurs que afegiu a aquest conjunt de dades. " +"Enviant aquest formulari. accepteu publicar les metadades introduïdes" +" en el formulari sota la Open Database " "License." @@ -4222,8 +4223,7 @@ msgstr "Què és un recurs?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Un recurs pot ser qualsevol arxiu o enllaç a un arxiu que conté dades " -"útils." +"Un recurs pot ser qualsevol arxiu o enllaç a un arxiu que conté dades útils." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4254,8 +4254,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Podeu copiar i enganxar el codi d'incrustació en un CMS o blog que " -"suporti codi HTML" +"Podeu copiar i enganxar el codi d'incrustació en un CMS o blog que suporti " +"codi HTML" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4454,8 +4454,8 @@ msgstr "

Prova una altra cerca.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Hi ha hagut un error mentre es " "cercava. Si us plau proveu-ho de nou.

" @@ -4604,11 +4604,10 @@ msgstr "Informació del compte" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"El teu perfil permet a d'altres usuaris de CKAN que sàpigan qui ets i què" -" fas." +"El teu perfil permet a d'altres usuaris de CKAN que sàpigan qui ets i què " +"fas." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4792,7 +4791,8 @@ msgstr "Com funciona això?" #: ckan/templates/user/perform_reset.html:40 msgid "Simply enter a new password and we'll update your account" -msgstr "Simplement introdueix una nova contrasenya i modificarem el teu compte" +msgstr "" +"Simplement introdueix una nova contrasenya i modificarem el teu compte" #: ckan/templates/user/read.html:21 msgid "User hasn't created any datasets." @@ -4837,8 +4837,8 @@ msgstr "Sol·licitar reinici" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Entra el teu nom d'usuari dins del quadre i t'enviarem un correu amb un " "enllaç per a entrar la contrasenya" @@ -4867,4 +4867,3 @@ msgstr "Cercar usuaris" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "La vostra contrasenya ha de tenir 8 o més caràcters." - diff --git a/ckan/i18n/cs_CZ/LC_MESSAGES/ckan.po b/ckan/i18n/cs_CZ/LC_MESSAGES/ckan.po index f03ad26a6e8..395c3eb8e5f 100644 --- a/ckan/i18n/cs_CZ/LC_MESSAGES/ckan.po +++ b/ckan/i18n/cs_CZ/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Czech (Czech Republic) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Jakub Klímek , 2018 # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,15 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: cs_CZ\n" -"Language-Team: Czech (Czech Republic) " -"(https://www.transifex.com/okfn/teams/11162/cs_CZ/)\n" -"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && " -"n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3\n" +"Language-Team: Czech (Czech Republic) (https://www.transifex.com/okfn/teams/11162/cs_CZ/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -118,16 +117,16 @@ msgstr "Požadovaný zdroj z DataStore nebyl nalezen" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" -"Datový slovník uložen. Veškeré změny typů budou uplatněny při dalším " -"nahrání zdroje do DataStore" +"Datový slovník uložen. Veškeré změny typů budou uplatněny při dalším nahrání" +" zdroje do DataStore" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Data byla nevalidní (příklad: číselná hodnota je mimo rozsah nebo byla " "vložena do textového pole)" @@ -156,8 +155,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Další informace naleznete v dokumentaci pro hlavní CKAN Data API main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Další informace naleznete v dokumentaci pro update your profile and add your email address. " msgstr "" -"Prosím, upravte si svůj profil a doplňte svou " -"emailovou adresu. " +"Prosím, upravte si svůj profil a doplňte svou emailovou " +"adresu. " #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." -msgstr "%s používá Vaši emailovou adresu v případě, že potřebujete obnovit heslo." +msgstr "" +"%s používá Vaši emailovou adresu v případě, že potřebujete obnovit heslo." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1109,8 +1107,7 @@ msgstr "Neplatný formát verze: %r" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." msgstr "" -"Zobrazení datových sad typu \"{package_type}\" není podporováno " -"({file_!r})." +"Zobrazení datových sad typu \"{package_type}\" není podporováno ({file_!r})." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1327,7 +1324,8 @@ msgstr "nesprávné heslo" #: ckan/controllers/user.py:427 msgid "Login failed. Bad username or password." -msgstr "Přihlášení se nezdařilo. Zadali jste špatné uživatelské jméno nebo heslo." +msgstr "" +"Přihlášení se nezdařilo. Zadali jste špatné uživatelské jméno nebo heslo." #: ckan/controllers/user.py:461 msgid "Unauthorized to request reset password." @@ -1438,7 +1436,8 @@ msgstr "{actor} smazal(-a) datovou sadu {dataset}" #: ckan/lib/activity_streams.py:90 msgid "{actor} deleted the extra {extra} from the dataset {dataset}" -msgstr "{actor} odstranil(-a) rozšiřující atribut {extra} z datové sady {dataset}" +msgstr "" +"{actor} odstranil(-a) rozšiřující atribut {extra} z datové sady {dataset}" #: ckan/lib/activity_streams.py:93 msgid "{actor} deleted the resource {resource} from the dataset {dataset}" @@ -1458,7 +1457,8 @@ msgstr "{actor} vytvořil(-a) datovou sadu {dataset}" #: ckan/lib/activity_streams.py:106 msgid "{actor} added the extra {extra} to the dataset {dataset}" -msgstr "{actor} přidal(-a) rozšiřující atribut {extra} k datové sadě {dataset}" +msgstr "" +"{actor} přidal(-a) rozšiřující atribut {extra} k datové sadě {dataset}" #: ckan/lib/activity_streams.py:109 msgid "{actor} added the resource {resource} to the dataset {dataset}" @@ -1825,8 +1825,8 @@ msgstr "Jméno může mít nejvýše %i znaků" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "Musí být čistě alfanumerické (ascii) malé znaky a tyto symboly: -_" #: ckan/logic/validators.py:361 @@ -1871,8 +1871,8 @@ msgstr "Délka tag \"%s\" je větší než povolené maximum %i" #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Tag \"%s\" může obsahovat pouze malá písmena bez diakritiky, číslice a " -"znaky - (pomlčka) a _ (podtržítko)" +"Tag \"%s\" může obsahovat pouze malá písmena bez diakritiky, číslice a znaky" +" - (pomlčka) a _ (podtržítko)" #: ckan/logic/validators.py:436 #, python-format @@ -1912,8 +1912,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Úprava nebyla povolena, protože vypadá jako spam. Vyhněte se prosím v " -"popisu odkazům." +"Úprava nebyla povolena, protože vypadá jako spam. Vyhněte se prosím v popisu" +" odkazům." #: ckan/logic/validators.py:620 #, python-format @@ -1927,7 +1927,8 @@ msgstr "Jméno slovníku je již používáno" #: ckan/logic/validators.py:634 #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" -msgstr "Nelze změnit hodnotu pojmu z %s na %s. Tento pojem je pouze pro čtení." +msgstr "" +"Nelze změnit hodnotu pojmu z %s na %s. Tento pojem je pouze pro čtení." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -1970,8 +1971,8 @@ msgstr "Toto není textový řetězec" #: ckan/logic/validators.py:782 msgid "This parent would create a loop in the hierarchy" msgstr "" -"Přidáním tohoto nadřazeného objektu vytvoříte v rámci hierarchie " -"cyklickou vazbu" +"Přidáním tohoto nadřazeného objektu vytvoříte v rámci hierarchie cyklickou " +"vazbu" #: ckan/logic/validators.py:792 msgid "\"filter_fields\" and \"filter_values\" should have the same length" @@ -2167,7 +2168,8 @@ msgstr "Nebylo zadáno žádné ID datové sady. Nelze autorizovat." #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." -msgstr "Pro tento zdroj nebyl nalezen žádný balíček, nelze zkontrolovat oprávnění." +msgstr "" +"Pro tento zdroj nebyl nalezen žádný balíček, nelze zkontrolovat oprávnění." #: ckan/logic/auth/create.py:76 #, python-format @@ -2192,8 +2194,7 @@ msgstr "Uživatel %s nemá oprávnění vytvářet organizace" #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" msgstr "" -"Uživatel {user} není oprávněn vytvářet uživatelské účty prostřednictvím " -"API" +"Uživatel {user} není oprávněn vytvářet uživatelské účty prostřednictvím API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2404,7 +2405,8 @@ msgstr "UK Open Government Licence (OGL)" #: ckan/model/license.py:341 msgid "Creative Commons Non-Commercial (Any)" -msgstr "Creative Commons Neužívejte dílo komerčně (jakákoli takováto CC licence)" +msgstr "" +"Creative Commons Neužívejte dílo komerčně (jakákoli takováto CC licence)" #: ckan/model/license.py:349 msgid "Other (Non-Commercial)" @@ -2461,7 +2463,8 @@ msgstr "je příbuzné s %s" #: ckan/public/base/javascript/modules/api-info.js:96 msgid "There is no API data to load for this resource" -msgstr "Tento datový zdroj neobsahuje žádná data, která lze poskytnou přes API" +msgstr "" +"Tento datový zdroj neobsahuje žádná data, která lze poskytnou přes API" #: ckan/public/base/javascript/modules/api-info.js:124 msgid "Failed to load data API information" @@ -2599,8 +2602,8 @@ msgstr "Nelze získat data z nahraného souboru" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Právě nahráváte soubor. Jste si opravdu jistí, že chcete tuto stránku " "opustit a ukončit tak nahrávání?" @@ -2886,39 +2889,37 @@ msgstr "Konfigurační volby CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Název portálu: Toto je název této CKAN instance. " -"Objevuje se na různých místech CKANu.

Styl: " -"Můžete si vybrat z nabídky jednoduchých variant barevného schematu a " -"rychle tak upravit vzhled Vašeho portálu.

Malé logo " -"portálu: Toto logo se zobrazuje v záhlaví každé šablony CKAN " -"instance.

O portálu: Tento text se objeví na

Styl: Můžete " +"si vybrat z nabídky jednoduchých variant barevného schematu a rychle tak " +"upravit vzhled Vašeho portálu.

Malé logo portálu: " +"Toto logo se zobrazuje v záhlaví každé šablony CKAN instance.

" +"

O portálu: Tento text se objeví na informační stránce této CKAN instance.

" "

Úvodní text: Tento text se objeví na domovské stránce této CKAN instance pro " -"přivítání návštěvníků.

Vlastní nebo upravené CSS:" -" Toto je blok pro CSS, který se objeví v <head> tagu " -"každé stránky. Pokud si přejete upravit šablony ještě více, doporučuje " -"přečíst si dokumentaci.

Hlavní " -"stránka: Tato volba slouží k určení předpřipraveného rozložení " -"modulů, které se zobrazují na hlavní stránce.

" +"href=\"%(home_url)s\">domovské stránce této CKAN instance pro přivítání " +"návštěvníků.

Vlastní nebo upravené CSS: Toto je blok" +" pro CSS, který se objeví v <head> tagu každé stránky. " +"Pokud si přejete upravit šablony ještě více, doporučuje přečíst si dokumentaci.

" +"

Hlavní stránka: Tato volba slouží k určení " +"předpřipraveného rozložení modulů, které se zobrazují na hlavní stránce.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2933,14 +2934,12 @@ msgstr "Spravovat CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Jako uživatel sysadmin máte plnou kontrolu nad touto instancí CKAN. " -"Pokračujte s opatrností!

Pro návod k funkcím sysadmin se podívejte" -" na příručku sysadmin " -"CKAN

" +"Pokračujte s opatrností!

Pro návod k funkcím sysadmin se podívejte na" +" příručku sysadmin CKAN

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3103,8 +3102,9 @@ msgstr "Jste si jistí, že chcete odstranit člena - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Spravovat" @@ -3136,7 +3136,8 @@ msgstr "Vyhledat skupiny..." msgid "There are currently no groups for this site" msgstr "Na tomto portálu aktuálně nejsou žádné skupiny" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Nechcete jednu založit?" @@ -3185,21 +3186,25 @@ msgstr "Nový uživatel" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Pokud si přejete pozvat nové uživatele, zadejte jejich emailové adresy." +msgstr "" +"Pokud si přejete pozvat nové uživatele, zadejte jejich emailové adresy." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Role" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Jste si jist, že chcete smazat tohoto člena?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3220,8 +3225,8 @@ msgstr "Co jsou to role?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Administrátor: Může upravovat informace o skupině a " @@ -3296,16 +3301,15 @@ msgstr "Co jsou skupiny?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"V CKAN můžete skupiny použít k vytváření a správě kolekcí datových sad. " -"Může to být např. katalog datových sad určitého projektu nebo týmu, " -"případně to mohou být datové sady určitého tématu. Skupiny také můžete " -"použít jako pomůcku pro uživatele, aby mohli snáze najít Vámi publikované" -" datové sady." +"V CKAN můžete skupiny použít k vytváření a správě kolekcí datových sad. Může" +" to být např. katalog datových sad určitého projektu nebo týmu, případně to " +"mohou být datové sady určitého tématu. Skupiny také můžete použít jako " +"pomůcku pro uživatele, aby mohli snáze najít Vámi publikované datové sady." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3368,14 +3372,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3388,14 +3391,14 @@ msgstr "" "

CKAN je přední světová open source platforma pro datové portály.

" "

CKAN je kompletní softwarové řešení, které je ihned připravené k " "nasazení, pomáhající k tomu, aby data byla dostupná a využitelná. To je " -"dosaženo pomocí nástrojů, které usnadňují publikaci, sdílení, vyhledávání" -" a využívání dat (včetně ukládání dat a zpřístupnění dat pomocí " -"robustního API). CKAN je určen poskytovatelům dat (orgány státní správy a" -" samosprávy, podniky a organizace), kteří chtějí, aby jejich data byla " -"dobře dostupná.

CKAN je využíván vládami a skupinami uživatelů po " -"celém světě a je to platforma mnoha oficiálních a komunitních datových " -"portálů, mezi které patří portály veřejné správy na regionální, národní a" -" nadnárodní úrovni, jako jsou např. portály Velké Británie

CKAN je využíván vládami a skupinami uživatelů po celém " +"světě a je to platforma mnoha oficiálních a komunitních datových portálů, " +"mezi které patří portály veřejné správy na regionální, národní a nadnárodní " +"úrovni, jako jsou např. portály Velké Británie data.gov.uk a Evropské Unie publicdata.eu, Brazílie dados.gov.br, portály veřejné správy v " @@ -3412,11 +3415,11 @@ msgstr "Vítejte v CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Toto je úvodní odstavec o CKANu nebo obecně o portálu. Nemáme sem zatím " -"co dát, ale to se brzy změní" +"Toto je úvodní odstavec o CKANu nebo obecně o portálu. Nemáme sem zatím co " +"dát, ale to se brzy změní" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3465,13 +3468,13 @@ msgstr "Malé logo portálu" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"Zde můžete použít formátování Markdown" +"Zde můžete použít formátování Markdown" #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3540,8 +3543,8 @@ msgstr "Předběžný návrh" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Soukromá" @@ -3595,15 +3598,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Administrátor: Může přidávat, upravovat a mazat " -"datové sady a může také spravovat členy organizace.

" -"

Editor: Může přidávat, upravovat a mazat datové sady," -" ale nemůže spravovat členy organizace.

Člen: " -"Může si zobrazit soukromé datové sady organizace, ale nemůže datové sady " -"přidávat.

" +"

Administrátor: Může přidávat, upravovat a mazat datové " +"sady a může také spravovat členy organizace.

Editor:" +" Může přidávat, upravovat a mazat datové sady, ale nemůže spravovat členy " +"organizace.

Člen: Může si zobrazit soukromé datové " +"sady organizace, ale nemůže datové sady přidávat.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3645,31 +3647,30 @@ msgstr "Co jsou organizace?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Organizace se chovají jako publikační oddělení pro datovou sadu " "(například oddělení zdravotnictví). To znamená že datová sada může být " "publikována oddělením a nebo oddělení patřit místo toho aby patříla " "konkrétnímu uživateli.

Uvnitř organizací mohou administrátoři " -"přidělovat role a autorizovat členy. Členům mohou individuálně přidělovat" -" práva na publikaci datových sad za danou organizaci (např. Český " -"statistický úřad)." +"přidělovat role a autorizovat členy. Členům mohou individuálně přidělovat " +"práva na publikaci datových sad za danou organizaci (např. Český statistický" +" úřad)." #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "V CKAN jsou organizace používány k vytváření, správě a publikaci kolekcí " -"datových sad. Uživatelé mohou mít v rámci organizace různé role v " -"závislosti na úrovni oprávnění k vytváření, úpravám a publikaci datových " -"sad." +"datových sad. Uživatelé mohou mít v rámci organizace různé role v závislosti" +" na úrovni oprávnění k vytváření, úpravám a publikaci datových sad." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3685,13 +3686,11 @@ msgstr "Stručné informace o mé organizaci" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" -"Opravdu chcete smazat tuto organizaci? Poznámka*: Smazání nemůže " -"proběhnout dokud do této organizace patří veřejné či soukromé datové " -"sady." +"Opravdu chcete smazat tuto organizaci? Poznámka*: Smazání nemůže proběhnout " +"dokud do této organizace patří veřejné či soukromé datové sady." #: ckan/templates/organization/snippets/organization_form.html:63 msgid "Save Organization" @@ -3713,13 +3712,13 @@ msgstr "Co jsou to datové sady?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"V CKAN je datasetem soubor datových zdrojů (jako jsou např. soubory) " -"spolu s jeho popisem a dalšími údaji, který má pevnou URL adresu. " -"Uživatelům se zobrazují datasety jako výsledky jejich hledání." +"V CKAN je datasetem soubor datových zdrojů (jako jsou např. soubory) spolu s" +" jeho popisem a dalšími údaji, který má pevnou URL adresu. Uživatelům se " +"zobrazují datasety jako výsledky jejich hledání." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3800,15 +3799,15 @@ msgstr "Přidat zobrazení" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" "Zobrazení prohlížeče dat může být pomalé a nespolehlivé, pokud není " "aktivováno rozšíření DataStore. Pro více informací se podívejte na dokumentaci " -"Datového prohlížeče." +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>dokumentaci Datového " +"prohlížeče." #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3818,12 +3817,11 @@ msgstr "Přidat" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Toto je stará revize tohoto dataset, která byla upravena %(timestamp)s. " -"Může se tak značně lišit od aktuální revize." +"Toto je stará revize tohoto dataset, která byla upravena %(timestamp)s. Může" +" se tak značně lišit od aktuální revize." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3884,7 +3882,8 @@ msgstr "Zde je pár důvodů proč nemusíte vidět očekávaná zobrazení:" #: ckan/templates/package/resource_read.html:120 msgid "No view has been created that is suitable for this resource" -msgstr "Nebylo vytvořeno žádné zobrazení které by se hodilo pro tento datový zdroj" +msgstr "" +"Nebylo vytvořeno žádné zobrazení které by se hodilo pro tento datový zdroj" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" @@ -3892,13 +3891,13 @@ msgstr "Administrátoři možná nepovolili relevantní pluginy pro zobrazení" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"Jestliže zobrazení vyžaduje DataStore, plugin DataStore možná není " -"zapnutý, data nebyla nahrána do DataStore a nebo DataStore ještě " -"nedokončil zpracování dat." +"Jestliže zobrazení vyžaduje DataStore, plugin DataStore možná není zapnutý, " +"data nebyla nahrána do DataStore a nebo DataStore ještě nedokončil " +"zpracování dat." #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3965,8 +3964,8 @@ msgstr "Přidat nový datový zdroj" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Tento dataset neobsahuje žádná data, tak proč nějaká nepřidat?

" @@ -4054,13 +4053,15 @@ msgstr "Vytvořit organizaci" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." -msgstr "Neexistují organizace, do kterých byste mohli přiřadit tuto datovou sadu." +msgstr "" +"Neexistují organizace, do kterých byste mohli přiřadit tuto datovou sadu." #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" "Ask a system administrator to create an organization before you can " "continue." -msgstr "Před pokračováním požádejte systémového správce o vytvoření organizace." +msgstr "" +"Před pokračováním požádejte systémového správce o vytvoření organizace." #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -4114,17 +4115,16 @@ msgstr "Aktivní" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "Datová licence kterou výše vyberete se vztahuje pouze na obsah " -"každého ze zdrojových souborů které přidáte do této datové sady. " -"Odesláním tohoto formuláře souhlasíte s uvolněním metadatových " -"hodnot, které zadáváte do formuláře, pod licencí metadatových hodnot, které " +"zadáváte do formuláře, pod licencí Open Database " "License." @@ -4269,8 +4269,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Můžete kopírovat a vložit kód embedu do CMS nebo blogovacího software " -"který podporuje čisté HTML" +"Můžete kopírovat a vložit kód embedu do CMS nebo blogovacího software který " +"podporuje čisté HTML" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4471,8 +4471,8 @@ msgstr "

Prosím, zkuste jiný dotaz.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Při hledání se vyskytla chyba. " "Zkuste to prosím znovu.

" @@ -4633,11 +4633,10 @@ msgstr "Informace o uživatelském účtu" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Pomocí Vašeho CKAN profilu můžete říci ostatním uživatelům něco o sobě a " -"o tom, co děláte." +"Pomocí Vašeho CKAN profilu můžete říci ostatním uživatelům něco o sobě a o " +"tom, co děláte." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4761,7 +4760,8 @@ msgstr "Už jste přihlášeni" #: ckan/templates/user/logout_first.html:24 msgid "You need to log out before you can log in with another account." -msgstr "Pokud se chcete přihlásit pod jiným účtem, musíte se nejprve odhlásit." +msgstr "" +"Pokud se chcete přihlásit pod jiným účtem, musíte se nejprve odhlásit." #: ckan/templates/user/logout_first.html:25 msgid "Log out now" @@ -4782,8 +4782,7 @@ msgstr "Proč bych se měl přihlásit?" #: ckan/templates/user/new.html:28 msgid "Create datasets, groups and other exciting things" msgstr "" -"Abyste mohli vytvářet datové sady, skupiny a spoustu dalších zajímavých " -"věcí" +"Abyste mohli vytvářet datové sady, skupiny a spoustu dalších zajímavých věcí" #: ckan/templates/user/new_user_form.html:5 msgid "username" @@ -4866,8 +4865,8 @@ msgstr "Žádost o obnovení" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Zadejte uživatelské jméno do textového pole a bude Vám zaslán email s " "odkazem, kde si budete moci zadat nové heslo." @@ -4896,4 +4895,3 @@ msgstr "Vyhledat uživatele" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "Vaše heslo musí mít alespoň 8 znaků." - diff --git a/ckan/i18n/da_DK/LC_MESSAGES/ckan.po b/ckan/i18n/da_DK/LC_MESSAGES/ckan.po index e5b8e9c8061..405cd9dcd0d 100644 --- a/ckan/i18n/da_DK/LC_MESSAGES/ckan.po +++ b/ckan/i18n/da_DK/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Danish (Denmark) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: da_DK\n" -"Language-Team: Danish (Denmark) " -"(https://www.transifex.com/okfn/teams/11162/da_DK/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Danish (Denmark) (https://www.transifex.com/okfn/teams/11162/da_DK/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: da_DK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "DataStore-ressourcen ikke fundet" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "Tilgå ressourcens data via et web-API med kraftfuld query-support" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,8 +157,8 @@ msgstr "Endpoints" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "Data-API'et kan tilgås via følgende actions fra CKAN action API'et." #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -268,8 +267,7 @@ msgstr "Data API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -747,8 +745,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Kan ikke tømme datakilde %s da associeret revision %s omfatter ikke-" -"slettede datakilder %s" +"Kan ikke tømme datakilde %s da associeret revision %s omfatter ikke-slettede" +" datakilder %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1038,13 +1036,13 @@ msgstr "Dette site er i øjeblikket offline. Databasen er ikke initialiseret." #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Opdatér venligst din profil og tilføj din e-mail-" -"adresse." +"Opdatér venligst din profil og tilføj din e-mail-adresse." #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." -msgstr "%s bruger din e-mail-adresse, hvis du ønsker at nulstille din adgangskode." +msgstr "" +"%s bruger din e-mail-adresse, hvis du ønsker at nulstille din adgangskode." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1265,8 +1263,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Bruger \"%s\" er nu registreret, men du er fortsat logget ind som \"%s\" " -"fra tidligere" +"Bruger \"%s\" er nu registreret, men du er fortsat logget ind som \"%s\" fra" +" tidligere" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1773,8 +1771,8 @@ msgstr "Navnet må indeholde maksimalt %i tegn" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1854,8 +1852,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Ændring ikke godkendt, da indholdet ser ud til at ligne spam. Undgå " -"venligst links i din beskrivelse." +"Ændring ikke godkendt, da indholdet ser ud til at ligne spam. Undgå venligst" +" links i din beskrivelse." #: ckan/logic/validators.py:620 #, python-format @@ -2103,7 +2101,8 @@ msgstr "" #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." -msgstr "Ingen datakilde fundet til denne ressource, kan ikke tjekke autorisation." +msgstr "" +"Ingen datakilde fundet til denne ressource, kan ikke tjekke autorisation." #: ckan/logic/auth/create.py:76 #, python-format @@ -2250,7 +2249,8 @@ msgstr "Bruger %s ikke autoriseret til at ændre status for gruppen %s" #: ckan/logic/auth/update.py:162 #, python-format msgid "User %s not authorized to edit permissions of group %s" -msgstr "Bruger %s ikke autoriseret til at redigere tilladelserne for gruppen %s" +msgstr "" +"Bruger %s ikke autoriseret til at redigere tilladelserne for gruppen %s" #: ckan/logic/auth/update.py:190 msgid "Have to be logged in to edit user" @@ -2531,11 +2531,10 @@ msgstr "Ude af stand til at hente data for uploadet fil" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Du uploader en fil. Er du sikker på, du vil navigere væk og standse " -"upload?" +"Du uploader en fil. Er du sikker på, du vil navigere væk og standse upload?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2711,38 +2710,36 @@ msgstr "CKAN konfigurationsindstillinger" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" -msgstr "" -"

Site Title: Dette er titlen på denne CKAN-instans. " -"Den optræder flere steder i CKAN.

Style: Vælg " -"mellem en liste af simple variationer over hovedfarvetemaet for at starte" -" et hurtigt tilpasset tema.

Site Tag Logo: Dette" -" er logoet der optræder i headeren i alle CKAN-instansens templates.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" +msgstr "" +"

Site Title: Dette er titlen på denne CKAN-instans. Den " +"optræder flere steder i CKAN.

Style: Vælg mellem en" +" liste af simple variationer over hovedfarvetemaet for at starte et hurtigt " +"tilpasset tema.

Site Tag Logo: Dette er logoet der " +"optræder i headeren i alle CKAN-instansens templates.

" "

Om: Denne tekst optræder på CKAN-instansens om-side.

Intro-tekst: " "Denne tekst optræder på CKAN-instansens hjem-" "side som en velkomst til besøgende.

Brugerdefineret " -"CSS: Dette er en CSS-blok, der optræder i " -"<head> tag på alle sider. Hvis du vil tilpasse " -"temaerne i højere grad anbefaler vi at læse dokumentationen.

" -"

Homepage: Dette er til at vælge et prædefineret " -"layout for modulerne, der vises på din hjemmeside.

" +"CSS:
Dette er en CSS-blok, der optræder i <head>" +" tag på alle sider. Hvis du vil tilpasse temaerne i højere grad anbefaler vi" +" at læse dokumentationen.

" +"

Homepage: Dette er til at vælge et prædefineret layout " +"for modulerne, der vises på din hjemmeside.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2757,9 +2754,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2923,8 +2919,9 @@ msgstr "Er du sikker på, at du vil slette medlemmet - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Administrer" @@ -2956,7 +2953,8 @@ msgstr "Søg grupper..." msgid "There are currently no groups for this site" msgstr "Der er i øjeblikket ingen grupper for dette site" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Hvad med at oprette en?" @@ -2989,8 +2987,7 @@ msgstr "Eksisterende bruger" #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." msgstr "" -"Hvis du vil tilføje en eksisterende burger, søg efter brugernavnet " -"herunder." +"Hvis du vil tilføje en eksisterende burger, søg efter brugernavnet herunder." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3007,19 +3004,22 @@ msgstr "Ny bruger" msgid "If you wish to invite a new user, enter their email address." msgstr "Hvis du vil invitere en ny bruger, indtast dennes e-mail-adresse." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rolle" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Er du sikker på, at du vil slette dette medlem?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3040,13 +3040,13 @@ msgstr "Hvad er roller?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Admin: Kan redigere gruppeinformation og håndtere " -"organisationsmedlemmer.

Medlem: Kan " -"tilføje/fjerne datasæt fra grupper

" +"organisationsmedlemmer.

Medlem: Kan tilføje/fjerne " +"datasæt fra grupper

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3116,15 +3116,15 @@ msgstr "Hvad er grupper?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Du kan bruge CKAN Grupper til at oprette og håndtere samlinger af " -"datasæt. Dette kan være datasæt for et givent projekt eller team, efter " -"et bestemt tema eller som en meget simpel måde at hjælpe folk med at " -"finde og søge efter dine egne publicerede datasæt." +"Du kan bruge CKAN Grupper til at oprette og håndtere samlinger af datasæt. " +"Dette kan være datasæt for et givent projekt eller team, efter et bestemt " +"tema eller som en meget simpel måde at hjælpe folk med at finde og søge " +"efter dine egne publicerede datasæt." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3187,14 +3187,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3204,16 +3203,15 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN is the world’s leading open-source data portal platform.

" -"

CKAN is a complete out-of-the-box software solution that makes data " -"accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s CKAN is the world’s leading open-source data portal platform.

CKAN" +" is a complete out-of-the-box software solution that makes data accessible " +"and usable – by providing tools to streamline publishing, sharing, finding " +"and using data (including storage of data and provision of robust data " +"APIs). CKAN is aimed at data publishers (national and regional governments, " +"companies and organizations) wanting to make their data open and " +"available.

CKAN is used by governments and user groups worldwide and " +"powers a variety of official and community data portals including portals " +"for local, national and international government, such as the UK’s data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " @@ -3230,11 +3228,11 @@ msgstr "Velkommen til CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Dette er en lækker intro-tekst om CKAN eller sitet i almindelighed. Vi " -"har ikke noget tekst her endnu, men det kommer snart" +"Dette er en lækker intro-tekst om CKAN eller sitet i almindelighed. Vi har " +"ikke noget tekst her endnu, men det kommer snart" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3279,8 +3277,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3351,8 +3349,8 @@ msgstr "Udkast" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privat" @@ -3406,14 +3404,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Admin: Kan tilføje, redigere og slette datasæt såvel " -"som at administrere medlemmer i en organisation.

" +"

Admin: Kan tilføje, redigere og slette datasæt såvel som" +" at administrere medlemmer i en organisation.

" "

Editor: Kan tilføje og redigere datasæt men ikke " -"administrere medlemmer i en organisation

Medlem: " -"Kan se organisationens private datasæt men ikke tilføje nye

" +"administrere medlemmer i en organisation

Medlem: Kan" +" se organisationens private datasæt men ikke tilføje nye

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3453,24 +3451,23 @@ msgstr "Hvad er organisationer?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN Organisationer bruges til at oprette, håndtere og publicere " -"samlinger af datasæt. Brugere kan have forskellige roller inden for en " -"Organisation, afhængigt af deres autorisation til at oprette, redigere og" -" publicere." +"CKAN Organisationer bruges til at oprette, håndtere og publicere samlinger " +"af datasæt. Brugere kan have forskellige roller inden for en Organisation, " +"afhængigt af deres autorisation til at oprette, redigere og publicere." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3486,9 +3483,8 @@ msgstr "Lidt information om min organisation..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Er du sikker på, du vil slette denne organisation? Dette vil slette alle " "offentlige og private datasæt, der tilhører denne organisation." @@ -3513,13 +3509,13 @@ msgstr "Hvad er datasæt?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Et CKAN Datasæt er en samling af dataressourcer (som f.eks. filer), " -"sammen med en beskrivelse og andre informationer, som en statisk URL. " -"Datasæt er hvad brugere ser, når de søger efter data." +"Et CKAN Datasæt er en samling af dataressourcer (som f.eks. filer), sammen " +"med en beskrivelse og andre informationer, som en statisk URL. Datasæt er " +"hvad brugere ser, når de søger efter data." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3600,9 +3596,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3613,12 +3609,11 @@ msgstr "Tilføj" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Dette er en gammel version af dette datasæt (ændret %(timestamp)s). Det " -"kan afvige markant fra den aktuelle version." +"Dette er en gammel version af dette datasæt (ændret %(timestamp)s). Det kan " +"afvige markant fra den aktuelle version." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3687,9 +3682,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3757,8 +3752,8 @@ msgstr "Tilføj ny ressource" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Dette datasæt indeholder ingen data, hvorfor ikke tilføje noget?

" @@ -3789,7 +3784,8 @@ msgstr "" msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " -msgstr "Du kan også tilgå dette register med %(api_link)s (se %(api_doc_link)s)." +msgstr "" +"Du kan også tilgå dette register med %(api_link)s (se %(api_doc_link)s)." #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -3904,12 +3900,11 @@ msgstr "Aktiv" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4247,8 +4242,8 @@ msgstr "

Prøv venligst en anden søgning.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4395,8 +4390,7 @@ msgstr "Kontoinformation" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "Din profil viser andre CKAN-brugere hvem du er og hvad du laver." #: ckan/templates/user/edit_user_form.html:7 @@ -4622,11 +4616,11 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Skriv dit brugernavn i feltet og vi sender dig en e-mail med et link, " -"hvor du kan angive en ny adgangskode." +"Skriv dit brugernavn i feltet og vi sender dig en e-mail med et link, hvor " +"du kan angive en ny adgangskode." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4652,4 +4646,3 @@ msgstr "Søg efter brugere" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/de/LC_MESSAGES/ckan.po b/ckan/i18n/de/LC_MESSAGES/ckan.po index 075c6fbe2c5..38316b8e8dd 100644 --- a/ckan/i18n/de/LC_MESSAGES/ckan.po +++ b/ckan/i18n/de/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# German translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Ondics Githubler, 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,13 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Ondics Githubler, 2018\n" -"Language: de\n" "Language-Team: German (https://www.transifex.com/okfn/teams/11162/de/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,16 +117,16 @@ msgstr "DataStore Ressource nicht gefunden" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" -"Das Data Dictionary wurde gespeichert. Typ-Änderungen werden wirksam, " -"wenn die Ressource in den DataStore hochgeladen wird." +"Das Data Dictionary wurde gespeichert. Typ-Änderungen werden wirksam, wenn " +"die Ressource in den DataStore hochgeladen wird." #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Die Daten waren ungültig (evtl. ist ein numerischer Wert außerhalb des " "gültigen Bereichs oder wurde in ein Feld vom Typ \"Text\" eingefügt)." @@ -154,8 +155,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Weiterführende Information in der main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Weiterführende Information in der Powered by
CKAN" msgstr "" -"Eingesetzte Software ist CKAN" +"Eingesetzte Software ist CKAN" #: ckan/templates/header.html:12 msgid "Sysadmin settings" @@ -2868,38 +2875,37 @@ msgstr "Optionen der CKAN-Konfiguration" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Seitenüberschrift: Dieses ist der Seitentitel dieser" -" CKAN Installation. Er erscheint an verschiedenen Stellen in CKAN.

" -"

Style: Wählen Sie aus einer Liste von Farbschemen, um" -" CKAN schnell individuell anzupassen.

Seiten-Logo" -" Dieses Logo erscheint im Kopf aller CKAN Instance Templates.

" -"

Über: Dieser Text erscheint in dieser CKAN-Instanz Über.

" -"

Einführungstext: Dieser text erscheint in dieser CKAN" -" Instanz Startseite als Willkommensseite für" -" Besucher.

Individuelles CSS: Dieser CSS-Block " -"wird eingebunden in <head> Tag jeder Seite. Wenn Sie " -"die Templates noch besser anpassen wollen, lesen Sie die Dokumentation.

" -"

Startseite: Hier können Sie ein vorbereitetes Layout " -"für die Module auf Ihrer Startseite auswählen.

" +"

Seitenüberschrift: Dieses ist der Seitentitel dieser " +"CKAN Installation. Er erscheint an verschiedenen Stellen in CKAN.

" +"

Style: Wählen Sie aus einer Liste von Farbschemen, um " +"CKAN schnell individuell anzupassen.

Seiten-Logo " +"Dieses Logo erscheint im Kopf aller CKAN Instance Templates.

" +"

Über: Dieser Text erscheint in dieser CKAN-Instanz Über.

Einführungstext: " +"Dieser text erscheint in dieser CKAN Instanz Startseite als Willkommensseite für Besucher.

" +"

Individuelles CSS: Dieser CSS-Block wird eingebunden in " +"<head> Tag jeder Seite. Wenn Sie die Templates noch " +"besser anpassen wollen, lesen Sie die Dokumentation.

Startseite: " +"Hier können Sie ein vorbereitetes Layout für die Module auf Ihrer Startseite" +" auswählen.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2914,9 +2920,8 @@ msgstr "CKAN verwalten" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Als Systeadministrator haben Sie volle Kontrolle über diese CKAN " "Instanz. Handeln Sie mit Vorsicht!

Hilfe zu den Möglichkeiten zur " @@ -3084,8 +3089,9 @@ msgstr "Sind Sie sicher, dass Sie das Mitglied {name} löschen wollen?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Bearbeiten" @@ -3117,7 +3123,8 @@ msgstr "Gruppe suchen..." msgid "There are currently no groups for this site" msgstr "Es gibt momentan keine Gruppen für diese Seite" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Wie wäre es, wenn Sie eine erstellen?" @@ -3150,8 +3157,8 @@ msgstr "Bestehender Benutzer" #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." msgstr "" -"Um einen bestehenden Benutzer hinzuzufügen, können Sie dessen " -"Benutzernamen unten suchen." +"Um einen bestehenden Benutzer hinzuzufügen, können Sie dessen Benutzernamen " +"unten suchen." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3166,21 +3173,25 @@ msgstr "Neuer Benutzer" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Um einen neuen Benutzer einzuladen, geben Sie dessen Email-Adresse ein." +msgstr "" +"Um einen neuen Benutzer einzuladen, geben Sie dessen Email-Adresse ein." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rolle" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Sind Sie sicher, dass Sie dieses Mitglied löschen wollen?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3201,8 +3212,8 @@ msgstr "Was sind Rollen?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Admin: Kann Gruppen-Informationen und " @@ -3277,15 +3288,15 @@ msgstr "Was sind Gruppen?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Sie können mit CKAN Gruppen Datensätze erstellen und verwalten. Damit " -"können Datensätze für ein bestimmtes Projekt, ein Team oder zu einem " -"bestimmten Thema katalogisiert oder sehr leicht die eigenen " -"veröffentlichten Datensätze anderen Leuten zugänglich gemacht werden." +"Sie können mit CKAN Gruppen Datensätze erstellen und verwalten. Damit können" +" Datensätze für ein bestimmtes Projekt, ein Team oder zu einem bestimmten " +"Thema katalogisiert oder sehr leicht die eigenen veröffentlichten Datensätze" +" anderen Leuten zugänglich gemacht werden." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3348,14 +3359,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3367,22 +3377,22 @@ msgid "" msgstr "" "

CKAN ist die weltweit führende Open Souce Data Portalsoftware.

" "

CKAN ist eine vollständige und schlüsselfertige Software, die Daten " -"verfügbar, zugreifbar und benutzbar macht. Sie bietet Hilfsmittel, um " -"Daten zu veröffentlichen, teilen, finden und zu benutzen (einschließlich " -"der Datenspeicherung und robuster Datenschnittstellen/APIs). CKAN wurde " -"entwickelt für Datenherausgeber, die ihre Daten öffentlich verfügbar " -"machen wollen, zum Beispiel Regierungen, Behörden, Unternehmen und " +"verfügbar, zugreifbar und benutzbar macht. Sie bietet Hilfsmittel, um Daten " +"zu veröffentlichen, teilen, finden und zu benutzen (einschließlich der " +"Datenspeicherung und robuster Datenschnittstellen/APIs). CKAN wurde " +"entwickelt für Datenherausgeber, die ihre Daten öffentlich verfügbar machen " +"wollen, zum Beispiel Regierungen, Behörden, Unternehmen und " "Organisationen.

CKAN wird weltweit von öffentlicher Seite und " -"Benutzergruppen eingesetzt und ist Grundlage einer Vielzahl von " -"offiziellen und Community-Portale sowie Portale für Kommunen, Länder und " -"Internationale Behörden, darunter das Datenportal für Deutschland govdata.de, das englische Portal data.gov.uk, das Portal der Europäische " "Union publicdata.eu, das " "brasilianische Portal dados.gov.br, " -"sowie kommunale und Städteportale in allen Teilen der Welt.

CKAN: " -"http://ckan.org/
CKAN Kennenlern-" -"Tour: http://ckan.org/tour/
" +"sowie kommunale und Städteportale in allen Teilen der Welt.

CKAN: http://ckan.org/
CKAN Kennenlern-Tour: " +"http://ckan.org/tour/
" "Leistungsüberblick: http://ckan.org/features/

" @@ -3392,8 +3402,8 @@ msgstr "Willkommen bei CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" "Dies ist ein freundlicher Einführungsabsatz zu CKAN oder dieser Seite " "generell. Wir haben noch keinen Inhalt hier, aber sicherlich bald" @@ -3445,8 +3455,8 @@ msgstr "Webseiten-Logo" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Sie können hier Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Admin: Kann Datensätze anlegen, bearbeiten und " -"löschen und Organisationsmitglieder verwalten.

" -"

Redakteur: Kann Datensätze anlegen und bearbeiten, " -"aber kann Mitglieder nicht verwalten.

Mitglied: " -"Kann die privaten Datensätze der Organisation sehen, aber keine neuen " -"Datensätze anlegen.

" +"

Admin: Kann Datensätze anlegen, bearbeiten und löschen " +"und Organisationsmitglieder verwalten.

Redakteur: " +"Kann Datensätze anlegen und bearbeiten, aber kann Mitglieder nicht " +"verwalten.

Mitglied: Kann die privaten Datensätze " +"der Organisation sehen, aber keine neuen Datensätze anlegen.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3623,31 +3632,31 @@ msgstr "Was sind Organisationen?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Organisationen repräsentieren Veröffentlichungsabteilungen für " -"Datensätze (zum Beispiel das Katasteramt). Das bedeutet, dass Datensätze " -"von dieser Abteilung veröffentlicht werden und dieser auch gehören, " -"anstatt einem einzelnen Nutzer.

Admins können innerhalb von " -"Organisationen Rollen und Berechtigungen an Mitglieder vergeben, um " -"einzelnen Nutzern Rechte zu geben, um für die Organisation Datensätze zu " -"veröffentlichen (z.B. für das Statistikamt).

" +"Datensätze (zum Beispiel das Katasteramt). Das bedeutet, dass Datensätze von" +" dieser Abteilung veröffentlicht werden und dieser auch gehören, anstatt " +"einem einzelnen Nutzer.

Admins können innerhalb von Organisationen " +"Rollen und Berechtigungen an Mitglieder vergeben, um einzelnen Nutzern " +"Rechte zu geben, um für die Organisation Datensätze zu veröffentlichen (z.B." +" für das Statistikamt).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"Mit CKAN Organisationen können Gruppen von Datensätzen erstellt, " -"bearbeitet und veröffentlicht werden. Benutzer haben verschiedene " -"Berechtigungen innerhalb von Organisationen, die von ihrer " -"Berechtigungsstufe abhängen: erstellen, bearbeiten, veröffentlichen." +"Mit CKAN Organisationen können Gruppen von Datensätzen erstellt, bearbeitet " +"und veröffentlicht werden. Benutzer haben verschiedene Berechtigungen " +"innerhalb von Organisationen, die von ihrer Berechtigungsstufe abhängen: " +"erstellen, bearbeiten, veröffentlichen." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3663,13 +3672,12 @@ msgstr "Ein paar Informationen zu meiner Organisation..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" -"Soll diese Organisation wirklich gelöscht werden? Hinweis*: Das Löschen " -"kann nicht ausgeführt werden, solange öffentliche oder private Datensätze" -" zu dieser Organisation gehören." +"Soll diese Organisation wirklich gelöscht werden? Hinweis*: Das Löschen kann" +" nicht ausgeführt werden, solange öffentliche oder private Datensätze zu " +"dieser Organisation gehören." #: ckan/templates/organization/snippets/organization_form.html:63 msgid "Save Organization" @@ -3691,13 +3699,13 @@ msgstr "Was sind Datensätze?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Ein CKAN Datensatz ist eine Menge von Daten-Ressourcen (z.B. Dateien) mit" -" einer Beschreibung und anderen Informationen an einer festen URL. " -"Datensätze werden bei Suchanfragen als Ergebnisse zurückgegeben." +"Ein CKAN Datensatz ist eine Menge von Daten-Ressourcen (z.B. Dateien) mit " +"einer Beschreibung und anderen Informationen an einer festen URL. Datensätze" +" werden bei Suchanfragen als Ergebnisse zurückgegeben." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3778,15 +3786,15 @@ msgstr "Ansicht hinzufügen" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" "Data Explorer Darstellungen können langsam und ungenau sein solange die " -"DataStore Extension nicht aktiviert ist. Weiterführende Informationen " -"hierzu in der Data Explorer Dokumentation. " +"DataStore Extension nicht aktiviert ist. Weiterführende Informationen hierzu" +" in der Data Explorer " +"Dokumentation. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3796,12 +3804,11 @@ msgstr "Hinzufügen" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Dies ist eine alte Version dieses Datensatzes vom %(timestamp)s. Sie kann" -" erheblich von der aktuellen Version abweichen." +"Dies ist eine alte Version dieses Datensatzes vom %(timestamp)s. Sie kann " +"erheblich von der aktuellen Version abweichen." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3874,9 +3881,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "Wenn eine Darstellung den DataStore erfordert wurde das DataStore Plugin " "nicht aktiviert oder die Daten befinden sich nicht im DataStore oder der " @@ -3947,8 +3954,8 @@ msgstr "Neue Ressource hinzufügen" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Dieser Datensatz hat keine Daten, Wollen sie welche hinzufügen?

" @@ -4039,16 +4046,15 @@ msgstr "Organisation erstellen" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." msgstr "" -"Es gibt keine Organisation, zu der dieser Datensatz zugeordnet werden " -"kann." +"Es gibt keine Organisation, zu der dieser Datensatz zugeordnet werden kann." #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" "Ask a system administrator to create an organization before you can " "continue." msgstr "" -"Ein Systemadministrator muss diese zunächst Organisation anlegen, damit " -"Sie fortfahren können." +"Ein Systemadministrator muss diese zunächst Organisation anlegen, damit Sie " +"fortfahren können." #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -4077,8 +4083,8 @@ msgid "" "href=\"http://opendefinition.org/licenses/\">opendefinition.org " msgstr "" "Lizenzdefinitionen und weiterführende Informationen können unter opendefinition.org " -"gefunden werden." +"href=\"http://opendefinition.org/licenses/\">opendefinition.org gefunden" +" werden." #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -4103,16 +4109,15 @@ msgstr "aktiv" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Die Datenlizenz, die Sie ausgewählt haben gilt nur für die Inhalte" -" aller Ressourcen, die zu diesem Datensatz gehören. Wenn Sie dieses " -"Formular absenden, stimmen Sie zu, die Metadaten unter der Datenlizenz, die Sie ausgewählt haben gilt nur für die Inhalte " +"aller Ressourcen, die zu diesem Datensatz gehören. Wenn Sie dieses Formular " +"absenden, stimmen Sie zu, die Metadaten unter der Open Database " "License zu veröffentlichen." @@ -4225,8 +4230,8 @@ msgstr "Was ist eine Ressource?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Eine Ressource kann jede Datei oder jeder Link zu einer Datei mit " -"nützlichen Daten sein." +"Eine Ressource kann jede Datei oder jeder Link zu einer Datei mit nützlichen" +" Daten sein." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4246,7 +4251,8 @@ msgstr "Einbettung" #: ckan/templates/package/snippets/resource_view.html:24 msgid "This resource view is not available at the moment." -msgstr "Diese Ressourcendarstellung/-view kann momentan nicht angezeigt werden." +msgstr "" +"Diese Ressourcendarstellung/-view kann momentan nicht angezeigt werden." #: ckan/templates/package/snippets/resource_view.html:63 msgid "Embed resource view" @@ -4319,8 +4325,7 @@ msgstr "Was ist eine Darstellung bzw. ein View?" #: ckan/templates/package/snippets/view_help.html:4 msgid "A view is a representation of the data held against a resource" msgstr "" -"Eine Darstellung bzw. ein View ist eine Ansicht von Daten in einer " -"Ressource" +"Eine Darstellung bzw. ein View ist eine Ansicht von Daten in einer Ressource" #: ckan/templates/revision/diff.html:6 msgid "Differences" @@ -4460,8 +4465,8 @@ msgstr "

Bitte versuch es mit einer anderen Suche.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Beim Suchen trat ein Fehler auf. Bitte noch einmal " "versuchen.

" @@ -4610,9 +4615,9 @@ msgstr "Informationen zum Benutzerkonto" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " -msgstr "Ihr Profil teilt anderen CKAN-Nutzern mit, wer Sie sind und was Sie tun." +" Your profile lets other CKAN users know about who you are and what you do. " +msgstr "" +"Ihr Profil teilt anderen CKAN-Nutzern mit, wer Sie sind und was Sie tun." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4703,7 +4708,8 @@ msgstr "Haben Sie Ihr Kennwort vergessen?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." -msgstr "Kein Problem, nutzen Sie unser Formular um Ihr Passwort zurückzusetzen." +msgstr "" +"Kein Problem, nutzen Sie unser Formular um Ihr Passwort zurückzusetzen." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4843,11 +4849,11 @@ msgstr "Zurücksetzen anfordern" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Geben Sie Ihren Nutzernamen in das Feld ein und wir senden Ihnen eine " -"E-Mail mit einem Link um ein neues Passwort zu setzen." +"Geben Sie Ihren Nutzernamen in das Feld ein und wir senden Ihnen eine E-Mail" +" mit einem Link um ein neues Passwort zu setzen." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4873,4 +4879,3 @@ msgstr "Suche Nutzer" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "Das Kennwort muss mindestens 8 Zeichen enthalten." - diff --git a/ckan/i18n/el/LC_MESSAGES/ckan.po b/ckan/i18n/el/LC_MESSAGES/ckan.po index bcc4c9c7039..3f0551d8cd8 100644 --- a/ckan/i18n/el/LC_MESSAGES/ckan.po +++ b/ckan/i18n/el/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Greek translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Sotirios Karampatakis , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,13 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Sotirios Karampatakis , 2018\n" -"Language: el\n" "Language-Team: Greek (https://www.transifex.com/okfn/teams/11162/el/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,19 +117,19 @@ msgstr "Δεν βρέθηκε ο πόρος DataStore" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" "Το Λεξικό Δεδομένων αποθηκεύτηκε. Οποιαδήποτε παράκαμψη τύπου θα έχει " "επίδραση όταν ο πόρος μεταφορτωθεί στο DataStore. " #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Τα δεδομένα ήταν μη έγκυρα (για παράδειγμα: μία αριθμητική τιμή ήταν " -"εκτός ορίων ή καταχωρήθηκε σε πεδίο κειμένου)." +"Τα δεδομένα ήταν μη έγκυρα (για παράδειγμα: μία αριθμητική τιμή ήταν εκτός " +"ορίων ή καταχωρήθηκε σε πεδίο κειμένου)." #: ckanext/datastore/logic/action.py:258 ckanext/datastore/logic/action.py:286 #: ckanext/datastore/logic/action.py:344 ckanext/datastore/logic/action.py:457 @@ -153,8 +154,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Περισσότερες πληροφορίες στην main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Περισσότερες πληροφορίες στην κεντρική τεκμηρίωση του CKAN Data API και του " -"DataStore .

" +"target=\"_blank\">κεντρική τεκμηρίωση του CKAN Data API και του DataStore " +".

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -456,7 +456,8 @@ msgstr "URL εικόνας" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "eg. http://example.com/image.jpg (if blank uses resource url)" -msgstr "π.χ. http://example.com/image.jpg (χρήση του url πόρου αν μείνει κενό)" +msgstr "" +"π.χ. http://example.com/image.jpg (χρήση του url πόρου αν μείνει κενό)" #: ckanext/reclineview/plugin.py:101 msgid "Data Explorer" @@ -766,8 +767,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Δεν είναι δυνατή η εκκαθάριση του πακέτου %s καθως η συνδεόμενη " -"αναθεώρηση %s περιλαμβάνει μη διεγραμμένα πακέτα%s" +"Δεν είναι δυνατή η εκκαθάριση του πακέτου %s καθως η συνδεόμενη αναθεώρηση " +"%s περιλαμβάνει μη διεγραμμένα πακέτα%s" #: ckan/controllers/admin.py:183 #, python-format @@ -1004,7 +1005,8 @@ msgstr "%s έχει διαγραφεί." #: ckan/controllers/group.py:653 #, python-format msgid "User %r not authorized to edit members of %s" -msgstr "Ο χρήστης %r δεν είναι εξουσιοδοτημένος να επεξεργάζεται τα μέλη του %s" +msgstr "" +"Ο χρήστης %r δεν είναι εξουσιοδοτημένος να επεξεργάζεται τα μέλη του %s" #: ckan/controllers/group.py:670 #, python-format @@ -1066,15 +1068,15 @@ msgstr "" #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Παρακαλούμε ενημερώστε το προφίλ σας και προσθέστε " -"τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας." +"Παρακαλούμε ενημερώστε το προφίλ σας και προσθέστε τη " +"διεύθυνση ηλεκτρονικού ταχυδρομείου σας." #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." msgstr "" -" %s χρησιμοποιείστε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας εάν θέλετε" -" να επαναφέρετε τον κωδικό πρόσβασής σας." +" %s χρησιμοποιείστε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας εάν θέλετε να" +" επαναφέρετε τον κωδικό πρόσβασής σας." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1105,8 +1107,8 @@ msgstr "Μη έγκυρη μορφή αναθεώρησης:%r" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." msgstr "" -"Η προβολή συνόλων δεδομένων του τύπου \"{package_type}\" δεν " -"υποστηρίζεται ({file_!r})." +"Η προβολή συνόλων δεδομένων του τύπου \"{package_type}\" δεν υποστηρίζεται " +"({file_!r})." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1299,8 +1301,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Ο χρήστης \"%s\" έχει εγγραφεί αλλά είστε ακόμα συνδεδεμένοι ως \"%s\" " -"από πριν" +"Ο χρήστης \"%s\" έχει εγγραφεί αλλά είστε ακόμα συνδεδεμένοι ως \"%s\" από " +"πριν" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1343,7 +1345,8 @@ msgstr "Δεν υπάρχει τέτοιος χρήστης:%s" #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." -msgstr "Παρακαλούμε ελέγξτε τα εισερχόμενά μηνύματα σας για τον κωδικό επαναφοράς." +msgstr "" +"Παρακαλούμε ελέγξτε τα εισερχόμενά μηνύματα σας για τον κωδικό επαναφοράς." #: ckan/controllers/user.py:503 #, python-format @@ -1436,11 +1439,13 @@ msgstr "ο {actor} διέγραψε το σύνολο δεδομένων {datase #: ckan/lib/activity_streams.py:90 msgid "{actor} deleted the extra {extra} from the dataset {dataset}" -msgstr "ο {actor} διέγραψε το πρόσθετο {extra} στο σύνολο δεδομένων {dataset}" +msgstr "" +"ο {actor} διέγραψε το πρόσθετο {extra} στο σύνολο δεδομένων {dataset}" #: ckan/lib/activity_streams.py:93 msgid "{actor} deleted the resource {resource} from the dataset {dataset}" -msgstr "ο {actor} διέγραψε τον πόρο {resource} από το σύνολο δεδομένων {dataset}" +msgstr "" +"ο {actor} διέγραψε τον πόρο {resource} από το σύνολο δεδομένων {dataset}" #: ckan/lib/activity_streams.py:97 msgid "{actor} created the group {group}" @@ -1807,11 +1812,11 @@ msgstr " Το όνομα πρέπει να είναι κατ 'ανώτατο ό #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" -"Πρέπει να αποτελείται μόνο από πεζούς αλφαρηθμητικούς χαρακτήρες (ascii) " -"και αυτά τα σύμβολα: -_" +"Πρέπει να αποτελείται μόνο από πεζούς αλφαρηθμητικούς χαρακτήρες (ascii) και" +" αυτά τα σύμβολα: -_" #: ckan/logic/validators.py:361 msgid "That URL is already in use." @@ -1896,8 +1901,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Η επεξεργασία δεν επιτρέπεται, δεδομένου ότι μοιάζει με spam. Παρακαλούμε" -" αποφύγετε συνδέσεις στην περιγραφή σας." +"Η επεξεργασία δεν επιτρέπεται, δεδομένου ότι μοιάζει με spam. Παρακαλούμε " +"αποφύγετε συνδέσεις στην περιγραφή σας." #: ckan/logic/validators.py:620 #, python-format @@ -1943,7 +1948,8 @@ msgstr "ο ρόλος δεν υπάρχει." #: ckan/logic/validators.py:741 msgid "Datasets with no organization can't be private." -msgstr "Τα σύνολα δεδομένων που δεν ανήκουν σε φορέα δε μπορούν να είναι ιδιωτικά." +msgstr "" +"Τα σύνολα δεδομένων που δεν ανήκουν σε φορέα δε μπορούν να είναι ιδιωτικά." #: ckan/logic/validators.py:747 msgid "Not a list" @@ -2066,8 +2072,8 @@ msgstr "REST API: Διαγραφή Μέλους: %s" #: ckan/logic/action/delete.py:358 msgid "Organization cannot be deleted while it still has datasets" msgstr "" -"Ο οργανισμός δεν μπορεί να διαγραφεί όσο υπάρχουν ακόμα σύνολα δεδομένων " -"που του ανήκουν." +"Ο οργανισμός δεν μπορεί να διαγραφεί όσο υπάρχουν ακόμα σύνολα δεδομένων που" +" του ανήκουν." #: ckan/logic/action/delete.py:560 ckan/logic/action/delete.py:586 #: ckan/logic/action/get.py:2432 ckan/logic/action/update.py:906 @@ -2147,8 +2153,8 @@ msgstr "Ο χρήστης %s δεν έχει δικαίωμα επεξεργασ #, python-format msgid "User %s not authorized to add dataset to this organization" msgstr "" -"Ο χρήστης %s δεν έχει εξουσιοδότηση να προσθέσει σύνολο δεδομένων σε " -"αυτόν το φορέα" +"Ο χρήστης %s δεν έχει εξουσιοδότηση να προσθέσει σύνολο δεδομένων σε αυτόν " +"το φορέα" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." @@ -2158,8 +2164,8 @@ msgstr "" #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"Δε βρέθηκε κανένα πακέτο για αυτόν τον πόρο, δεν μπορεί να γίνει έλεγχος " -"στο auth." +"Δε βρέθηκε κανένα πακέτο για αυτόν τον πόρο, δεν μπορεί να γίνει έλεγχος στο" +" auth." #: ckan/logic/auth/create.py:76 #, python-format @@ -2186,8 +2192,8 @@ msgstr "Ο χρήστης %s δεν έχει εξουσιοδότηση για #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" msgstr "" -"Ο χρήστης {user} δεν έχει εξουσιοδότηση για τη δημιουργία χρηστών μέσω " -"του API" +"Ο χρήστης {user} δεν έχει εξουσιοδότηση για τη δημιουργία χρηστών μέσω του " +"API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2213,7 +2219,8 @@ msgstr "Ο χρήστης %s δεν έχει εξουσιοδότηση για #: ckan/logic/auth/create.py:261 ckan/logic/auth/update.py:115 #, python-format msgid "User %s not authorized to edit group %s" -msgstr "Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία της ομάδας %s." +msgstr "" +"Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία της ομάδας %s." #: ckan/logic/auth/delete.py:40 #, python-format @@ -2222,7 +2229,8 @@ msgstr "Ο χρήστης %s δεν έχει εξουσιοδότηση για #: ckan/logic/auth/delete.py:56 msgid "Resource view not found, cannot check auth." -msgstr "Δε βρέθηκε η προβολή πόρους, δεν είναι δυνατός ο έλεγχος εξουσιοδότησης" +msgstr "" +"Δε βρέθηκε η προβολή πόρους, δεν είναι δυνατός ο έλεγχος εξουσιοδότησης" #: ckan/logic/auth/delete.py:73 #, python-format @@ -2287,7 +2295,8 @@ msgstr "" #: ckan/logic/auth/update.py:39 #, python-format msgid "User %s not authorized to edit package %s" -msgstr "Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία του πακέτου %s." +msgstr "" +"Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία του πακέτου %s." #: ckan/logic/auth/update.py:71 #, python-format @@ -2298,20 +2307,20 @@ msgstr "Ο χρήστης %s δεν έχει δικαίωμα επεξεργασ #, python-format msgid "User %s not authorized to change state of package %s" msgstr "" -"Ο χρήστης %s δεν έχει εξουσιοδότηση για την αλλαγή κατάστασης του πακέτου" -" %s." +"Ο χρήστης %s δεν έχει εξουσιοδότηση για την αλλαγή κατάστασης του πακέτου " +"%s." #: ckan/logic/auth/update.py:128 #, python-format msgid "User %s not authorized to edit organization %s" -msgstr "Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία του οργανισμού %s" +msgstr "" +"Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία του οργανισμού %s" #: ckan/logic/auth/update.py:145 #, python-format msgid "User %s not authorized to change state of group %s" msgstr "" -"Ο χρήστης %s δεν έχει εξουσιοδότηση για την αλλαγή κατάστασης της ομάδας " -"%s." +"Ο χρήστης %s δεν έχει εξουσιοδότηση για την αλλαγή κατάστασης της ομάδας %s." #: ckan/logic/auth/update.py:162 #, python-format @@ -2327,7 +2336,8 @@ msgstr "Απαιτείται σύνδεση για την επεξεργασία #: ckan/logic/auth/update.py:198 #, python-format msgid "User %s not authorized to edit user %s" -msgstr "Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία του χρήστη %s." +msgstr "" +"Ο χρήστης %s δεν έχει εξουσιοδότηση για την επεξεργασία του χρήστη %s." #: ckan/logic/auth/update.py:209 msgid "User {0} not authorized to update user {1}" @@ -2344,8 +2354,7 @@ msgstr "" #, python-format msgid "User %s not authorized to update task_status table" msgstr "" -"Ο χρήστης %s δεν έχει εξουσιοδότηση για την ανανέωση του πίνακα " -"task_status." +"Ο χρήστης %s δεν έχει εξουσιοδότηση για την ανανέωση του πίνακα task_status." #: ckan/logic/auth/update.py:240 #, python-format @@ -2487,7 +2496,8 @@ msgstr "Δεν βρέθηκε" #, python-format msgid "Input is too short, must be at least one character" msgid_plural "Input is too short, must be at least %(num)d characters" -msgstr[0] "Η καταχώρηση είναι πολύ μικρή, πρέπει να είναι τουλάχιστον ένας χαρακτήρας" +msgstr[0] "" +"Η καταχώρηση είναι πολύ μικρή, πρέπει να είναι τουλάχιστον ένας χαρακτήρας" msgstr[1] "" #: ckan/public/base/javascript/modules/basic-form.js:4 @@ -2538,8 +2548,8 @@ msgstr "Σύνδεσμος" #: ckan/public/base/javascript/modules/image-upload.js:61 msgid "Link to a URL on the internet (you can also link to an API)" msgstr "" -"Σύνδεσμος σε URL (μπορείτε να παρέχετε σύνδεσμο σε προγραμματιστικη " -"διεπαφή - API)" +"Σύνδεσμος σε URL (μπορείτε να παρέχετε σύνδεσμο σε προγραμματιστικη διεπαφή " +"- API)" #: ckan/public/base/javascript/modules/image-upload.js:68 msgid "Upload" @@ -2607,11 +2617,11 @@ msgstr "Αδυναμία λήψης δεδομένων του αρχείου μ #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Αυτή τη στιγμή μεταφορτώνετε ένα αρχείο. Είσαστε σίγουρος/η ό,τι θέλετε " -"να μεταβείτε σε άλλη σελίδα και να διακόψετε τη μεταφόρτωση;" +"Αυτή τη στιγμή μεταφορτώνετε ένα αρχείο. Είσαστε σίγουρος/η ό,τι θέλετε να " +"μεταβείτε σε άλλη σελίδα και να διακόψετε τη μεταφόρτωση;" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2880,40 +2890,39 @@ msgstr " Επιλογές ρυθμίσεων" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Τίτλος Ιστοσελίδας: Αυτός είναι ο τίτλος του " -"καταλόγου. Εμφανίζεται σε διάφορα σημεία σε ολόκληρο τον ιστότοπο.

" +"

Τίτλος Ιστοσελίδας: Αυτός είναι ο τίτλος του καταλόγου." +" Εμφανίζεται σε διάφορα σημεία σε ολόκληρο τον ιστότοπο.

" "

Στυλ: Επιλέξτε από μια λίστα με απλές παραλλαγές του " -"βασικού συνδυασμού χρωμάτων, προκειμένου να έχετε άμεσα ένα προσαρμοσμένο" -" θέμα σε λειτουργία.

Λογότυπο Ιστοσελίδας: Αυτό " -"είναι το λογότυπο που εμφανίζεται στην κεφαλίδα όλων των προτύπων αυτής " -"του καταλόγου.

Σχετικά: Αυτό το κείμενο θα " -"εμφανίζεται στη σελίδα Σχετικά του " -"καταλόγου.

Εισαγωγικό Κείμενο: Αυτό το κείμενο θα" -" εμφανίζεται στην αρχική σελίδα του " -"καταλόγου ως καλωσόρισμα στους επισκέπτες.

Προσαρμοσμένο " -"CSS: Αυτή είναι μια δέσμη εντολών CSS, η οποία εμφανίζεται στην " -" ετικέτα κάθε σελίδας. Αν θέλετε να προσαρμόσετε τα " -"πρότυπα σε μεγαλύτερο βαθμό σας συνιστούμε την ανάγνωση του εγχειριδίου.

Αρχική " -"Σελίδα: Η επιλογή αφορά σε προκαθορισμένες διατάξεις των " -"λειτουργικών μονάδων που εμφανίζονται στην αρχική σελίδα σας.

" +"βασικού συνδυασμού χρωμάτων, προκειμένου να έχετε άμεσα ένα προσαρμοσμένο " +"θέμα σε λειτουργία.

Λογότυπο Ιστοσελίδας: Αυτό είναι" +" το λογότυπο που εμφανίζεται στην κεφαλίδα όλων των προτύπων αυτής του " +"καταλόγου.

Σχετικά: Αυτό το κείμενο θα εμφανίζεται " +"στη σελίδα Σχετικά του καταλόγου.

" +"

Εισαγωγικό Κείμενο: Αυτό το κείμενο θα εμφανίζεται στην " +"αρχική σελίδα του καταλόγου ως καλωσόρισμα " +"στους επισκέπτες.

Προσαρμοσμένο CSS: Αυτή είναι μια " +"δέσμη εντολών CSS, η οποία εμφανίζεται στην ετικέτα κάθε" +" σελίδας. Αν θέλετε να προσαρμόσετε τα πρότυπα σε μεγαλύτερο βαθμό σας " +"συνιστούμε την ανάγνωση του " +"εγχειριδίου.

Αρχική Σελίδα: Η επιλογή αφορά σε " +"προκαθορισμένες διατάξεις των λειτουργικών μονάδων που εμφανίζονται στην " +"αρχική σελίδα σας.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2928,9 +2937,8 @@ msgstr "Διαχείριση CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -3094,8 +3102,9 @@ msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετ #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Διαχείριση" @@ -3127,7 +3136,8 @@ msgstr "Αναζήτηση σε ομάδες..." msgid "There are currently no groups for this site" msgstr "Δεν έχουν οριστεί ομάδες προς το παρόν." -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Τι θα λέγατε για τη δημιουργία ενός;" @@ -3160,8 +3170,8 @@ msgstr "Υπάρχων χρήστης" #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." msgstr "" -"Αν θέλετε να προσθέσετε έναν υπάρχοντα χρήστη, αναζητήστε το όνομα χρήστη" -" παρακάτω." +"Αν θέλετε να προσθέσετε έναν υπάρχοντα χρήστη, αναζητήστε το όνομα χρήστη " +"παρακάτω." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3180,19 +3190,22 @@ msgstr "" "Αν θέλετε να προσκαλέσετε έναν νέο χρήστη, εισάγετε τη διεύθυνση " "ηλεκτρονικού ταχυδρομείου του." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Ρόλος" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε το μέλος;" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3213,14 +3226,14 @@ msgstr "Τι είναι οι ρόλοι;" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Διαχειριστής: Μπορεί να τροποποιήσει τις πληροφορίες " "ομάδας, καθώς και να διαχειριστεί τα μέλη ενός φορέα

" -"

Μέλος: Μπορεί να προσθέσει/αφαιρέσει σύνολα δεδομένων" -" από ομάδες

" +"

Μέλος: Μπορεί να προσθέσει/αφαιρέσει σύνολα δεδομένων " +"από ομάδες

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3290,17 +3303,17 @@ msgstr "Τι είναι οι Ομάδες;" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" " Μπορείτε να χρησιμοποιήσετε τις Ομάδες για να δημιουργήσετε και να " -"διαχειριστείτε συλλογές από σύνολα δεδομένων. Αυτό θα ήταν χρήσιμο για να" -" δημιουργήσετε καταλόγους από σύνολα δεδομένων για ένα συγκεκριμένο έργο " -"ή κάποια ομάδα, είτε για ένα συγκεκριμένο θεμα, είτε ως έναν πολύ απλό " -"τρόπο με τον οποίο να βοηθήσετε άλλους να βρίσκουν και να αναζητούν τα " -"δικά σας δημοσιευμένα σύνολα δεδομένων. " +"διαχειριστείτε συλλογές από σύνολα δεδομένων. Αυτό θα ήταν χρήσιμο για να " +"δημιουργήσετε καταλόγους από σύνολα δεδομένων για ένα συγκεκριμένο έργο ή " +"κάποια ομάδα, είτε για ένα συγκεκριμένο θεμα, είτε ως έναν πολύ απλό τρόπο " +"με τον οποίο να βοηθήσετε άλλους να βρίσκουν και να αναζητούν τα δικά σας " +"δημοσιευμένα σύνολα δεδομένων. " #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3363,14 +3376,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3381,27 +3393,26 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

Το CKAN είναι η κορυφαία στον κόσμο πλατφόρμα ανοιχτού κώδικα για " -"ανοιχτά δεδομένα.

Το CKAN είναι μία ολοκληρωμένη λύση λογισμικού " -"που είναι έτοιμο για χρήση και το οποίο καθιστά τα δεδομένα προσβάσιμα " -"και εύχρηστα – καθώς παρέχει εργαλεία για τον εξορθολογισμό της " -"δημοσίευσης, του διαμοιρασμού, της εύρεσης και της χρήσης δεδομένων " -"(συμπεριλαμβανομένης της αποθήκευσης δεδομένων και της παροχής " -"προγραμματισικών διεπαφών δεδομένων με μεγάλες δυνατότητες). Το CKAN " -"απευθύνεται σε παρόχους δεδομένων (εθνικές και περιφερειακές κυβερνήσεις," -" εταιρείες και οργανισμούς) που θέλουν να καταστήσουν τα δεδομένα τους " -"ανοιχτά και διαθέσιμα.

Το CKAN χρησιμοποιείται από κυβερνήσεις και" -" ομάδες χρηστών σε όλο τον κόσμο και τροφοδοτεί μια πληθώρα από επίσημες " -"και κοινοτικές πύλες συμπεριλαμβανομένων και πυλών για τοπικές, εθνικές, " -"και διεθνείς κυβερνήσεις, όπως του Ηνωμένου Βασιλείου data.gov.uk και της Ευρωπαϊκής Ένωσης publicdata.eu, της Βραζιλίας dados.gov.br, οι πύλες των κυβερνήσεων " +"ανοιχτά δεδομένα.

Το CKAN είναι μία ολοκληρωμένη λύση λογισμικού που " +"είναι έτοιμο για χρήση και το οποίο καθιστά τα δεδομένα προσβάσιμα και " +"εύχρηστα – καθώς παρέχει εργαλεία για τον εξορθολογισμό της δημοσίευσης, του" +" διαμοιρασμού, της εύρεσης και της χρήσης δεδομένων (συμπεριλαμβανομένης της" +" αποθήκευσης δεδομένων και της παροχής προγραμματισικών διεπαφών δεδομένων " +"με μεγάλες δυνατότητες). Το CKAN απευθύνεται σε παρόχους δεδομένων (εθνικές " +"και περιφερειακές κυβερνήσεις, εταιρείες και οργανισμούς) που θέλουν να " +"καταστήσουν τα δεδομένα τους ανοιχτά και διαθέσιμα.

Το CKAN " +"χρησιμοποιείται από κυβερνήσεις και ομάδες χρηστών σε όλο τον κόσμο και " +"τροφοδοτεί μια πληθώρα από επίσημες και κοινοτικές πύλες συμπεριλαμβανομένων" +" και πυλών για τοπικές, εθνικές, και διεθνείς κυβερνήσεις, όπως του Ηνωμένου" +" Βασιλείου data.gov.uk και της Ευρωπαϊκής" +" Ένωσης publicdata.eu, της Βραζιλίας " +"dados.gov.br, οι πύλες των κυβερνήσεων " "της Ολλανδίας και των Κάτω Χωρών, καθώς και ιστοσελίδες για πόλεις και " "δήμους στις ΗΠΑ, στο Ηνωμένο Βασίλειο, στην Αργεντινή, τη Φινλανδία και " "άλλες χώρες.

CKAN: http://ckan.org/
Περιήγηση στο CKAN: " -"http://ckan.org/tour/
" -"Επισκόπηση Χαρακτηριστικών: http://ckan.org/
Περιήγηση στο CKAN: http://ckan.org/tour/
Επισκόπηση " +"Χαρακτηριστικών: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3410,15 +3421,15 @@ msgstr "Καλωσήλθατε" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "Μία ωραία μικρή εισαγωγική παράγραφος για τον δικτυακό τόπο." #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" msgstr "" -"Αυτό είναι μια ενότητα στην οποία μπορείτε να αναδείξετε το περιεχόμενο " -"που θεωρείτε σημαντικό." +"Αυτό είναι μια ενότητα στην οποία μπορείτε να αναδείξετε το περιεχόμενο που " +"θεωρείτε σημαντικό." #: ckan/templates/home/snippets/search.html:2 msgid "E.g. environment" @@ -3463,8 +3474,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Μπορείτε να χρησιμοποιήσετε μορφοποίηση Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Διαχειριστής: Μπορεί να προσθέσει/επεξεργαστεί " -"σύνολα δεδομένων καθώς και να διαχειριστεί τα μέλη του φορέα.

" +"

Διαχειριστής: Μπορεί να προσθέσει/επεξεργαστεί σύνολα " +"δεδομένων καθώς και να διαχειριστεί τα μέλη του φορέα.

" "

Συντάκτης: Μπορεί να προσθέσει/επεξεργαστεί σύνολα " "δεδομένων αλλά όχι και να διαχειριστεί τα μέλη του φορέα.

" -"

Μέλος: Μπορεί να δεί τα ιδιωτικά σύνολα δεδομένων του" -" φορέα που ανήκει , αλλά όχι να προσθέσει νέα.

" +"

Μέλος: Μπορεί να δεί τα ιδιωτικά σύνολα δεδομένων του " +"φορέα που ανήκει , αλλά όχι να προσθέσει νέα.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3641,25 +3652,25 @@ msgstr "Τι είναι οι φορείς;" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Οι Φορείς ενεργούν ως τμήματα δημοσίευσης συνόλων δεδομένων (π.χ. " -"Δ/νση Υγείας). Αυτό σημαίνει ότι τα σύνολα δεδομένων δημοσιεύονται εκ " -"μέρους και ανήκουν σε μία Δ/νση αντί σε ένα χρήστη.

Εντός των " -"φορέων, οι διαχειριστές μπορούν να να αναθέσουν ρόλους και να " -"εξουσιοδοτήσουν τα μέλη τους, παρέχοντάς τους το δικαίωμα να δημοσιεύσουν" -" σύνολα δεδομένων εκ μέρους του Φορέα (π.χ. ΕΛΣΤΑΤ).

" +"

Οι Φορείς ενεργούν ως τμήματα δημοσίευσης συνόλων δεδομένων (π.χ. Δ/νση " +"Υγείας). Αυτό σημαίνει ότι τα σύνολα δεδομένων δημοσιεύονται εκ μέρους και " +"ανήκουν σε μία Δ/νση αντί σε ένα χρήστη.

Εντός των φορέων, οι " +"διαχειριστές μπορούν να να αναθέσουν ρόλους και να εξουσιοδοτήσουν τα μέλη " +"τους, παρέχοντάς τους το δικαίωμα να δημοσιεύσουν σύνολα δεδομένων εκ μέρους" +" του Φορέα (π.χ. ΕΛΣΤΑΤ).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" " Οι Φορείς του CKAN χρησιμοποιούνται για τη δημιουργία, διαχείριση και " "δημοσίευση συλλογών συνόλων δεδομένων. Οι χρήστες μπορούν να έχουν " @@ -3681,13 +3692,12 @@ msgstr "Λίγες πληροφορίες σχετικά με τον φορέα. #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Είσαι σίγουρος ότι θέλεις να διαγράψεις αυτό τον Οργανισμό; Σημείωση*: Η " -"διαγραφή Οργανισμού δεν μπορεί αν εκτελεστεί ενόσω δημόσια ή ιδιωτικά " -"σύνολα δεδομένων ανήκουν στον Οργανισμό. " +"διαγραφή Οργανισμού δεν μπορεί αν εκτελεστεί ενόσω δημόσια ή ιδιωτικά σύνολα" +" δεδομένων ανήκουν στον Οργανισμό. " #: ckan/templates/organization/snippets/organization_form.html:63 msgid "Save Organization" @@ -3709,18 +3719,19 @@ msgstr "Τι είναι τα σύνολα δεδομένων;" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Ένα σύνολο δεδομένων αποτελεί μια συλλογή πόρων (όπως αρχεία), μαζί με " -"μια περιγραφή και άλλες πληροφορίες, διαθέσιμη σε συγκεκριμένο URL. Τα " -"σύνολα δεδομένων παρέχονται ως αποτέλεσμα της αναζήτησης που " -"πραγματοποιούν οι χρήστες." +"Ένα σύνολο δεδομένων αποτελεί μια συλλογή πόρων (όπως αρχεία), μαζί με μια " +"περιγραφή και άλλες πληροφορίες, διαθέσιμη σε συγκεκριμένο URL. Τα σύνολα " +"δεδομένων παρέχονται ως αποτέλεσμα της αναζήτησης που πραγματοποιούν οι " +"χρήστες." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" -msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε το σύνολο δεδομένων - {name}? ;" +msgstr "" +"Είστε σίγουροι ότι θέλετε να διαγράψετε το σύνολο δεδομένων - {name}? ;" #: ckan/templates/package/confirm_delete_resource.html:11 msgid "Are you sure you want to delete resource - {name}?" @@ -3797,16 +3808,16 @@ msgstr "Προσθήκη προβολής" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Οι οπτικοποιήσεις του Data Explorer μπορεί να είναι αργές και " -"αναξιόπιστες, εκτός εάν η επέκταση DataStore είναι ενεργοποιημένη. Για " -"περισσότερες πληροφορίες, παρακαλώ συμβουλευτείτε την τεκμηρίωση " -"του Data Explorer . " +"Οι οπτικοποιήσεις του Data Explorer μπορεί να είναι αργές και αναξιόπιστες, " +"εκτός εάν η επέκταση DataStore είναι ενεργοποιημένη. Για περισσότερες " +"πληροφορίες, παρακαλώ συμβουλευτείτε την τεκμηρίωση του Data " +"Explorer . " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3816,13 +3827,12 @@ msgstr "Προσθήκη" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Αυτή είναι μια παλιά αναθεώρηση αυτού του συνόλου δεδομένων, όπως το " -"επεξεργάστηκαν στο %(timestamp)s. Μπορεί να διαφέρει σημαντικά από την τρέχουσα αναθεώρηση." +"επεξεργάστηκαν στο %(timestamp)s. Μπορεί να διαφέρει σημαντικά από την τρέχουσα αναθεώρηση." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3871,7 +3881,8 @@ msgstr "Πηγή : %(dataset)s" #: ckan/templates/package/resource_read.html:109 msgid "There are no views created for this resource yet." -msgstr "Δεν έχει δημιουργηθεί ακόμα Προβολή για την προεπισκόπηση αυτού του πόρου" +msgstr "" +"Δεν έχει δημιουργηθεί ακόμα Προβολή για την προεπισκόπηση αυτού του πόρου" #: ckan/templates/package/resource_read.html:113 msgid "Not seeing the views you were expecting?" @@ -3890,19 +3901,18 @@ msgstr "" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" msgstr "" -"Ο διαχειριστής της ιστοσελίδας μπορεί να μην έχει ενεργοποιήσει τα " -"σχετικά πρόσθετα οπτικοποιήσεων. " +"Ο διαχειριστής της ιστοσελίδας μπορεί να μην έχει ενεργοποιήσει τα σχετικά " +"πρόσθετα οπτικοποιήσεων. " #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"Αν μια προβολή απαιτεί το πρόσθετο DataStore, τότε το πρόσθετο μπορεί να " -"μην έχει ενεργοποιηθεί ή τα δεδομένα να μην έχουν αποθηκευθεί στο " -"DataStore ή δεν έχει ολοκληρωθεί η επεξεργασία των δεδομένων στο " -"DataStore." +"Αν μια προβολή απαιτεί το πρόσθετο DataStore, τότε το πρόσθετο μπορεί να μην" +" έχει ενεργοποιηθεί ή τα δεδομένα να μην έχουν αποθηκευθεί στο DataStore ή " +"δεν έχει ολοκληρωθεί η επεξεργασία των δεδομένων στο DataStore." #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3969,8 +3979,8 @@ msgstr "Προσθήκη νέου πόρου" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Αυτό το σύνολο δεδομένων δεν περιέχει δεδομένα, γιατί δεν προσθέτεις κάποια;

" @@ -3993,9 +4003,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -"Μπορείτε επίσης να αποκτήσετε πρόσβαση σε αυτό το μητρώο χρησιμοποιώντας " -"το %(api_link)s (δείτε %(api_doc_link)s) η κατεβάζοντας ένα " -"%(dump_link)s." +"Μπορείτε επίσης να αποκτήσετε πρόσβαση σε αυτό το μητρώο χρησιμοποιώντας το " +"%(api_link)s (δείτε %(api_doc_link)s) η κατεβάζοντας ένα %(dump_link)s." #: ckan/templates/package/search.html:60 #, python-format @@ -4125,17 +4134,16 @@ msgstr "Ενεργό" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Η Άδεια Χρήσης Δεδομένων που επέλεξες παραπάνω, έχει ισχύ μόνο στα" -" περιεχόμενα οποιουδήποτε αρχείου πόρου που προσθέτεις στο σύνολο " -"δεδομένων. Καταθέτοντας αυτή την φόρμα, συμφωνείς στη διάθεση των " -"μεταδεδομένων που εισάγεις στη φόρμα υπό την άδεια Άδεια Χρήσης Δεδομένων που επέλεξες παραπάνω, έχει ισχύ μόνο στα " +"περιεχόμενα οποιουδήποτε αρχείου πόρου που προσθέτεις στο σύνολο δεδομένων. " +"Καταθέτοντας αυτή την φόρμα, συμφωνείς στη διάθεση των μεταδεδομένων" +" που εισάγεις στη φόρμα υπό την άδεια Open Database " "License." @@ -4201,7 +4209,8 @@ msgstr "π.χ. CSV, XML or JSON" #: ckan/templates/package/snippets/resource_form.html:40 msgid "This will be guessed automatically. Leave blank if you wish" -msgstr "Θα ερμηνευθεί αυτόματα. Μπορείτε να το αφήσετε κενό εφόσον το επιθυμείτε" +msgstr "" +"Θα ερμηνευθεί αυτόματα. Μπορείτε να το αφήσετε κενό εφόσον το επιθυμείτε" #: ckan/templates/package/snippets/resource_form.html:51 msgid "eg. 2012-06-05" @@ -4248,8 +4257,8 @@ msgstr "Τι είναι ένας πόρος ;" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Ένας πόρος μπορεί να είναι οποιοδήποτε αρχείο ή σύνδεσμος σε ένα αρχείο " -"που περιέχει χρήσιμα δεδομένα." +"Ένας πόρος μπορεί να είναι οποιοδήποτε αρχείο ή σύνδεσμος σε ένα αρχείο που " +"περιέχει χρήσιμα δεδομένα." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4480,11 +4489,11 @@ msgstr "

Παρακαλώ δοκιμάστε νέα αναζ #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" -"

Προέκυψε ένα πρόβλημα κατά την αναζήτηση." -" Παρακαλώ δοκιμάστε ξανά.

" +"

Προέκυψε ένα πρόβλημα κατά την αναζήτηση. " +" Παρακαλώ δοκιμάστε ξανά.

" #: ckan/templates/snippets/search_result_text.html:15 msgid "{number} dataset found for \"{query}\"" @@ -4630,11 +4639,10 @@ msgstr "Πληροφορίες λογαριασμού" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Το προφίλ σας επιτρέπει σε άλλους χρήστες να γνωρίζουν ποιοι είστε και τι" -" κάνετε." +"Το προφίλ σας επιτρέπει σε άλλους χρήστες να γνωρίζουν ποιοι είστε και τι " +"κάνετε." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4728,8 +4736,8 @@ msgstr "Ξεχάσατε τον κωδικό πρόσβασης;" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Δεν υπάρχει πρόβλημα, χρησιμοποιήστε τη φόρμα ανάκτησης κωδικού πρόσβασης" -" για να τον επαναφέρετε." +"Δεν υπάρχει πρόβλημα, χρησιμοποιήστε τη φόρμα ανάκτησης κωδικού πρόσβασης " +"για να τον επαναφέρετε." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4825,8 +4833,7 @@ msgstr "Πως λειτουργεί;" #: ckan/templates/user/perform_reset.html:40 msgid "Simply enter a new password and we'll update your account" msgstr "" -"Απλά εισάγετε ένα νέο κωδικό πρόσβασης και θα ενημερώσουμε το λογαριασμό " -"σας" +"Απλά εισάγετε ένα νέο κωδικό πρόσβασης και θα ενημερώσουμε το λογαριασμό σας" #: ckan/templates/user/read.html:21 msgid "User hasn't created any datasets." @@ -4871,11 +4878,11 @@ msgstr "Αίτηση επαναφοράς" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Εισάγετε το όνομα χρήστη σας στο πλαίσιο κειμένου και θα σας στείλουμε " -"ένα email με ένα σύνδεσμο για να εισάγετε ένα νέο κωδικό πρόσβασης." +"Εισάγετε το όνομα χρήστη σας στο πλαίσιο κειμένου και θα σας στείλουμε ένα " +"email με ένα σύνδεσμο για να εισάγετε ένα νέο κωδικό πρόσβασης." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4901,4 +4908,3 @@ msgstr "Αναζήτηση χρηστών" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "Ο κωδικός σύνδεσης πρέπει να αποτελείτε από τουλάχιστον 8 χαρακτήρες." - diff --git a/ckan/i18n/en_AU/LC_MESSAGES/ckan.po b/ckan/i18n/en_AU/LC_MESSAGES/ckan.po index 1dee77773a1..275042135f8 100644 --- a/ckan/i18n/en_AU/LC_MESSAGES/ckan.po +++ b/ckan/i18n/en_AU/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# English (Australia) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: en_AU\n" -"Language-Team: English (Australia) " -"(https://www.transifex.com/okfn/teams/11162/en_AU/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: English (Australia) (https://www.transifex.com/okfn/teams/11162/en_AU/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: en_AU\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +116,17 @@ msgstr "DataStore resource not found" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -150,8 +150,7 @@ msgstr "Access resource data via a web API with powerful query support" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -1048,7 +1045,8 @@ msgstr "This site is currently off-line. Database is not initialised." #: ckan/controllers/home.py:73 #, python-format msgid "Please update your profile and add your email address. " -msgstr "Please update your profile and add your email address. " +msgstr "" +"Please update your profile and add your email address. " #: ckan/controllers/home.py:75 #, python-format @@ -1782,11 +1780,11 @@ msgstr "Name must be a maximum of %i characters long" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" #: ckan/logic/validators.py:361 msgid "That URL is already in use." @@ -2542,11 +2540,11 @@ msgstr "Unable to get data for uploaded file" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2722,39 +2720,37 @@ msgstr "CKAN config options" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customise the" -" templates more fully we recommend <head> tag of every page. If you wish to customise the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2769,14 +2765,12 @@ msgstr "Administer CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2939,8 +2933,9 @@ msgstr "Are you sure you want to delete member - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Manage" @@ -2972,7 +2967,8 @@ msgstr "Search groups..." msgid "There are currently no groups for this site" msgstr "There are currently no groups for this site" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "How about creating one?" @@ -3021,19 +3017,22 @@ msgstr "New User" msgid "If you wish to invite a new user, enter their email address." msgstr "If you wish to invite a new user, enter their email address." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Role" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Are you sure you want to delete this member?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3054,12 +3053,12 @@ msgstr "What are roles?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Admin: Can edit group information, as well as manage" -" organisation members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organisation members.

Member: Can add/remove " "datasets from groups

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 @@ -3130,15 +3129,15 @@ msgstr "What are Groups?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3201,14 +3200,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3221,14 +3219,13 @@ msgstr "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organisations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3244,11 +3241,11 @@ msgstr "Welcome to CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3293,12 +3290,12 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"You can use Markdown formatting here" #: ckan/templates/macros/form.html:265 @@ -3368,8 +3365,8 @@ msgstr "Draft" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Private" @@ -3423,14 +3420,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Admin: Can add/edit and delete datasets, as well as " "manage organisation members.

Editor: Can add and " "edit datasets, but not manage organisation members.

" -"

Member: Can view the organisation's private datasets," -" but not add new datasets.

" +"

Member: Can view the organisation's private datasets, " +"but not add new datasets.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3470,29 +3467,29 @@ msgstr "What are Organisations?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Organisations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organisations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organisations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organisations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -" CKAN Organisations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organisation, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organisations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organisation, depending " +"on their level of authorisation to create, edit and publish. " #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3508,9 +3505,8 @@ msgstr "A little information about my organisation..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Are you sure you want to delete this Organisation? This will delete all the " "public and private datasets belonging to this organisation." @@ -3535,13 +3531,13 @@ msgstr "What are datasets?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3622,15 +3618,15 @@ msgstr "Add view" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3640,13 +3636,11 @@ msgstr "Add" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3711,17 +3705,18 @@ msgstr "No view has been created that is suitable for this resource" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" -msgstr "The site administrators may not have enabled the relevant view plugins" +msgstr "" +"The site administrators may not have enabled the relevant view plugins" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3788,11 +3783,11 @@ msgstr "Add new resource" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3937,19 +3932,17 @@ msgstr "Active" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4286,8 +4279,8 @@ msgstr "

Please try another search.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4434,11 +4427,9 @@ msgstr "Account Info" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4661,11 +4652,11 @@ msgstr "Request reset" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4691,4 +4682,3 @@ msgstr "Search Users" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/en_GB/LC_MESSAGES/ckan.po b/ckan/i18n/en_GB/LC_MESSAGES/ckan.po index 3317e54864b..cf31e4cc2e3 100644 --- a/ckan/i18n/en_GB/LC_MESSAGES/ckan.po +++ b/ckan/i18n/en_GB/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# English (United Kingdom) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: en_GB\n" -"Language-Team: English (United Kingdom) " -"(https://www.transifex.com/okfn/teams/11162/en_GB/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: English (United Kingdom) (https://www.transifex.com/okfn/teams/11162/en_GB/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +116,17 @@ msgstr "DataStore resource not found" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -150,8 +150,7 @@ msgstr "Access resource data via a web API with powerful query support" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -1048,7 +1045,8 @@ msgstr "This site is currently off-line. Database is not initialised." #: ckan/controllers/home.py:73 #, python-format msgid "Please update your profile and add your email address. " -msgstr "Please update your profile and add your email address. " +msgstr "" +"Please update your profile and add your email address. " #: ckan/controllers/home.py:75 #, python-format @@ -1782,11 +1780,11 @@ msgstr "Name must be a maximum of %i characters long" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" #: ckan/logic/validators.py:361 msgid "That URL is already in use." @@ -2542,11 +2540,11 @@ msgstr "Unable to get data for uploaded file" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2722,39 +2720,37 @@ msgstr "CKAN config options" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customise the" -" templates more fully we recommend <head> tag of every page. If you wish to customise the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2769,14 +2765,12 @@ msgstr "Administer CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2939,8 +2933,9 @@ msgstr "Are you sure you want to delete member - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Manage" @@ -2972,7 +2967,8 @@ msgstr "Search groups..." msgid "There are currently no groups for this site" msgstr "There are currently no groups for this site" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "How about creating one?" @@ -3021,19 +3017,22 @@ msgstr "New User" msgid "If you wish to invite a new user, enter their email address." msgstr "If you wish to invite a new user, enter their email address." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Role" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Are you sure you want to delete this member?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3054,12 +3053,12 @@ msgstr "What are roles?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Admin: Can edit group information, as well as manage" -" organisation members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organisation members.

Member: Can add/remove " "datasets from groups

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 @@ -3130,15 +3129,15 @@ msgstr "What are Groups?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +"You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3201,14 +3200,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3221,14 +3219,13 @@ msgstr "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organisations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3244,11 +3241,11 @@ msgstr "Welcome to CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3293,12 +3290,12 @@ msgstr "Site logo" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"You can use Markdown formatting here" #: ckan/templates/macros/form.html:265 @@ -3368,8 +3365,8 @@ msgstr "Draft" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Private" @@ -3423,14 +3420,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Admin: Can add/edit and delete datasets, as well as " "manage organisation members.

Editor: Can add and " "edit datasets, but not manage organisation members.

" -"

Member: Can view the organisation's private datasets," -" but not add new datasets.

" +"

Member: Can view the organisation's private datasets, " +"but not add new datasets.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3470,29 +3467,29 @@ msgstr "What are Organisations?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Organisations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organisations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organisations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organisations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -" CKAN Organisations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organisation, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organisations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organisation, depending " +"on their level of authorisation to create, edit and publish. " #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3508,9 +3505,8 @@ msgstr "A little information about my organisation..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Are you sure you want to delete this Organisation? This will delete all the " "public and private datasets belonging to this organisation." @@ -3535,13 +3531,13 @@ msgstr "What are datasets?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3622,15 +3618,15 @@ msgstr "Add view" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3640,13 +3636,11 @@ msgstr "Add" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3711,17 +3705,18 @@ msgstr "No view has been created that is suitable for this resource" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" -msgstr "The site administrators may not have enabled the relevant view plugins" +msgstr "" +"The site administrators may not have enabled the relevant view plugins" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3788,11 +3783,11 @@ msgstr "Add new resource" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3939,19 +3934,17 @@ msgstr "Active" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4288,11 +4281,11 @@ msgstr "

Please try another search.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" #: ckan/templates/snippets/search_result_text.html:15 msgid "{number} dataset found for \"{query}\"" @@ -4438,11 +4431,9 @@ msgstr "Account Info" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4665,11 +4656,11 @@ msgstr "Request reset" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4695,4 +4686,3 @@ msgstr "Search Users" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/es/LC_MESSAGES/ckan.po b/ckan/i18n/es/LC_MESSAGES/ckan.po index e95323556dc..23050af08cc 100644 --- a/ckan/i18n/es/LC_MESSAGES/ckan.po +++ b/ckan/i18n/es/LC_MESSAGES/ckan.po @@ -1,13 +1,14 @@ -# Spanish translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Mihai Pantazi , 2018 # Isabel M Ruiz Mellado , 2018 # David Portoles , 2018 # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -16,13 +17,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: es\n" "Language-Team: Spanish (https://www.transifex.com/okfn/teams/11162/es/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -118,19 +119,19 @@ msgstr "No se ha encontrado el recurso." #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" -"Diccionario de datos guardado. Cualquier actualización de tipo tendrá " -"efecto una vez el recurso vuelva a ser subido a DataStore" +"Diccionario de datos guardado. Cualquier actualización de tipo tendrá efecto" +" una vez el recurso vuelva a ser subido a DataStore" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Los datos fueron inválidos (por ejemplo: un valor numérico estuvo fuera " -"de rango o fue insertado en un campo de texto)." +"Los datos fueron inválidos (por ejemplo: un valor numérico estuvo fuera de " +"rango o fue insertado en un campo de texto)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -156,13 +157,12 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Más información en la documentación del API de Datos principal y del " -"DataStore de CKAN.

" +"target=\"_blank\">documentación del API de Datos principal y del DataStore " +"de CKAN.

" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 msgid "Endpoints" @@ -170,11 +170,11 @@ msgstr "Punto de acceso API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" -"El API de Datos es accesible a través de las siguientes acciones de la " -"API de acción de CKAN." +"El API de Datos es accesible a través de las siguientes acciones de la API " +"de acción de CKAN." #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 msgid "Create" @@ -288,13 +288,12 @@ msgstr "API de datos" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Más información en la documentación del API de Datos principal y del " -"DataStore de CKAN.

" +"target=\"_blank\">documentación del API de Datos principal y del DataStore " +"de CKAN.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -463,7 +462,8 @@ msgstr "URL de la imagen" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "eg. http://example.com/image.jpg (if blank uses resource url)" -msgstr "ej: http://example.com/image.jpg (si el blanco utiliza la url del recurso)" +msgstr "" +"ej: http://example.com/image.jpg (si el blanco utiliza la url del recurso)" #: ckanext/reclineview/plugin.py:101 msgid "Data Explorer" @@ -761,7 +761,8 @@ msgstr "CSS Personalizado" #: ckan/controllers/admin.py:57 msgid "Customisable css inserted into the page header" -msgstr "Hoja de estilo CSS personalizable insertada en la cabecera de la página" +msgstr "" +"Hoja de estilo CSS personalizable insertada en la cabecera de la página" #: ckan/controllers/admin.py:58 msgid "Homepage" @@ -868,7 +869,8 @@ msgstr "No hay ninguna revisión con id: %s" #: ckan/controllers/api.py:514 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" -msgstr "Término de búsqueda faltante ('since_id=UUID' o 'since_time=TIMESTAMP')" +msgstr "" +"Término de búsqueda faltante ('since_id=UUID' o 'since_time=TIMESTAMP')" #: ckan/controllers/api.py:526 #, python-format @@ -893,8 +895,8 @@ msgstr "Valor de qjson malformado: %r" #: ckan/controllers/api.py:609 msgid "Request params must be in form of a json encoded dictionary." msgstr "" -"Los parámetros requeridos debe estar en forma de un diccionario en código" -" json." +"Los parámetros requeridos debe estar en forma de un diccionario en código " +"json." #: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 #: ckan/controllers/group.py:226 ckan/controllers/group.py:394 @@ -1080,7 +1082,8 @@ msgstr "" #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." -msgstr "%s utiliza tu correo electrónico si necesitas recuperar tu contraseña." +msgstr "" +"%s utiliza tu correo electrónico si necesitas recuperar tu contraseña." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1330,8 +1333,7 @@ msgstr "Contraseña incorrecta" #: ckan/controllers/user.py:427 msgid "Login failed. Bad username or password." msgstr "" -"No se ha podido iniciar sesión. Nombre de usuario o contraseña " -"incorrectos." +"No se ha podido iniciar sesión. Nombre de usuario o contraseña incorrectos." #: ckan/controllers/user.py:461 msgid "Unauthorized to request reset password." @@ -1349,7 +1351,8 @@ msgstr "No existe el usuario: %s" #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." -msgstr "Por favor revise su bandeja de entrada para el código de restablecimiento." +msgstr "" +"Por favor revise su bandeja de entrada para el código de restablecimiento." #: ckan/controllers/user.py:503 #, python-format @@ -1422,7 +1425,8 @@ msgstr "{actor} actualizó los extra {extra} del conjunto de datos {dataset}" #: ckan/lib/activity_streams.py:75 msgid "{actor} updated the resource {resource} in the dataset {dataset}" -msgstr "{actor} actualizó el recurso {resource} en el conjunto de datos {dataset}" +msgstr "" +"{actor} actualizó el recurso {resource} en el conjunto de datos {dataset}" #: ckan/lib/activity_streams.py:78 msgid "{actor} updated their profile" @@ -1690,7 +1694,8 @@ msgstr "%s <%s>" #: ckan/lib/mailer.py:109 msgid "No recipient email address available!" -msgstr "No está disponible la dirección de correo electrónico del destinatario!" +msgstr "" +"No está disponible la dirección de correo electrónico del destinatario!" #: ckan/lib/mailer.py:127 ckan/templates/home/snippets/stats.html:17 msgid "organization" @@ -1813,8 +1818,8 @@ msgstr "El nonbre no puede tener más de %i caracteres de largo" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" "Debe contener solamente caracteres alfanuméricos (ascii) en minúsculas y " "estos símbolos: -_" @@ -1916,8 +1921,8 @@ msgstr "Este nombre de vocabulario ya está en uso." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"No se puede cambiar el valor de la clave de %s a %s. Esta clave es de " -"solo lectura." +"No se puede cambiar el valor de la clave de %s a %s. Esta clave es de solo " +"lectura." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2021,7 +2026,8 @@ msgstr "La valoración debe ser entre %i y %i." #: ckan/logic/action/create.py:1064 msgid "Error sending the invite email, the user was not created: {0}" -msgstr "Error enviando una invitación por mail, el usuario no está creado: {0}" +msgstr "" +"Error enviando una invitación por mail, el usuario no está creado: {0}" #: ckan/logic/action/create.py:1277 ckan/logic/action/create.py:1284 msgid "You must be logged in to follow users" @@ -2155,22 +2161,21 @@ msgstr "" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." msgstr "" -"No se ingresó id del conjunto de datos, no se puede comprobar " -"autorización." +"No se ingresó id del conjunto de datos, no se puede comprobar autorización." #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"No se ha encontrado ningún paquete para este recurso, no se puede " -"comprobar la autoridad." +"No se ha encontrado ningún paquete para este recurso, no se puede comprobar " +"la autoridad." #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" msgstr "" -"El usuario %s no está autorizado para crear recursos en el conjunto de " -"datos %s" +"El usuario %s no está autorizado para crear recursos en el conjunto de datos" +" %s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2189,7 +2194,8 @@ msgstr "El usuario %s no está autorizado para crear organizaciones" #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" -msgstr "El usuario {user} no está autorizado a crear usuarios a través de la API" +msgstr "" +"El usuario {user} no está autorizado a crear usuarios a través de la API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2297,7 +2303,8 @@ msgstr "El usuario %s no está autorizado para editar el recurso %s" #: ckan/logic/auth/update.py:100 #, python-format msgid "User %s not authorized to change state of package %s" -msgstr "El usuario %s no está autorizado para cambiar el estado del paquete %s" +msgstr "" +"El usuario %s no está autorizado para cambiar el estado del paquete %s" #: ckan/logic/auth/update.py:128 #, python-format @@ -2312,7 +2319,8 @@ msgstr "El usuario %s no está autorizado para cambiar el estado del grupo %s" #: ckan/logic/auth/update.py:162 #, python-format msgid "User %s not authorized to edit permissions of group %s" -msgstr "El usuario %s no está autorizado para editar los permisos del grupo %s" +msgstr "" +"El usuario %s no está autorizado para editar los permisos del grupo %s" #: ckan/logic/auth/update.py:190 msgid "Have to be logged in to edit user" @@ -2330,7 +2338,8 @@ msgstr "El usuario {0} no autorizado para actualizar al usuario {1}" #: ckan/logic/auth/update.py:217 #, python-format msgid "User %s not authorized to change state of revision" -msgstr "El usuario %s no está autorizado para cambiar el estado de la revisión" +msgstr "" +"El usuario %s no está autorizado para cambiar el estado de la revisión" #: ckan/logic/auth/update.py:226 #, python-format @@ -2340,7 +2349,8 @@ msgstr "El usuario %s no esta autorizado para actualizar la tabla task_status" #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" -msgstr "El usuario %s no está autorizado a actualizar la tabla term_translation" +msgstr "" +"El usuario %s no está autorizado a actualizar la tabla term_translation" #: ckan/logic/auth/update.py:262 msgid "Valid API key needed to edit a package" @@ -2593,8 +2603,8 @@ msgstr "No se pudo obtener datos para el archivo subido" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Estás subiendo un fichero. Estás seguro que quieres salir y parar esta " "subida?" @@ -2866,39 +2876,37 @@ msgstr "Opciones de configuración de CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Título del Sitio: Este es el título de esta instancia" -" de CKAN. Se muestra en varios lugares dentro de CKAN.

" -"

Estilo: Escoja de una lista de sencillas variaciones " -"del esquema principal de colores para obtener un tema personalizado " -"funcionando rápidamente.

Logo de la Etiqueta del " -"Sitio: Este es el logo que aparece en la cabecera de todas las " -"plantillas de la instancia de CKAN.

Acerca de: " -"Este texto aparecerá en la página acerca de" -" de esta instancia de CKAN.

Texto de " -"Introducción: Este texto aparecerá en la página de inicio de esta instancia CKAN como " -"una bienvenida a los visitantes.

CSS " -"Personalizado: Este es el bloque de código CSS que aparece en la" -" etiqueta <head> de cada página. Si desea personalizar" -" las plantillas de manera más profunda le recomendamos leer la documentación.

" +"

Título del Sitio: Este es el título de esta instancia de" +" CKAN. Se muestra en varios lugares dentro de CKAN.

" +"

Estilo: Escoja de una lista de sencillas variaciones del" +" esquema principal de colores para obtener un tema personalizado funcionando" +" rápidamente.

Logo de la Etiqueta del Sitio: Este es" +" el logo que aparece en la cabecera de todas las plantillas de la instancia " +"de CKAN.

Acerca de: Este texto aparecerá en la " +"página acerca de de esta instancia de " +"CKAN.

Texto de Introducción: Este texto aparecerá en" +" la página de inicio de esta instancia CKAN " +"como una bienvenida a los visitantes.

CSS " +"Personalizado: Este es el bloque de código CSS que aparece en la " +"etiqueta <head> de cada página. Si desea personalizar las" +" plantillas de manera más profunda le recomendamos leer la documentación.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2913,15 +2921,14 @@ msgstr "Administrar CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Como usuario administrador del sistema tiene total control sobre esta " -"instancia de CKAN. ¡Proceda con cuidado!

Para guía sobre el uso de" -" las características de los usuarios a administradores, ver la guía de usuarios administradores " -"de sistema de CKAN

" +"instancia de CKAN. ¡Proceda con cuidado!

Para guía sobre el uso de " +"las características de los usuarios a administradores, ver la guía de usuarios administradores de " +"sistema de CKAN

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3086,8 +3093,9 @@ msgstr "¿Está seguro de que desea eliminar al miembro - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Administrar" @@ -3119,7 +3127,8 @@ msgstr "Buscar grupos..." msgid "There are currently no groups for this site" msgstr "No existen actualmente grupos para este sitio" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "¿Qué tal creando uno?" @@ -3151,7 +3160,8 @@ msgstr "Usuario existente" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." -msgstr "Si quiere añadir un usuario existente, buscar el nombre del usuario abajo." +msgstr "" +"Si quiere añadir un usuario existente, buscar el nombre del usuario abajo." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3166,21 +3176,25 @@ msgstr "Usuario nuevo" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Si desea invitar a un usuario, escriba su dirección de correo electrónico" +msgstr "" +"Si desea invitar a un usuario, escriba su dirección de correo electrónico" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rol" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "¿Está seguro de que desea eliminar a este miembro?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3201,12 +3215,12 @@ msgstr "¿Qué son los roles?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Administrador:Puede editar información del grupo, así" -" como también administrar miembros de la " +"

Administrador:Puede editar información del grupo, así " +"como también administrar miembros de la " "organización.

Miembro: Puede agregar/eliminar " "conjuntos de datos de grupos.

" @@ -3278,16 +3292,16 @@ msgstr "¿Qué son los Grupos?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" "Puedes usar los grupos de CKAN para crear y administrar colecciones de " -"conjuntos de datos. Esto se puede usar para catalogar conjuntos de datos " -"de un proyecto concreto o un equipo, o de un tema en particular, o como " -"una manera muy sencilla de ayudar a la gente a buscar y encontrar sus " -"propios conjuntos de datos publicados." +"conjuntos de datos. Esto se puede usar para catalogar conjuntos de datos de " +"un proyecto concreto o un equipo, o de un tema en particular, o como una " +"manera muy sencilla de ayudar a la gente a buscar y encontrar sus propios " +"conjuntos de datos publicados." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3350,14 +3364,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3368,25 +3381,24 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN es la plataforma de datos, de código abierto, líder a nivel " -"mundial.

CKAN es una solución completa de software lista para " -"utilizar que hace los datos accesibles y utilizables al proveer " -"herramientas para publicar, compartir, encontrar y usar los datos " -"(incluyendo almacenamiento de datos y provisión de APIs de datos " -"robustas). CKAN está orientada a proveedores de datos (gobiernos " -"nacionales y regionales, compañías y organizaciones) que desean hacer sus" -" datos abiertos y disponibles.

CKAN es utilizada por gobiernos y " -"grupos de usuarios a nivel mundial y gestiona una variedad de portales de" -" datos oficiales y comunitarios, incluyendo portales para gobiernos " -"locales, nacionales e internacionales tales como data.gov.uk de Reino Unido, publicdata.eu de la Unión Europea; dados.gov.br de Brasil; además portales" -" de los gobiernos de Dinamarca y Holanda, así como también sitios de " -"ciudades y municipalidades en Estados Unidos, Reino Unido, Argentina, " -"Finlandia y en otros lugares.

CKAN:

CKAN es una solución completa de software lista para utilizar" +" que hace los datos accesibles y utilizables al proveer herramientas para " +"publicar, compartir, encontrar y usar los datos (incluyendo almacenamiento " +"de datos y provisión de APIs de datos robustas). CKAN está orientada a " +"proveedores de datos (gobiernos nacionales y regionales, compañías y " +"organizaciones) que desean hacer sus datos abiertos y " +"disponibles.

CKAN es utilizada por gobiernos y grupos de usuarios a " +"nivel mundial y gestiona una variedad de portales de datos oficiales y " +"comunitarios, incluyendo portales para gobiernos locales, nacionales e " +"internacionales tales como data.gov.uk de" +" Reino Unido, publicdata.eu de la " +"Unión Europea; dados.gov.br de Brasil; " +"además portales de los gobiernos de Dinamarca y Holanda, así como también " +"sitios de ciudades y municipalidades en Estados Unidos, Reino Unido, " +"Argentina, Finlandia y en otros lugares.

CKAN: http://ckan.org/
Tour de CKAN: http://ckan.org/tour/
Revisión " -"de funcionalidades: http://ckan.org/tour/
Revisión de " +"funcionalidades: http://ckan.org/features/" #: ckan/templates/home/snippets/promoted.html:8 @@ -3395,12 +3407,11 @@ msgstr "Bienvenido a CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Este es un párrafo amigable de introducción acerca de CKAN o del sitio en" -" general. No tenemos ningún mensaje que vaya aquí pero pronto lo " -"tendremos" +"Este es un párrafo amigable de introducción acerca de CKAN o del sitio en " +"general. No tenemos ningún mensaje que vaya aquí pero pronto lo tendremos" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3449,8 +3460,8 @@ msgstr "Logotipo del sitio" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Puede usar Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Administrador: Puede agregar/editar y eliminar " -"conjuntos de datos, así como también administrar a los miembros de una " +"

Administrador: Puede agregar/editar y eliminar conjuntos" +" de datos, así como también administrar a los miembros de una " "organización.

Editor: Puede agregar y editar " "conjuntos de datos, pero no administrar a los miembros de una " -"organización.

Miembro: Puede ver los conjuntos de" -" datos privados de una organización, pero no agregar nuevos conjuntos de " +"organización.

Miembro: Puede ver los conjuntos de " +"datos privados de una organización, pero no agregar nuevos conjuntos de " "datos.

" #: ckan/templates/organization/members.html:14 @@ -3628,32 +3639,32 @@ msgstr "¿Qué son las Organizaciones?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Las organizaciones actúan como departamentos de publicación para los " -"conjuntos de datos (por ejemplo, el Departamento de Salud). Esto " -"significa que los conjuntos de datos pueden ser publicados por y " -"pertenecer a un departamento en vez de a un usuario individual.

" -"

Dentro de las organizaciones, los administradores asignan roles y " -"autorizaciones para sus miembros, dándoles a los usuarios individuales el" -" derecho a publicar conjuntos de datos de esa organización en particular " -"(ej: Oficina Nacional de Estadísticas).

" +"conjuntos de datos (por ejemplo, el Departamento de Salud). Esto significa " +"que los conjuntos de datos pueden ser publicados por y pertenecer a un " +"departamento en vez de a un usuario individual.

Dentro de las " +"organizaciones, los administradores asignan roles y autorizaciones para sus " +"miembros, dándoles a los usuarios individuales el derecho a publicar " +"conjuntos de datos de esa organización en particular (ej: Oficina Nacional " +"de Estadísticas).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Las organizaciones en CKAN son usadas para crear, gestionar y publicar " "colecciones de conjuntos de datos. Los usuarios pueden tener diferentes " -"perfiles en una organización, dependiente de su nivel de autorización " -"para crear, editar y publicar" +"perfiles en una organización, dependiente de su nivel de autorización para " +"crear, editar y publicar" #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3669,12 +3680,11 @@ msgstr "Un poco de información acerca de mi organización..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" -"¿Estás seguro de que quieres borrar esta organización? Nota*: El borrado " -"no se puede realizar mientras conjuntos de datos públicos o privados " +"¿Estás seguro de que quieres borrar esta organización? Nota*: El borrado no " +"se puede realizar mientras conjuntos de datos públicos o privados " "pertenezcan a esta organización" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3697,14 +3707,13 @@ msgstr "¿Qué son los conjuntos de datos?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "Un Conjunto de Datos de CKAN es una colección de recursos de datos (como " -"ficheros), junto con una descripción y otra información, unida a una URL." -" Los conjuntos de datos son lo que los usuarios ven cuando buscan un " -"dato." +"ficheros), junto con una descripción y otra información, unida a una URL. " +"Los conjuntos de datos son lo que los usuarios ven cuando buscan un dato." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3785,15 +3794,15 @@ msgstr "Agregar vista" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Las vistas de Data Explorer pueden ser lentas y no confiables a no ser " -"que la extensión DataStore esté activa. Para más información por favor " -"revise la documentación de Data Explorer." +"Las vistas de Data Explorer pueden ser lentas y no confiables a no ser que " +"la extensión DataStore esté activa. Para más información por favor revise la" +" documentación de" +" Data Explorer." #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3803,9 +3812,8 @@ msgstr "Añade" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Esta es una versión antigua de este conjunto de datos, editada en " "%(timestamp)s. Puede diferir significativamente de la This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Este conjunto de datos no tiene datos, ¿por qué no añades alguno?

" @@ -3980,8 +3987,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -"Usted también puede acceder a este registro utilizando los %(api_link)s " -"(ver %(api_doc_link)s) o descargando un %(dump_link)s." +"Usted también puede acceder a este registro utilizando los %(api_link)s (ver" +" %(api_doc_link)s) o descargando un %(dump_link)s." #: ckan/templates/package/search.html:60 #, python-format @@ -3989,8 +3996,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " msgstr "" -"Usted también puede acceder a este registro utilizando los %(api_link)s " -"(ver %(api_doc_link)s)." +"Usted también puede acceder a este registro utilizando los %(api_link)s (ver" +" %(api_doc_link)s)." #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -4045,15 +4052,16 @@ msgstr "Crear una nueva organización" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." -msgstr "No hay organizaciones a las que le puedas asignar este conjunto de datos." +msgstr "" +"No hay organizaciones a las que le puedas asignar este conjunto de datos." #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" "Ask a system administrator to create an organization before you can " "continue." msgstr "" -"Preguntar a un administrador del sistema para crear una organización " -"antes de continuar" +"Preguntar a un administrador del sistema para crear una organización antes " +"de continuar" #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -4081,8 +4089,8 @@ msgid "" " License definitions and additional information can be found at opendefinition.org " msgstr "" -"Definiciones de licencias e información adicional puede ser encontrada en" -" opendefinition.org" +"Definiciones de licencias e información adicional puede ser encontrada en opendefinition.org" #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -4107,16 +4115,15 @@ msgstr "Activo" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "La licencia de datos que seleccionó arriba solo aplica para los " -"contenidos de cualquier archivo de recurso que agregue a este conjunto de" -" datos. Al enviar este formulario, usted está de acuerdo en liberar los " +"contenidos de cualquier archivo de recurso que agregue a este conjunto de " +"datos. Al enviar este formulario, usted está de acuerdo en liberar los " "valores de metadatos que ingrese en el formulario bajo la Licencia Open " "Database." @@ -4230,8 +4237,8 @@ msgstr "¿Qué es un recurso?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Un recurso puede ser cualquier archivo o enlace a un archivo que contiene" -" datos útiles." +"Un recurso puede ser cualquier archivo o enlace a un archivo que contiene " +"datos útiles." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4324,8 +4331,7 @@ msgstr "¿Qué es una vista?" #: ckan/templates/package/snippets/view_help.html:4 msgid "A view is a representation of the data held against a resource" msgstr "" -"Una vista es una representación de los datos que se tienen sobre un " -"recurso" +"Una vista es una representación de los datos que se tienen sobre un recurso" #: ckan/templates/revision/diff.html:6 msgid "Differences" @@ -4435,8 +4441,8 @@ msgstr "No se ha provisto de una licencia" #: ckan/templates/snippets/license.html:28 msgid "This dataset satisfies the Open Definition." msgstr "" -"Este conjunto de datos cumple con la Definición de Conocimiento Abierto -" -" Open Definition." +"Este conjunto de datos cumple con la Definición de Conocimiento Abierto - " +"Open Definition." #: ckan/templates/snippets/organization.html:48 msgid "There is no description for this organization" @@ -4466,8 +4472,8 @@ msgstr "

Por favor intente otra búsqueda.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Hubo un error mientras se realizaba la búsqueda. Por " "favor intente nuevamente.

" @@ -4616,8 +4622,7 @@ msgstr "Información de la Cuenta" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" "Su perfil le permite a otros usuarios de CKAN conocer acerca de usted y " "sobre lo que hace." @@ -4712,8 +4717,8 @@ msgstr "¿Olvidó su clave?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"No hay problema, utilice nuestro formulario de recuperación de contraseña" -" para restablecerla." +"No hay problema, utilice nuestro formulario de recuperación de contraseña " +"para restablecerla." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4851,11 +4856,11 @@ msgstr "Solicitar restablecimiento" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Ingrese su nombre de usuario en el recuadro y le enviaremos un email con " -"un enlace para ingresar una nueva contraseña." +"Ingrese su nombre de usuario en el recuadro y le enviaremos un email con un " +"enlace para ingresar una nueva contraseña." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4881,4 +4886,3 @@ msgstr "Buscar Usuarios" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "Su contraseña debe tener 8 caracteres o más." - diff --git a/ckan/i18n/es_AR/LC_MESSAGES/ckan.po b/ckan/i18n/es_AR/LC_MESSAGES/ckan.po index 18d4687f189..a6a6a54306a 100644 --- a/ckan/i18n/es_AR/LC_MESSAGES/ckan.po +++ b/ckan/i18n/es_AR/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Spanish (Argentina) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Ignacio L'Episcopo, 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,14 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Ignacio L'Episcopo, 2018\n" -"Language: es_AR\n" -"Language-Team: Spanish (Argentina) " -"(https://www.transifex.com/okfn/teams/11162/es_AR/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Spanish (Argentina) (https://www.transifex.com/okfn/teams/11162/es_AR/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,19 +117,19 @@ msgstr "No se ha encontrado el recurso." #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" -"Diccionario de datos guardado. Cualquier actualización de tipo tendrá " -"efecto una vez el recurso vuelva a ser subido a DataStore" +"Diccionario de datos guardado. Cualquier actualización de tipo tendrá efecto" +" una vez el recurso vuelva a ser subido a DataStore" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Los datos fueron inválidos (por ejemplo: un valor numérico estuvo fuera " -"de rango o fue insertado en un campo de texto)." +"Los datos fueron inválidos (por ejemplo: un valor numérico estuvo fuera de " +"rango o fue insertado en un campo de texto)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -155,13 +155,12 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Más información en la documentación del API de Datos principal y del " -"DataStore de CKAN.

" +"target=\"_blank\">documentación del API de Datos principal y del DataStore " +"de CKAN.

" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 msgid "Endpoints" @@ -169,11 +168,11 @@ msgstr "Punto de acceso API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" -"El API de Datos es accesible a través de las siguientes acciones de la " -"API de acción de CKAN." +"El API de Datos es accesible a través de las siguientes acciones de la API " +"de acción de CKAN." #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 msgid "Create" @@ -287,13 +286,12 @@ msgstr "API de datos" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Más información en la documentación del API de Datos principal y del " -"DataStore de CKAN.

" +"target=\"_blank\">documentación del API de Datos principal y del DataStore " +"de CKAN.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -869,7 +867,8 @@ msgstr "No hay ninguna revisión con la identificación: %s" #: ckan/controllers/api.py:514 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" -msgstr "Término de búsqueda faltante ('since_id=UUID' o 'since_time=TIMESTAMP')" +msgstr "" +"Término de búsqueda faltante ('since_id=UUID' o 'since_time=TIMESTAMP')" #: ckan/controllers/api.py:526 #, python-format @@ -894,8 +893,8 @@ msgstr "Valor de qjson mal formado: %r" #: ckan/controllers/api.py:609 msgid "Request params must be in form of a json encoded dictionary." msgstr "" -"Los parámetros requeridos debe estar en forma de un diccionario en código" -" json." +"Los parámetros requeridos debe estar en forma de un diccionario en código " +"json." #: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 #: ckan/controllers/group.py:226 ckan/controllers/group.py:394 @@ -1075,8 +1074,8 @@ msgstr "" #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Por favor actualiza tu perfil y añade tu dirección de" -" correo electrónico." +"Por favor actualiza tu perfil y añade tu dirección de " +"correo electrónico." #: ckan/controllers/home.py:75 #, python-format @@ -1331,8 +1330,7 @@ msgstr "Contraseña incorrecta" #: ckan/controllers/user.py:427 msgid "Login failed. Bad username or password." msgstr "" -"No se ha podido iniciar sesión. Nombre de usuario o contraseña " -"incorrectos." +"No se ha podido iniciar sesión. Nombre de usuario o contraseña incorrectos." #: ckan/controllers/user.py:461 msgid "Unauthorized to request reset password." @@ -1423,7 +1421,8 @@ msgstr "{actor} actualizó los extra {extra} del conjunto de datos {dataset}" #: ckan/lib/activity_streams.py:75 msgid "{actor} updated the resource {resource} in the dataset {dataset}" -msgstr "{actor} actualizó el recurso {resource} en el conjunto de datos {dataset}" +msgstr "" +"{actor} actualizó el recurso {resource} en el conjunto de datos {dataset}" #: ckan/lib/activity_streams.py:78 msgid "{actor} updated their profile" @@ -1691,7 +1690,8 @@ msgstr "%s <%s>" #: ckan/lib/mailer.py:109 msgid "No recipient email address available!" -msgstr "¡No está disponible la dirección de correo electrónico del destinatario!" +msgstr "" +"¡No está disponible la dirección de correo electrónico del destinatario!" #: ckan/lib/mailer.py:127 ckan/templates/home/snippets/stats.html:17 msgid "organization" @@ -1814,8 +1814,8 @@ msgstr "El nonbre no puede tener más de %i caracteres de largo" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" "Debe contener solamente caracteres alfanuméricos (ascii) en minúsculas y " "estos símbolos: -_" @@ -1900,7 +1900,8 @@ msgstr "Las contraseñas introducidas no coinciden" msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." -msgstr "Edición no permitida porque parece spam. Evita enlaces en tu descripción." +msgstr "" +"Edición no permitida porque parece spam. Evita enlaces en tu descripción." #: ckan/logic/validators.py:620 #, python-format @@ -1915,8 +1916,8 @@ msgstr "Este nombre de vocabulario ya está en uso." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"No se puede cambiar el valor de la clave de %s a %s. Esta clave es de " -"solo lectura." +"No se puede cambiar el valor de la clave de %s a %s. Esta clave es de solo " +"lectura." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2020,7 +2021,8 @@ msgstr "La valoración debe ser entre %i y %i." #: ckan/logic/action/create.py:1064 msgid "Error sending the invite email, the user was not created: {0}" -msgstr "Error enviando una invitación por mail, el usuario no está creado: {0}" +msgstr "" +"Error enviando una invitación por mail, el usuario no está creado: {0}" #: ckan/logic/action/create.py:1277 ckan/logic/action/create.py:1284 msgid "You must be logged in to follow users" @@ -2154,22 +2156,21 @@ msgstr "" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." msgstr "" -"No se ingresó id del conjunto de datos, no se puede comprobar " -"autenticación." +"No se ingresó id del conjunto de datos, no se puede comprobar autenticación." #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"No se ha encontrado ningún paquete para este recurso, no se puede " -"comprobar la autenticación." +"No se ha encontrado ningún paquete para este recurso, no se puede comprobar " +"la autenticación." #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" msgstr "" -"El usuario %s no está autorizado para crear recursos en el conjunto de " -"datos %s" +"El usuario %s no está autorizado para crear recursos en el conjunto de datos" +" %s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2188,7 +2189,8 @@ msgstr "El usuario %s no está autorizado para crear organizaciones" #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" -msgstr "El usuario {user} no está autorizado a crear usuarios a través de la API" +msgstr "" +"El usuario {user} no está autorizado a crear usuarios a través de la API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2296,7 +2298,8 @@ msgstr "El usuario %s no está autorizado para editar el recurso %s" #: ckan/logic/auth/update.py:100 #, python-format msgid "User %s not authorized to change state of package %s" -msgstr "El usuario %s no está autorizado para cambiar el estado del paquete %s" +msgstr "" +"El usuario %s no está autorizado para cambiar el estado del paquete %s" #: ckan/logic/auth/update.py:128 #, python-format @@ -2311,7 +2314,8 @@ msgstr "El usuario %s no está autorizado para cambiar el estado del grupo %s" #: ckan/logic/auth/update.py:162 #, python-format msgid "User %s not authorized to edit permissions of group %s" -msgstr "El usuario %s no está autorizado para editar los permisos del grupo %s" +msgstr "" +"El usuario %s no está autorizado para editar los permisos del grupo %s" #: ckan/logic/auth/update.py:190 msgid "Have to be logged in to edit user" @@ -2329,7 +2333,8 @@ msgstr "El usuario {0} no autorizado para actualizar al usuario {1}" #: ckan/logic/auth/update.py:217 #, python-format msgid "User %s not authorized to change state of revision" -msgstr "El usuario %s no está autorizado para cambiar el estado de la revisión" +msgstr "" +"El usuario %s no está autorizado para cambiar el estado de la revisión" #: ckan/logic/auth/update.py:226 #, python-format @@ -2339,7 +2344,8 @@ msgstr "El usuario %s no esta autorizado para actualizar la tabla task_status" #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" -msgstr "El usuario %s no está autorizado a actualizar la tabla term_translation" +msgstr "" +"El usuario %s no está autorizado a actualizar la tabla term_translation" #: ckan/logic/auth/update.py:262 msgid "Valid API key needed to edit a package" @@ -2592,11 +2598,11 @@ msgstr "No se pudo obtener datos para el archivo subido" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Estás subiendo un archivo. ¿Estás seguro que quieres salir y detener esta" -" subida?" +"Estás subiendo un archivo. ¿Estás seguro que quieres salir y detener esta " +"subida?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2869,38 +2875,36 @@ msgstr "Opciones de configuración de CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Título del Sitio: Este es el título de esta instancia" -" de CKAN. Se muestra en varios lugares dentro de CKAN.

" -"

Estilo: Escoja de una lista de sencillas variaciones " -"del esquema principal de colores para obtener un tema personalizado " -"funcionando rápidamente.

Logo de la Etiqueta del " -"Sitio: Este es el logo que aparece en la cabecera de todas las " -"plantillas de la instancia de CKAN.

Acerca de: " -"Este texto aparecerá en la página acerca de" -" de esta instancia de CKAN.

Texto de " -"Introducción: Este texto aparecerá en la página de inicio de esta instancia CKAN como " -"una bienvenida a los visitantes.

CSS " -"Personalizado: Este es el bloque de código CSS que aparece en la" -" etiqueta <head> de cada página. Si deseas " -"personalizar las plantillas de manera más profunda le recomendamos Título del Sitio: Este es el título de esta instancia de" +" CKAN. Se muestra en varios lugares dentro de CKAN.

" +"

Estilo: Escoja de una lista de sencillas variaciones del" +" esquema principal de colores para obtener un tema personalizado funcionando" +" rápidamente.

Logo de la Etiqueta del Sitio: Este es" +" el logo que aparece en la cabecera de todas las plantillas de la instancia " +"de CKAN.

Acerca de: Este texto aparecerá en la " +"página acerca de de esta instancia de " +"CKAN.

Texto de Introducción: Este texto aparecerá en" +" la página de inicio de esta instancia CKAN " +"como una bienvenida a los visitantes.

CSS " +"Personalizado: Este es el bloque de código CSS que aparece en la " +"etiqueta <head> de cada página. Si deseas personalizar " +"las plantillas de manera más profunda le recomendamos leer la documentación.

" #: ckan/templates/admin/confirm_reset.html:3 @@ -2916,15 +2920,14 @@ msgstr "Administrar CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Como usuario administrador del sistema tiene total control sobre esta " -"instancia de CKAN. ¡Proceda con cuidado!

Para guía sobre el uso de" -" las características de los usuarios a administradores, ver la guía de usuarios administradores " -"de sistema de CKAN

" +"instancia de CKAN. ¡Proceda con cuidado!

Para guía sobre el uso de " +"las características de los usuarios a administradores, ver la guía de usuarios administradores de " +"sistema de CKAN

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3089,8 +3092,9 @@ msgstr "¿Seguro de que deseas eliminar al miembro - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Administrar" @@ -3122,7 +3126,8 @@ msgstr "Buscar grupos..." msgid "There are currently no groups for this site" msgstr "No existen actualmente grupos para este sitio" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "¿Qué tal creando uno?" @@ -3154,7 +3159,8 @@ msgstr "Usuario existente" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." -msgstr "Si quiere añadir un usuario existente, buscar el nombre del usuario abajo." +msgstr "" +"Si quiere añadir un usuario existente, buscar el nombre del usuario abajo." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3169,21 +3175,25 @@ msgstr "Usuario nuevo" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Si deseas invitar a un usuario, escribe su dirección de correo electrónico" +msgstr "" +"Si deseas invitar a un usuario, escribe su dirección de correo electrónico" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rol" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "¿Seguro de que deseas eliminar a este miembro?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3204,12 +3214,12 @@ msgstr "¿Qué son los roles?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Administrador:Puede editar información del grupo, así" -" como también administrar miembros de la " +"

Administrador:Puede editar información del grupo, así " +"como también administrar miembros de la " "organización.

Miembro: Puede agregar/eliminar " "conjuntos de datos de grupos.

" @@ -3281,16 +3291,16 @@ msgstr "¿Qué son los Grupos?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" "Puedes usar los grupos de CKAN para crear y administrar colecciones de " -"conjuntos de datos. Esto se puede usar para catalogar conjuntos de datos " -"de un proyecto concreto o un equipo, o de un tema en particular, o como " -"una manera muy sencilla de ayudar a la gente a buscar y encontrar sus " -"propios conjuntos de datos publicados." +"conjuntos de datos. Esto se puede usar para catalogar conjuntos de datos de " +"un proyecto concreto o un equipo, o de un tema en particular, o como una " +"manera muy sencilla de ayudar a la gente a buscar y encontrar sus propios " +"conjuntos de datos publicados." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3353,14 +3363,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3371,25 +3380,24 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN es la plataforma de datos, de código abierto, líder a nivel " -"mundial.

CKAN es una solución completa de software lista para " -"utilizar que hace los datos accesibles y utilizables al proveer " -"herramientas para publicar, compartir, encontrar y usar los datos " -"(incluyendo almacenamiento de datos y provisión de APIs de datos " -"robustas). CKAN está orientada a proveedores de datos (gobiernos " -"nacionales y regionales, compañías y organizaciones) que desean hacer sus" -" datos abiertos y disponibles.

CKAN es utilizada por gobiernos y " -"grupos de usuarios a nivel mundial y gestiona una variedad de portales de" -" datos oficiales y comunitarios, incluyendo portales para gobiernos " -"locales, nacionales e internacionales tales como data.gov.uk de Reino Unido, publicdata.eu de la Unión Europea; dados.gov.br de Brasil; además portales" -" de los gobiernos de Dinamarca y Holanda, así como también sitios de " -"ciudades y municipalidades en Estados Unidos, Reino Unido, Argentina, " -"Finlandia y en otros lugares.

CKAN:

CKAN es una solución completa de software lista para utilizar" +" que hace los datos accesibles y utilizables al proveer herramientas para " +"publicar, compartir, encontrar y usar los datos (incluyendo almacenamiento " +"de datos y provisión de APIs de datos robustas). CKAN está orientada a " +"proveedores de datos (gobiernos nacionales y regionales, compañías y " +"organizaciones) que desean hacer sus datos abiertos y " +"disponibles.

CKAN es utilizada por gobiernos y grupos de usuarios a " +"nivel mundial y gestiona una variedad de portales de datos oficiales y " +"comunitarios, incluyendo portales para gobiernos locales, nacionales e " +"internacionales tales como data.gov.uk de" +" Reino Unido, publicdata.eu de la " +"Unión Europea; dados.gov.br de Brasil; " +"además portales de los gobiernos de Dinamarca y Holanda, así como también " +"sitios de ciudades y municipalidades en Estados Unidos, Reino Unido, " +"Argentina, Finlandia y en otros lugares.

CKAN: http://ckan.org/
Tour de CKAN: http://ckan.org/tour/
Revisión " -"de funcionalidades: http://ckan.org/tour/
Revisión de " +"funcionalidades: http://ckan.org/features/" #: ckan/templates/home/snippets/promoted.html:8 @@ -3398,12 +3406,11 @@ msgstr "Bienvenido a CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Este es un párrafo amigable de introducción acerca de CKAN o del sitio en" -" general. No tenemos ningún mensaje que vaya aquí pero pronto lo " -"tendremos" +"Este es un párrafo amigable de introducción acerca de CKAN o del sitio en " +"general. No tenemos ningún mensaje que vaya aquí pero pronto lo tendremos" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3452,12 +3459,12 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"Puedes usar formato Markdown aquí" #: ckan/templates/macros/form.html:265 @@ -3527,8 +3534,8 @@ msgstr "Borrador" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privado" @@ -3582,16 +3589,16 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Administrador: Puedes agregar/editar y eliminar " "conjuntos de datos, así como también administrar a los miembros de una " "organización.

Editor: Puedes agregar y editar " "conjuntos de datos, pero no administrar a los miembros de una " -"organización.

Miembro: Puedes ver los conjuntos " -"de datos privados de una organización, pero no agregar nuevos conjuntos " -"de datos.

" +"organización.

Miembro: Puedes ver los conjuntos de " +"datos privados de una organización, pero no agregar nuevos conjuntos de " +"datos.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3631,32 +3638,32 @@ msgstr "¿Qué son las Organizaciones?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Las organizaciones actúan como departamentos de publicación para los " -"conjuntos de datos (por ejemplo, el Departamento de Salud). Esto " -"significa que los conjuntos de datos pueden ser publicados por y " -"pertenecer a un departamento en vez de a un usuario individual.

" -"

Dentro de las organizaciones, los administradores asignan roles y " -"autorizaciones para sus miembros, dándoles a los usuarios individuales el" -" derecho a publicar conjuntos de datos de esa organización en particular " -"(ej: Oficina Nacional de Estadísticas).

" +"conjuntos de datos (por ejemplo, el Departamento de Salud). Esto significa " +"que los conjuntos de datos pueden ser publicados por y pertenecer a un " +"departamento en vez de a un usuario individual.

Dentro de las " +"organizaciones, los administradores asignan roles y autorizaciones para sus " +"miembros, dándoles a los usuarios individuales el derecho a publicar " +"conjuntos de datos de esa organización en particular (ej: Oficina Nacional " +"de Estadísticas).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Las organizaciones en CKAN son usadas para crear, gestionar y publicar " "colecciones de conjuntos de datos. Los usuarios pueden tener diferentes " -"perfiles en una organización, dependiente de su nivel de autorización " -"para crear, editar y publicar" +"perfiles en una organización, dependiente de su nivel de autorización para " +"crear, editar y publicar" #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3672,9 +3679,8 @@ msgstr "Un poco de información acerca de mi organización..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "¿Estás seguro de que quieres eliminar esta organización? Nota*: La " "eliminación no se puede realizar mientras conjuntos de datos públicos o " @@ -3700,14 +3706,13 @@ msgstr "¿Qué son los conjuntos de datos?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "Un Conjunto de Datos de CKAN es una colección de recursos de datos (como " -"ficheros), junto con una descripción y otra información, unida a una URL." -" Los conjuntos de datos son lo que los usuarios ven cuando buscan un " -"dato." +"ficheros), junto con una descripción y otra información, unida a una URL. " +"Los conjuntos de datos son lo que los usuarios ven cuando buscan un dato." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3788,15 +3793,15 @@ msgstr "Agregar vista" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Las vistas de Data Explorer pueden ser lentas y no confiables a no ser " -"que la extensión DataStore esté activa. Para más información revisa la documentación" -" de Data Explorer." +"Las vistas de Data Explorer pueden ser lentas y no confiables a no ser que " +"la extensión DataStore esté activa. Para más información revisa la documentación de Data " +"Explorer." #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3806,9 +3811,8 @@ msgstr "Añade" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Esta es una versión antigua de este conjunto de datos, editada en " "%(timestamp)s. Puede diferir significativamente de la This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Este conjunto de datos no tiene datos, ¿por qué no añades alguno?

" @@ -4048,15 +4051,16 @@ msgstr "Crear una nueva organización" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." -msgstr "No hay organizaciones a las que le puedas asignar este conjunto de datos." +msgstr "" +"No hay organizaciones a las que le puedas asignar este conjunto de datos." #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" "Ask a system administrator to create an organization before you can " "continue." msgstr "" -"Preguntar a un administrador del sistema para crear una organización " -"antes de continuar" +"Preguntar a un administrador del sistema para crear una organización antes " +"de continuar" #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -4084,8 +4088,8 @@ msgid "" " License definitions and additional information can be found at opendefinition.org " msgstr "" -"Definiciones de licencias e información adicional puede ser encontrada en" -" opendefinition.org" +"Definiciones de licencias e información adicional puede ser encontrada en opendefinition.org" #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -4110,17 +4114,16 @@ msgstr "Activo" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "La licencia de datos que seleccionó arriba solo aplica para los " -"contenidos de cualquier archivo de recurso que agregue a este conjunto de" -" datos. Al enviar este formulario, estás de acuerdo en liberar los " -"valores de metadatos que ingrese en el formulario bajo la metadatos que ingrese en el formulario bajo la Licencia Open " "Database." @@ -4233,8 +4236,8 @@ msgstr "¿Qué es un recurso?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Un recurso puede ser cualquier archivo o enlace a un archivo que contiene" -" datos útiles." +"Un recurso puede ser cualquier archivo o enlace a un archivo que contiene " +"datos útiles." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4265,8 +4268,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Puedes copiar y pegar el código de inserción en un CMS o blog que soporte" -" HTML crudo" +"Puedes copiar y pegar el código de inserción en un CMS o blog que soporte " +"HTML crudo" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4327,8 +4330,7 @@ msgstr "¿Qué es una vista?" #: ckan/templates/package/snippets/view_help.html:4 msgid "A view is a representation of the data held against a resource" msgstr "" -"Una vista es una representación de los datos que se tienen sobre un " -"recurso" +"Una vista es una representación de los datos que se tienen sobre un recurso" #: ckan/templates/revision/diff.html:6 msgid "Differences" @@ -4438,8 +4440,8 @@ msgstr "No se ha proporcionado una licencia" #: ckan/templates/snippets/license.html:28 msgid "This dataset satisfies the Open Definition." msgstr "" -"Este conjunto de datos cumple con la Definición de Conocimiento Abierto -" -" Open Definition." +"Este conjunto de datos cumple con la Definición de Conocimiento Abierto - " +"Open Definition." #: ckan/templates/snippets/organization.html:48 msgid "There is no description for this organization" @@ -4469,8 +4471,8 @@ msgstr "

Intenta otra búsqueda.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Hubo un error mientras se realizaba la búsqueda. Por " "favor intenta nuevamente.

" @@ -4619,11 +4621,10 @@ msgstr "Información de la Cuenta" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Tu perfil le permite a otros usuarios de CKAN conocer acerca tuyo y sobre" -" lo que haces." +"Tu perfil le permite a otros usuarios de CKAN conocer acerca tuyo y sobre lo" +" que haces." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4715,8 +4716,8 @@ msgstr "¿Olvidaste tu contraseña?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"No hay problema, utilice nuestro formulario de recuperación de contraseña" -" para restablecerla." +"No hay problema, utilice nuestro formulario de recuperación de contraseña " +"para restablecerla." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4854,11 +4855,11 @@ msgstr "Solicitar restablecimiento" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Ingrese tu nombre de usuario en el recuadro y te enviaremos un email con " -"un enlace para ingresar una nueva contraseña." +"Ingrese tu nombre de usuario en el recuadro y te enviaremos un email con un " +"enlace para ingresar una nueva contraseña." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4884,4 +4885,3 @@ msgstr "Buscar Usuarios" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "La contraseña debe tener 8 caracteres o más." - diff --git a/ckan/i18n/eu/LC_MESSAGES/ckan.mo b/ckan/i18n/eu/LC_MESSAGES/ckan.mo new file mode 100644 index 00000000000..827af91cbec Binary files /dev/null and b/ckan/i18n/eu/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/eu/LC_MESSAGES/ckan.po b/ckan/i18n/eu/LC_MESSAGES/ckan.po new file mode 100644 index 00000000000..aaf89eaa829 --- /dev/null +++ b/ckan/i18n/eu/LC_MESSAGES/ckan.po @@ -0,0 +1,4844 @@ +# Translations template for ckan. +# Copyright (C) 2018 ORGANIZATION +# This file is distributed under the same license as the ckan project. +# FIRST AUTHOR , 2018. +# +# Translators: +# Alberto Miedes , 2019 +# David Portoles , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ckan 2.8.0b0\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2018-03-27 16:10+0200\n" +"PO-Revision-Date: 2018-03-27 14:15+0000\n" +"Last-Translator: David Portoles , 2019\n" +"Language-Team: Basque (https://www.transifex.com/okfn/teams/11162/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.5.3\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ckanext/datapusher/helpers.py:21 +msgid "Complete" +msgstr "Amaituta" + +#: ckanext/datapusher/helpers.py:22 +msgid "Pending" +msgstr "Zain" + +#: ckanext/datapusher/helpers.py:23 +msgid "Submitting" +msgstr "Bidaltzen" + +#: ckan/controllers/package.py:681 ckanext/datapusher/helpers.py:24 +msgid "Error" +msgstr "Okerra" + +#: ckanext/datapusher/helpers.py:29 +msgid "Not Uploaded Yet" +msgstr "Oraindik eguneratu gabe" + +#: ckan/controllers/package.py:613 ckan/controllers/package.py:1076 +#: ckan/controllers/package.py:1096 ckan/controllers/package.py:1163 +#: ckan/controllers/package.py:1346 ckan/controllers/package.py:1424 +#: ckan/controllers/package.py:1455 ckan/controllers/package.py:1563 +#: ckan/controllers/package.py:1614 ckanext/datapusher/plugin.py:59 +#: ckanext/datastore/controller.py:80 ckanext/resourceproxy/controller.py:33 +msgid "Resource not found" +msgstr "Baliabidea ez da aurkitu" + +#: ckan/controllers/api.py:66 ckan/controllers/group.py:156 +#: ckan/controllers/home.py:27 ckan/controllers/package.py:144 +#: ckan/controllers/package.py:315 ckan/controllers/revision.py:34 +#: ckan/controllers/tag.py:27 ckan/controllers/user.py:58 +#: ckan/controllers/user.py:83 ckan/controllers/user.py:86 +#: ckan/controllers/user.py:117 ckan/controllers/user.py:598 +#: ckan/views/dashboard.py:24 ckan/views/user.py:59 ckan/views/user.py:62 +#: ckan/views/user.py:87 ckan/views/user.py:110 ckan/views/user.py:476 +#: ckanext/datapusher/plugin.py:68 +msgid "Not authorized to see this page" +msgstr "Ez duzu baimenik orrialde hau ikusteko" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:12 +#: ckanext/datapusher/templates/datapusher/resource_data.html:12 +msgid "Upload to DataStore" +msgstr "DataStore-ra igo" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:19 +#: ckanext/datapusher/templates/datapusher/resource_data.html:19 +msgid "Upload error:" +msgstr "Igoeran okerra" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:25 +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:27 +#: ckanext/datapusher/templates/datapusher/resource_data.html:25 +#: ckanext/datapusher/templates/datapusher/resource_data.html:27 +msgid "Error:" +msgstr "Okerra:" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:36 +#: ckanext/datapusher/templates/datapusher/resource_data.html:36 +msgid "Error traceback:" +msgstr "Akatsaren aztarna:" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:48 +#: ckanext/datapusher/templates/datapusher/resource_data.html:48 +msgid "Status" +msgstr "Egoera" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:52 +#: ckanext/datapusher/templates/datapusher/resource_data.html:52 +msgid "Last updated" +msgstr "Azken eguneratzea" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:56 +#: ckanext/datapusher/templates/datapusher/resource_data.html:56 +msgid "Never" +msgstr "Inoiz" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:62 +#: ckanext/datapusher/templates/datapusher/resource_data.html:62 +msgid "Upload Log" +msgstr "Igoeraren log-a" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:76 +#: ckanext/datapusher/templates/datapusher/resource_data.html:76 +msgid "Details" +msgstr "Zehetasunak" + +#: ckanext/datapusher/templates-bs2/datapusher/resource_data.html:83 +#: ckanext/datapusher/templates/datapusher/resource_data.html:83 +msgid "End of log" +msgstr "Log-aren amaiera" + +#: ckanext/datapusher/templates-bs2/package/resource_edit_base.html:5 +#: ckanext/datapusher/templates/package/resource_edit_base.html:5 +msgid "DataStore" +msgstr "DataStore" + +#: ckanext/datastore/controller.py:53 +#, python-format +msgid "format: must be one of %s" +msgstr "formatua: %s bat izan behar du" + +#: ckanext/datastore/controller.py:65 +msgid "DataStore resource not found" +msgstr "Baliabidea ez da aurkitu" + +#: ckanext/datastore/controller.py:101 +msgid "" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" +msgstr "" + +#: ckanext/datastore/backend/postgres.py:1032 +msgid "" +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." +msgstr "" +"Datuak baliogabeak izan dira (adibidez: zenbakizko balore bat eremuz kanpo " +"egon da edo testu eremu batean txertatuta izan da)." + +#: ckanext/datastore/logic/action.py:258 ckanext/datastore/logic/action.py:286 +#: ckanext/datastore/logic/action.py:344 ckanext/datastore/logic/action.py:457 +msgid "Resource \"{0}\" was not found." +msgstr "\"{0}\" baliabidea ez da aurkitu." + +#: ckanext/datastore/logic/auth.py:19 +msgid "User {0} not authorized to update resource {1}" +msgstr "{0} erabiltzaileak ez du {1} baliabidea eguneratzeko baimenik" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:19 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:21 +msgid "CKAN Data API" +msgstr "Datuen API" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:23 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:25 +msgid "Access resource data via a web API with powerful query support" +msgstr "" +"Datuen baliabidera sarrera erabateko kontsulta zerbitzua duen API web baten " +"bitartez" + +#: ckanext/datastore/templates/ajax_snippets/api_info.html:26 +msgid "" +" Further information in the main CKAN Data API and DataStore documentation.

" +msgstr "" +"Informazio gehiago -ean API-ren Datu nagusien eta CKAN-en DataStore-aren " +"dokumentazioa .

" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:33 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:35 +msgid "Endpoints" +msgstr "API sarbide-puntua" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:37 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:39 +msgid "" +"The Data API can be accessed via the following actions of the CKAN action " +"API." +msgstr "" +"Datuen API-a CKAN-en API ekintzaren hurrengo ekintzen bitartez irisgarria " +"da." + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:42 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:44 +msgid "Create" +msgstr "Sortu" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:46 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:48 +msgid "Update / Insert" +msgstr "Eguneratu / Txertatu" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:50 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:52 +msgid "Query" +msgstr "Kontsulta" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:54 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:56 +msgid "Query (via SQL)" +msgstr "Kontsulta (SQL-ren bidez)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:66 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:68 +msgid "Querying" +msgstr "Kontsultatzen" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:70 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:72 +msgid "Query example (first 5 results)" +msgstr "Kontsulta adibidea (lehenengo 5 emaitzak)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:75 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:77 +msgid "Query example (results containing 'jones')" +msgstr "Kontsulta adibidea ('jones' duten emaitzak)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:80 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:82 +msgid "Query example (via SQL statement)" +msgstr "Kontsulta adibidea (SQL sententziaren bidez)" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:91 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:93 +msgid "Example: Javascript" +msgstr "Adibidez: Javascript" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:95 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:97 +msgid "A simple ajax (JSONP) request to the data API using jQuery." +msgstr "(JSONP) ajax kontsulta erraz bat API datuei jQuery erabiliz." + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:116 +#: ckanext/datastore/templates/ajax_snippets/api_info.html:118 +msgid "Example: Python" +msgstr "Adibidez: Python" + +#: ckan/templates/group/member_new.html:60 +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:26 +#: ckanext/datastore/templates/datastore/dictionary.html:20 +msgid "Save" +msgstr "Gorde" + +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:16 +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:3 +msgid "Field {num}." +msgstr "Eremu {num}." + +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:12 +msgid "Type Override" +msgstr "" + +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:18 +#: ckanext/datastore/templates-bs2/package/resource_read.html:20 +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:20 +#: ckanext/datastore/templates/package/resource_read.html:21 +#: ckanext/datatablesview/templates/datatables/datatables_form.html:18 +msgid "Label" +msgstr "Etiketa" + +#: ckan/templates/group/snippets/group_form.html:20 +#: ckan/templates/organization/snippets/organization_form.html:20 +#: ckan/templates/package/snippets/package_basic_fields.html:19 +#: ckan/templates/package/snippets/resource_form.html:34 +#: ckan/templates/package/snippets/view_form.html:9 +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:21 +#: ckanext/datastore/templates-bs2/package/resource_read.html:21 +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:24 +#: ckanext/datastore/templates/package/resource_read.html:22 +msgid "Description" +msgstr "Azalpena" + +#: ckanext/datastore/templates-bs2/package/resource_edit_base.html:6 +#: ckanext/datastore/templates-bs2/package/resource_read.html:14 +#: ckanext/datastore/templates/package/resource_edit_base.html:6 +#: ckanext/datastore/templates/package/resource_read.html:14 +msgid "Data Dictionary" +msgstr "Datuen hiztegia" + +#: ckanext/datastore/templates-bs2/package/resource_read.html:18 +#: ckanext/datastore/templates/package/resource_read.html:19 +#: ckanext/datatablesview/templates/datatables/datatables_form.html:17 +msgid "Column" +msgstr "Zutabea" + +#: ckanext/datastore/templates-bs2/package/resource_read.html:19 +#: ckanext/datastore/templates/package/resource_read.html:20 +msgid "Type" +msgstr "Mota" + +#: ckan/public-bs2/base/javascript/modules/activity-stream.js:97 +#: ckan/public-bs2/base/javascript/modules/popover-context.js:62 +#: ckan/public/base/javascript/modules/activity-stream.js:97 +#: ckan/public/base/javascript/modules/popover-context.js:62 +#: ckan/templates/tests/mock_json_resource_preview_template.html:7 +#: ckan/templates/tests/mock_resource_preview_template.html:7 +#: ckanext/datastore/templates-bs2/package/snippets/data_api_button.html:8 +#: ckanext/datastore/templates/package/snippets/data_api_button.html:7 +#: ckanext/example_theme_docs/v18_snippet_api/fanstatic/example_theme_popover.js:21 +#: ckanext/example_theme_docs/v19_01_error/fanstatic/example_theme_popover.js:21 +#: ckanext/example_theme_docs/v19_02_error_handling/fanstatic/example_theme_popover.js:8 +#: ckanext/example_theme_docs/v20_pubsub/fanstatic/example_theme_popover.js:8 +#: ckanext/example_theme_docs/v21_custom_jquery_plugin/fanstatic/example_theme_popover.js:8 +#: ckanext/reclineview/theme/templates/recline_view.html:14 +#: ckanext/textview/theme/templates/text_view.html:9 +msgid "Loading..." +msgstr "Kargatzen ..." + +#: ckanext/datastore/templates-bs2/package/snippets/data_api_button.html:10 +#: ckanext/datastore/templates/package/snippets/data_api_button.html:9 +msgid "Data API" +msgstr "Datuen API" + +#: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:24 +msgid "" +" Further information in the main CKAN Data API and DataStore documentation.

" +msgstr "" + +#: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 +msgid "Table" +msgstr "Taula" + +#: ckanext/datatablesview/templates/datatables/datatables_form.html:6 +msgid "Responsive display" +msgstr "Responsive display" + +#: ckanext/datatablesview/templates/datatables/datatables_form.html:12 +msgid "Show Columns" +msgstr "Zutabeak bistaratu" + +#: ckanext/datatablesview/templates/datatables/datatables_view.html:28 +msgid "Hide/Unhide Columns" +msgstr "Zutabeak bistaratu/ezkutatu" + +#: ckanext/example_iconfigurer/templates/admin/config.html:11 +msgid "Datasets per page" +msgstr "Datu multzoak orrialdeka" + +#: ckanext/example_iconfigurer/templates/admin/config.html:13 +msgid "Test conf" +msgstr "Frogatzeko konfigurazioa" + +#: ckan/templates/group/read.html:13 ckan/templates/organization/read.html:19 +#: ckan/templates/package/search.html:29 +#: ckan/templates/snippets/sort_by.html:14 +#: ckanext/example_idatasetform/templates/package/search.html:12 +msgid "Relevance" +msgstr "Garrantzia" + +#: ckan/templates/group/index.html:20 ckan/templates/group/read.html:14 +#: ckan/templates/organization/bulk_process.html:97 +#: ckan/templates/organization/index.html:20 +#: ckan/templates/organization/read.html:20 +#: ckan/templates/package/search.html:30 +#: ckan/templates/snippets/search_form.html:4 +#: ckan/templates/snippets/simple_search.html:10 +#: ckan/templates/snippets/sort_by.html:15 +#: ckanext/example_idatasetform/templates/package/search.html:13 +msgid "Name Ascending" +msgstr "Goranzko izena" + +#: ckan/templates/group/index.html:20 ckan/templates/group/read.html:15 +#: ckan/templates/organization/bulk_process.html:98 +#: ckan/templates/organization/index.html:20 +#: ckan/templates/organization/read.html:21 +#: ckan/templates/package/search.html:31 +#: ckan/templates/snippets/search_form.html:4 +#: ckan/templates/snippets/simple_search.html:10 +#: ckan/templates/snippets/sort_by.html:16 +#: ckanext/example_idatasetform/templates/package/search.html:14 +msgid "Name Descending" +msgstr "Beheranzko izena" + +#: ckan/templates/group/read.html:16 +#: ckan/templates/organization/bulk_process.html:99 +#: ckan/templates/organization/read.html:22 +#: ckan/templates/package/search.html:32 +#: ckan/templates/package/snippets/resource_form.html:53 +#: ckan/templates/snippets/sort_by.html:17 +#: ckanext/example_idatasetform/templates/package/search.html:15 +msgid "Last Modified" +msgstr "Azken aldaketa" + +#: ckanext/example_idatasetform/templates/package/search.html:16 +msgid "Custom Field Ascending" +msgstr "Goranzko eremu pertsonalizatua" + +#: ckanext/example_idatasetform/templates/package/search.html:17 +msgid "Custom Field Descending" +msgstr "Beheranzko eremu pertsonalizatua" + +#: ckan/templates/group/read.html:17 ckan/templates/organization/read.html:23 +#: ckan/templates/package/search.html:33 +#: ckan/templates/snippets/package_item.html:50 +#: ckan/templates/snippets/popular.html:3 +#: ckan/templates/snippets/sort_by.html:19 +#: ckanext/example_idatasetform/templates/package/search.html:18 +msgid "Popular" +msgstr "Ikusienak" + +#: ckanext/example_idatasetform/templates/package/snippets/additional_info.html:6 +#: ckanext/example_idatasetform/templates/package/snippets/package_basic_fields.html:4 +#: ckanext/example_idatasetform/templates/package/snippets/resource_form.html:6 +msgid "Custom Text" +msgstr "Testu pertsonalizatua" + +#: ckanext/example_idatasetform/templates/package/snippets/package_basic_fields.html:4 +msgid "custom text" +msgstr "testu pertsonalizatua" + +#: ckanext/example_idatasetform/templates/package/snippets/package_metadata_fields.html:11 +msgid "Country Code" +msgstr "Herrialdeko kodea" + +#: ckanext/example_idatasetform/templates/package/snippets/resource_form.html:6 +msgid "custom resource text" +msgstr "baliabidearen testu pertsonalizatua" + +#: ckanext/example_itranslation/templates/home/index.html:4 +msgid "This is an untranslated string" +msgstr "Testu hau ez dago itzulita" + +#: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:20 +#: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:19 +msgid "This group has no description" +msgstr "Talde honek ez du deskribapenik" + +#: ckan/templates/group/snippets/group_item.html:32 +#: ckan/templates/organization/snippets/organization_item.html:31 +#: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:23 +#: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:22 +msgid "{num} Dataset" +msgid_plural "{num} Datasets" +msgstr[0] "{num} Datu Multzoa" +msgstr[1] "{num} Datu Multzoak" + +#: ckan/templates/group/snippets/group_item.html:34 +#: ckan/templates/organization/snippets/organization_item.html:33 +#: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:25 +#: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:24 +msgid "0 Datasets" +msgstr "0 Datu Multzo" + +#: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 +msgid "CKAN's data previewing tool has many powerful features" +msgstr "CKAN -en berrikuspen tresnak ezaugarri indartsu batzuk ditu" + +#: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 +#: ckan/templates/group/snippets/info.html:32 +#: ckan/templates/package/followers.html:3 +#: ckan/templates/package/followers.html:6 +#: ckan/templates/package/snippets/info.html:24 +#: ckan/templates/snippets/context/group.html:13 +#: ckan/templates/snippets/context/user.html:15 +#: ckan/templates/snippets/organization.html:55 +#: ckan/templates/user/followers.html:3 ckan/templates/user/followers.html:7 +#: ckan/templates/user/read_base.html:49 +#: ckanext/example_theme_docs/v18_snippet_api/templates/ajax_snippets/example_theme_popover.html:12 +msgid "Followers" +msgstr "Jarraitzaileak" + +#: ckan/logic/__init__.py:99 ckan/logic/action/__init__.py:60 +#: ckan/templates/package/edit_base.html:21 +#: ckan/templates/package/resources.html:5 +#: ckan/templates/package/snippets/package_context.html:12 +#: ckan/templates/package/snippets/resources.html:20 +#: ckan/templates/snippets/context/dataset.html:13 +#: ckanext/example_theme_docs/v18_snippet_api/templates/ajax_snippets/example_theme_popover.html:15 +msgid "Resources" +msgstr "Baliabideak" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:80 +#: ckan/public/base/javascript/modules/image-upload.js:80 +#: ckan/templates/macros/form.html:424 ckanext/imageview/plugin.py:27 +#: ckanext/imageview/plugin.py:32 +msgid "Image" +msgstr "Irudia" + +#: ckanext/imageview/theme/templates/image_form.html:3 +msgid "Image url" +msgstr "Irudiaren URL" + +#: ckanext/imageview/theme/templates/image_form.html:3 +msgid "eg. http://example.com/image.jpg (if blank uses resource url)" +msgstr "" +"adibidez: http://adibidea.com/irudia.jpg (ituak baliabidearen url-a " +"erabiltzen badu)" + +#: ckanext/reclineview/plugin.py:101 +msgid "Data Explorer" +msgstr "Datu esploratzailea" + +#: ckanext/reclineview/plugin.py:171 +#: ckanext/reclineview/theme/public/recline_view.js:200 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Graph" +msgstr "Grafikoa" + +#: ckanext/reclineview/plugin.py:231 +#: ckanext/reclineview/theme/public/recline_view.js:207 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Map" +msgstr "Mapa" + +#: ckanext/reclineview/theme/public/recline_view.js:28 +#: ckanext/reclineview/theme/public/recline_view.min.js:1 +msgid "error loading view" +msgstr "akatsa bista kargatzean." + +#: ckanext/reclineview/theme/public/recline_view.js:75 +#: ckanext/reclineview/theme/public/recline_view.min.js:5 +msgid "Could not load view" +msgstr "Bista ez da kargatu" + +#: ckanext/reclineview/theme/public/recline_view.js:77 +#: ckanext/reclineview/theme/public/recline_view.min.js:5 +msgid "DataStore returned an error" +msgstr "DataStorek akats bat bidali du" + +#: ckanext/reclineview/theme/public/recline_view.js:79 +#: ckanext/reclineview/theme/public/recline_view.min.js:5 +msgid "DataProxy returned an error" +msgstr "DataProxyk akats bat bidali du" + +#: ckanext/reclineview/theme/public/recline_view.js:193 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Grid" +msgstr "Taula" + +#: ckan/templates/package/snippets/view_form_filters.html:46 +#: ckanext/reclineview/theme/public/recline_view.js:215 +#: ckanext/reclineview/theme/public/recline_view.min.js:14 +msgid "Filters" +msgstr "Iragazkiak" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:3 +#: ckanext/reclineview/theme/templates/recline_map_form.html:3 +msgid "Row offset" +msgstr "Lerroko desplazamendua" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:3 +#: ckanext/reclineview/theme/templates/recline_map_form.html:3 +msgid "eg: 0" +msgstr "adibidez: 0" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:4 +#: ckanext/reclineview/theme/templates/recline_map_form.html:4 +msgid "Number of rows" +msgstr "Lerro kopurua" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:4 +#: ckanext/reclineview/theme/templates/recline_map_form.html:4 +msgid "eg: 100" +msgstr "adibidez: 100" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:6 +msgid "Graph type" +msgstr "Grafiko mota" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:7 +msgid "Group (Axis 1)" +msgstr "(1. ardatza) taldea" + +#: ckanext/reclineview/theme/templates/recline_graph_form.html:8 +msgid "Series (Axis 2)" +msgstr "Serieak (2 ardatza)" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:6 +msgid "Field type" +msgstr "Eremu mota" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:7 +msgid "Latitude field" +msgstr "Latitude eremua" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:8 +msgid "Longitude field" +msgstr "Luzera eremua" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:9 +msgid "GeoJSON field" +msgstr "GeoJSON eremua" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:10 +msgid "Auto zoom to features" +msgstr "Ezaugarriei auto hurbildu" + +#: ckanext/reclineview/theme/templates/recline_map_form.html:11 +msgid "Cluster markers" +msgstr "Kluster markagailuak" + +#: ckanext/stats/templates/ckanext/stats/index.html:10 +msgid "Total number of Datasets" +msgstr "Osotara zenbateko datu multzo" + +#: ckanext/stats/templates/ckanext/stats/index.html:17 +#: ckanext/stats/templates/ckanext/stats/index.html:40 +msgid "Date" +msgstr "Data" + +#: ckanext/stats/templates/ckanext/stats/index.html:18 +msgid "Total datasets" +msgstr "Datu multzoak osotara" + +#: ckanext/stats/templates/ckanext/stats/index.html:33 +#: ckanext/stats/templates/ckanext/stats/index.html:179 +msgid "Dataset Revisions per Week" +msgstr "Datu multzoen bertsioak asteka" + +#: ckanext/stats/templates/ckanext/stats/index.html:41 +msgid "All dataset revisions" +msgstr "Datu multzoen bertsio guztiak" + +#: ckanext/stats/templates/ckanext/stats/index.html:42 +msgid "New datasets" +msgstr "Datu multzo berriak" + +#: ckanext/stats/templates/ckanext/stats/index.html:58 +#: ckanext/stats/templates/ckanext/stats/index.html:180 +msgid "Top Rated Datasets" +msgstr "Ongien baloratutako datu multzoak" + +#: ckanext/stats/templates/ckanext/stats/index.html:64 +msgid "Average rating" +msgstr "Batez besteko balorazioa" + +#: ckanext/stats/templates/ckanext/stats/index.html:65 +msgid "Number of ratings" +msgstr "Balorazio kopurua" + +#: ckanext/stats/templates/ckanext/stats/index.html:79 +msgid "No ratings" +msgstr "Ez dago baloraziorik" + +#: ckanext/stats/templates/ckanext/stats/index.html:84 +#: ckanext/stats/templates/ckanext/stats/index.html:181 +msgid "Most Edited Datasets" +msgstr "Gehien editatutako datu multzoak" + +#: ckan/logic/converters.py:148 ckan/logic/validators.py:151 +#: ckan/logic/validators.py:193 ckan/templates/package/read_base.html:19 +#: ckan/tests/config/test_middleware.py:619 +#: ckanext/stats/templates/ckanext/stats/index.html:89 +msgid "Dataset" +msgstr "Datu multzoa" + +#: ckanext/stats/templates/ckanext/stats/index.html:90 +msgid "Number of edits" +msgstr "Aldaketa kopurua" + +#: ckanext/stats/templates/ckanext/stats/index.html:103 +msgid "No edited datasets" +msgstr "Ez dira editatutako datu multzorik existitzen" + +#: ckanext/stats/templates/ckanext/stats/index.html:108 +#: ckanext/stats/templates/ckanext/stats/index.html:182 +msgid "Largest Groups" +msgstr "Talde haundienak" + +#: ckan/logic/converters.py:173 ckan/logic/validators.py:246 +#: ckanext/stats/templates/ckanext/stats/index.html:113 +msgid "Group" +msgstr "Taldea" + +#: ckanext/stats/templates/ckanext/stats/index.html:114 +msgid "Number of datasets" +msgstr "Datu multzo kopurua" + +#: ckanext/stats/templates/ckanext/stats/index.html:127 +msgid "No groups" +msgstr "Ez dita talderik existitzen" + +#: ckanext/stats/templates/ckanext/stats/index.html:132 +#: ckanext/stats/templates/ckanext/stats/index.html:183 +msgid "Top Tags" +msgstr "Etiketa gogokoenak" + +#: ckanext/stats/templates/ckanext/stats/index.html:136 +msgid "Tag Name" +msgstr "Etiketaren izena" + +#: ckanext/stats/templates/ckanext/stats/index.html:137 +#: ckanext/stats/templates/ckanext/stats/index.html:157 +msgid "Number of Datasets" +msgstr "Datu multzo kopurua" + +#: ckanext/stats/templates/ckanext/stats/index.html:152 +#: ckanext/stats/templates/ckanext/stats/index.html:184 +msgid "Users Creating Most Datasets" +msgstr "Datu-multzo gehiago sortu duten erabiltzaileak" + +#: ckan/logic/converters.py:123 ckan/logic/validators.py:216 +#: ckan/logic/validators.py:233 ckan/logic/validators.py:714 +#: ckan/templates/group/members.html:14 +#: ckan/templates/organization/members.html:19 +#: ckanext/stats/templates/ckanext/stats/index.html:156 +msgid "User" +msgstr "Erabiltzailea" + +#: ckanext/stats/templates/ckanext/stats/index.html:175 +msgid "Statistics Menu" +msgstr "Estatistika menua" + +#: ckanext/stats/templates/ckanext/stats/index.html:178 +msgid "Total Number of Datasets" +msgstr "Datu multzoen kopurua osotara" + +#: ckanext/textview/plugin.py:67 ckanext/textview/plugin.py:69 +msgid "Text" +msgstr "Testua" + +#: ckanext/webpageview/plugin.py:22 ckanext/webpageview/plugin.py:27 +msgid "Website" +msgstr "Web gunea" + +#: ckanext/webpageview/theme/templates/webpage_form.html:3 +msgid "Web Page url" +msgstr "Web orriaren Url-a" + +#: ckanext/webpageview/theme/templates/webpage_form.html:3 +msgid "eg. http://example.com (if blank uses resource url)" +msgstr "" +"adibidez: http://adibidea.com (ituak baliabidearen url-a erabiltzen badu)" + +#: ckan/templates/dataviewer/snippets/data_preview.html:23 +#: ckan/templates/package/snippets/resource_view.html:64 +#: ckanext/webpageview/theme/templates/webpage_view.html:2 +msgid "Your browser does not support iframes." +msgstr "Zure nabigatzaileak ez du IFRAMES onartzen." + +#: ckan/authz.py:207 +#, python-format +msgid "Authorization function not found: %s" +msgstr "Baimen funtzioa ez da aurkitzen: %s" + +#: ckan/authz.py:219 ckan/templates/header.html:11 +msgid "Admin" +msgstr "Administratzailea" + +#: ckan/authz.py:223 +msgid "Editor" +msgstr "Argitaratzailea" + +#: ckan/authz.py:227 +msgid "Member" +msgstr "Kidea" + +#: ckan/controllers/admin.py:34 ckan/views/admin.py:76 +msgid "Need to be system administrator to administer" +msgstr "Sistema administratzailea izatea beharrezkoa da kudeatzeko" + +#: ckan/controllers/admin.py:50 ckan/templates/admin/config.html:14 +msgid "Site Title" +msgstr "Tokiko izena" + +#: ckan/controllers/admin.py:51 ckan/templates/admin/config.html:16 +msgid "Style" +msgstr "Modua, estiloa, tankera, mota" + +#: ckan/controllers/admin.py:52 ckan/templates/admin/config.html:18 +msgid "Site Tag Line" +msgstr "Tokiko leloa" + +#: ckan/controllers/admin.py:53 +msgid "Site Tag Logo" +msgstr "Tokiko logoaren etiketa" + +#: ckan/controllers/admin.py:55 ckan/templates/admin/config.html:25 +#: ckan/templates/group/about.html:3 ckan/templates/group/read_base.html:19 +#: ckan/templates/header.html:88 ckan/templates/home/about.html:3 +#: ckan/templates/home/about.html:6 ckan/templates/home/about.html:16 +#: ckan/templates/organization/about.html:3 +#: ckan/templates/organization/read_base.html:19 +#: ckan/templates/user/edit_user_form.html:14 +msgid "About" +msgstr "Buruz" + +#: ckan/controllers/admin.py:55 ckan/templates/admin/config.html:25 +msgid "About page text" +msgstr "Buruz orrialdeko testua" + +#: ckan/controllers/admin.py:56 ckan/templates/admin/config.html:27 +msgid "Intro Text" +msgstr "Sarrera testua" + +#: ckan/controllers/admin.py:56 ckan/templates/admin/config.html:27 +msgid "Text on home page" +msgstr "Testua hasierako orrialdean" + +#: ckan/controllers/admin.py:57 ckan/templates/admin/config.html:29 +msgid "Custom CSS" +msgstr "CSS pertsonalizatuta" + +#: ckan/controllers/admin.py:57 ckan/templates/admin/config.html:29 +msgid "Customisable css inserted into the page header" +msgstr "" +"orriaren goiburuan txertatutako pertsonalizatu ahal den css moduko orria" + +#: ckan/controllers/admin.py:58 ckan/templates/admin/config.html:31 +msgid "Homepage" +msgstr "Hasiera orria" + +#: ckan/controllers/admin.py:161 ckan/views/admin.py:175 +#, python-format +msgid "" +"Cannot purge package %s as associated revision %s includes non-deleted " +"packages %s" +msgstr "" +"Ezin da %s paketea purgatu berrikuste elkartuak ezabatu gabeko datu %s " +"paketeak barne dituelako %s" + +#: ckan/controllers/admin.py:183 ckan/views/admin.py:197 +#, python-format +msgid "Problem purging revision %s: %s" +msgstr "Arazoa berrikustea purgatzeko momentuan %s: %s" + +#: ckan/controllers/admin.py:185 ckan/views/admin.py:199 +msgid "Purge complete" +msgstr "Purga amaitua" + +#: ckan/controllers/admin.py:187 ckan/views/admin.py:201 +msgid "Action not implemented." +msgstr "Inplementatu gabeko ekintza" + +#: ckan/controllers/api.py:127 ckan/controllers/api.py:218 +#: ckan/views/api.py:112 ckan/views/api.py:299 +msgid "Access denied" +msgstr "Sarrera ukatua" + +#: ckan/controllers/api.py:133 ckan/controllers/api.py:227 +#: ckan/logic/action/create.py:911 ckan/logic/converters.py:123 +#: ckan/logic/converters.py:148 ckan/logic/converters.py:173 +#: ckan/logic/validators.py:151 ckan/logic/validators.py:172 +#: ckan/logic/validators.py:193 ckan/logic/validators.py:202 +#: ckan/logic/validators.py:216 ckan/logic/validators.py:233 +#: ckan/logic/validators.py:246 ckan/logic/validators.py:270 +#: ckan/logic/validators.py:714 ckan/views/api.py:119 ckan/views/api.py:308 +msgid "Not found" +msgstr "Ez da aurkitu" + +#: ckan/controllers/api.py:139 ckan/views/api.py:126 +msgid "Bad request" +msgstr "Okerreko eskaera" + +#: ckan/controllers/api.py:167 +#, python-format +msgid "Action name not known: %s" +msgstr "Ekintzaren izen ezezaguna: %s" + +#: ckan/controllers/api.py:188 ckan/views/api.py:268 +#, python-format +msgid "JSON Error: %s" +msgstr "JSON akatsa: %s" + +#: ckan/controllers/api.py:194 ckan/views/api.py:274 +#, python-format +msgid "Bad request data: %s" +msgstr "Datuen eskaera okerra: %s" + +#: ckan/controllers/api.py:283 +msgid "No revision specified" +msgstr "Ez dago zehaztutako berrikusterik" + +#: ckan/controllers/api.py:287 +#, python-format +msgid "There is no revision with id: %s" +msgstr "Ez dago berrikusterik id-rekin: %s" + +#: ckan/controllers/api.py:297 +msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" +msgstr "" +"Bilaketa baldintza falta da ('since_id=UUID' o 'since_time=TIMESTAMP')" + +#: ckan/controllers/api.py:309 +#, python-format +msgid "Could not read parameters: %r" +msgstr "Ezin dira parametroak irakurri: %r" + +#: ckan/controllers/api.py:370 +#, python-format +msgid "Bad search option: %s" +msgstr "Okerreko bilaketa aukera: %s" + +#: ckan/controllers/api.py:373 +#, python-format +msgid "Unknown register: %s" +msgstr "Erregistro ezezaguna: %s" + +#: ckan/controllers/api.py:382 +#, python-format +msgid "Malformed qjson value: %r" +msgstr "Qjson balore gaizkiosatua : %r" + +#: ckan/controllers/api.py:392 +msgid "Request params must be in form of a json encoded dictionary." +msgstr "Eskatutako parametroak json kodigodun hiztegi moduan egon behar dute." + +#: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 +#: ckan/controllers/group.py:226 ckan/controllers/group.py:394 +#: ckan/controllers/group.py:504 ckan/controllers/group.py:537 +#: ckan/controllers/group.py:567 ckan/controllers/group.py:578 +#: ckan/controllers/group.py:632 ckan/controllers/group.py:653 +#: ckan/controllers/group.py:714 ckan/controllers/group.py:746 +#: ckan/controllers/group.py:779 ckan/controllers/group.py:836 +#: ckan/controllers/group.py:933 ckan/controllers/package.py:1265 +#: ckan/controllers/package.py:1280 ckan/logic/action/create.py:1373 +#: ckan/views/feed.py:143 +msgid "Group not found" +msgstr "Taldea ez da aurkitu" + +#: ckan/controllers/feed.py:245 ckan/logic/action/create.py:1373 +#: ckan/views/feed.py:160 +msgid "Organization not found" +msgstr "Erakundea ez da aurkitu." + +#: ckan/controllers/group.py:130 ckan/controllers/group.py:581 +msgid "Incorrect group type" +msgstr "Okerreko talde mota " + +#: ckan/controllers/group.py:306 ckan/controllers/home.py:61 +#: ckan/controllers/package.py:256 ckan/lib/helpers.py:1036 +#: ckan/templates/header.html:87 ckan/templates/organization/edit_base.html:5 +#: ckan/templates/organization/edit_base.html:8 +#: ckan/templates/organization/index.html:3 +#: ckan/templates/organization/index.html:6 +#: ckan/templates/organization/index.html:18 +#: ckan/templates/organization/read_base.html:3 +#: ckan/templates/organization/read_base.html:6 +#: ckan/templates/package/base.html:14 ckan/views/home.py:46 +msgid "Organizations" +msgstr "Erakundeak" + +#: ckan/controllers/group.py:307 ckan/controllers/home.py:62 +#: ckan/controllers/package.py:257 ckan/lib/helpers.py:1037 +#: ckan/templates/group/base_form_page.html:6 ckan/templates/group/edit.html:4 +#: ckan/templates/group/edit_base.html:3 ckan/templates/group/edit_base.html:8 +#: ckan/templates/group/index.html:3 ckan/templates/group/index.html:6 +#: ckan/templates/group/index.html:18 ckan/templates/group/members.html:3 +#: ckan/templates/group/read_base.html:3 ckan/templates/group/read_base.html:6 +#: ckan/templates/header.html:88 ckan/templates/package/group_list.html:5 +#: ckan/templates/package/read_base.html:20 +#: ckan/templates/revision/diff.html:16 ckan/templates/revision/read.html:84 +#: ckan/tests/config/test_middleware.py:632 ckan/views/home.py:47 +msgid "Groups" +msgstr "Taldeak" + +#: ckan/controllers/group.py:308 ckan/controllers/home.py:63 +#: ckan/controllers/package.py:258 ckan/lib/helpers.py:1038 +#: ckan/logic/__init__.py:110 +#: ckan/templates/package/snippets/package_basic_fields.html:24 +#: ckan/templates/snippets/context/dataset.html:17 +#: ckan/templates/tag/index.html:3 ckan/templates/tag/index.html:6 +#: ckan/templates/tag/index.html:12 ckan/views/home.py:48 +msgid "Tags" +msgstr "Etiketak" + +#: ckan/controllers/group.py:309 ckan/controllers/home.py:64 +#: ckan/controllers/package.py:259 ckan/lib/helpers.py:1039 +#: ckan/views/home.py:49 +msgid "Formats" +msgstr "Formatuak" + +#: ckan/controllers/group.py:310 ckan/controllers/home.py:65 +#: ckan/controllers/package.py:260 ckan/lib/helpers.py:1040 +#: ckan/views/home.py:50 +msgid "Licenses" +msgstr "Baimenak" + +#: ckan/controllers/group.py:396 ckan/controllers/group.py:513 +#: ckan/controllers/package.py:345 ckan/controllers/package.py:576 +#: ckan/controllers/package.py:789 ckan/controllers/package.py:1409 +#: ckan/controllers/package.py:1443 +#, python-format +msgid "User %r not authorized to edit %s" +msgstr "%r erabiltzaileak ez du editatzeko baimenik %s" + +#: ckan/controllers/group.py:443 +msgid "Not authorized to perform bulk update" +msgstr "Baimenik gabe berritze masiboa burutzeko " + +#: ckan/controllers/group.py:461 +msgid "Unauthorized to create a group" +msgstr "Ez duzu taldeak sortzeko baimenik" + +#: ckan/controllers/group.py:539 ckan/controllers/group.py:569 +#: ckan/controllers/package.py:944 ckan/controllers/package.py:992 +#: ckan/controllers/user.py:250 ckan/controllers/user.py:380 +#: ckan/controllers/user.py:551 ckan/views/user.py:193 ckan/views/user.py:300 +#: ckan/views/user.py:620 +msgid "Integrity Error" +msgstr "Segurtasun akatsa" + +#: ckan/controllers/group.py:595 +#, python-format +msgid "User %r not authorized to edit %s authorizations" +msgstr "%r erabiltzaileak ez du %s baimenak editatzeko baimenik" + +#: ckan/controllers/group.py:615 ckan/controllers/group.py:630 +#, python-format +msgid "Unauthorized to delete group %s" +msgstr "Ez duzu taldea %s ezabatzeko baimenik" + +#: ckan/controllers/group.py:621 +msgid "Organization has been deleted." +msgstr "Erakundea ezabatu egin da" + +#: ckan/controllers/group.py:623 +msgid "Group has been deleted." +msgstr "Taldea ezabatu egin da" + +#: ckan/controllers/group.py:625 +#, python-format +msgid "%s has been deleted." +msgstr "%s ezabatu egin da" + +#: ckan/controllers/group.py:657 +#, python-format +msgid "User %r not authorized to edit members of %s" +msgstr "%r erabiltzaileak ez dauka baimenik %s editatzeko" + +#: ckan/controllers/group.py:670 +#, python-format +msgid "Unauthorized to create group %s members" +msgstr "" + +#: ckan/controllers/group.py:712 +#, python-format +msgid "Unauthorized to add member to group %s" +msgstr "Ez duzu %s taldean kideak sartzeko baimenik" + +#: ckan/controllers/group.py:731 ckan/controllers/group.py:744 +#, python-format +msgid "Unauthorized to delete group %s members" +msgstr "Ez duzu %s taldetik kideak ezabatzeko baimenik" + +#: ckan/controllers/group.py:738 +msgid "Group member has been deleted." +msgstr "Taldeko kidea ezabatu egin da" + +#: ckan/controllers/group.py:762 ckan/controllers/package.py:436 +msgid "Select two revisions before doing the comparison." +msgstr "Konparaketa egin aurretik bi berrikuste aukeratu" + +#: ckan/controllers/group.py:786 +msgid "CKAN Group Revision History" +msgstr "Berrikuste historia CKAN taldea" + +#: ckan/controllers/group.py:790 +msgid "Recent changes to CKAN Group: " +msgstr "Aldaketa egin berriak CKAN Taldean:" + +#: ckan/controllers/group.py:811 ckan/controllers/package.py:487 +msgid "Log message: " +msgstr "Log mezua:" + +#: ckan/controllers/group.py:861 ckan/controllers/package.py:1193 +#: ckan/controllers/user.py:719 ckan/views/user.py:650 +msgid "You are now following {0}" +msgstr "{0} jarraitzen zaude" + +#: ckan/controllers/group.py:881 ckan/controllers/package.py:1212 +#: ckan/controllers/user.py:739 ckan/views/user.py:672 +msgid "You are no longer following {0}" +msgstr "Dagoeneko ez zaude {0} jarraitzen" + +#: ckan/controllers/group.py:901 ckan/controllers/user.py:584 +#: ckan/views/user.py:697 +#, python-format +msgid "Unauthorized to view followers %s" +msgstr "Ez duzu %s jarraitzaileak ikusteko baimenik" + +#: ckan/controllers/home.py:35 +msgid "This site is currently off-line. Database is not initialised." +msgstr "Gaur egun toki hau lineaz kampo dago. Datu basea ez dago hasieratua." + +#: ckan/controllers/home.py:73 ckan/views/home.py:58 +#, python-format +msgid "Please update your profile and add your email address. " +msgstr "" +"Mesedez eguneratu zure profila eta helbide elektronikoa." + +#: ckan/controllers/home.py:75 ckan/views/home.py:60 +#, python-format +msgid "%s uses your email address if you need to reset your password." +msgstr "" +"%s erabili zure posta elektronikoa zure pasahitza berreskuratu behar baduzu" + +#: ckan/controllers/package.py:304 +msgid "Invalid search query: {error_message}" +msgstr "Bilaketa ez da zuzena: {error_message}" + +#: ckan/controllers/package.py:323 +msgid "Parameter \"{parameter_name}\" is not an integer" +msgstr "Parametroa \"{parameter_name}\" ez da zenbaki oso bat" + +#: ckan/controllers/package.py:343 ckan/controllers/package.py:351 +#: ckan/controllers/package.py:389 ckan/controllers/package.py:456 +#: ckan/controllers/package.py:775 ckan/controllers/package.py:823 +#: ckan/controllers/package.py:841 ckan/controllers/package.py:942 +#: ckan/controllers/package.py:990 ckan/controllers/package.py:1042 +#: ckan/controllers/package.py:1089 ckan/controllers/package.py:1237 +#: ckan/controllers/package.py:1253 ckan/controllers/package.py:1316 +#: ckan/controllers/package.py:1415 ckan/controllers/package.py:1450 +#: ckan/controllers/package.py:1557 +msgid "Dataset not found" +msgstr "Ez da datu-multzoa aurkitu" + +#: ckan/controllers/package.py:377 ckan/controllers/package.py:379 +#: ckan/controllers/package.py:381 +#, python-format +msgid "Invalid revision format: %r" +msgstr "Berrikuste formatua ez du balio :%r" + +#: ckan/controllers/package.py:415 +msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." +msgstr "" +"{package_type} datu multzoak ikusi {format} formatuan ez da jasangarria " +"({file} fitxategia ez da aurkitu)." + +#: ckan/controllers/package.py:454 ckan/controllers/package.py:839 +#: ckan/controllers/package.py:940 ckan/controllers/package.py:988 +#: ckan/controllers/package.py:1239 +#, python-format +msgid "Unauthorized to read package %s" +msgstr "Ez duzu %s paketea irakurtzeko baimenik" + +#: ckan/controllers/package.py:463 +msgid "CKAN Dataset Revision History" +msgstr "CKAN datu multzoaren berrikuste historiala" + +#: ckan/controllers/package.py:466 +msgid "Recent changes to CKAN Dataset: " +msgstr "Aldaketa egin berriak CKAN datu multzoan" + +#: ckan/controllers/package.py:522 +msgid "Unauthorized to create a package" +msgstr "Ez dago paketea irakurtzeko baimenduta" + +#: ckan/controllers/package.py:598 +msgid "Unauthorized to edit this resource" +msgstr "Ez dago baliabide hau editatzeko baimenduta" + +#: ckan/controllers/package.py:666 +msgid "Unauthorized to update dataset" +msgstr "Ez duzu datu multzoak eguneratzeko baimenik" + +#: ckan/controllers/package.py:668 ckan/controllers/package.py:705 +#: ckan/controllers/package.py:731 +msgid "The dataset {id} could not be found." +msgstr "{id} datu multzoa ezin izan da aurkitu" + +#: ckan/controllers/package.py:672 +msgid "You must add at least one data resource" +msgstr "Gutxienez datu baliabide bat gehitu behar da" + +#: ckan/controllers/package.py:703 +msgid "Unauthorized to create a resource" +msgstr "Ez dago baliabide bat sortzeko baimenduta" + +#: ckan/controllers/package.py:736 +msgid "Unauthorized to create a resource for this package" +msgstr "Ez dago pakete honentzako baliabide bat sortzeko baimenduta" + +#: ckan/controllers/package.py:950 +msgid "Unable to add package to search index." +msgstr "Ezin da da paketea bilaketa aurkibidera gehitu" + +#: ckan/controllers/package.py:998 +msgid "Unable to update search index." +msgstr "Ezin da bilaketa aurkibidea eguneratu" + +#: ckan/controllers/package.py:1035 +msgid "Dataset has been deleted." +msgstr "Datu multzoa ezabatu da" + +#: ckan/controllers/package.py:1040 ckan/controllers/package.py:1058 +#, python-format +msgid "Unauthorized to delete package %s" +msgstr "Ez dago %s paketea ezabatzeko baimenduta" + +#: ckan/controllers/package.py:1063 +msgid "Resource has been deleted." +msgstr "Baliabidea ezabatu egin da" + +#: ckan/controllers/package.py:1074 +#, python-format +msgid "Unauthorized to delete resource %s" +msgstr "Ez dago %s baliabidea ezabatzeko baimenduta" + +#: ckan/controllers/package.py:1133 ckan/controllers/package.py:1576 +msgid "Resource view not found" +msgstr "Baliabide bista ez da aurkitu" + +#: ckan/controllers/package.py:1172 +msgid "Resource data not found" +msgstr "Baliabidearen datuak ez dira aurkitu" + +#: ckan/controllers/package.py:1181 +msgid "No download is available" +msgstr "Ez dago deskarga erabilgarririk" + +#: ckan/controllers/package.py:1318 +#, python-format +msgid "Unauthorized to read dataset %s" +msgstr "Ez duzu %s datu multzoa irakurtzeko baimenik" + +#: ckan/controllers/package.py:1426 +#, python-format +msgid "Unauthorized to read resource %s" +msgstr "Ez dago %s baliabidea irakurtzeko baimenduta" + +#: ckan/controllers/package.py:1490 +msgid "Unauthorized to edit resource" +msgstr "Ez dago baliabidea editatzeko baimenduta" + +#: ckan/controllers/package.py:1508 +msgid "View not found" +msgstr "Bista ez da aurkitu" + +#: ckan/controllers/package.py:1514 +msgid "View Type Not found" +msgstr "Bista mota ez da aurkitu" + +#: ckan/controllers/package.py:1570 +msgid "Bad resource view data" +msgstr "Baliabideare bista datuak es dira egokiak" + +#: ckan/controllers/package.py:1579 +msgid "Resource view not supplied" +msgstr "Baliabideen ikuspegia ezin da eman" + +#: ckan/controllers/package.py:1608 +msgid "No preview has been defined." +msgstr "Aurreikuspena ez da zehaztu" + +#: ckan/controllers/revision.py:45 +msgid "CKAN Repository Revision History" +msgstr "CKAN rbiltegiaren berrikusteen historiala" + +#: ckan/controllers/revision.py:47 +msgid "Recent changes to the CKAN repository." +msgstr "Aldaketa berriak CKAN biltegian" + +#: ckan/controllers/revision.py:111 +#, python-format +msgid "Datasets affected: %s.\n" +msgstr "Kaltetutako datu multzoa: %s.\n" + +#: ckan/controllers/revision.py:191 +msgid "Revision updated" +msgstr "Berrikustea eguneratua" + +#: ckan/controllers/tag.py:60 +msgid "Other" +msgstr "Beste bat" + +#: ckan/controllers/tag.py:74 +msgid "Tag not found" +msgstr "Etiketa ez da aurkitu" + +#: ckan/controllers/user.py:162 ckan/views/user.py:290 +msgid "Unauthorized to register as a user." +msgstr "Ez duzu erabiltzaile bat erregistratzeko baimenik" + +#: ckan/controllers/user.py:180 +msgid "Unauthorized to create a user" +msgstr "Ez duzu erabiltzaile bat erregistratzeko baimenik" + +#: ckan/controllers/user.py:211 ckan/views/user.py:426 +msgid "Unauthorized to delete user with id \"{user_id}\"." +msgstr "Ez zaude baimenduta \"{user_id}\" id duen erabiltzailea ezabatzeko" + +#: ckan/controllers/user.py:225 ckan/controllers/user.py:288 +#: ckan/views/user.py:168 ckan/views/user.py:444 +msgid "No user specified" +msgstr "Ez da erabiltzailerik zehaztu" + +#: ckan/controllers/user.py:231 ckan/controllers/user.py:313 +#: ckan/controllers/user.py:376 ckan/controllers/user.py:547 +#: ckan/views/user.py:218 ckan/views/user.py:246 ckan/views/user.py:450 +#: ckan/views/user.py:616 +#, python-format +msgid "Unauthorized to edit user %s" +msgstr "Ez duzu %s erabiltzailea editatzeko baimenik" + +#: ckan/controllers/user.py:233 ckan/controllers/user.py:248 +#: ckan/controllers/user.py:315 ckan/controllers/user.py:378 +#: ckan/controllers/user.py:523 ckan/controllers/user.py:549 +#: ckan/logic/auth/update.py:179 ckan/views/user.py:220 ckan/views/user.py:248 +#: ckan/views/user.py:315 ckan/views/user.py:452 ckan/views/user.py:573 +#: ckan/views/user.py:618 +msgid "User not found" +msgstr "Erabiltzailea ez da aurkitu" + +#: ckan/controllers/user.py:235 ckan/controllers/user.py:368 +#: ckan/views/user.py:226 ckan/views/user.py:454 +msgid "Profile updated" +msgstr "Profil eguneratuta" + +#: ckan/controllers/user.py:246 ckan/views/user.py:313 +#, python-format +msgid "Unauthorized to create user %s" +msgstr "Ez duzu %s erabiltzailea sortzeko baimenik" + +#: ckan/controllers/user.py:252 ckan/views/user.py:306 +msgid "Bad Captcha. Please try again." +msgstr "Captcha okerra. Mesedez, berriz saiatu." + +#: ckan/controllers/user.py:266 ckan/views/user.py:325 +#, python-format +msgid "" +"User \"%s\" is now registered but you are still logged in as \"%s\" from " +"before" +msgstr "" +"\"%s\" erabiltzailea erregistratu egin da, baina sesioa \"%s\" bezala duzu " +"irekita oraindik" + +#: ckan/controllers/user.py:294 ckan/views/user.py:174 +msgid "Unauthorized to edit a user." +msgstr "Ez duzu erabiltzaile bat editatzeko baimenik" + +#: ckan/controllers/user.py:321 ckan/views/user.py:252 +#, python-format +msgid "User %s not authorized to edit %s" +msgstr "%s erabiltzaileak ez du baimenik %s editatzeko" + +#: ckan/controllers/user.py:386 ckan/views/user.py:210 +msgid "Password entered was incorrect" +msgstr "Sartutako pasahitza ez da zuzena" + +#: ckan/controllers/user.py:387 ckan/templates/user/edit_user_form.html:29 +#: ckan/views/user.py:212 +msgid "Old Password" +msgstr "Aurreko pasahitza" + +#: ckan/controllers/user.py:387 ckan/views/user.py:212 +msgid "incorrect password" +msgstr "okerreko pasahitza" + +#: ckan/controllers/user.py:427 ckan/views/user.py:386 +msgid "Login failed. Bad username or password." +msgstr "Ezin izan da saioa hasi. Erabiltzaile izena edo pasahitza okerra." + +#: ckan/controllers/user.py:460 ckan/views/user.py:504 +msgid "Unauthorized to request reset password." +msgstr "Ez duzu kodea reseteatzeko eskaera egiteko baimenik." + +#: ckan/controllers/user.py:489 ckan/views/user.py:530 +#, python-format +msgid "\"%s\" matched several users" +msgstr "\"%s\" hainbat erabiltzailerekin bat egiten du" + +#: ckan/controllers/user.py:491 ckan/controllers/user.py:493 +#: ckan/views/user.py:532 ckan/views/user.py:534 +#, python-format +msgid "No such user: %s" +msgstr "Erabiltzailea ez da existitzen: %s" + +#: ckan/controllers/user.py:498 ckan/views/user.py:542 +msgid "Please check your inbox for a reset code." +msgstr "Mesedez berrikusi zure sarrera-ontzia berrezarpen-kodearentzako" + +#: ckan/controllers/user.py:502 ckan/views/user.py:546 +#, python-format +msgid "Could not send reset link: %s" +msgstr "Ezin izan da berrezarpen lotura bidali: %s" + +#: ckan/controllers/user.py:515 ckan/views/user.py:568 +msgid "Unauthorized to reset password." +msgstr "Ez duzu kodea reseteatzeko baimenik" + +#: ckan/controllers/user.py:527 ckan/views/user.py:577 +msgid "Invalid reset key. Please try again." +msgstr "Berrezarpen kodea baliogabeoa. Mesedez, berriz saiatu." + +#: ckan/controllers/user.py:544 ckan/views/user.py:613 +msgid "Your password has been reset." +msgstr "Zure pasahitza berrezarri da." + +#: ckan/controllers/user.py:566 +msgid "Your password must be 4 characters or longer." +msgstr "Zure pasahitzak 4 karaktere edo gehiago izan behar ditu." + +#: ckan/controllers/user.py:569 ckan/views/user.py:592 +msgid "The passwords you entered do not match." +msgstr "Idatzitako pasahitzak ez dira berdinak." + +#: ckan/controllers/user.py:572 ckan/views/user.py:595 +msgid "You must provide a password" +msgstr "Pasahitz bat eman behar duzu" + +#: ckan/controllers/user.py:640 ckan/views/dashboard.py:58 +msgid "Follow item not found" +msgstr "Hurrengo elementua ez da aurkitu" + +#: ckan/controllers/user.py:644 ckan/views/dashboard.py:62 +msgid "{0} not found" +msgstr "{0} ez da aurkitu" + +#: ckan/controllers/user.py:658 ckan/views/dashboard.py:76 +msgid "Everything" +msgstr "Guztia / dena" + +#: ckan/controllers/util.py:18 ckan/logic/action/__init__.py:62 +msgid "Missing Value" +msgstr "Balorea falta da" + +#: ckan/controllers/util.py:23 +msgid "Redirecting to external site is not allowed." +msgstr "Kanpoko gunera ezin da berbideratu" + +#: ckan/lib/activity_streams.py:60 +msgid "{actor} added the tag {tag} to the dataset {dataset}" +msgstr " {actor} ek {tag} etiketa gehitu du {dataset} datu multzoan" + +#: ckan/lib/activity_streams.py:63 +msgid "{actor} updated the group {group}" +msgstr "{actor} -k {group} taldea eguneratu du " + +#: ckan/lib/activity_streams.py:66 +msgid "{actor} updated the organization {organization}" +msgstr "{actor} -k {organization} erakundea eguneratu du" + +#: ckan/lib/activity_streams.py:69 +msgid "{actor} updated the dataset {dataset}" +msgstr "{actor} -k {dataset} datu multzoa eguneratu du" + +#: ckan/lib/activity_streams.py:72 +msgid "{actor} changed the extra {extra} of the dataset {dataset}" +msgstr "{actor} -k {dataset} datu multzoaren {extra} estrak eguneratu ditu" + +#: ckan/lib/activity_streams.py:75 +msgid "{actor} updated the resource {resource} in the dataset {dataset}" +msgstr "" +"{actor} -k {dataset} datu multzoaren {resource} baliabidea eguneratu du" + +#: ckan/lib/activity_streams.py:78 +msgid "{actor} updated their profile" +msgstr "{actor} -ek profila eguneratu du" + +#: ckan/lib/activity_streams.py:81 +msgid "{actor} deleted the group {group}" +msgstr "{actor} -k {group} taldea ezabatu du " + +#: ckan/lib/activity_streams.py:84 +msgid "{actor} deleted the organization {organization}" +msgstr "{actor} -k {organization} erakundea ezabatu du " + +#: ckan/lib/activity_streams.py:87 +msgid "{actor} deleted the dataset {dataset}" +msgstr "{actor} -k {dataset} datu multzoa ezabatu du " + +#: ckan/lib/activity_streams.py:90 +msgid "{actor} deleted the extra {extra} from the dataset {dataset}" +msgstr "{actor} -k {dataset} datu multzoaren {extra} estra ezabatu du " + +#: ckan/lib/activity_streams.py:93 +msgid "{actor} deleted the resource {resource} from the dataset {dataset}" +msgstr "" +"{actor} -k {dataset} datu multzoaren {resource} baliabidea ezabatu du " + +#: ckan/lib/activity_streams.py:97 +msgid "{actor} created the group {group}" +msgstr "{actor} -k {group} taldea sortu du " + +#: ckan/lib/activity_streams.py:100 +msgid "{actor} created the organization {organization}" +msgstr "{actor} -k {organization} erakundea sortu du" + +#: ckan/lib/activity_streams.py:103 +msgid "{actor} created the dataset {dataset}" +msgstr "{actor} -k {dataset} datu multzoa sortu du " + +#: ckan/lib/activity_streams.py:106 +msgid "{actor} added the extra {extra} to the dataset {dataset}" +msgstr "{actor} -k {extra} estra gehitu dio {dataset} datu multzoari " + +#: ckan/lib/activity_streams.py:109 +msgid "{actor} added the resource {resource} to the dataset {dataset}" +msgstr "{actor} -k {resource} baliabidea gehitu dio {dataset} datu multzoari " + +#: ckan/lib/activity_streams.py:112 +msgid "{actor} signed up" +msgstr "{actor} erregistratu egin da" + +#: ckan/lib/activity_streams.py:115 +msgid "{actor} removed the tag {tag} from the dataset {dataset}" +msgstr "{actor} -k {dataset} datu multzoaren {tag} etiketa ezabatu du" + +#: ckan/lib/activity_streams.py:118 +msgid "{actor} started following {dataset}" +msgstr "{actor} {dataset} segitzen hasi da" + +#: ckan/lib/activity_streams.py:121 +msgid "{actor} started following {user}" +msgstr "{actor} {user} segitzen hasi da" + +#: ckan/lib/activity_streams.py:124 +msgid "{actor} started following {group}" +msgstr "{actor} {group} segitzen hasi da" + +#: ckan/lib/datapreview.py:265 ckan/templates/group/edit_base.html:16 +#: ckan/templates/organization/edit_base.html:17 +#: ckan/templates/package/resource_read.html:38 +#: ckan/templates/package/resource_views.html:4 +msgid "View" +msgstr "Ikusi" + +#: ckan/lib/email_notifications.py:103 +msgid "{n} new activity from {site_title}" +msgid_plural "{n} new activities from {site_title}" +msgstr[0] "{site_title} -en jarduera berri 1" +msgstr[1] "{site_title} -en {n} jarduera berri" + +#: ckan/lib/formatters.py:19 +msgid "January" +msgstr "Urtarrila" + +#: ckan/lib/formatters.py:23 +msgid "February" +msgstr "Otsaila" + +#: ckan/lib/formatters.py:27 +msgid "March" +msgstr "Martxoa" + +#: ckan/lib/formatters.py:31 +msgid "April" +msgstr "Apirila" + +#: ckan/lib/formatters.py:35 +msgid "May" +msgstr "Maiatza" + +#: ckan/lib/formatters.py:39 +msgid "June" +msgstr "Ekaina" + +#: ckan/lib/formatters.py:43 +msgid "July" +msgstr "Uztaila" + +#: ckan/lib/formatters.py:47 +msgid "August" +msgstr "Abuztua" + +#: ckan/lib/formatters.py:51 +msgid "September" +msgstr "Iraila" + +#: ckan/lib/formatters.py:55 +msgid "October" +msgstr "Urria" + +#: ckan/lib/formatters.py:59 +msgid "November" +msgstr "Azaroa" + +#: ckan/lib/formatters.py:63 +msgid "December" +msgstr "Abendua" + +#: ckan/lib/formatters.py:114 +msgid "Just now" +msgstr "Oraitxe bertan" + +#: ckan/lib/formatters.py:116 +msgid "{mins} minute ago" +msgid_plural "{mins} minutes ago" +msgstr[0] "Duela {mins} minutu" +msgstr[1] "Duela {mins} minutu" + +#: ckan/lib/formatters.py:119 +msgid "{hours} hour ago" +msgid_plural "{hours} hours ago" +msgstr[0] "Duela {hours} ordu" +msgstr[1] "Duela {hours} ordu" + +#: ckan/lib/formatters.py:125 +msgid "{days} day ago" +msgid_plural "{days} days ago" +msgstr[0] "Duela {days} egun" +msgstr[1] "Duela {days} egun" + +#: ckan/lib/formatters.py:128 +msgid "{months} month ago" +msgid_plural "{months} months ago" +msgstr[0] "Duela {months} hilabete" +msgstr[1] "Duela {months} hilabete" + +#: ckan/lib/formatters.py:130 +msgid "over {years} year ago" +msgid_plural "over {years} years ago" +msgstr[0] "duela {years} urte" +msgstr[1] "duela {years} urte" + +#: ckan/lib/formatters.py:146 +msgid "{month} {day}, {year}, {hour:02}:{min:02} ({timezone})" +msgstr "{day} {month}, {year}, {hour:02}:{min:02} ({timezone})" + +#: ckan/lib/formatters.py:151 +msgid "{month} {day}, {year}" +msgstr "{month} {day}, {year}" + +#: ckan/lib/formatters.py:167 +msgid "{bytes} bytes" +msgstr "{bytes} bytes" + +#: ckan/lib/formatters.py:169 +msgid "{kibibytes} KiB" +msgstr "{kibibytes} KiB" + +#: ckan/lib/formatters.py:171 +msgid "{mebibytes} MiB" +msgstr "{mebibytes} MiB" + +#: ckan/lib/formatters.py:173 +msgid "{gibibytes} GiB" +msgstr "{gibibytes} GiB" + +#: ckan/lib/formatters.py:175 +msgid "{tebibytes} TiB" +msgstr "{tebibytes} TiB" + +#: ckan/lib/formatters.py:187 +msgid "{n}" +msgstr "{n}" + +#: ckan/lib/formatters.py:189 +msgid "{k}k" +msgstr "{k}k" + +#: ckan/lib/formatters.py:191 +msgid "{m}M" +msgstr "{m}M" + +#: ckan/lib/formatters.py:193 +msgid "{g}G" +msgstr "{g}G" + +#: ckan/lib/formatters.py:195 +msgid "{t}T" +msgstr "{t}T" + +#: ckan/lib/formatters.py:197 +msgid "{p}P" +msgstr "{p}P" + +#: ckan/lib/formatters.py:199 +msgid "{e}E" +msgstr "{e}E" + +#: ckan/lib/formatters.py:201 +msgid "{z}Z" +msgstr "{z}Z" + +#: ckan/lib/formatters.py:203 +msgid "{y}Y" +msgstr "{y}Y" + +#: ckan/lib/helpers.py:1251 +msgid "Update your avatar at gravatar.com" +msgstr "Eguneratu abatarra/aldaketa gravatar.com -en" + +#: ckan/lib/helpers.py:1523 ckan/lib/helpers.py:1536 +msgid "Unknown" +msgstr "Ezezaguna" + +#: ckan/lib/helpers.py:1587 +msgid "Unnamed resource" +msgstr "Izenik gabeko baliabidea" + +#: ckan/lib/helpers.py:1627 +msgid "Created new dataset." +msgstr "Datu multzo berri bat sortuta" + +#: ckan/lib/helpers.py:1629 +msgid "Edited resources." +msgstr "Baliabide editatuak" + +#: ckan/lib/helpers.py:1631 +msgid "Edited settings." +msgstr "Aukera editatuak" + +#: ckan/lib/helpers.py:1877 +msgid "{number} view" +msgid_plural "{number} views" +msgstr[0] "ikuspegi {number}" +msgstr[1] "{number} ikuspegi" + +#: ckan/lib/helpers.py:1879 +msgid "{number} recent view" +msgid_plural "{number} recent views" +msgstr[0] "ikuspegi egin berria" +msgstr[1] "{number} ikuspegi egin berriak" + +#: ckan/lib/mailer.py:46 +#, python-format +msgid "%s <%s>" +msgstr "%s <%s>" + +#: ckan/lib/mailer.py:116 +msgid "No recipient email address available!" +msgstr "Hartzailearen helbide elektronikoa ez dago erabilgarri!" + +#: ckan/lib/mailer.py:134 ckan/templates/home/snippets/stats.html:17 +msgid "organization" +msgstr "antolakuntza / erakundea" + +#: ckan/lib/mailer.py:135 ckan/templates/home/snippets/stats.html:23 +msgid "group" +msgstr "taldea" + +#: ckan/lib/navl/dictization_functions.py:16 +#: ckan/lib/navl/dictization_functions.py:19 +#: ckan/lib/navl/dictization_functions.py:22 +#: ckan/lib/navl/dictization_functions.py:25 +#: ckan/lib/navl/dictization_functions.py:28 +#: ckan/lib/navl/dictization_functions.py:31 +#: ckan/lib/navl/dictization_functions.py:34 +#: ckan/lib/navl/dictization_functions.py:37 ckan/lib/navl/validators.py:27 +#: ckan/lib/navl/validators.py:34 ckan/lib/navl/validators.py:54 +#: ckan/logic/action/get.py:2033 ckan/logic/action/update.py:261 +#: ckan/logic/validators.py:615 +msgid "Missing value" +msgstr "Balorea falta da" + +#: ckan/lib/navl/validators.py:68 +#, python-format +msgid "The input field %(name)s was not expected." +msgstr "%(name)s kanpoa ez zen espero" + +#: ckan/lib/navl/validators.py:120 +msgid "Please enter an integer value" +msgstr "Mesedez sar ezazu zenbaki oso bat" + +#: ckan/lib/navl/validators.py:126 +msgid "Must be a Unicode string value" +msgstr "Unicode testua izan behar du" + +#: ckan/logic/__init__.py:99 ckan/logic/action/__init__.py:60 +msgid "Package resource(s) invalid" +msgstr "Paketearen baliabidea(k) baliogabea(k)" + +#: ckan/logic/__init__.py:106 ckan/logic/__init__.py:108 +#: ckan/logic/action/__init__.py:62 ckan/logic/action/__init__.py:64 +msgid "Extras" +msgstr "Estrak" + +#: ckan/logic/converters.py:76 ckan/logic/converters.py:91 +#, python-format +msgid "Tag vocabulary \"%s\" does not exist" +msgstr "\"%s\" etiketen lexikoa ez da existitzen" + +#: ckan/logic/converters.py:182 +msgid "Could not parse as valid JSON" +msgstr "Ezin duzu baliozko JSON modura parseatu" + +#: ckan/logic/validators.py:35 ckan/logic/validators.py:44 +msgid "An organization must be provided" +msgstr "Erakunde bat ematea beharrezkoa da" + +#: ckan/logic/validators.py:49 +msgid "Organization does not exist" +msgstr "Ez da erakundea existitzen" + +#: ckan/logic/validators.py:54 +msgid "You cannot add a dataset to this organization" +msgstr "Erakunde honetan ezin da datu multzorik gehitu" + +#: ckan/logic/validators.py:94 +msgid "Invalid integer" +msgstr "Zenbaki osoa ez da baliokoa" + +#: ckan/logic/validators.py:99 +msgid "Must be a natural number" +msgstr "Zenbaki oso bat izan behar du" + +#: ckan/logic/validators.py:105 +msgid "Must be a postive integer" +msgstr "Zenbaki positiboa izan behar du" + +#: ckan/logic/validators.py:132 +msgid "Date format incorrect" +msgstr "Data formatua ez da zuzena" + +#: ckan/logic/validators.py:141 +msgid "No links are allowed in the log_message." +msgstr "Erregistroko mezuan ez dira loturak onartzen." + +#: ckan/logic/validators.py:161 +msgid "Dataset id already exists" +msgstr "Datu multzoaren id-a jada existitzen da" + +#: ckan/logic/validators.py:202 +msgid "Resource" +msgstr "Baliabidea" + +#: ckan/logic/validators.py:256 +msgid "That group name or ID does not exist." +msgstr "Taldearen izana edo identifikatzailea ezezaguna" + +#: ckan/logic/validators.py:270 +msgid "Activity type" +msgstr "Jarduera mota" + +#: ckan/logic/validators.py:333 +msgid "Names must be strings" +msgstr "Izenak karaktere kateak izan behar dute" + +#: ckan/logic/validators.py:337 +msgid "That name cannot be used" +msgstr "Izen hau ezin da erabili" + +#: ckan/logic/validators.py:340 +#, python-format +msgid "Must be at least %s characters long" +msgstr "Gutxienez luzeraz %s karaktere izan behar ditu " + +#: ckan/logic/validators.py:342 ckan/logic/validators.py:631 +#, python-format +msgid "Name must be a maximum of %i characters long" +msgstr "Izenak luzeraz ezin ditu %i karaktere baino gehiago izan" + +#: ckan/logic/validators.py:345 +msgid "" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" +msgstr "" +"Bakarrik karaktere alfanumeriko (ascii) minuskuloak izan ditzake baita ikur " +"hauek ere: -_" + +#: ckan/logic/validators.py:363 +msgid "That URL is already in use." +msgstr "URL hori jada erabiltzen hari da." + +#: ckan/logic/validators.py:368 +#, python-format +msgid "Name \"%s\" length is less than minimum %s" +msgstr "\"%s\" izenaren karaktere kopurua %s gutxienekoa baino txikiagoa da" + +#: ckan/logic/validators.py:372 +#, python-format +msgid "Name \"%s\" length is more than maximum %s" +msgstr "\"%s\" izenaren karaktere kopurua %s gehiengoa baino haundiagoa da" + +#: ckan/logic/validators.py:378 +#, python-format +msgid "Version must be a maximum of %i characters long" +msgstr "Bertsioak gehienez %i karaktere izan behar ditu" + +#: ckan/logic/validators.py:396 +#, python-format +msgid "Duplicate key \"%s\"" +msgstr "Gako bikoiztua \"%s\"" + +#: ckan/logic/validators.py:412 +msgid "Group name already exists in database" +msgstr "Talde izen hau dagoeneko datu basean existitzen da" + +#: ckan/logic/validators.py:418 +#, python-format +msgid "Tag \"%s\" length is less than minimum %s" +msgstr "\"%s\" etiketaren luzeera %s gutxienekoa baino txikiagoa da" + +#: ckan/logic/validators.py:422 +#, python-format +msgid "Tag \"%s\" length is more than maximum %i" +msgstr "\"%s\" etiketa %i gehiengoa baino luzeagoa da" + +#: ckan/logic/validators.py:430 +#, python-format +msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." +msgstr "\"%s\" etiketak karaktere alfanumerikoak eta ikurrak izan behar ditu: -_." + +#: ckan/logic/validators.py:438 +#, python-format +msgid "Tag \"%s\" must not be uppercase" +msgstr "\"%s\" etiketa ezin da letra larritan egon" + +#: ckan/logic/validators.py:547 +msgid "User names must be strings" +msgstr "Erabiltzaileen izenak karaktere kateak izan behar dute" + +#: ckan/logic/validators.py:562 +msgid "That login name is not available." +msgstr "Saioa hasteko izen hau ez dago erabilgarri." + +#: ckan/logic/validators.py:566 +msgid "That login name can not be modified." +msgstr "" + +#: ckan/logic/validators.py:577 +msgid "Please enter both passwords" +msgstr "Mesedez, sar hitzazu pasahitzak" + +#: ckan/logic/validators.py:585 +msgid "Passwords must be strings" +msgstr "Kodeak karakter kateak izan behar dute" + +#: ckan/logic/validators.py:589 +msgid "Your password must be 8 characters or longer" +msgstr "Kodeak 8 karaktere edo gehiago izan behar ditu" + +#: ckan/logic/validators.py:598 +msgid "The passwords you entered do not match" +msgstr "Sartutako pasahitzak ez dira berdinak" + +#: ckan/logic/validators.py:619 +msgid "" +"Edit not allowed as it looks like spam. Please avoid links in your " +"description." +msgstr "" +"Edizioak ez du balio spam-a dirudielako. Mesedez saiatu azalpenean loturak " +"ez jartzen" + +#: ckan/logic/validators.py:628 +#, python-format +msgid "Name must be at least %s characters long" +msgstr "Izenak gutxienez %s karaktere izan behar ditu" + +#: ckan/logic/validators.py:636 +msgid "That vocabulary name is already in use." +msgstr "Lexiko izen hau jada erabilita dago" + +#: ckan/logic/validators.py:642 +#, python-format +msgid "Cannot change value of key from %s to %s. This key is read-only" +msgstr "" +"Ezin da kodearen balorea %s -tik %s -ra aldatu. Kode hau irakurtzeko soilik " +"da" + +#: ckan/logic/validators.py:651 +msgid "Tag vocabulary was not found." +msgstr "Etiketen lexikoa ez da aurkitu." + +#: ckan/logic/validators.py:664 +#, python-format +msgid "Tag %s does not belong to vocabulary %s" +msgstr "%s etiketa ez dago %s lexikoaren barnean" + +#: ckan/logic/validators.py:670 +msgid "No tag name" +msgstr "Etiketaren izena falta da" + +#: ckan/logic/validators.py:683 +#, python-format +msgid "Tag %s already belongs to vocabulary %s" +msgstr "%s etiketa %s lexikoaren barne dago jada" + +#: ckan/logic/validators.py:706 +msgid "Please provide a valid URL" +msgstr "Mesedez, baliozko URL bat eman" + +#: ckan/logic/validators.py:720 +msgid "role does not exist." +msgstr "rola ez da existitzen." + +#: ckan/logic/validators.py:749 +msgid "Datasets with no organization can't be private." +msgstr "Erakunderik gabeko datu multzoak ezin dira pribatuak izan." + +#: ckan/logic/validators.py:755 +msgid "Not a list" +msgstr "Ez da zerrenda bat" + +#: ckan/logic/validators.py:758 +msgid "Not a string" +msgstr "Ez da kate bat" + +#: ckan/logic/validators.py:790 +msgid "This parent would create a loop in the hierarchy" +msgstr "Aita honek lotura bat sortuko lukehierarkian" + +#: ckan/logic/validators.py:800 +msgid "\"filter_fields\" and \"filter_values\" should have the same length" +msgstr "\"Filter_fields \" eta \"filter_values\" luzera berdina izan behar dute" + +#: ckan/logic/validators.py:811 +msgid "\"filter_fields\" is required when \"filter_values\" is filled" +msgstr "\"Filter_fields\" beharrezkoa da \"filter_values\" sartzen denean" + +#: ckan/logic/validators.py:814 +msgid "\"filter_values\" is required when \"filter_fields\" is filled" +msgstr "\"filter_values\" beharrezkoak dira \"Filter_fields\" sartzen denean" + +#: ckan/logic/validators.py:828 +msgid "There is a schema field with the same name" +msgstr "Izen bereko beste eskema-eremu bat existitzen da" + +#: ckan/logic/validators.py:854 +msgid "Email {email} is not a valid format" +msgstr "Emailaren formatua balioduna da" + +#: ckan/logic/action/create.py:184 ckan/logic/action/create.py:668 +#, python-format +msgid "REST API: Create object %s" +msgstr "REST API: %s objektua sortu" + +#: ckan/logic/action/create.py:547 +#, python-format +msgid "REST API: Create package relationship: %s %s %s" +msgstr "REST API: Paquete erlazioa sortu:%s %s %s" + +#: ckan/logic/action/create.py:588 +#, python-format +msgid "REST API: Create member object %s" +msgstr "REST API: %s ren kidea objektua sortu" + +#: ckan/logic/action/create.py:807 +msgid "Trying to create an organization as a group" +msgstr "Talde bezalako erakunde bat sortzen saiatzen" + +#: ckan/logic/action/create.py:896 +msgid "You must supply a package id or name (parameter \"package\")." +msgstr "" +"Identifikatzaile edo izen bat emar behar duzu (parametro \"package\") " +"paketearentzako." + +#: ckan/logic/action/create.py:899 +msgid "You must supply a rating (parameter \"rating\")." +msgstr "(\"Rating\" parametroa) rentzat balorazio bat eman behar da" + +#: ckan/logic/action/create.py:904 +msgid "Rating must be an integer value." +msgstr "Balorazioa zenbaki oso bat izan behar du" + +#: ckan/logic/action/create.py:908 +#, python-format +msgid "Rating must be between %i and %i." +msgstr "Balorazioa %i eta %i ren artean izan behar du" + +#: ckan/logic/action/create.py:1078 +msgid "Error sending the invite email, the user was not created: {0}" +msgstr "" +"Akatsa gonbidapena mail bidez bidaltzean, erabiltzailea ez da sortu: {0}" + +#: ckan/logic/action/create.py:1254 ckan/logic/action/create.py:1261 +msgid "You must be logged in to follow users" +msgstr "Saioa hasi behar da erabiltzaileak jarraitzeko" + +#: ckan/logic/action/create.py:1274 +msgid "You cannot follow yourself" +msgstr "Ezin duzu zure burua jarraitu" + +#: ckan/logic/action/create.py:1282 ckan/logic/action/create.py:1339 +#: ckan/logic/action/create.py:1478 +msgid "You are already following {0}" +msgstr "Dagoeneko {0} jarraitzen zaude" + +#: ckan/logic/action/create.py:1313 ckan/logic/action/create.py:1321 +msgid "You must be logged in to follow a dataset." +msgstr "Saioa hasita izan behar duzu datu multzo bat jarraitzeko" + +#: ckan/logic/action/create.py:1379 +msgid "User {username} does not exist." +msgstr " {username} erabiltzailea ez da existitzen." + +#: ckan/logic/action/create.py:1454 ckan/logic/action/create.py:1462 +msgid "You must be logged in to follow a group." +msgstr "Saioa hasita izan behar duzu talde bat jarraitzeko" + +#: ckan/logic/action/delete.py:54 +msgid " Delete User: {0}" +msgstr "Ezabatu erabiltzailea: {0}" + +#: ckan/logic/action/delete.py:92 +#, python-format +msgid "REST API: Delete Package: %s" +msgstr "REST API: %s paketea ezabatu" + +#: ckan/logic/action/delete.py:276 ckan/logic/action/delete.py:372 +#, python-format +msgid "REST API: Delete %s" +msgstr "REST API: %s ezabatu" + +#: ckan/logic/action/delete.py:318 +#, python-format +msgid "REST API: Delete Member: %s" +msgstr "REST API: %s kidea ezabatu" + +#: ckan/logic/action/delete.py:358 +msgid "Organization cannot be deleted while it still has datasets" +msgstr "" + +#: ckan/logic/action/delete.py:560 ckan/logic/action/delete.py:586 +#: ckan/logic/action/get.py:2432 ckan/logic/action/update.py:906 +msgid "id not in data" +msgstr "id ez da datuetan agertzen" + +#: ckan/logic/action/delete.py:564 ckan/logic/action/get.py:2435 +#: ckan/logic/action/update.py:910 +#, python-format +msgid "Could not find vocabulary \"%s\"" +msgstr "Ez da \"%s\" lexikoa aurkitu" + +#: ckan/logic/action/delete.py:594 +#, python-format +msgid "Could not find tag \"%s\"" +msgstr "Ez da \"%s\" etiketa aurkitu " + +#: ckan/logic/action/delete.py:607 ckan/logic/action/delete.py:611 +msgid "You must be logged in to unfollow something." +msgstr "Saioa hasita egon behar du zerbait jarraitzeaz uzteko" + +#: ckan/logic/action/delete.py:622 +msgid "You are not following {0}." +msgstr "Ez zaude {0} jarraitzen" + +#: ckan/logic/action/get.py:1095 ckan/logic/action/update.py:77 +#: ckan/logic/action/update.py:91 +msgid "Resource was not found." +msgstr "Baliabidea ez da aurkitu" + +#: ckan/logic/action/get.py:2037 +msgid "Do not specify if using \"query\" parameter" +msgstr "Ez duzu \"query\" parametroa erabili nahi duzun al ez zehaztu" + +#: ckan/logic/action/get.py:2046 +msgid "Must be : pair(s)" +msgstr "Pare bat izan behar du : " + +#: ckan/logic/action/get.py:2078 +msgid "Field \"{field}\" not recognised in resource_search." +msgstr "\"{field}\" eremua ez da resource_search -ean antzeman" + +#: ckan/logic/action/update.py:265 ckan/logic/action/update.py:991 +msgid "Package was not found." +msgstr "Ez da paketea aurkitu." + +#: ckan/logic/action/update.py:308 ckan/logic/action/update.py:526 +#: ckan/logic/action/update.py:1009 +#, python-format +msgid "REST API: Update object %s" +msgstr "REST API: %s objektuaren eguneratzea" + +#: ckan/logic/action/update.py:405 +#, python-format +msgid "REST API: Update package relationship: %s %s %s" +msgstr "REST API: %s %s %s paketeen erlazioa eguneratu" + +#: ckan/logic/action/update.py:766 +msgid "TaskStatus was not found." +msgstr "TaskStatus ez da aurkitu." + +#: ckan/logic/action/update.py:995 +msgid "Organization was not found." +msgstr "Erakundea ez da aurkitu." + +#: ckan/logic/auth/create.py:27 ckan/logic/auth/create.py:45 +#, python-format +msgid "User %s not authorized to create packages" +msgstr "%s erabiltzaileak ez du paketea sortzeko baimenik" + +#: ckan/logic/auth/create.py:31 ckan/logic/auth/update.py:45 +#, python-format +msgid "User %s not authorized to edit these groups" +msgstr "%s erabiltzailea ez du talde hauek editatzeko baimenik" + +#: ckan/logic/auth/create.py:38 +#, python-format +msgid "User %s not authorized to add dataset to this organization" +msgstr "" +"%s erabiltzailea ez du erakunde honetan datu multzorik sortzeko baimenik" + +#: ckan/logic/auth/create.py:61 +msgid "No dataset id provided, cannot check auth." +msgstr "Ez da datu multzoaren id -a sartu, ezin da baimena egiaztatu." + +#: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 +#: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 +msgid "No package found for this resource, cannot check auth." +msgstr "" +"Baliabide honentzat ez da datu multzorik aurkitu, ezin da autoritatea " +"egiaztatu." + +#: ckan/logic/auth/create.py:76 +#, python-format +msgid "User %s not authorized to create resources on dataset %s" +msgstr "" +"%s erabiltzaileak ezu du datu multzoan baliabideak sortzeko baimenik %s" + +#: ckan/logic/auth/create.py:108 +#, python-format +msgid "User %s not authorized to edit these packages" +msgstr "%s erabiltzaileak ez du pakete hauek editatzeko baimenik" + +#: ckan/logic/auth/create.py:119 +#, python-format +msgid "User %s not authorized to create groups" +msgstr "%s erabiltzaileak ez du taldeak sortzeko baimenik" + +#: ckan/logic/auth/create.py:129 +#, python-format +msgid "User %s not authorized to create organizations" +msgstr "%s erabiltzaileak ez du erakundeak sortzeko baimenik" + +#: ckan/logic/auth/create.py:145 +msgid "User {user} not authorized to create users via the API" +msgstr "" +"{user} erabiltzaileak ez du API-ren bidez erabiltzaileak sortzeko baimenik" + +#: ckan/logic/auth/create.py:148 +msgid "Not authorized to create users" +msgstr "Ez duzu erabiltzaileak sortzeko baimenik " + +#: ckan/logic/auth/create.py:189 +msgid "Group was not found." +msgstr "Ez da taldea aurkitu." + +#: ckan/logic/auth/create.py:220 +#, python-format +msgid "User %s not authorized to add members" +msgstr "%s erabiltzaileak ez du kideak gehitzeko baimenik" + +#: ckan/logic/auth/create.py:244 ckan/logic/auth/update.py:115 +#, python-format +msgid "User %s not authorized to edit group %s" +msgstr "%s erabiltzaileak ez du %s taldea editatzeko baimenik" + +#: ckan/logic/auth/delete.py:40 +#, python-format +msgid "User %s not authorized to delete resource %s" +msgstr "%s erabiltzaileak ez du %s baliabidea ezabatzeko baimenik" + +#: ckan/logic/auth/delete.py:56 +msgid "Resource view not found, cannot check auth." +msgstr "Baliabide ikuspegia ez da aurkitu, ezin da baimena zehaztu." + +#: ckan/logic/auth/delete.py:73 +#, python-format +msgid "User %s not authorized to delete relationship %s" +msgstr "%s erabiltzaileak ez du %s erlazioa ezabatzeko baimenik" + +#: ckan/logic/auth/delete.py:82 +#, python-format +msgid "User %s not authorized to delete groups" +msgstr "%s erabiltzaileak ez du talderik ezabatzeko baimenik" + +#: ckan/logic/auth/delete.py:86 +#, python-format +msgid "User %s not authorized to delete group %s" +msgstr "%s erabiltzaileak ez du %s taldea ezabatzeko baimenik" + +#: ckan/logic/auth/delete.py:103 +#, python-format +msgid "User %s not authorized to delete organizations" +msgstr "%s erabiltzaileak ez du erakunderik ezabatzeko baimenik" + +#: ckan/logic/auth/delete.py:107 +#, python-format +msgid "User %s not authorized to delete organization %s" +msgstr "%s erabiltzaileak ez du %s erakundea ezabatzeko baimenik" + +#: ckan/logic/auth/delete.py:120 +#, python-format +msgid "User %s not authorized to delete task_status" +msgstr "%s erabiltzaileak ez du task_status ezabatzeko baimenik" + +#: ckan/logic/auth/get.py:13 ckan/logic/auth/get.py:270 +msgid "Not authorized" +msgstr "Ez duzu baimenik" + +#: ckan/logic/auth/get.py:109 +#, python-format +msgid "User %s not authorized to read these packages" +msgstr "%s erabiltzaileak ez du pakete hauek irakurtzeko baimenik" + +#: ckan/logic/auth/get.py:124 +#, python-format +msgid "User %s not authorized to read package %s" +msgstr "%s erabiltzaileak ez du %s paketea irakurtzeko baimenik" + +#: ckan/logic/auth/get.py:143 +#, python-format +msgid "User %s not authorized to read resource %s" +msgstr " %s erabiltzaileak ez du %s baliabidea irakurtzeko baimenik" + +#: ckan/logic/auth/get.py:170 +#, python-format +msgid "User %s not authorized to read group %s" +msgstr " %s erabiltzaileak ez du %s taldea irakurtzeko baimenik" + +#: ckan/logic/auth/get.py:237 +msgid "You must be logged in to access your dashboard." +msgstr "Saioa hasita izan behar duzu kontrol panelera sartzeko" + +#: ckan/logic/auth/update.py:39 +#, python-format +msgid "User %s not authorized to edit package %s" +msgstr "%s erabiltzaileak ez du %s paketea editatzeko baimenik" + +#: ckan/logic/auth/update.py:71 +#, python-format +msgid "User %s not authorized to edit resource %s" +msgstr "%s erabiltzaileak ez du %s baliabidea editatzeko baimenik" + +#: ckan/logic/auth/update.py:100 +#, python-format +msgid "User %s not authorized to change state of package %s" +msgstr "%s erabiltzaileak ez du %s paketearen egoera aldatzeko baimenik " + +#: ckan/logic/auth/update.py:128 +#, python-format +msgid "User %s not authorized to edit organization %s" +msgstr "%s erabiltzaileak ez du %s antolakuntza editatzeko baimenik" + +#: ckan/logic/auth/update.py:145 +#, python-format +msgid "User %s not authorized to change state of group %s" +msgstr "%s erabiltzaileak ez du %s taldeko egoera aldatzeko baimenik" + +#: ckan/logic/auth/update.py:162 +#, python-format +msgid "User %s not authorized to edit permissions of group %s" +msgstr "%s erabiltzaileak ez du %s taldeko egoera aldatzeko baimenik" + +#: ckan/logic/auth/update.py:190 +msgid "Have to be logged in to edit user" +msgstr "%s erabiltzaileak ez du %s taldeko baimenak editatzeko baimenik" + +#: ckan/logic/auth/update.py:198 +#, python-format +msgid "User %s not authorized to edit user %s" +msgstr "%s erabiltzaileak ez du %s erabiltzailea aldatzeko baimenik" + +#: ckan/logic/auth/update.py:209 +msgid "User {0} not authorized to update user {1}" +msgstr "{0} erabiltzaileak ez du {1} erabiltzailea eguneratzeko baimenik" + +#: ckan/logic/auth/update.py:217 +#, python-format +msgid "User %s not authorized to change state of revision" +msgstr "%s erabiltzaileak ez du berrikustearen egoera aldatzeko baimenik" + +#: ckan/logic/auth/update.py:226 +#, python-format +msgid "User %s not authorized to update task_status table" +msgstr "%s erabiltzaileak ez du task_status taula eguneratzeko baimenik" + +#: ckan/logic/auth/update.py:240 +#, python-format +msgid "User %s not authorized to update term_translation table" +msgstr "%s erabiltzaileak ez du term_translation taula eguneratzeko baimenik" + +#: ckan/model/license.py:223 +msgid "License not specified" +msgstr "Lizentzia ez da zehaztu" + +#: ckan/model/license.py:233 +msgid "Open Data Commons Public Domain Dedication and License (PDDL)" +msgstr "Open Data Commons Domeinu Publikoa Dedikazioa eta Lizentzia (PDDL)" + +#: ckan/model/license.py:243 +msgid "Open Data Commons Open Database License (ODbL)" +msgstr "Open Data Commons Open Database Lizentzia (ODbL)" + +#: ckan/model/license.py:253 +msgid "Open Data Commons Attribution License" +msgstr "Open Data Commons Aitortu Lizentzia" + +#: ckan/model/license.py:264 +msgid "Creative Commons CCZero" +msgstr "Creative Commons CCZer" + +#: ckan/model/license.py:273 +msgid "Creative Commons Attribution" +msgstr "Creative Commons Attribution" + +#: ckan/model/license.py:283 +msgid "Creative Commons Attribution Share-Alike" +msgstr "Creative Commons Attribution Share-Alike" + +#: ckan/model/license.py:292 +msgid "GNU Free Documentation License" +msgstr "GNU Free Documentation License" + +#: ckan/model/license.py:302 +msgid "Other (Open)" +msgstr "Beste bat (irekita)" + +#: ckan/model/license.py:312 +msgid "Other (Public Domain)" +msgstr "Beste bat (jabari publikoa)" + +#: ckan/model/license.py:322 +msgid "Other (Attribution)" +msgstr "Beste bat (atribuzioa)" + +#: ckan/model/license.py:334 +msgid "UK Open Government Licence (OGL)" +msgstr "UK Open Government Lizentzia (OGL)" + +#: ckan/model/license.py:342 +msgid "Creative Commons Non-Commercial (Any)" +msgstr "Creative Commons ez-komertziala (edozein)" + +#: ckan/model/license.py:350 +msgid "Other (Non-Commercial)" +msgstr "Beste bat (ez-komertziala)" + +#: ckan/model/license.py:358 +msgid "Other (Not Open)" +msgstr "Beste bat (ez irekia)" + +#: ckan/model/package_relationship.py:54 +#, python-format +msgid "depends on %s" +msgstr "%s -ren esku dago" + +#: ckan/model/package_relationship.py:54 +#, python-format +msgid "is a dependency of %s" +msgstr " %s -ren mendekoa da" + +#: ckan/model/package_relationship.py:55 +#, python-format +msgid "derives from %s" +msgstr "%s -ren deribatua da" + +#: ckan/model/package_relationship.py:55 +#, python-format +msgid "has derivation %s" +msgstr "%s -n du deribatu bat" + +#: ckan/model/package_relationship.py:56 +#, python-format +msgid "links to %s" +msgstr "%s lotzen du" + +#: ckan/model/package_relationship.py:56 +#, python-format +msgid "is linked from %s" +msgstr "%s -tik lotuta" + +#: ckan/model/package_relationship.py:57 +#, python-format +msgid "is a child of %s" +msgstr "%s-ren semea da" + +#: ckan/model/package_relationship.py:57 +#, python-format +msgid "is a parent of %s" +msgstr "%s-ren aita da" + +#: ckan/model/package_relationship.py:61 +#, python-format +msgid "has sibling %s" +msgstr "%s anaia bat du" + +#: ckan/public-bs2/base/javascript/modules/api-info.js:96 +#: ckan/public/base/javascript/modules/api-info.js:96 +msgid "There is no API data to load for this resource" +msgstr "Ez dira baliabide hau kargatzeko API daturik existitzen" + +#: ckan/public-bs2/base/javascript/modules/api-info.js:124 +#: ckan/public/base/javascript/modules/api-info.js:124 +msgid "Failed to load data API information" +msgstr "API datuen informazioaren karga okerra izan da" + +#: ckan/public-bs2/base/javascript/modules/autocomplete.js:195 +#: ckan/public/base/javascript/modules/autocomplete.js:195 +msgid "Start typing…" +msgstr "Hasi idazten ..." + +#: ckan/public-bs2/base/javascript/modules/autocomplete.js:195 +#: ckan/public/base/javascript/modules/autocomplete.js:195 +msgid "No matches found" +msgstr "Ez dira bateragarritasunak (koinzidentziak) aurkitu" + +#: ckan/public-bs2/base/javascript/modules/autocomplete.js:204 +#: ckan/public/base/javascript/modules/autocomplete.js:204 +#, python-format +msgid "Input is too short, must be at least one character" +msgid_plural "Input is too short, must be at least %(num)d characters" +msgstr[0] "Sarrera oso laburra da, gutxienez karaktere bat eduki behar du" +msgstr[1] "" +"Sarrera oso laburra da, gutxienez %(num) karaktere bat eduki behar du" + +#: ckan/public-bs2/base/javascript/modules/basic-form.js:4 +#: ckan/public/base/javascript/modules/basic-form.js:4 +msgid "There are unsaved modifications to this form" +msgstr "Gordetu gabeko aldaketak daude formulario honentzat" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:97 +#: ckan/public/base/javascript/modules/confirm-action.js:101 +msgid "Please Confirm Action" +msgstr "Mesedez, ekintza baieztatu" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:100 +#: ckan/public/base/javascript/modules/confirm-action.js:104 +msgid "Are you sure you want to perform this action?" +msgstr "Ziur zaude ekintza hau egin nahi duzula?" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:102 +#: ckan/public/base/javascript/modules/confirm-action.js:106 +#: ckan/templates/user/new_user_form.html:9 +#: ckan/templates/user/perform_reset.html:26 +msgid "Confirm" +msgstr "Berretsi" + +#: ckan/public-bs2/base/javascript/modules/confirm-action.js:103 +#: ckan/public-bs2/base/javascript/modules/resource-reorder.js:59 +#: ckan/public-bs2/base/javascript/modules/resource-view-reorder.js:53 +#: ckan/public/base/javascript/modules/confirm-action.js:107 +#: ckan/public/base/javascript/modules/resource-reorder.js:59 +#: ckan/public/base/javascript/modules/resource-view-reorder.js:53 +#: ckan/templates/admin/confirm_reset.html:9 +#: ckan/templates/group/confirm_delete.html:14 +#: ckan/templates/group/confirm_delete_member.html:15 +#: ckan/templates/organization/confirm_delete.html:14 +#: ckan/templates/organization/confirm_delete_member.html:15 +#: ckan/templates/package/confirm_delete.html:15 +#: ckan/templates/package/confirm_delete_resource.html:14 +msgid "Cancel" +msgstr "Bertan behera utzi" + +#: ckan/public-bs2/base/javascript/modules/follow.js:70 +#: ckan/public/base/javascript/modules/follow.js:70 +#: ckan/templates/snippets/follow_button.html:9 +msgid "Unfollow" +msgstr "Jarraitzen utzi" + +#: ckan/public-bs2/base/javascript/modules/follow.js:73 +#: ckan/public/base/javascript/modules/follow.js:73 +#: ckan/templates/snippets/follow_button.html:14 +msgid "Follow" +msgstr "Jarraitu" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:60 +#: ckan/public/base/javascript/modules/image-upload.js:60 +msgid "Link" +msgstr "Lotura" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:61 +#: ckan/public/base/javascript/modules/image-upload.js:61 +msgid "Link to a URL on the internet (you can also link to an API)" +msgstr "Interneteko URL batera lotu (API batera ere lotu daiteke)" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:68 +#: ckan/public/base/javascript/modules/image-upload.js:68 +msgid "Upload" +msgstr "Igo" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:72 +#: ckan/public/base/javascript/modules/image-upload.js:72 +#: ckan/templates/group/snippets/group_item.html:43 +#: ckan/templates/macros/form.html:241 +#: ckan/templates/snippets/search_form.html:69 +msgid "Remove" +msgstr "Kendu" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:87 +#: ckan/public/base/javascript/modules/image-upload.js:87 +msgid "Upload a file on your computer" +msgstr "Zure ordenagailura fitxategi bat igo" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:110 +#: ckan/public-bs2/base/javascript/modules/image-upload.js:178 +#: ckan/public-bs2/base/javascript/modules/slug-preview.js:56 +#: ckan/public/base/javascript/modules/image-upload.js:110 +#: ckan/public/base/javascript/modules/image-upload.js:178 +#: ckan/public/base/javascript/modules/slug-preview.js:56 +#: ckan/templates/group/snippets/group_form.html:18 +#: ckan/templates/organization/snippets/organization_form.html:18 +#: ckan/templates/package/snippets/package_basic_fields.html:13 +#: ckan/templates/package/snippets/resource_form.html:26 +msgid "URL" +msgstr "URL" + +#: ckan/public-bs2/base/javascript/modules/image-upload.js:119 +#: ckan/public-bs2/base/javascript/modules/image-upload.js:209 +#: ckan/public/base/javascript/modules/image-upload.js:119 +#: ckan/public/base/javascript/modules/image-upload.js:209 +msgid "File" +msgstr "Fitxategia" + +#: ckan/public-bs2/base/javascript/modules/resource-reorder.js:56 +#: ckan/public-bs2/base/javascript/modules/resource-view-reorder.js:50 +#: ckan/public/base/javascript/modules/resource-reorder.js:56 +#: ckan/public/base/javascript/modules/resource-view-reorder.js:50 +msgid "Save order" +msgstr "Ordena gordetu" + +#: ckan/public-bs2/base/javascript/modules/resource-reorder.js:69 +#: ckan/public-bs2/base/javascript/modules/resource-view-reorder.js:59 +#: ckan/public/base/javascript/modules/resource-reorder.js:69 +#: ckan/public/base/javascript/modules/resource-view-reorder.js:59 +msgid "Saving..." +msgstr "Gordetzen..." + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:57 +#: ckan/public/base/javascript/modules/resource-upload-field.js:57 +msgid "Upload a file" +msgstr "Fitxategi bat igo" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:144 +#: ckan/public/base/javascript/modules/resource-upload-field.js:144 +msgid "An Error Occurred" +msgstr "Errore bat gertatu da" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:201 +#: ckan/public/base/javascript/modules/resource-upload-field.js:201 +msgid "Unable to upload file" +msgstr "Fitxategia ezin izan da igo" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:252 +#: ckan/public/base/javascript/modules/resource-upload-field.js:252 +msgid "Unable to authenticate upload" +msgstr "Ezin izan da igoera baimendu" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:260 +#: ckan/public/base/javascript/modules/resource-upload-field.js:260 +msgid "Resource uploaded" +msgstr "Baliabidea igota" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:266 +#: ckan/public/base/javascript/modules/resource-upload-field.js:266 +msgid "Unable to get data for uploaded file" +msgstr "Ezin izan dira igotako fitxategiarentzat daturik lortu" + +#: ckan/public-bs2/base/javascript/modules/resource-upload-field.js:272 +#: ckan/public/base/javascript/modules/resource-upload-field.js:272 +msgid "" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" +msgstr "" +"Fitxategi bat igotzen zaude. Ziur zaude atera eta igoera hau gelditu nahi " +"duzula?" + +#: ckan/public-bs2/base/javascript/modules/resource-view-filters.js:9 +#: ckan/public/base/javascript/modules/resource-view-filters.js:9 +#: ckan/templates/package/snippets/view_form_filters.html:16 +msgid "Add Filter" +msgstr "Iragazkia gehitu" + +#: ckan/public-bs2/base/javascript/modules/resource-view-filters.js:52 +#: ckan/public/base/javascript/modules/resource-view-filters.js:52 +msgid "Select a field" +msgstr "Eremu bat hautatu" + +#: ckan/public-bs2/base/javascript/modules/slug-preview.js:57 +#: ckan/public/base/javascript/modules/slug-preview.js:57 +#: ckan/templates/group/edit_base.html:20 ckan/templates/group/members.html:28 +#: ckan/templates/organization/bulk_process.html:65 +#: ckan/templates/organization/edit.html:3 +#: ckan/templates/organization/edit_base.html:22 +#: ckan/templates/organization/members.html:33 +#: ckan/templates/package/edit_base.html:11 +#: ckan/templates/package/resource_edit.html:3 +#: ckan/templates/package/resource_edit_base.html:12 +#: ckan/templates/package/snippets/resource_item.html:56 +msgid "Edit" +msgstr "Editatu" + +#: ckan/public-bs2/base/javascript/modules/table-toggle-more.js:25 +#: ckan/public/base/javascript/modules/table-toggle-more.js:25 +msgid "Show more" +msgstr "Erakutsi gehiago" + +#: ckan/public-bs2/base/javascript/modules/table-toggle-more.js:26 +#: ckan/public/base/javascript/modules/table-toggle-more.js:26 +msgid "Hide" +msgstr "Ezkutatu" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:13 +#: ckan/public-bs2/base/test/spec/module.spec.js:385 +#: ckan/public/base/test/spec/i18n.spec.js:13 +#: ckan/public/base/test/spec/module.spec.js:385 +msgid "foo" +msgstr "foo" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:17 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:46 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:50 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:54 +#: ckan/public/base/test/spec/i18n.spec.js:17 +#: ckan/public/base/test/spec/i18n.spec.js:46 +#: ckan/public/base/test/spec/i18n.spec.js:50 +#: ckan/public/base/test/spec/i18n.spec.js:54 +msgid "no translation" +msgid_plural "no translations" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:22 +#: ckan/public/base/test/spec/i18n.spec.js:22 +#, python-format +msgid "hello %(name)s!" +msgstr "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:29 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:76 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:81 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:86 +#: ckan/public/base/test/spec/i18n.spec.js:29 +#: ckan/public/base/test/spec/i18n.spec.js:76 +#: ckan/public/base/test/spec/i18n.spec.js:81 +#: ckan/public/base/test/spec/i18n.spec.js:86 +#, python-format +msgid "no %(attr)s translation" +msgid_plural "no %(attr)s translations" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:39 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:40 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:41 +#: ckan/public-bs2/base/test/spec/module.spec.js:395 +#: ckan/public-bs2/base/test/spec/module.spec.js:396 +#: ckan/public-bs2/base/test/spec/module.spec.js:397 +#: ckan/public/base/test/spec/i18n.spec.js:39 +#: ckan/public/base/test/spec/i18n.spec.js:40 +#: ckan/public/base/test/spec/i18n.spec.js:41 +#: ckan/public/base/test/spec/module.spec.js:395 +#: ckan/public/base/test/spec/module.spec.js:396 +#: ckan/public/base/test/spec/module.spec.js:397 +msgid "bar" +msgid_plural "bars" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:61 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:65 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:69 +#: ckan/public/base/test/spec/i18n.spec.js:61 +#: ckan/public/base/test/spec/i18n.spec.js:65 +#: ckan/public/base/test/spec/i18n.spec.js:69 +#, python-format +msgid "%(color)s shirt" +msgid_plural "%(color)s shirts" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:93 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:94 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:95 +#: ckan/public/base/test/spec/i18n.spec.js:93 +#: ckan/public/base/test/spec/i18n.spec.js:94 +#: ckan/public/base/test/spec/i18n.spec.js:95 +#, python-format +msgid "%(num)d item" +msgid_plural "%(num)d items" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:100 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:105 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:110 +#: ckan/public/base/test/spec/i18n.spec.js:100 +#: ckan/public/base/test/spec/i18n.spec.js:105 +#: ckan/public/base/test/spec/i18n.spec.js:110 +#, python-format +msgid "%(num)d missing translation" +msgid_plural "%(num)d missing translations" +msgstr[0] "" +msgstr[1] "" + +#: ckan/templates/error_document_template.html:3 +#, python-format +msgid "Error %(error_code)s" +msgstr "%(error_code)s akatsa " + +#: ckan/templates/footer.html:9 +msgid "About {0}" +msgstr "{0} -ri buruz" + +#: ckan/templates/footer.html:15 +msgid "CKAN API" +msgstr "API CKAN" + +#: ckan/templates/footer.html:16 +msgid "CKAN Association" +msgstr "CKAN Association" + +#: ckan/templates/footer.html:24 +msgid "" +"Powered by CKAN" +msgstr "" +" CKAN jabepean" + +#: ckan/templates/header.html:9 +msgid "Sysadmin settings" +msgstr "Administratzaile aukerak" + +#: ckan/templates/header.html:16 +msgid "View profile" +msgstr "Profila ikusi" + +#: ckan/templates/header.html:23 +#, python-format +msgid "Dashboard (%(num)d new item)" +msgid_plural "Dashboard (%(num)d new items)" +msgstr[0] "Kontrol panela (%(num) d baliabide berria)" +msgstr[1] "Kontrol panela (%(num) d baliabide berriak)" + +#: ckan/templates/header.html:27 ckan/templates/user/dashboard.html:6 +msgid "Dashboard" +msgstr "Arbela" + +#: ckan/templates/header.html:33 ckan/templates/user/dashboard.html:16 +msgid "Edit settings" +msgstr "Aukerak editatu" + +#: ckan/templates/header.html:35 +msgid "Settings" +msgstr "Konfigurazioa" + +#: ckan/templates/header.html:40 ckan/templates/header.html:42 +msgid "Log out" +msgstr "Irten" + +#: ckan/templates/header.html:52 ckan/templates/user/logout_first.html:14 +msgid "Log in" +msgstr "Saioa hasi" + +#: ckan/templates/header.html:54 ckan/templates/user/new.html:3 +msgid "Register" +msgstr "Erregistroa" + +#: ckan/templates/group/read_base.html:17 +#: ckan/templates/group/snippets/info.html:36 ckan/templates/header.html:87 +#: ckan/templates/organization/bulk_process.html:20 +#: ckan/templates/organization/edit_base.html:23 +#: ckan/templates/organization/read_base.html:17 +#: ckan/templates/package/base.html:7 ckan/templates/package/base.html:17 +#: ckan/templates/package/base.html:21 ckan/templates/package/search.html:4 +#: ckan/templates/package/snippets/new_package_breadcrumb.html:1 +#: ckan/templates/revision/diff.html:11 ckan/templates/revision/read.html:65 +#: ckan/templates/snippets/context/group.html:17 +#: ckan/templates/snippets/context/user.html:19 +#: ckan/templates/snippets/organization.html:59 +#: ckan/templates/user/read.html:11 ckan/templates/user/read_base.html:19 +#: ckan/templates/user/read_base.html:53 +msgid "Datasets" +msgstr "Datu multzoak" + +#: ckan/templates/header.html:94 +msgid "Search Datasets" +msgstr "Datu multzoak bilatu" + +#: ckan/templates/header.html:95 ckan/templates/home/snippets/search.html:11 +#: ckan/templates/snippets/simple_search.html:5 +#: ckan/templates/user/snippets/user_search.html:6 +msgid "Search" +msgstr "Bilaketa" + +#: ckan/templates/page.html:6 +msgid "Skip to content" +msgstr "Edukinera joan" + +#: ckan/templates/activity_streams/activity_stream_items.html:9 +msgid "Load less" +msgstr "Gutxiago kargatu" + +#: ckan/templates/activity_streams/activity_stream_items.html:17 +msgid "Load more" +msgstr "Kargatu gehiago" + +#: ckan/templates/activity_streams/activity_stream_items.html:23 +msgid "No activities are within this activity stream" +msgstr "Jarduera korronte honen barruan ez dago jarduerarik" + +#: ckan/templates/admin/base.html:3 +msgid "Administration" +msgstr "Administrazioa" + +#: ckan/templates/admin/base.html:8 +msgid "Sysadmins" +msgstr "Administratzaileak" + +#: ckan/templates/admin/base.html:9 +msgid "Config" +msgstr "Konfigurazioa" + +#: ckan/templates/admin/base.html:10 ckan/templates/admin/trash.html:29 +msgid "Trash" +msgstr "Paperontzia" + +#: ckan/templates/admin/config.html:23 ckan/templates/macros/autoform.html:62 +msgid "Site logo" +msgstr "Gunearen logotipoa" + +#: ckan/templates/admin/config.html:35 +#: ckan/templates/admin/confirm_reset.html:7 +msgid "Are you sure you want to reset the config?" +msgstr "Ziur zude konfigurazioa berrabiatu nahi duzula?" + +#: ckan/templates/admin/config.html:35 +msgid "Reset" +msgstr "Berrabiatu" + +#: ckan/templates/admin/config.html:36 +msgid "Update Config" +msgstr "Konfigurazioa eguneratu" + +#: ckan/templates/admin/config.html:45 +msgid "CKAN config options" +msgstr "CKAN-en konfigurazio aukerak" + +#: ckan/templates/admin/config.html:52 +#, python-format +msgid "" +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " +"Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" +"

Custom CSS: This is a block of CSS that appears in " +"<head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" +msgstr "" +"

Tokiko izenburua: Hau CKAN istatziaren izenburua da. " +"Hainbat tokitak ikusi daiteke CKAN -en barruan. " + +#: ckan/templates/admin/confirm_reset.html:3 +#: ckan/templates/admin/confirm_reset.html:10 +msgid "Confirm Reset" +msgstr "Berrezarpena baieztatu" + +#: ckan/templates/admin/index.html:15 +msgid "Administer CKAN" +msgstr "CKAN kudeatu" + +#: ckan/templates/admin/index.html:20 +#, python-format +msgid "" +"

As a sysadmin user you have full control over this CKAN instance. " +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" +msgstr "" +"

Sistemaren erabiltzaile administratzaile bakoitzak CKANen kontrol osoa " +"dauka Kontuz jardun!

Erabiltzaile administratzaileen ezaugarriak " +"erabiltzeko laguntza gisa, ikusi CKAN sistemaren erabiltzaile administratzaileen gida

" + +#: ckan/templates/admin/trash.html:20 +msgid "Purge" +msgstr "Purgatu" + +#: ckan/templates/admin/trash.html:32 +msgid "

Purge deleted datasets forever and irreversibly.

" +msgstr "" +"Ezabatutako datu multzoak

purgatu betirako eta modu atzeraezinean.

" + +#: ckan/templates/dataviewer/snippets/data_preview.html:9 +msgid "This resource can not be previewed at the moment." +msgstr "Baliabide hau momentuz ezin da aurreikusi" + +#: ckan/templates/dataviewer/snippets/data_preview.html:11 +#: ckan/templates/package/resource_read.html:133 +#: ckan/templates/package/snippets/resource_view.html:34 +msgid "Click here for more information." +msgstr "Informazio gehiago jasotzeko egin klik hemen." + +#: ckan/templates/dataviewer/snippets/data_preview.html:18 +#: ckan/templates/package/snippets/resource_view.html:41 +msgid "Download resource" +msgstr "Baliabidea descargatu" + +#: ckan/templates/dataviewer/snippets/no_preview.html:3 +msgid "No preview available." +msgstr "Aurreikuspena ez dago eskuragarri." + +#: ckan/templates/dataviewer/snippets/no_preview.html:5 +msgid "More details..." +msgstr "Xehetasun gehiago ..." + +#: ckan/templates/dataviewer/snippets/no_preview.html:12 +#, python-format +msgid "No handler defined for data type: %(type)s." +msgstr "Ez da kontrolatzailea definitu datu motarako: %(type)s." + +#: ckan/templates/development/snippets/form.html:5 +msgid "Standard" +msgstr "Estandarra" + +#: ckan/templates/development/snippets/form.html:5 +msgid "Standard Input" +msgstr "Sarrera estandarra" + +#: ckan/templates/development/snippets/form.html:6 +msgid "Medium" +msgstr "Ertaina" + +#: ckan/templates/development/snippets/form.html:6 +msgid "Medium Width Input" +msgstr "Zabalera ertaineko sarrera" + +#: ckan/templates/development/snippets/form.html:7 +msgid "Full" +msgstr "Osoa" + +#: ckan/templates/development/snippets/form.html:7 +msgid "Full Width Input" +msgstr "Zabalera osoko sarrera" + +#: ckan/templates/development/snippets/form.html:8 +msgid "Large" +msgstr "Luzea" + +#: ckan/templates/development/snippets/form.html:8 +msgid "Large Input" +msgstr "Sarrera luzea" + +#: ckan/templates/development/snippets/form.html:9 +msgid "Prepend" +msgstr "Lehenetsi" + +#: ckan/templates/development/snippets/form.html:9 +msgid "Prepend Input" +msgstr "Sarrera lehenetsi" + +#: ckan/templates/development/snippets/form.html:13 +msgid "Custom Field (empty)" +msgstr "Eremu pertsonalizatua (hutsik)" + +#: ckan/templates/development/snippets/form.html:19 +#: ckan/templates/snippets/custom_form_fields.html:20 +#: ckan/templates/snippets/custom_form_fields.html:37 +msgid "Custom Field" +msgstr "Eremu pertsonalizatua " + +#: ckan/templates/development/snippets/form.html:22 +msgid "Markdown" +msgstr "Markatuta" + +#: ckan/templates/development/snippets/form.html:23 +msgid "Textarea" +msgstr "Testu eremua" + +#: ckan/templates/development/snippets/form.html:24 +msgid "Select" +msgstr "Hautatu" + +#: ckan/templates/group/activity_stream.html:3 +#: ckan/templates/group/activity_stream.html:6 +#: ckan/templates/group/read_base.html:18 +#: ckan/templates/organization/activity_stream.html:3 +#: ckan/templates/organization/activity_stream.html:6 +#: ckan/templates/organization/read_base.html:18 +#: ckan/templates/package/activity.html:3 +#: ckan/templates/package/activity.html:6 +#: ckan/templates/package/read_base.html:21 +#: ckan/templates/user/activity_stream.html:3 +#: ckan/templates/user/activity_stream.html:6 +#: ckan/templates/user/read_base.html:20 +msgid "Activity Stream" +msgstr "Ekintza mugimendua" + +#: ckan/templates/group/admins.html:3 ckan/templates/group/admins.html:6 +#: ckan/templates/organization/admins.html:3 +#: ckan/templates/organization/admins.html:6 +msgid "Administrators" +msgstr "Administratzaileak" + +#: ckan/templates/group/base_form_page.html:7 +msgid "Add a Group" +msgstr "Talde bat gehitu" + +#: ckan/templates/group/base_form_page.html:11 +msgid "Group Form" +msgstr "Talde formularioa" + +#: ckan/templates/group/confirm_delete.html:3 +#: ckan/templates/group/confirm_delete.html:15 +#: ckan/templates/group/confirm_delete_member.html:3 +#: ckan/templates/group/confirm_delete_member.html:16 +#: ckan/templates/organization/confirm_delete.html:3 +#: ckan/templates/organization/confirm_delete.html:15 +#: ckan/templates/organization/confirm_delete_member.html:3 +#: ckan/templates/organization/confirm_delete_member.html:16 +#: ckan/templates/package/confirm_delete.html:3 +#: ckan/templates/package/confirm_delete.html:16 +#: ckan/templates/package/confirm_delete_resource.html:3 +#: ckan/templates/package/confirm_delete_resource.html:15 +msgid "Confirm Delete" +msgstr "Ezabaketa baieztatu" + +#: ckan/templates/group/confirm_delete.html:11 +msgid "Are you sure you want to delete group - {name}?" +msgstr "Ziur - {name} taldea ezabatu nahi duzula?" + +#: ckan/templates/group/confirm_delete_member.html:11 +#: ckan/templates/organization/confirm_delete_member.html:11 +msgid "Are you sure you want to delete member - {name}?" +msgstr "Ziur - {name} kidea ezabatu nahi duzula?" + +#: ckan/templates/group/edit.html:7 ckan/templates/group/edit_base.html:3 +#: ckan/templates/group/edit_base.html:11 +#: ckan/templates/group/read_base.html:12 +#: ckan/templates/organization/edit_base.html:11 +#: ckan/templates/organization/read_base.html:12 +#: ckan/templates/package/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 +msgid "Manage" +msgstr "Kudeatu" + +#: ckan/templates/group/edit.html:12 +msgid "Edit Group" +msgstr "Taldea editatu" + +#: ckan/templates/group/edit_base.html:21 ckan/templates/group/members.html:3 +#: ckan/templates/organization/edit_base.html:24 +#: ckan/templates/organization/members.html:3 +msgid "Members" +msgstr "Kideak" + +#: ckan/templates/group/history.html:3 ckan/templates/group/history.html:6 +#: ckan/templates/package/history.html:3 ckan/templates/package/history.html:6 +msgid "History" +msgstr "Historia" + +#: ckan/templates/group/index.html:13 +#: ckan/templates/user/dashboard_groups.html:7 +msgid "Add Group" +msgstr "Taldea gehitu" + +#: ckan/templates/group/index.html:20 +msgid "Search groups..." +msgstr "Taldeak bilatu..." + +#: ckan/templates/group/index.html:29 +msgid "There are currently no groups for this site" +msgstr "Momentu honetan ez da toki honentzako talderik existitzen" + +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 +msgid "How about creating one?" +msgstr "Zer moduz bat sortuz?" + +#: ckan/templates/group/member_new.html:8 +#: ckan/templates/organization/member_new.html:10 +msgid "Back to all members" +msgstr "Kide guztiak itzuli" + +#: ckan/templates/group/member_new.html:10 +#: ckan/templates/organization/member_new.html:7 +#: ckan/templates/organization/member_new.html:12 +msgid "Edit Member" +msgstr "Kidea editatu" + +#: ckan/templates/group/member_new.html:10 +#: ckan/templates/group/member_new.html:64 ckan/templates/group/members.html:6 +#: ckan/templates/organization/member_new.html:7 +#: ckan/templates/organization/member_new.html:12 +#: ckan/templates/organization/member_new.html:63 +#: ckan/templates/organization/members.html:8 +msgid "Add Member" +msgstr "Kidea gehitu" + +#: ckan/templates/group/member_new.html:18 +#: ckan/templates/organization/member_new.html:19 +msgid "Existing User" +msgstr "Erabiltzailea jada existitzen da" + +#: ckan/templates/group/member_new.html:21 +#: ckan/templates/organization/member_new.html:22 +msgid "If you wish to add an existing user, search for their username below." +msgstr "" +"Existitzen den erabiltzaile bat gehitu nahi baduzu, erabiltzailearen izena " +"behean bilatu" + +#: ckan/templates/group/member_new.html:38 +#: ckan/templates/organization/member_new.html:39 +msgid "or" +msgstr "edo" + +#: ckan/templates/group/member_new.html:42 +#: ckan/templates/organization/member_new.html:43 +msgid "New User" +msgstr "Erabiltzaile berria" + +#: ckan/templates/group/member_new.html:45 +#: ckan/templates/organization/member_new.html:46 +msgid "If you wish to invite a new user, enter their email address." +msgstr "" +"Erabiltzaile bat gonbidatu nahi baduzu, idatzi bere helbide elektronikoa" + +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 +#: ckan/templates/organization/member_new.html:54 +#: ckan/templates/organization/members.html:20 +msgid "Role" +msgstr "Rola" + +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 +#: ckan/templates/organization/member_new.html:57 +#: ckan/templates/organization/members.html:36 +msgid "Are you sure you want to delete this member?" +msgstr "Ziur erabiltzaile hau ezabatu nahi duzula?" + +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 +#: ckan/templates/group/snippets/group_form.html:38 +#: ckan/templates/organization/bulk_process.html:47 +#: ckan/templates/organization/member_new.html:57 +#: ckan/templates/organization/members.html:36 +#: ckan/templates/organization/snippets/organization_form.html:38 +#: ckan/templates/package/edit_view.html:19 +#: ckan/templates/package/snippets/package_form.html:39 +#: ckan/templates/package/snippets/resource_form.html:67 +#: ckan/templates/revision/read.html:24 +#: ckan/templates/user/edit_user_form.html:45 +msgid "Delete" +msgstr "Ezabatu" + +#: ckan/templates/group/member_new.html:77 +#: ckan/templates/organization/member_new.html:76 +msgid "What are roles?" +msgstr "Zer dira rolak?" + +#: ckan/templates/group/member_new.html:80 +msgid "" +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " +"datasets from groups

" +msgstr "" +"

Administratzailea:taldeko informaziona editatu dezake, " +"baita erakundearen kideak administratu " +"ere.

kidea:taldeetako datu multzoak gehitu/ezabatu " +"ahal ditu.

" + +#: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 +#: ckan/templates/group/new.html:7 +msgid "Create a Group" +msgstr "Talde bat sortu" + +#: ckan/templates/group/new_group_form.html:17 +msgid "Update Group" +msgstr "Taldea eguneratu" + +#: ckan/templates/group/new_group_form.html:19 +msgid "Create Group" +msgstr "Taldea sortu" + +#: ckan/templates/group/read.html:19 ckan/templates/organization/read.html:25 +#: ckan/templates/snippets/search_form.html:3 +msgid "Search datasets..." +msgstr "Datu multzoak bilatu..." + +#: ckan/templates/group/snippets/feeds.html:3 +msgid "Datasets in group: {group}" +msgstr "Datu multzoak taldean: {group}" + +#: ckan/templates/group/snippets/feeds.html:4 +#: ckan/templates/organization/snippets/feeds.html:4 +msgid "Recent Revision History" +msgstr "Azterketa egin berrien historia" + +#: ckan/templates/group/snippets/group_form.html:10 +#: ckan/templates/organization/snippets/organization_form.html:10 +#: ckan/templates/package/snippets/resource_form.html:30 +msgid "Name" +msgstr "Izena" + +#: ckan/templates/group/snippets/group_form.html:10 +msgid "My Group" +msgstr "Nire taldea" + +#: ckan/templates/group/snippets/group_form.html:18 +msgid "my-group" +msgstr "nire-taldea" + +#: ckan/templates/group/snippets/group_form.html:20 +msgid "A little information about my group..." +msgstr "Nire taldeari buruzko informazio piska bat..." + +#: ckan/templates/group/snippets/group_form.html:38 +msgid "Are you sure you want to delete this Group?" +msgstr "Ziur talde hau ezabatu nahi duzula?" + +#: ckan/templates/group/snippets/group_form.html:41 +msgid "Save Group" +msgstr "Taldea gordetu" + +#: ckan/templates/group/snippets/group_item.html:38 +#: ckan/templates/group/snippets/group_item.html:39 +msgid "View {name}" +msgstr "Ikusi {izena}" + +#: ckan/templates/group/snippets/group_item.html:43 +msgid "Remove dataset from this group" +msgstr "Talde honen datu multzoa ezabatu" + +#: ckan/templates/group/snippets/helper.html:4 +msgid "What are Groups?" +msgstr "Zer dira taldeak?" + +#: ckan/templates/group/snippets/helper.html:8 +msgid "" +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " +msgstr "" +"CKAN -go taldeak erabili ahal dituzu datu multzoen bildumak sortu eta " +"administratzeko. Hau proiektu zehatz baten edo talde baten, edo gai " +"partikular bat datu multzoak katalogatzeko erabili daiteke, edo norberaren " +"argitaratutako datu multzoak modu oso erraz batean bilatu eta aurkitzeko." + +#: ckan/templates/group/snippets/history_revisions.html:10 +#: ckan/templates/package/snippets/history_revisions.html:10 +msgid "Compare" +msgstr "Konparatu" + +#: ckan/templates/group/snippets/info.html:16 +#: ckan/templates/organization/bulk_process.html:72 +#: ckan/templates/package/read.html:21 +#: ckan/templates/package/snippets/package_basic_fields.html:118 +#: ckan/templates/snippets/organization.html:37 +#: ckan/templates/snippets/package_item.html:42 +msgid "Deleted" +msgstr "Ezabatu da" + +#: ckan/templates/group/snippets/info.html:24 +#: ckan/templates/package/snippets/package_context.html:7 +#: ckan/templates/snippets/organization.html:45 +msgid "read more" +msgstr "gehiago irakurri" + +#: ckan/templates/group/snippets/revisions_table.html:7 +#: ckan/templates/package/snippets/revisions_table.html:7 +#: ckan/templates/revision/read.html:5 ckan/templates/revision/read.html:9 +#: ckan/templates/revision/read.html:39 +#: ckan/templates/revision/snippets/revisions_list.html:4 +msgid "Revision" +msgstr "Berrikustea" + +#: ckan/templates/group/snippets/revisions_table.html:8 +#: ckan/templates/package/snippets/revisions_table.html:8 +#: ckan/templates/revision/read.html:53 +#: ckan/templates/revision/snippets/revisions_list.html:5 +msgid "Timestamp" +msgstr "Denbora-marka" + +#: ckan/templates/group/snippets/revisions_table.html:9 +#: ckan/templates/package/snippets/additional_info.html:25 +#: ckan/templates/package/snippets/additional_info.html:30 +#: ckan/templates/package/snippets/package_metadata_fields.html:14 +#: ckan/templates/package/snippets/revisions_table.html:9 +#: ckan/templates/revision/read.html:50 +#: ckan/templates/revision/snippets/revisions_list.html:6 +msgid "Author" +msgstr "Egileak" + +#: ckan/templates/group/snippets/revisions_table.html:10 +#: ckan/templates/package/snippets/revisions_table.html:10 +#: ckan/templates/revision/read.html:56 +#: ckan/templates/revision/snippets/revisions_list.html:8 +msgid "Log Message" +msgstr "Erregistro mezua" + +#: ckan/templates/home/index.html:4 +msgid "Welcome" +msgstr "Ongi etorri" + +#: ckan/templates/home/snippets/about_text.html:1 +msgid "" +"

CKAN is the world’s leading open-source data portal platform.

" +"

CKAN is a complete out-of-the-box software solution that makes data " +"accessible and usable – by providing tools to streamline publishing, " +"sharing, finding and using data (including storage of data and provision of " +"robust data APIs). CKAN is aimed at data publishers (national and regional " +"governments, companies and organizations) wanting to make their data open " +"and available.

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " +"government portals, as well as city and municipal sites in the US, UK, " +"Argentina, Finland and elsewhere.

CKAN: http://ckan.org/
CKAN Tour: http://ckan.org/tour/
Features " +"overview: http://ckan.org/features/

" +msgstr "" +"

CKAN kode irekiko datu plataforma da, mundu mailan aintzindari.

CKAN erabiltzeko prest dagoen software irtenbide bat da, zein argitaretzeko, banantzeko, aukitzeko eta erabiltzeko tresnak eskainiz datuak esduragarriak eta erebligarriak eginten ditu (datu bilteguiak eta API eskaintza sendioak barne). CKAN bere datuak irekiak eta erabligarriak egin nahi dituzten hornitzailetzat (adminiztrazion nazionalak eta regionalak, kopaniak eta erakundeak ) orientatuta dago..

CKAN gobernuak eta munduko erabilgarri taldeak erabiltzen dute eta hainbat datu oficial eta komunitariok kudeatzen ditu, tokiko, estatuko eta nazioarteko gobernueen portalak sartuz, adibidez\n" +"data.gov.uk Erresuma batuetakoa, publicdata.eu Europar batasuneko; dados.gov.br Basileko; baita Danimarkako Erresuma batuko eta Holandako gobernuko portalak , Estatu batuetako, Erresuma batuetako, Argentinako, Finlandiako y eta beste lekuetako hiriak eta udalerriak

CKAN: http://ckan.org/
Tour de CKAN: http://ckan.org/tour/
Funtzioen berrikuspena: http://ckan.org/features/" + +#: ckan/templates/home/snippets/promoted.html:8 +msgid "Welcome to CKAN" +msgstr "Ongi etorria CKAN -era" + +#: ckan/templates/home/snippets/promoted.html:10 +msgid "" +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " +msgstr "" +"Hau CKAN -i edo tokiari buruzko testu lagunkoia da. Ez dugu hemen doan " +"mezurik baina berehala izango dugu." + +#: ckan/templates/home/snippets/promoted.html:19 +msgid "This is a featured section" +msgstr "Hau sekzio nabarmendua da" + +#: ckan/templates/home/snippets/search.html:2 +msgid "E.g. environment" +msgstr "Adibidez: Ingurumena" + +#: ckan/templates/home/snippets/search.html:6 +msgid "Search data" +msgstr "Datuak bilatu" + +#: ckan/templates/home/snippets/search.html:8 +msgid "Search datasets" +msgstr "" + +#: ckan/templates/home/snippets/search.html:16 +msgid "Popular tags" +msgstr "Etiketa popularrak" + +#: ckan/templates/home/snippets/stats.html:5 +msgid "{0} statistics" +msgstr "{0} estadistika" + +#: ckan/templates/home/snippets/stats.html:11 +msgid "dataset" +msgstr "datu multzoa" + +#: ckan/templates/home/snippets/stats.html:11 +msgid "datasets" +msgstr "datu multzoak" + +#: ckan/templates/home/snippets/stats.html:17 +msgid "organizations" +msgstr "erakundeak" + +#: ckan/templates/home/snippets/stats.html:23 +msgid "groups" +msgstr "taldeak" + +#: ckan/templates/macros/form.html:126 +#, python-format +msgid "" +"You can use Markdown formatting here" +msgstr "" +"formato Markdown emen erabili daitzeke" + +#: ckan/templates/macros/form.html:277 +msgid "This field is required" +msgstr "Eremu hau beharrezkoa da" + +#: ckan/templates/macros/form.html:277 +msgid "Custom" +msgstr "Pertsonalizatuta" + +#: ckan/templates/macros/form.html:302 +msgid "The form contains invalid entries:" +msgstr "Formularioak baliogabeko sarrerak ditu:" + +#: ckan/templates/macros/form.html:407 +msgid "Required field" +msgstr "Beharrezko eremua" + +#: ckan/templates/macros/form.html:422 +msgid "http://example.com/my-image.jpg" +msgstr "http://adibidea.com/nire-irudia.jpg" + +#: ckan/templates/macros/form.html:423 +msgid "Image URL" +msgstr "Irudiaren URL -a" + +#: ckan/templates/macros/form.html:438 +msgid "Clear Upload" +msgstr "Karga ezabatu" + +#: ckan/templates/organization/base_form_page.html:5 +msgid "Organization Form" +msgstr "Erakundearen formularioa" + +#: ckan/templates/organization/bulk_process.html:3 +#: ckan/templates/organization/bulk_process.html:11 +msgid "Edit datasets" +msgstr "Datu multzoa editatu" + +#: ckan/templates/organization/bulk_process.html:16 +msgid " found for \"{query}\"" +msgstr "\"{query}\" -rentzat aurkitutak" + +#: ckan/templates/organization/bulk_process.html:18 +msgid "Sorry no datasets found for \"{query}\"" +msgstr "Sentitzen dugu baina ez dira \"{query}\" -rentzat datu multzorik aurkitu " + +#: ckan/templates/organization/bulk_process.html:37 +msgid "Make public" +msgstr "Publikoa egin" + +#: ckan/templates/organization/bulk_process.html:41 +msgid "Make private" +msgstr "Pribatua egin" + +#: ckan/templates/organization/bulk_process.html:70 +#: ckan/templates/package/read.html:18 +#: ckan/templates/snippets/package_item.html:40 +msgid "Draft" +msgstr "Zirriborroa" + +#: ckan/templates/organization/bulk_process.html:75 +#: ckan/templates/package/read.html:11 +#: ckan/templates/package/snippets/package_basic_fields.html:98 +#: ckan/templates/snippets/package_item.html:31 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 +msgid "Private" +msgstr "Pribatua" + +#: ckan/templates/organization/bulk_process.html:88 +msgid "This organization has no datasets associated to it" +msgstr "Erakunde honek ez ditu berekiko elkartutako daturik" + +#: ckan/templates/organization/confirm_delete.html:11 +msgid "Are you sure you want to delete organization - {name}?" +msgstr "Ziur - {name} erakundea ezabatu nahi duzula?" + +#: ckan/templates/organization/edit.html:6 +#: ckan/templates/organization/snippets/info.html:13 +#: ckan/templates/organization/snippets/info.html:16 +msgid "Edit Organization" +msgstr "Erakundea editatu" + +#: ckan/templates/organization/index.html:13 +#: ckan/templates/user/dashboard_organizations.html:7 +msgid "Add Organization" +msgstr "Erakundea gehitu" + +#: ckan/templates/organization/index.html:20 +msgid "Search organizations..." +msgstr "Erakundeak bilatu" + +#: ckan/templates/organization/index.html:29 +msgid "There are currently no organizations for this site" +msgstr "Momentu honetan ez da toki honetarako erakunderik existitzen" + +#: ckan/templates/organization/member_new.html:31 +#: ckan/templates/user/edit_user_form.html:8 +#: ckan/templates/user/logout_first.html:10 +#: ckan/templates/user/new_user_form.html:5 +#: ckan/templates/user/perform_reset.html:22 +#: ckan/templates/user/read_base.html:76 +#: ckan/templates/user/request_reset.html:16 +#: ckan/templates/user/snippets/login_form.html:20 +msgid "Username" +msgstr "Erabiltzailearen izena" + +#: ckan/templates/organization/member_new.html:49 +msgid "Email address" +msgstr "Helbide elektronikoa" + +#: ckan/templates/organization/member_new.html:59 +msgid "Update Member" +msgstr "Kidea eguneratu" + +#: ckan/templates/organization/member_new.html:79 +msgid "" +"

Admin: Can add/edit and delete datasets, as well as " +"manage organization members.

Editor: Can add and " +"edit datasets, but not manage organization members.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" +msgstr "" +"

Administratzaileak: datu multzoak gehitu/editatu eta " +"ezabatu ahal ditu, baita erakunde baten kideak administratu ere.

" +"

Editoreak:datu multzoak gehitu eta editatu ahal ditu, " +"baina ezin ditu erakunde baten kideak administratu.

" +"

Kideak: erakunde baten datu multzo pribatuak ikus " +"ditzake, baina ezin ditu datu multzo berririk gehitu.

" + +#: ckan/templates/organization/members.html:14 +msgid "{count} member" +msgid_plural "{count} members" +msgstr[0] "{count} kidea" +msgstr[1] "{count} kideak" + +#: ckan/templates/organization/new.html:3 +#: ckan/templates/organization/new.html:5 +#: ckan/templates/organization/new.html:7 +#: ckan/templates/organization/new.html:12 +msgid "Create an Organization" +msgstr "Erakunde bat sortu" + +#: ckan/templates/organization/new_organization_form.html:17 +msgid "Update Organization" +msgstr "Erakundea eguneratu" + +#: ckan/templates/organization/new_organization_form.html:19 +msgid "Create Organization" +msgstr "Erakundea sortu" + +#: ckan/templates/organization/snippets/feeds.html:3 +msgid "Datasets in organization: {group}" +msgstr "Erakundeetan datu multzoak: {group}" + +#: ckan/templates/organization/snippets/help.html:4 +#: ckan/templates/organization/snippets/helper.html:4 +msgid "What are Organizations?" +msgstr "Zer dira erakundeak?" + +#: ckan/templates/organization/snippets/help.html:7 +msgid "" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" +msgstr "" +"

Erakundeak datu multzoetarako argitaletxe sail gisa jokatzen du " +"(adibidez, Osasun Saila). Honek esan nahi du datu multzoak argitaratu ahal " +"direla sail bati dagokiolako banakako erabiltzaile bati beharrean.

" +"

Erakundeen barnean, administratzaileak beren kideentzat rolak eta " +"baimenak esleitzen dituzte, banakako erabiltzaileei erakunde horri buruzko " +"datu multzoak argitaratzeko eskubidea emanez (adibidez: Nazioko Estatistika " +"Bulegoa).

" + +#: ckan/templates/organization/snippets/helper.html:8 +msgid "" +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " +msgstr "" +"CKAN -en Erakundeak sortu, kudeatu eta datu multzoen bildumak argitaratzeko " +"erabiltzen dira. Erabiltzaileek profil ezberdinak izan ditzakete erakunde " +"batean, beren sortzeko, editatzeko eta argitaratzeko baimena mailaren " +"arabera." + +#: ckan/templates/organization/snippets/organization_form.html:10 +msgid "My Organization" +msgstr "Nire erakundea" + +#: ckan/templates/organization/snippets/organization_form.html:18 +msgid "my-organization" +msgstr "nire-erakundea" + +#: ckan/templates/organization/snippets/organization_form.html:20 +msgid "A little information about my organization..." +msgstr "Nire erakundeari buruzko informazio piska bat..." + +#: ckan/templates/organization/snippets/organization_form.html:38 +msgid "" +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." +msgstr "" + +#: ckan/templates/organization/snippets/organization_form.html:41 +msgid "Save Organization" +msgstr "Gorde Erakundea" + +#: ckan/templates/organization/snippets/organization_item.html:42 +#: ckan/templates/organization/snippets/organization_item.html:43 +msgid "View {organization_name}" +msgstr "Ikusi (erakunde_izena)" + +#: ckan/templates/package/base.html:22 ckan/templates/package/new.html:9 +#: ckan/templates/package/snippets/new_package_breadcrumb.html:2 +msgid "Create Dataset" +msgstr "Datu multzoa sortu" + +#: ckan/templates/package/base_form_page.html:22 +msgid "What are datasets?" +msgstr "Zer dira datu multzoak?" + +#: ckan/templates/package/base_form_page.html:25 +msgid "" +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " +msgstr "" +"CKAN -en datu multzo bat datu baliabideen bilduma da (fitxeroen entzekoak), " +"URL bati lotutako azalpen eta informazio batekin batera. Datu multzoak dira " +"erabiltzaileek datu bat bilatzen dutenean ikusten dutena. " + +#: ckan/templates/package/confirm_delete.html:12 +msgid "Are you sure you want to delete dataset - {name}?" +msgstr "Ziur - {name} datu multzoa ezabatu nahi duzula?" + +#: ckan/templates/package/confirm_delete_resource.html:11 +msgid "Are you sure you want to delete resource - {name}?" +msgstr "Ziur - {name} baliabidea ezabatu nahi duzula?" + +#: ckan/templates/package/edit_base.html:16 +msgid "View dataset" +msgstr "Datu multzoa ikusi" + +#: ckan/templates/package/edit_base.html:20 +msgid "Edit metadata" +msgstr "Metadatuak editatu" + +#: ckan/templates/package/edit_view.html:3 +#: ckan/templates/package/edit_view.html:4 +#: ckan/templates/package/edit_view.html:8 +#: ckan/templates/package/edit_view.html:12 +msgid "Edit view" +msgstr "Ikuspegia editatu" + +#: ckan/templates/package/edit_view.html:20 +#: ckan/templates/package/new_view.html:28 +#: ckan/templates/package/snippets/resource_item.html:32 +msgid "Preview" +msgstr "Aurreikuspena" + +#: ckan/templates/package/edit_view.html:21 +msgid "Update" +msgstr "Eguneratu" + +#: ckan/templates/package/group_list.html:14 +msgid "Associate this group with this dataset" +msgstr "Erlazionatu talde hau datu multzo honekin" + +#: ckan/templates/package/group_list.html:14 +msgid "Add to group" +msgstr "Gehitu taldeari" + +#: ckan/templates/package/group_list.html:23 +msgid "There are no groups associated with this dataset" +msgstr "Ez dago datu multzo honekin erlazionaturiko talderik" + +#: ckan/templates/package/new_package_form.html:15 +msgid "Update Dataset" +msgstr "Datu multzoa eguneratu" + +#: ckan/templates/package/new_resource.html:5 +msgid "Add data to the dataset" +msgstr "Datuak gehitu datu multzora" + +#: ckan/templates/package/new_resource.html:11 +#: ckan/templates/package/new_resource_not_draft.html:8 +msgid "Add New Resource" +msgstr "Baliabide berria gehitu" + +#: ckan/templates/package/new_resource_not_draft.html:3 +#: ckan/templates/package/new_resource_not_draft.html:4 +msgid "Add resource" +msgstr "Baliabidea gehitu" + +#: ckan/templates/package/new_resource_not_draft.html:16 +msgid "New resource" +msgstr "Baliabide berria" + +#: ckan/templates/package/new_view.html:3 +#: ckan/templates/package/new_view.html:4 +#: ckan/templates/package/new_view.html:8 +#: ckan/templates/package/new_view.html:12 +msgid "Add view" +msgstr "Ikuspegia gehitu" + +#: ckan/templates/package/new_view.html:19 +msgid "" +" Data Explorer views may be slow and unreliable unless the DataStore " +"extension is enabled. For more information, please see the Data Explorer " +"documentation. " +msgstr "" +"Data Explorer-en bistak motelak eta fidagarritasunik gabekoa izan daitezke, " +"DataStore luzapena aktibatuta izan ezean. Informazio gehiago nahi izanez " +"gero Data Explorer -en dokumentazioa berrikusi." + +#: ckan/templates/package/new_view.html:29 +#: ckan/templates/package/snippets/resource_form.html:83 +msgid "Add" +msgstr "Gehitu" + +#: ckan/templates/package/read_base.html:32 +#, python-format +msgid "" +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." +msgstr "" +"Hau datu multzo honen bertsio zahar bat da, %(data eta ordua)n editatuta. " +"Ezberdintasun nabarmenak izan ditzake gaur egungo " +"bertsioarekin." + +#: ckan/templates/package/resource_edit_base.html:17 +msgid "All resources" +msgstr "Baliabide guztiak" + +#: ckan/templates/package/resource_edit_base.html:19 +msgid "View resource" +msgstr "Baliabidea ikusi" + +#: ckan/templates/package/resource_edit_base.html:24 +#: ckan/templates/package/resource_edit_base.html:30 +msgid "Edit resource" +msgstr "Baliabidea editatu" + +#: ckan/templates/package/resource_edit_base.html:26 +msgid "Views" +msgstr "Bistak" + +#: ckan/templates/package/resource_read.html:40 +msgid "API Endpoint" +msgstr "API sarbide-puntua" + +#: ckan/templates/package/resource_read.html:42 +#: ckan/templates/package/snippets/resource_item.html:47 +msgid "Go to resource" +msgstr "Baliabidera joan" + +#: ckan/templates/package/resource_read.html:44 +#: ckan/templates/package/snippets/resource_item.html:44 +msgid "Download" +msgstr "Deskargatu" + +#: ckan/templates/package/resource_read.html:76 +#: ckan/templates/package/resource_read.html:78 +msgid "URL:" +msgstr "URL:" + +#: ckan/templates/package/resource_read.html:86 +msgid "From the dataset abstract" +msgstr "Datu multzoaren laburpenarena" + +#: ckan/templates/package/resource_read.html:88 +#, python-format +msgid "Source: %(dataset)s" +msgstr "Iturria: %(dataset)s" + +#: ckan/templates/package/resource_read.html:127 +msgid "There are no views created for this resource yet." +msgstr "Oraindik ez dira baliabide honentzako bistak existitzen" + +#: ckan/templates/package/resource_read.html:131 +msgid "Not seeing the views you were expecting?" +msgstr "Ez dituzu espero zenituen bistak aurkitzen?" + +#: ckan/templates/package/resource_read.html:136 +msgid "Here are some reasons you may not be seeing expected views:" +msgstr "Jarraian espero zenituen bistak ez aurkitzeko arrazoi batzuk:" + +#: ckan/templates/package/resource_read.html:138 +msgid "No view has been created that is suitable for this resource" +msgstr "Baliabide honentzat egokia den bistarik ez da sortu" + +#: ckan/templates/package/resource_read.html:139 +msgid "The site administrators may not have enabled the relevant view plugins" +msgstr "" +"Tokiko administratzaileak garrantzizko bisten plugins-ak gaitu gabe izan " +"ditzakete" + +#: ckan/templates/package/resource_read.html:140 +msgid "" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" +msgstr "" +"Bista batek DataStore-a behar badu, orduan DataStorearen plugin-a gaitu gabe" +" egon daiteke, edo datuak DataStorean argitaratu gabe egon daitezke, edo " +"DataStoreak ez du datuak prozesatzeaz bukatu" + +#: ckan/templates/package/resource_read.html:162 +msgid "Additional Information" +msgstr "Informazio gehigarria" + +#: ckan/templates/package/resource_read.html:166 +#: ckan/templates/package/snippets/additional_info.html:6 +#: ckan/templates/revision/diff.html:43 +#: ckan/templates/snippets/additional_info.html:11 +msgid "Field" +msgstr "Eremua" + +#: ckan/templates/package/resource_read.html:167 +#: ckan/templates/package/snippets/additional_info.html:7 +#: ckan/templates/snippets/additional_info.html:12 +msgid "Value" +msgstr "Balorea" + +#: ckan/templates/package/resource_read.html:172 +msgid "Data last updated" +msgstr "Datuen azken eguneratzea" + +#: ckan/templates/package/resource_read.html:173 +#: ckan/templates/package/resource_read.html:177 +#: ckan/templates/package/resource_read.html:181 +#: ckan/templates/package/resource_read.html:185 +msgid "unknown" +msgstr "ezezaguna" + +#: ckan/templates/package/resource_read.html:176 +msgid "Metadata last updated" +msgstr "Metadatuen azken eguneratzea" + +#: ckan/templates/package/resource_read.html:180 +#: ckan/templates/package/snippets/additional_info.html:70 +msgid "Created" +msgstr "Sortuta" + +#: ckan/templates/package/resource_read.html:184 +#: ckan/templates/package/snippets/resource_form.html:39 +#: ckan/templates/package/snippets/resource_info.html:16 +msgid "Format" +msgstr "Formatua" + +#: ckan/templates/package/resource_read.html:188 +#: ckan/templates/package/snippets/package_basic_fields.html:30 +#: ckan/templates/snippets/license.html:21 +msgid "License" +msgstr "Lizentzia" + +#: ckan/templates/package/resource_views.html:10 +msgid "New view" +msgstr "Ikuspegi berria" + +#: ckan/templates/package/resource_views.html:28 +msgid "This resource has no views" +msgstr "Baliabide honek ez ditu bistarik" + +#: ckan/templates/package/resources.html:8 +msgid "Add new resource" +msgstr "Baliabide berria gehitu" + +#: ckan/templates/package/resources.html:20 +#: ckan/templates/package/snippets/resources_list.html:26 +#, python-format +msgid "" +"

This dataset has no data, why not " +"add some?

" +msgstr "" +"

datu multzoak ez ditu daturik,zergatik ez duzu baten bat gehitzen?

" + +#: ckan/templates/package/search.html:52 +msgid "API" +msgstr "API" + +#: ckan/templates/package/search.html:53 +msgid "API Docs" +msgstr "API Docs" + +#: ckan/templates/package/search.html:55 +msgid "full {format} dump" +msgstr "{format} -en iraultze osoa" + +#: ckan/templates/package/search.html:56 +#, python-format +msgid "" +" You can also access this registry using the %(api_link)s (see " +"%(api_doc_link)s) or download a %(dump_link)s. " +msgstr "" +"Erregistro honetan sar zaitezke %(api_link)s erabiliz (ikusi " +"%(api_doc_link)s) edo %(dump_link)s bat deskargatuz." + +#: ckan/templates/package/search.html:60 +#, python-format +msgid "" +" You can also access this registry using the %(api_link)s (see " +"%(api_doc_link)s). " +msgstr "" +"Erregistro honetan sar zaitezke %(api_link)s (ikusi %(api_doc_link)s) " +"erabiliz." + +#: ckan/templates/package/view_edit_base.html:9 +msgid "All views" +msgstr "Ikuspegi guztiak" + +#: ckan/templates/package/view_edit_base.html:12 +msgid "View view" +msgstr "Ikuspegia ikusi" + +#: ckan/templates/package/view_edit_base.html:37 +msgid "View preview" +msgstr "Aurreikuspena ikusi" + +#: ckan/templates/package/snippets/additional_info.html:2 +#: ckan/templates/snippets/additional_info.html:7 +msgid "Additional Info" +msgstr "Anformazio gehigarria" + +#: ckan/templates/package/snippets/additional_info.html:14 +#: ckan/templates/package/snippets/package_metadata_fields.html:6 +msgid "Source" +msgstr "Iturria" + +#: ckan/templates/package/snippets/additional_info.html:37 +#: ckan/templates/package/snippets/additional_info.html:42 +#: ckan/templates/package/snippets/package_metadata_fields.html:20 +msgid "Maintainer" +msgstr "Mantentzailea" + +#: ckan/templates/package/snippets/additional_info.html:49 +#: ckan/templates/package/snippets/package_metadata_fields.html:10 +msgid "Version" +msgstr "Bertsioa" + +#: ckan/templates/package/snippets/additional_info.html:56 +#: ckan/templates/package/snippets/package_basic_fields.html:114 +#: ckan/templates/user/read_base.html:91 +msgid "State" +msgstr "Egoera" + +#: ckan/templates/package/snippets/additional_info.html:62 +msgid "Last Updated" +msgstr "Azken eguneratzea" + +#: ckan/templates/package/snippets/cannot_create_package.html:10 +msgid "Before you can create a dataset you need to create an organization." +msgstr "Data set sortu baino lehen, erakunde bat sortu behar duzu." + +#: ckan/templates/package/snippets/cannot_create_package.html:13 +msgid "Create a new organization" +msgstr "Erakunde berri bat sortu" + +#: ckan/templates/package/snippets/cannot_create_package.html:18 +msgid "There are no organizations to which you can assign this dataset." +msgstr "Ez dago erakunderik datu-multzo hau esleitzeko." + +#: ckan/templates/package/snippets/cannot_create_package.html:19 +msgid "" +"Ask a system administrator to create an organization before you can " +"continue." +msgstr "" +"Erakunde bat sortu aurretik, sistemaren administratzaile bati galdetu." + +#: ckan/templates/package/snippets/package_basic_fields.html:4 +#: ckan/templates/package/snippets/view_form.html:8 +msgid "Title" +msgstr "Izenburua" + +#: ckan/templates/package/snippets/package_basic_fields.html:4 +msgid "eg. A descriptive title" +msgstr "adibidez. izenburu deskribatzaile bat" + +#: ckan/templates/package/snippets/package_basic_fields.html:13 +msgid "eg. my-dataset" +msgstr "adibidez. Nire-datu-multzoa" + +#: ckan/templates/package/snippets/package_basic_fields.html:19 +msgid "eg. Some useful notes about the data" +msgstr "adibidez. Datuei buruzko baliozko hainbat ohar " + +#: ckan/templates/package/snippets/package_basic_fields.html:24 +msgid "eg. economy, mental health, government" +msgstr "adibidez. Ekonomia, buruko osaduna, gobernua" + +#: ckan/templates/package/snippets/package_basic_fields.html:45 +msgid "" +" License definitions and additional information can be found at opendefinition.org " +msgstr "" +"Lizentzien esanahiak eta informazio gehigarria opendefinition.org -n " +"aurkitu daiteke" + +#: ckan/templates/package/snippets/package_basic_fields.html:76 +#: ckan/templates/snippets/organization.html:23 +msgid "Organization" +msgstr "Antolakuntza" + +#: ckan/templates/package/snippets/package_basic_fields.html:80 +msgid "No organization" +msgstr "Erakunderik gabe" + +#: ckan/templates/package/snippets/package_basic_fields.html:95 +msgid "Visibility" +msgstr "Ikusgaitasuna" + +#: ckan/templates/package/snippets/package_basic_fields.html:98 +msgid "Public" +msgstr "Publikoa" + +#: ckan/templates/package/snippets/package_basic_fields.html:117 +msgid "Active" +msgstr "Aktiboa" + +#: ckan/templates/package/snippets/package_form.html:28 +msgid "" +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." +msgstr "" +"Goian aukeratu duzun lizentzia datuakdatu multzo honetan gehitzen " +"dituzun edozein baliabide fitxategien edukietan besterik ez du aplikatzen. " +"Inprimaki hau bidaltzean, inprimakian sartutakometadatosbaloreaklizentziaren menpe " +"askatzearekin ados zaude Open Database." + +#: ckan/templates/package/snippets/package_form.html:39 +msgid "Are you sure you want to delete this dataset?" +msgstr "Ziur datu multzo hau ezabatu nahi duzula?" + +#: ckan/templates/package/snippets/package_form.html:43 +msgid "Next: Add Data" +msgstr "Hurrengoa: Datuak gehitu" + +#: ckan/templates/package/snippets/package_metadata_fields.html:6 +msgid "http://example.com/dataset.json" +msgstr "http://adibidea.com/dataset.json" + +#: ckan/templates/package/snippets/package_metadata_fields.html:10 +msgid "1.0" +msgstr "1.0" + +#: ckan/templates/package/snippets/package_metadata_fields.html:14 +#: ckan/templates/package/snippets/package_metadata_fields.html:20 +#: ckan/templates/user/new_user_form.html:6 +msgid "Joe Bloggs" +msgstr "Joe Bloggs" + +#: ckan/templates/package/snippets/package_metadata_fields.html:16 +msgid "Author Email" +msgstr "Egilearen email-a" + +#: ckan/templates/package/snippets/package_metadata_fields.html:16 +#: ckan/templates/package/snippets/package_metadata_fields.html:22 +#: ckan/templates/user/new_user_form.html:7 +msgid "joe@example.com" +msgstr "joe@adibidea.com" + +#: ckan/templates/package/snippets/package_metadata_fields.html:22 +msgid "Maintainer Email" +msgstr "Mantentzailearen email-a" + +#: ckan/templates/package/snippets/resource_edit_form.html:12 +msgid "Update Resource" +msgstr "Baliabidea eguneratu" + +#: ckan/templates/package/snippets/resource_form.html:26 +msgid "Data" +msgstr "Datuak" + +#: ckan/templates/package/snippets/resource_form.html:26 +msgid "http://example.com/external-data.csv" +msgstr "http://example.com/external-data.csv" + +#: ckan/templates/package/snippets/resource_form.html:30 +msgid "eg. January 2011 Gold Prices" +msgstr "adibidez. Urrearen prezioak 2011ko Urtarrilean" + +#: ckan/templates/package/snippets/resource_form.html:34 +msgid "Some useful notes about the data" +msgstr "Datuei buruzko baliozko hainbat ohar" + +#: ckan/templates/package/snippets/resource_form.html:39 +msgid "eg. CSV, XML or JSON" +msgstr "adibidez. CSV, XML edo JSON" + +#: ckan/templates/package/snippets/resource_form.html:42 +msgid "This will be guessed automatically. Leave blank if you wish" +msgstr "Hau automatikoki igarriko da, utzi bete gabe nahi baduzu" + +#: ckan/templates/package/snippets/resource_form.html:53 +msgid "eg. 2012-06-05" +msgstr "adibidez. 2012-06-05" + +#: ckan/templates/package/snippets/resource_form.html:55 +msgid "File Size" +msgstr "Fitxategiaren tamaina" + +#: ckan/templates/package/snippets/resource_form.html:55 +msgid "eg. 1024" +msgstr "adibidez. 1024" + +#: ckan/templates/package/snippets/resource_form.html:57 +#: ckan/templates/package/snippets/resource_form.html:59 +msgid "MIME Type" +msgstr "MIME mota" + +#: ckan/templates/package/snippets/resource_form.html:57 +#: ckan/templates/package/snippets/resource_form.html:59 +msgid "eg. application/json" +msgstr "adibidez. Aplikazioa / json" + +#: ckan/templates/package/snippets/resource_form.html:67 +msgid "Are you sure you want to delete this resource?" +msgstr "Ziur baliabide hau ezabatu nahi duzula?" + +#: ckan/templates/package/snippets/resource_form.html:73 +msgid "Previous" +msgstr "Aurrekoa" + +#: ckan/templates/package/snippets/resource_form.html:76 +msgid "Save & add another" +msgstr "Gorde eta beste bat gehitu" + +#: ckan/templates/package/snippets/resource_form.html:79 +msgid "Finish" +msgstr "Bukatu" + +#: ckan/templates/package/snippets/resource_help.html:2 +msgid "What's a resource?" +msgstr "Zer da baliabide bat?" + +#: ckan/templates/package/snippets/resource_help.html:4 +msgid "A resource can be any file or link to a file containing useful data." +msgstr "" +"Baliabide bat baliozko datuak dituen edozein fitxategi edo fitxategirako " +"lotura izan daiteke." + +#: ckan/templates/package/snippets/resource_item.html:23 +msgid "Explore" +msgstr "Arakatu" + +#: ckan/templates/package/snippets/resource_item.html:35 +msgid "More information" +msgstr "Informazio gahiago" + +#: ckan/templates/package/snippets/resource_view.html:10 +msgid "Fullscreen" +msgstr "" + +#: ckan/templates/package/snippets/resource_view.html:18 +msgid "Embed" +msgstr "Txertatu" + +#: ckan/templates/package/snippets/resource_view.html:32 +msgid "This resource view is not available at the moment." +msgstr "Baliabidearen ikuspegi hau ez dago momentuz erabilgarri." + +#: ckan/templates/package/snippets/resource_view.html:74 +msgid "Embed resource view" +msgstr "Baliabidearen ikuspegia txertatu" + +#: ckan/templates/package/snippets/resource_view.html:77 +msgid "" +"You can copy and paste the embed code into a CMS or blog software that " +"supports raw HTML" +msgstr "" +"Txertatze kodea CMS edo HTML gordina jasaten duen blog batean kopiatu eta " +"itsasi dezakezu" + +#: ckan/templates/package/snippets/resource_view.html:80 +msgid "Width" +msgstr "Zabalera" + +#: ckan/templates/package/snippets/resource_view.html:83 +msgid "Height" +msgstr "Altua" + +#: ckan/templates/package/snippets/resource_view.html:86 +msgid "Code" +msgstr "Kodea" + +#: ckan/templates/package/snippets/resource_views_list.html:8 +msgid "Resource Preview" +msgstr "Baliabidearen aurreikuspena" + +#: ckan/templates/package/snippets/resources_list.html:13 +msgid "Data and Resources" +msgstr "Datuak eta baliabideak" + +#: ckan/templates/package/snippets/resources_list.html:30 +msgid "This dataset has no data" +msgstr "Datu multzo honek ez ditu daturik" + +#: ckan/templates/package/snippets/revisions_table.html:24 +#, python-format +msgid "Read dataset as of %s" +msgstr "Datu multzoa %s -tik aurrera irakurri" + +#: ckan/templates/package/snippets/stages.html:23 +#: ckan/templates/package/snippets/stages.html:25 +msgid "Create dataset" +msgstr "Datu multzoa sortu" + +#: ckan/templates/package/snippets/stages.html:30 +#: ckan/templates/package/snippets/stages.html:34 +#: ckan/templates/package/snippets/stages.html:36 +msgid "Add data" +msgstr "Datuak gehitu" + +#: ckan/templates/package/snippets/view_form.html:8 +msgid "eg. My View" +msgstr "adibidez: Nire ikuspegiari buruzko informazioa" + +#: ckan/templates/package/snippets/view_form.html:9 +msgid "eg. Information about my view" +msgstr "adibidez: Nire ikuspegiari buruzko informazioa" + +#: ckan/templates/package/snippets/view_form_filters.html:28 +msgid "Remove Filter" +msgstr "Iragazkia kendo" + +#: ckan/templates/package/snippets/view_help.html:2 +msgid "What's a view?" +msgstr "Zer da ikuspegi bat?" + +#: ckan/templates/package/snippets/view_help.html:4 +msgid "A view is a representation of the data held against a resource" +msgstr "Ikuspegi bat baliabide bati buruz izaten diren datuen irudikapena da" + +#: ckan/templates/revision/diff.html:6 +msgid "Differences" +msgstr "Desberdintasunak" + +#: ckan/templates/revision/diff.html:13 ckan/templates/revision/diff.html:18 +#: ckan/templates/revision/diff.html:23 +msgid "Revision Differences" +msgstr "Berrikuspenetan desberdintasunak -" + +#: ckan/templates/revision/diff.html:44 +msgid "Difference" +msgstr "Desberdintasunak" + +#: ckan/templates/revision/diff.html:54 +msgid "No Differences" +msgstr "Ez dago desberdintasunik" + +#: ckan/templates/revision/list.html:3 ckan/templates/revision/list.html:6 +#: ckan/templates/revision/list.html:10 +msgid "Revision History" +msgstr "Berrikuspenen historioa" + +#: ckan/templates/revision/list.html:6 ckan/templates/revision/read.html:8 +msgid "Revisions" +msgstr "Berrikuspenak" + +#: ckan/templates/revision/read.html:30 +msgid "Undelete" +msgstr "Berreskuratu" + +#: ckan/templates/revision/read.html:64 +msgid "Changes" +msgstr "Aldaketak" + +#: ckan/templates/revision/read.html:74 +msgid "Datasets' Tags" +msgstr "Datu multzoen etiketak" + +#: ckan/templates/revision/snippets/revisions_list.html:7 +msgid "Entity" +msgstr "Erakundea" + +#: ckan/templates/snippets/activity_item.html:3 +msgid "New activity item" +msgstr "Jarduera elementu berria" + +#: ckan/templates/snippets/add_dataset.html:6 +msgid "Add Dataset" +msgstr "Datu multzoa gehitu" + +#: ckan/templates/snippets/datapusher_status.html:8 +msgid "Datapusher status: {status}." +msgstr "Datapusher -aren egoera: {status}" + +#: ckan/templates/snippets/disqus_trackback.html:2 +msgid "Trackback URL" +msgstr "Trackback-aren URL-a" + +#: ckan/templates/snippets/facet_list.html:82 +msgid "Show More {facet_type}" +msgstr "Erakutsi gehiago {facet_type}" + +#: ckan/templates/snippets/facet_list.html:85 +msgid "Show Only Popular {facet_type}" +msgstr "Popularrak bakarrik erakutsi {facet_type}" + +#: ckan/templates/snippets/facet_list.html:89 +msgid "There are no {facet_type} that match this search" +msgstr "Ez dago bilaketa honekin bat egiten duen {facet_type}" + +#: ckan/templates/snippets/home_breadcrumb_item.html:2 +msgid "Home" +msgstr "Hasiera" + +#: ckan/templates/snippets/language_selector.html:3 +msgid "Language" +msgstr "Hizkuntza" + +#: ckan/templates/snippets/language_selector.html:11 +#: ckan/templates/snippets/search_form.html:42 +#: ckan/templates/snippets/simple_search.html:15 +#: ckan/templates/snippets/sort_by.html:22 +msgid "Go" +msgstr "Joan" + +#: ckan/templates/snippets/license.html:14 +msgid "No License Provided" +msgstr "Ez da lizentzia batez hornitu" + +#: ckan/templates/snippets/license.html:28 +msgid "This dataset satisfies the Open Definition." +msgstr "" +"Datu multzo honek Ezagutza Irekiko Esanahiarekin bat dator - Definizioa " +"Ireki" + +#: ckan/templates/snippets/organization.html:48 +msgid "There is no description for this organization" +msgstr "Ez dago erakunde honentzako describapenik" + +#: ckan/templates/snippets/package_item.html:57 +msgid "This dataset has no description" +msgstr "Datu multzo honek ez du describapenik" + +#: ckan/templates/snippets/search_form.html:33 +#: ckan/templates/snippets/simple_search.html:8 +#: ckan/templates/snippets/sort_by.html:12 +msgid "Order by" +msgstr " -ren arabera antolatu" + +#: ckan/templates/snippets/search_form.html:74 +msgid "Filter Results" +msgstr "Emaitzak iragazi" + +#: ckan/templates/snippets/search_form.html:81 +msgid "

Please try another search.

" +msgstr "

Mesedez saiatu beste bilaketa batekin.

" + +#: ckan/templates/snippets/search_form.html:87 +msgid "" +"

There was an error while searching." +" Please try again.

" +msgstr "" +"

Akats bat gertatu da bilaketa egiten zen " +"bitartean.Mesedez saiatu berriro.

" + +#: ckan/templates/snippets/search_result_text.html:15 +msgid "{number} dataset found for \"{query}\"" +msgid_plural "{number} datasets found for \"{query}\"" +msgstr[0] "datu multzo {number} aurkituta \"{query}\" -rentzat" +msgstr[1] "{number} datu multzo aurkitutak \"{query}\" -rentzat" + +#: ckan/templates/snippets/search_result_text.html:16 +msgid "No datasets found for \"{query}\"" +msgstr "Sentitzen dugu baina ez dira \"{query}\" -rentzat datu multzorik aurkitu " + +#: ckan/templates/snippets/search_result_text.html:17 +msgid "{number} dataset found" +msgid_plural "{number} datasets found" +msgstr[0] " datu multzo {number} aurkituta" +msgstr[1] "{number} datu multzo aurkituta" + +#: ckan/templates/snippets/search_result_text.html:18 +msgid "No datasets found" +msgstr "Ez dira datu multzorik aurkitu" + +#: ckan/templates/snippets/search_result_text.html:21 +msgid "{number} group found for \"{query}\"" +msgid_plural "{number} groups found for \"{query}\"" +msgstr[0] "talde {number} aurkituta \"{query}\" -rentzat" +msgstr[1] "{number} talde aurkitutak \"{query}\" -rentzat" + +#: ckan/templates/snippets/search_result_text.html:22 +msgid "No groups found for \"{query}\"" +msgstr "Sentitzen dugu, ez da talderik aurkitu \"{query}\" -rentzat" + +#: ckan/templates/snippets/search_result_text.html:23 +msgid "{number} group found" +msgid_plural "{number} groups found" +msgstr[0] "talde {number} aurkituta" +msgstr[1] "{number} talde aurkitutak" + +#: ckan/templates/snippets/search_result_text.html:24 +msgid "No groups found" +msgstr "Ez da talderik aurkitu" + +#: ckan/templates/snippets/search_result_text.html:27 +msgid "{number} organization found for \"{query}\"" +msgid_plural "{number} organizations found for \"{query}\"" +msgstr[0] "\"{query}\"rako aurkitutako {number} erakundea" +msgstr[1] " \"{query}\"rako aurkitutako {number} erakundeak" + +#: ckan/templates/snippets/search_result_text.html:28 +msgid "No organizations found for \"{query}\"" +msgstr "Sentitzen dugu, ez dira erakunderik aurkitu \"{query}\" -rentzat" + +#: ckan/templates/snippets/search_result_text.html:29 +msgid "{number} organization found" +msgid_plural "{number} organizations found" +msgstr[0] "erakunde {number} aurkituta" +msgstr[1] "{number} erakunde aurkitutak" + +#: ckan/templates/snippets/search_result_text.html:30 +msgid "No organizations found" +msgstr "Sentitzen dugu, ez dira erakunderik aurkitu" + +#: ckan/templates/snippets/social.html:5 +msgid "Social" +msgstr "Soziala" + +#: ckan/templates/snippets/subscribe.html:2 +msgid "Subscribe" +msgstr "Harpidetu" + +#: ckan/templates/snippets/subscribe.html:4 +#: ckan/templates/user/edit_user_form.html:12 +#: ckan/templates/user/new_user_form.html:7 +#: ckan/templates/user/read_base.html:82 +msgid "Email" +msgstr "Helbide elektronikoa" + +#: ckan/templates/snippets/subscribe.html:5 +msgid "RSS" +msgstr "RSS" + +#: ckan/templates/snippets/context/user.html:23 +#: ckan/templates/user/read_base.html:57 +msgid "Edits" +msgstr "Aldaketak" + +#: ckan/templates/tag/index.html:33 ckan/templates/tag/index.html:34 +msgid "Search Tags" +msgstr "Etiketak bilatu" + +#: ckan/templates/user/dashboard.html:19 ckan/templates/user/dashboard.html:37 +msgid "News feed" +msgstr "Albiste Feed-a" + +#: ckan/templates/user/dashboard.html:20 +#: ckan/templates/user/dashboard_datasets.html:12 +msgid "My Datasets" +msgstr "Nire Datu Multzoak" + +#: ckan/templates/user/dashboard.html:21 +#: ckan/templates/user/dashboard_organizations.html:12 +msgid "My Organizations" +msgstr "Nire erakundeak" + +#: ckan/templates/user/dashboard.html:22 +#: ckan/templates/user/dashboard_groups.html:12 +msgid "My Groups" +msgstr "Nire taldeak" + +#: ckan/templates/user/dashboard.html:39 +msgid "Activity from items that I'm following" +msgstr "Jarraitzen dituzun elementuen jarduerak" + +#: ckan/templates/user/dashboard_datasets.html:17 +#: ckan/templates/user/read.html:20 +msgid "You haven't created any datasets." +msgstr "Ez duzu datu multzorik sortu" + +#: ckan/templates/user/dashboard_datasets.html:19 +#: ckan/templates/user/dashboard_groups.html:22 +#: ckan/templates/user/dashboard_organizations.html:23 +#: ckan/templates/user/read.html:22 +msgid "Create one now?" +msgstr "Sortu bat orain?" + +#: ckan/templates/user/dashboard_groups.html:20 +msgid "You are not a member of any groups." +msgstr "Ez zara inongo talderen kide." + +#: ckan/templates/user/dashboard_organizations.html:21 +msgid "You are not a member of any organizations." +msgstr "Ez zara inongo erekunderen kide." + +#: ckan/templates/user/edit.html:6 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/list.html:6 ckan/templates/user/list.html:13 +#: ckan/templates/user/read_base.html:5 ckan/templates/user/read_base.html:8 +#: ckan/templates/user/snippets/user_search.html:2 +msgid "Users" +msgstr "Erabiltzaileak" + +#: ckan/templates/user/edit.html:17 +msgid "Account Info" +msgstr "Kontuaren informazioa" + +#: ckan/templates/user/edit.html:19 +msgid "" +" Your profile lets other CKAN users know about who you are and what you do. " +msgstr "" +"Zure profilak CKAN -en beste erabiltzaieei zutaz eta egiten duzunaz jakitea " +"uzten die." + +#: ckan/templates/user/edit_user_form.html:7 +msgid "Change details" +msgstr "Aldatu zure xehetasunak" + +#: ckan/templates/user/edit_user_form.html:10 +msgid "Full name" +msgstr "Izen osoa" + +#: ckan/templates/user/edit_user_form.html:10 +msgid "eg. Joe Bloggs" +msgstr "adibidez: Joe Bloggs" + +#: ckan/templates/user/edit_user_form.html:12 +msgid "eg. joe@example.com" +msgstr "adibidez: joe@adibidea.com" + +#: ckan/templates/user/edit_user_form.html:14 +msgid "A little information about yourself" +msgstr "Zure buruari buruzko informazio piska bat" + +#: ckan/templates/user/edit_user_form.html:17 +msgid "Subscribe to notification emails" +msgstr "Jakinarazpen email-etara harpidetu" + +#: ckan/templates/user/edit_user_form.html:26 +msgid "Change password" +msgstr "Aldatu zure pasahitza" + +#: ckan/templates/user/edit_user_form.html:29 +msgid "Sysadmin Password" +msgstr "Sistemaren administratzailearen gakoa" + +#: ckan/templates/user/edit_user_form.html:37 +#: ckan/templates/user/logout_first.html:11 +#: ckan/templates/user/new_user_form.html:8 +#: ckan/templates/user/perform_reset.html:25 +#: ckan/templates/user/snippets/login_form.html:22 +msgid "Password" +msgstr "Pasahitza" + +#: ckan/templates/user/edit_user_form.html:39 +msgid "Confirm Password" +msgstr "Pasahitza baieztatu" + +#: ckan/templates/user/edit_user_form.html:45 +msgid "Are you sure you want to delete this User?" +msgstr "Ziur erabiltzaile hau ezabatu nahi duzula?" + +#: ckan/templates/user/edit_user_form.html:50 +msgid "Are you sure you want to regenerate the API key?" +msgstr "Ziur API kodea birsortu nahi duzula?" + +#: ckan/templates/user/edit_user_form.html:50 +msgid "Regenerate API Key" +msgstr "API kodea birsortu" + +#: ckan/templates/user/edit_user_form.html:54 +msgid "Update Profile" +msgstr "Profila eguneratu" + +#: ckan/templates/user/list.html:3 +#: ckan/templates/user/snippets/user_search.html:11 +msgid "All Users" +msgstr "Erabiltzaile guztiak" + +#: ckan/templates/user/login.html:3 ckan/templates/user/login.html:6 +#: ckan/templates/user/login.html:12 +#: ckan/templates/user/snippets/login_form.html:28 +msgid "Login" +msgstr "Konektatu" + +#: ckan/templates/user/login.html:25 +msgid "Need an Account?" +msgstr "Kontu bat behar al duzu?" + +#: ckan/templates/user/login.html:27 +msgid "Then sign right up, it only takes a minute." +msgstr "Orduan erregistratu, minutu bat besterik ez dizu eramango" + +#: ckan/templates/user/login.html:30 +msgid "Create an Account" +msgstr "Kontu bat sortu" + +#: ckan/templates/user/login.html:42 +msgid "Forgotten your password?" +msgstr "Pasahitza ahaztu duzu?" + +#: ckan/templates/user/login.html:44 +msgid "No problem, use our password recovery form to reset it." +msgstr "" +"Ez dago arazorik, erabili gure pasahitza berreskuratzeko imprimakia " +"berrezartzeko." + +#: ckan/templates/user/login.html:47 +msgid "Forgot your password?" +msgstr "Pasahitza ahaztu duzu?" + +#: ckan/templates/user/logout.html:3 ckan/templates/user/logout.html:9 +msgid "Logged Out" +msgstr "Saioa amaitua" + +#: ckan/templates/user/logout.html:11 +msgid "You are now logged out." +msgstr "Saioa amaitu duzu." + +#: ckan/templates/user/logout_first.html:9 +msgid "You're already logged in as {user}." +msgstr "Dagoeneko {user} moduan hasi duzu saioa" + +#: ckan/templates/user/logout_first.html:9 +msgid "Logout" +msgstr "Irten" + +#: ckan/templates/user/logout_first.html:12 +#: ckan/templates/user/snippets/login_form.html:24 +msgid "Remember me" +msgstr "Gogorarazi" + +#: ckan/templates/user/logout_first.html:20 +msgid "You're already logged in" +msgstr "Dagoeneko saioa hasi duzu" + +#: ckan/templates/user/logout_first.html:22 +msgid "You need to log out before you can log in with another account." +msgstr "Saioa itxi behar duzu beste kontu batekin saioa ireki baino lehen." + +#: ckan/templates/user/logout_first.html:23 +msgid "Log out now" +msgstr "Saioa orain itxi" + +#: ckan/templates/user/new.html:6 +msgid "Registration" +msgstr "Erregistroa" + +#: ckan/templates/user/new.html:14 +msgid "Register for an Account" +msgstr "Kontu bat erregistratu" + +#: ckan/templates/user/new.html:26 +msgid "Why Sign Up?" +msgstr "Zergatik erregistratu?" + +#: ckan/templates/user/new.html:28 +msgid "Create datasets, groups and other exciting things" +msgstr "Datu multzoak, taldeak eta beste hainbat gauz interesgarriak sortu" + +#: ckan/templates/user/new_user_form.html:5 +msgid "username" +msgstr "erabiltzaile izena" + +#: ckan/templates/user/new_user_form.html:6 +msgid "Full Name" +msgstr "Izen osoa" + +#: ckan/templates/user/new_user_form.html:19 +msgid "Create Account" +msgstr "Kontua sortu" + +#: ckan/templates/user/perform_reset.html:4 +#: ckan/templates/user/perform_reset.html:14 +msgid "Reset Your Password" +msgstr "Zure pasahitza berrezarri" + +#: ckan/templates/user/perform_reset.html:7 +msgid "Password Reset" +msgstr "Pasahitza berrezarrita" + +#: ckan/templates/user/perform_reset.html:21 +msgid "You can also change username. It can not be modified later." +msgstr "" + +#: ckan/templates/user/perform_reset.html:29 +msgid "Update Password" +msgstr "Pasahitza eguneratu" + +#: ckan/templates/user/perform_reset.html:43 +#: ckan/templates/user/request_reset.html:32 +msgid "How does this work?" +msgstr "Nola funtzionatzen du?" + +#: ckan/templates/user/perform_reset.html:45 +msgid "Simply enter a new password and we'll update your account" +msgstr "Idatzi pasahitz berri bat eta zure kontua eguneratuko dugu" + +#: ckan/templates/user/read.html:27 +msgid "User hasn't created any datasets." +msgstr "Erabiltzaileak ez du datu multzorik sortu." + +#: ckan/templates/user/read_base.html:39 +msgid "You have not provided a biography." +msgstr "Ez duzu biografiarik hornitu." + +#: ckan/templates/user/read_base.html:41 +msgid "This user has no biography." +msgstr "Erabiltzaine honek ez du biografiarik." + +#: ckan/templates/user/read_base.html:73 +msgid "Open ID" +msgstr "Ireki ID" + +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 +msgid "This means only you can see this" +msgstr "Honek, hau zuk bakarrik ikus dezakezula esan nahi du" + +#: ckan/templates/user/read_base.html:87 +msgid "Member Since" +msgstr " -tik bazkidea" + +#: ckan/templates/user/read_base.html:96 +msgid "API Key" +msgstr "API kodea" + +#: ckan/templates/user/request_reset.html:3 +#: ckan/templates/user/request_reset.html:13 +msgid "Reset your password" +msgstr "Zure pasahitza berrezarri" + +#: ckan/templates/user/request_reset.html:6 +msgid "Password reset" +msgstr "Pasahitza berrabiatu" + +#: ckan/templates/user/request_reset.html:19 +msgid "Request reset" +msgstr "Berrezarpena eskatu" + +#: ckan/templates/user/request_reset.html:34 +msgid "" +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." +msgstr "" +"Zure erabiltzaile izena laukian sartu eta email bat bidaliko dizugu zure " +"pasahitz berria sartzeko lotura batekin" + +#: ckan/templates/user/snippets/followee_dropdown.html:15 +#: ckan/templates/user/snippets/followee_dropdown.html:16 +msgid "Activity from:" +msgstr " -n jarduera" + +#: ckan/templates/user/snippets/followee_dropdown.html:23 +msgid "Search list..." +msgstr "Bilaketa zerrenda..." + +#: ckan/templates/user/snippets/followee_dropdown.html:44 +msgid "You are not following anything" +msgstr "Ez zaude ezer jarraitzen hari" + +#: ckan/templates/user/snippets/followers.html:9 +msgid "No followers" +msgstr "Jarraitzailerik gabe" + +#: ckan/templates/user/snippets/user_search.html:5 +msgid "Search Users" +msgstr "Erabiltzaileak bilatu" + +#: ckan/views/user.py:588 +msgid "Your password must be 8 characters or longer." +msgstr "Kodeak 8 karaktere edo gehiago izan behar ditu." diff --git a/ckan/i18n/fa_IR/LC_MESSAGES/ckan.po b/ckan/i18n/fa_IR/LC_MESSAGES/ckan.po index 6c3593abcef..062d8f72031 100644 --- a/ckan/i18n/fa_IR/LC_MESSAGES/ckan.po +++ b/ckan/i18n/fa_IR/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Persian (Iran) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: fa_IR\n" -"Language-Team: Persian (Iran) " -"(https://www.transifex.com/okfn/teams/11162/fa_IR/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Language-Team: Persian (Iran) (https://www.transifex.com/okfn/teams/11162/fa_IR/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: fa_IR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,8 +157,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -268,8 +267,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -1769,8 +1767,8 @@ msgstr "" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2525,8 +2523,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2794,22 +2792,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2825,9 +2822,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2991,8 +2987,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -3024,7 +3021,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -3073,19 +3071,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3106,8 +3107,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3179,10 +3180,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3246,14 +3247,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3270,8 +3270,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3317,8 +3317,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3389,8 +3389,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3444,8 +3444,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3486,19 +3486,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3515,9 +3515,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3540,9 +3539,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3624,9 +3623,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3637,9 +3636,8 @@ msgstr "" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3709,9 +3707,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3779,8 +3777,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3920,12 +3918,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4261,8 +4258,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4409,8 +4406,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4634,8 +4630,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4662,4 +4658,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/fi/LC_MESSAGES/ckan.mo b/ckan/i18n/fi/LC_MESSAGES/ckan.mo index 6622cf26d16..443053ad05d 100644 Binary files a/ckan/i18n/fi/LC_MESSAGES/ckan.mo and b/ckan/i18n/fi/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/fi/LC_MESSAGES/ckan.po b/ckan/i18n/fi/LC_MESSAGES/ckan.po index d1197b7c044..7a5f609d1e5 100644 --- a/ckan/i18n/fi/LC_MESSAGES/ckan.po +++ b/ckan/i18n/fi/LC_MESSAGES/ckan.po @@ -1,10 +1,12 @@ -# Finnish translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# Zharktas , 2019 +# #, fuzzy msgid "" msgstr "" @@ -12,14 +14,14 @@ msgstr "" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" -"Last-Translator: Adrià Mercader , 2018\n" -"Language: fi\n" +"Last-Translator: Zharktas , 2019\n" "Language-Team: Finnish (https://www.transifex.com/okfn/teams/11162/fi/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -115,17 +117,17 @@ msgstr "DataStore-resurssia ei löytynyt" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Tieto oli virheellistä (esimerkiksi: numeerinen arvo on rajojen " -"ulkopuolella ta oli lisätty tekstitietoon)." +"Tieto oli virheellistä (esimerkiksi: numeerinen arvo on rajojen ulkopuolella" +" ta oli lisätty tekstitietoon)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -149,8 +151,7 @@ msgstr "Sisällöt on saatavilla myös kyselyrajapinna (API) kautta" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Lisätietoa löydät main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Lisätietoa löydät Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Sivun nimike: Tämä on CKAN -asennuksen nimike, joka " "näkyy useissa paikoissa sivustolla.

Tyyli: " "Saadaksesi nopeasti hieman muokatun teeman käyttöön voit valita " -"tyylilistalta päävärityksen yksinkertaisia muunnelmia.

" -"

Sivun logo: Tämä on logo, joka näkyy kaikkien " -"sivupohjien header-osiossa.

Tietoa: Teksti näkyy " -"tämän CKAN-sivuston tietoa sivusta " -"-sivulla.

Esittelyteksti: Teksti näkyy etusivulla tervetuliaistekstinä kävijöille.

" -"

Muokattu CSS: Tämä on CSS tyylimuotoilu, joka näkyy " +"tyylilistalta päävärityksen yksinkertaisia muunnelmia.

Sivun " +"logo: Tämä on logo, joka näkyy kaikkien sivupohjien header-" +"osiossa.

Tietoa: Teksti näkyy tämän CKAN-sivuston tietoa sivusta -sivulla.

" +"

Esittelyteksti: Teksti näkyy etusivulla tervetuliaistekstinä kävijöille.

" +"

Muokattu CSS: Tämä on CSS tyylimuotoilu, joka näkyy " "kaikkien sivujen <head> tagissa. Jos haluat muokata " "sivupohjia enemmän suosittelemme, että luetdokumentaation.

" -"

Kotisivu: Täältä voit valita ennalta määritellyn " -"asettelun niille moduuleille, jotka näkyvät kotisivulla.

" +"target=\"_blank\">dokumentaation.

Kotisivu: " +"Täältä voit valita ennalta määritellyn asettelun niille moduuleille, jotka " +"näkyvät kotisivulla.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2776,15 +2780,13 @@ msgstr "Hallinnoi CKAN:ia" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Järjestelmänhoitajana Sinulla on täydet oikeudet tähän CKAN " -"asennukseen. Jatka varovaisuutta noudattaen!

Ohjeistukseksi " -"järjestelmähoitamisen ominaisuuksista, katso CKAN järjestelmänhoitajan " -"ohjetta

" +"

Järjestelmänhoitajana Sinulla on täydet oikeudet tähän CKAN asennukseen." +" Jatka varovaisuutta noudattaen!

Ohjeistukseksi järjestelmähoitamisen" +" ominaisuuksista, katso CKAN järjestelmänhoitajan ohjetta

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2949,8 +2951,9 @@ msgstr "Haluatko varmasti poistaa jäsenen - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Hallinnoi" @@ -2982,7 +2985,8 @@ msgstr "Etsi ryhmiä..." msgid "There are currently no groups for this site" msgstr "Sivulla ei ole tällä hetkellä ryhmiä." -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Mitäs jos tekisit yhden?" @@ -3014,7 +3018,8 @@ msgstr "Olemassa oleva käyttäjä" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." -msgstr "Jos haluat lisätä olemassa olevan käyttäjän, etsi häntä käyttäjänimellä." +msgstr "" +"Jos haluat lisätä olemassa olevan käyttäjän, etsi häntä käyttäjänimellä." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3033,19 +3038,22 @@ msgstr "" "Jos haluat kutsua uuden käyttäjän, niin kirjoita kutsuttavan " "sähköpostiosoite alle." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rooli" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Haluatko varmasti poistaa tämän jäsenen?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3066,13 +3074,13 @@ msgstr "Mitä roolit ovat?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Ylläpitäjä: Voi muokata ryhmän tietoja ja " -"hallinnoida jäseniä.

Jäsen: Voi lisätä/poistaa " -"tietoaineistoja ryhmästä

" +"

Ylläpitäjä: Voi muokata ryhmän tietoja ja hallinnoida " +"jäseniä.

Jäsen: Voi lisätä/poistaa tietoaineistoja " +"ryhmästä

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3090,7 +3098,7 @@ msgstr "Luo uusi ryhmä" #: ckan/templates/group/read.html:21 ckan/templates/organization/read.html:25 #: ckan/templates/snippets/search_form.html:3 msgid "Search datasets..." -msgstr "Etsi tietoaineistoista..." +msgstr "Etsi tietoaineistoja..." #: ckan/templates/group/snippets/feeds.html:3 msgid "Datasets in group: {group}" @@ -3142,14 +3150,14 @@ msgstr "Mitä ryhmät ovat?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Voit luoda ja hallinnoida tietoaineistokokonaisuuksia käyttämällä CKAN:in" -" ryhmiä. Voit koota yhteen ryhmään tietoaineistoja esimerkiksi projektin," -" käyttäjäryhmän tai teeman mukaisesti ja siten helpottaa aineistojen " +"Voit luoda ja hallinnoida tietoaineistokokonaisuuksia käyttämällä CKAN:in " +"ryhmiä. Voit koota yhteen ryhmään tietoaineistoja esimerkiksi projektin, " +"käyttäjäryhmän tai teeman mukaisesti ja siten helpottaa aineistojen " "löytymistä." #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3213,14 +3221,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3230,22 +3237,21 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN on maailman johtava avoimen lähdekoodin " -"dataportaaliratkaisu.

CKAN on täydellinen out-of-the-box " -"sovellusratkaisu, joka mahdollistaa helpon pääsyn dataan, korkean " -"käytettävyyden ja sujuvan käyttökokemuksen. CKAN tarjoaa työkalut " -"julkaisuun, jakamiseen, etsimiseen ja datan käyttöön - mukaanlukien datan" -" varastoinnin ja provisioinnin. CKAN on tarkoitettu datan julkaisijoille " -"- kansalliselle ja alueelliselle hallinnolle, yrityksille ja " -"organisaatioille, jotka haluavat avata ja julkaista datansa.

" +"

CKAN on maailman johtava avoimen lähdekoodin dataportaaliratkaisu.

" +"

CKAN on täydellinen out-of-the-box sovellusratkaisu, joka mahdollistaa " +"helpon pääsyn dataan, korkean käytettävyyden ja sujuvan käyttökokemuksen. " +"CKAN tarjoaa työkalut julkaisuun, jakamiseen, etsimiseen ja datan käyttöön -" +" mukaanlukien datan varastoinnin ja provisioinnin. CKAN on tarkoitettu datan" +" julkaisijoille - kansalliselle ja alueelliselle hallinnolle, yrityksille ja" +" organisaatioille, jotka haluavat avata ja julkaista datansa.

" "

Hallitukset ja käyttäjäryhmät ympäri maailmaa käyttävät CKAN:ia. Sen " "varassa pyörii useita virallisia ja yhteisöllisiä dataportaaleja " "paikallisille, kansallisille ja kansainvälisille toimijoille, kuten " -"Britannian data.gov.uk, Euroopan " -"unionin publicdata.eu, Brasilian dados.gov.br, Saksan ja Alankomaiden " -"portaalit sekä kaupunkien ja kuntien palveluja Yhdysvalloissa, " -"Britanniassa, Argentinassa ja muualla.

CKAN: data.gov.uk, Euroopan unionin " +"publicdata.eu, Brasilian dados.gov.br, Saksan ja Alankomaiden " +"portaalit sekä kaupunkien ja kuntien palveluja Yhdysvalloissa, Britanniassa," +" Argentinassa ja muualla.

CKAN: http://ckan.org/
CKAN Tour: http://ckan.org/tour/
Features " "overview: Markdown formatting here" msgstr "" -"Voit käyttää tässä Markdown-muotoiluja" +"Voit käyttää tässä Markdown-muotoiluja" #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3379,8 +3389,8 @@ msgstr "Luonnos" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Yksityinen" @@ -3434,13 +3444,13 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Ylläpitäjä: Voi lisätä, muokata ja poistaa " "tietoaineistoja sekä hallinnoida organisaation jäseniä.

" -"

Muokkaaja: Voi lisätä ja muokata tietoaineistoja.

" -"

Jäsen: Voi katsella oman organisaationsa yksityisiä " +"

Muokkaaja: Voi lisätä ja muokata tietoaineistoja.

" +"

Jäsen: Voi katsella oman organisaationsa yksityisiä " "tietoaineistoja, mutta ei muokata niitä.

" #: ckan/templates/organization/members.html:14 @@ -3481,31 +3491,30 @@ msgstr "Mitä organisaatiot ovat?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Organisaatiot ovat tietoaineistoja julkaisevia tahoja (esimerkiksi " "Tilastokeskus). Organisaatiossa julkaistut tietoaineistot kuuluvat " -"yksittäisten käyttäjien sijaan ko. organisaatiolle.

Organisaation" -" ylläpitäjä voi antaa sen jäsenille rooleja ja oikeuksia, jotta " -"yksittäiset käyttäjät voivat julkaista datasettejä organisaation " -"(esimerkiksi Tilastokeskuksen) nimissä.

" +"yksittäisten käyttäjien sijaan ko. organisaatiolle.

Organisaation " +"ylläpitäjä voi antaa sen jäsenille rooleja ja oikeuksia, jotta yksittäiset " +"käyttäjät voivat julkaista datasettejä organisaation (esimerkiksi " +"Tilastokeskuksen) nimissä.

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "CKAN:in organisaatioita käytetään tietoaineistojen ja " "aineistokokonaisuuksien luomiseen, hallinnointiin ja julkaisemiseen. " "Käyttäjillä voi olla organisaatioissa eri rooleja ja eri tasoisia " -"käyttöoikeuksia tietoaineistojen luomiseen, muokkaamiseen ja " -"julkaisemiseen." +"käyttöoikeuksia tietoaineistojen luomiseen, muokkaamiseen ja julkaisemiseen." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3521,9 +3530,8 @@ msgstr "Hieman lisätietoa organisaatiostani..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Haluatko varmasti poistaa tämän organisaation? Tämä poistaa kaikki julkiset " "ja yksityiset tietoaineistot, jotka kuuluvat tälle organisaatiolle." @@ -3548,13 +3556,13 @@ msgstr "Mitä tietoaineistot ovat?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Tietoaineisto tarkoittaa CKAN:issa kokoelmaa resursseja (esim. " -"tiedostoja) sekä niihin liittyvää kuvausta ja muuta metatietoa, kuten " -"pysyvää URL-osoitetta." +"Tietoaineisto tarkoittaa CKAN:issa kokoelmaa resursseja (esim. tiedostoja) " +"sekä niihin liittyvää kuvausta ja muuta metatietoa, kuten pysyvää URL-" +"osoitetta." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3635,15 +3643,15 @@ msgstr "Lisää näyttö" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Data Explorer -näkymät voivat olla hitaita ja epäluotettavia, jos " -"DataStore-laajennus ei ole käytössä. Lisätietojen saamiseksi katso Data Explorer" -" -dokumentaatio. " +"Data Explorer -näkymät voivat olla hitaita ja epäluotettavia, jos DataStore-" +"laajennus ei ole käytössä. Lisätietojen saamiseksi katso Data Explorer " +"-dokumentaatio. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3653,12 +3661,11 @@ msgstr "Lisää" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Tämä on tietoaineiston vanha revisio, jota on muokattu %(timestamp)s. Se " -"voi poiketa merkittävästi nykyisestä revisiosta." +"Tämä on tietoaineiston vanha revisio, jota on muokattu %(timestamp)s. Se voi" +" poiketa merkittävästi nykyisestä revisiosta." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3724,18 +3731,18 @@ msgstr "Tälle resurssille ei ole luotu yhtään sopivaa näkymää" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" msgstr "" -"Voi olla, ettei järjestelmänhoitaja ole ottanut käyttöön asiaan liittyviä" -" liitännäisiä" +"Voi olla, ettei järjestelmänhoitaja ole ottanut käyttöön asiaan liittyviä " +"liitännäisiä" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "Jos näkymä vaatii DataStoren, voi olla, ettei DataStore-liitännäistä ole " -"otettu käyttöön, tai ettei tietoja ole tallennettu DataStoreen, tai ettei" -" DataStore ole vielä saanut prosessointia valmiiksi" +"otettu käyttöön, tai ettei tietoja ole tallennettu DataStoreen, tai ettei " +"DataStore ole vielä saanut prosessointia valmiiksi" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3802,8 +3809,8 @@ msgstr "Lisää uusi resurssi" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Tässä tietoaineistossa ei ole dataa, mikset lisäisi sitä? " @@ -3883,7 +3890,8 @@ msgstr "Viimeksi päivitetty" #: ckan/templates/package/snippets/cannot_create_package.html:10 msgid "Before you can create a dataset you need to create an organization." -msgstr "Ennen kuin voit luoda tietoaineiston, sinun täytyy luoda organisaatio." +msgstr "" +"Ennen kuin voit luoda tietoaineiston, sinun täytyy luoda organisaatio." #: ckan/templates/package/snippets/cannot_create_package.html:13 msgid "Create a new organization" @@ -3891,15 +3899,16 @@ msgstr "Luo uusi organisaatio" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." -msgstr "Organisaatioita ei ole, mihin voit sijoittaa tämän tietiaineston." +msgstr "" +"Järjestelmässä ei ole organisaatioita, mihin voit sijoittaa tämän " +"tietoaineston." #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" "Ask a system administrator to create an organization before you can " "continue." msgstr "" -"Pyydä järjestelmän ylläpitäjää luomaan organisaatio ennen kuin voit " -"jatkaa." +"Pyydä järjestelmän ylläpitäjää luomaan organisaatio ennen kuin voit jatkaa." #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -3953,16 +3962,15 @@ msgstr "Aktiivinen" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Lisenssi, jonka valitset yllä olevasta valikosta, koskee " -"ainoastaan tähän tietoaineistoon liittämiäsi tiedostoja. Lähettämällä " -"tämän lomakkeen suostut julkaisemaan täyttämäsi metatiedot Lisenssi, jonka valitset yllä olevasta valikosta, koskee ainoastaan " +"tähän tietoaineistoon liittämiäsi tiedostoja. Lähettämällä tämän lomakkeen " +"suostut julkaisemaan täyttämäsi metatiedot Open Database " "Lisenssin mukaisesti." @@ -4303,8 +4311,8 @@ msgstr "

Kokeile toisenlaisia hakutermejä.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Haussa tapahtui virhe. Yritä " "uudelleen.

" @@ -4453,9 +4461,9 @@ msgstr "Käyttäjätilin tiedot" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " -msgstr "Profiilin avulla muut CKAN:in käyttäjät tietävät kuka olet ja mitä teet. " +" Your profile lets other CKAN users know about who you are and what you do. " +msgstr "" +"Profiilin avulla muut CKAN:in käyttäjät tietävät kuka olet ja mitä teet. " #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4680,11 +4688,11 @@ msgstr "Pyydä uudelleenasettamista" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Syötä käyttäjänimesi laatikkoon, niin lähetämme sinulle sähköpostin, " -"jossa on linkki uuden salasanan syöttämislomakkeeseen." +"Syötä käyttäjänimesi laatikkoon, niin lähetämme sinulle sähköpostin, jossa " +"on linkki uuden salasanan syöttämislomakkeeseen." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4710,4 +4718,3 @@ msgstr "Etsi käyttäjiä" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/fr/LC_MESSAGES/ckan.po b/ckan/i18n/fr/LC_MESSAGES/ckan.po index 580a0e1bcde..2dfaf6e3d42 100644 --- a/ckan/i18n/fr/LC_MESSAGES/ckan.po +++ b/ckan/i18n/fr/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# French translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Mayeul Kauffmann, 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,13 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Mayeul Kauffmann, 2018\n" -"Language: fr\n" "Language-Team: French (https://www.transifex.com/okfn/teams/11162/fr/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +117,17 @@ msgstr "Ressource de magasin de données non trouvée" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Les données étaient invalides (par exemple, une valeur numérique est hors" -" de portée ou a été insérée dans un champ de texte)." +"Les données étaient invalides (par exemple, une valeur numérique est hors de" +" portée ou a été insérée dans un champ de texte)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -145,15 +146,14 @@ msgstr "API de données CKAN" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" msgstr "" -"Accédez aux données de la ressource via une API web supportant des " -"requêtes puissantes " +"Accédez aux données de la ressource via une API web supportant des requêtes " +"puissantes " #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Plus d'informations dans la main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Plus d'informations dans la documentation principale de l'API CKAN pour les données" -" et le magasin de données.

" +"target=\"_blank\">documentation principale de l'API CKAN pour les données et" +" le magasin de données.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -454,8 +454,8 @@ msgstr "URL de l'image" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "eg. http://example.com/image.jpg (if blank uses resource url)" msgstr "" -"p. ex. http://example.com/image.jpg (si elle est vide utiliser l'URL de " -"la ressource)" +"p. ex. http://example.com/image.jpg (si elle est vide utiliser l'URL de la " +"ressource)" #: ckanext/reclineview/plugin.py:101 msgid "Data Explorer" @@ -682,8 +682,7 @@ msgstr "URL de la page Web" #: ckanext/webpageview/theme/templates/webpage_form.html:3 msgid "eg. http://example.com (if blank uses resource url)" msgstr "" -"p. ex. http://example.com (si elle est vide utiliser l'URL de la " -"ressource)" +"p. ex. http://example.com (si elle est vide utiliser l'URL de la ressource)" #: ckan/templates/dataviewer/snippets/data_preview.html:23 #: ckan/templates/package/snippets/resource_view.html:56 @@ -767,8 +766,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Impossible de purger le paquet %s car la révision %s associée contient " -"les paquets %s non supprimés" +"Impossible de purger le paquet %s car la révision %s associée contient les " +"paquets %s non supprimés" #: ckan/controllers/admin.py:183 #, python-format @@ -862,7 +861,8 @@ msgstr "La révision %s n'existe pas" #: ckan/controllers/api.py:514 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" -msgstr "Terme de recherche manquant ('since_id=UUID' ou 'since_time=TIMESTAMP')" +msgstr "" +"Terme de recherche manquant ('since_id=UUID' ou 'since_time=TIMESTAMP')" #: ckan/controllers/api.py:526 #, python-format @@ -1060,15 +1060,15 @@ msgstr "" #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Merci de mettre à jour votre profil et d'ajouter votre" -" adresse e-mail. " +"Merci de mettre à jour votre profil et d'ajouter votre " +"adresse e-mail. " #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." msgstr "" -"%s utilise votre adresse e-mail si vous avez besoin de réinitialiser " -"votre mot de passe." +"%s utilise votre adresse e-mail si vous avez besoin de réinitialiser votre " +"mot de passe." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1099,8 +1099,8 @@ msgstr "Le format de révision %r est invalide" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." msgstr "" -"La visualisation des ensemble de données de type \"{package_type}\" n'est" -" pas supportée ({file_!r})." +"La visualisation des ensemble de données de type \"{package_type}\" n'est " +"pas supportée ({file_!r})." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1321,7 +1321,8 @@ msgstr "Authentification échouée. Mauvais login ou mot de passe." #: ckan/controllers/user.py:461 msgid "Unauthorized to request reset password." -msgstr "Vous n'êtes pas autorisé à demander une réinitialisation de mot de passe." +msgstr "" +"Vous n'êtes pas autorisé à demander une réinitialisation de mot de passe." #: ckan/controllers/user.py:490 #, python-format @@ -1410,7 +1411,8 @@ msgstr "{actor} a modifié l'extra {extra} du jeu de données {dataset}" #: ckan/lib/activity_streams.py:75 msgid "{actor} updated the resource {resource} in the dataset {dataset}" -msgstr "{actor} a mis à jour la ressource {resource} du jeu de données {dataset}" +msgstr "" +"{actor} a mis à jour la ressource {resource} du jeu de données {dataset}" #: ckan/lib/activity_streams.py:78 msgid "{actor} updated their profile" @@ -1434,7 +1436,8 @@ msgstr "{actor} a supprimé l'extra {extra} du jeu de données {dataset}" #: ckan/lib/activity_streams.py:93 msgid "{actor} deleted the resource {resource} from the dataset {dataset}" -msgstr "{actor} a supprimé la ressource {resource} du jeu de données {dataset}" +msgstr "" +"{actor} a supprimé la ressource {resource} du jeu de données {dataset}" #: ckan/lib/activity_streams.py:97 msgid "{actor} created the group {group}" @@ -1454,7 +1457,8 @@ msgstr "{actor} a ajouté l'extra {extra} au jeu de données {dataset}" #: ckan/lib/activity_streams.py:109 msgid "{actor} added the resource {resource} to the dataset {dataset}" -msgstr "{actor} a ajouté la ressource {resource} au jeu de données {dataset}" +msgstr "" +"{actor} a ajouté la ressource {resource} au jeu de données {dataset}" #: ckan/lib/activity_streams.py:112 msgid "{actor} signed up" @@ -1801,8 +1805,8 @@ msgstr "Le nom doit être d'une longueur inférieur à %i caractères" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" "Doit contenir uniquement des caractères alphanumériques en minuscules " "(ascii) et ces symboles : -_" @@ -1849,8 +1853,8 @@ msgstr "La longueur du mot-clé \"%s\" est supérieure à la longueur maximale % #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Le mot-clé \"%s\" ne peut contenir que des lettres minuscules, des " -"chiffres ou les symboles : -_." +"Le mot-clé \"%s\" ne peut contenir que des lettres minuscules, des chiffres " +"ou les symboles : -_." #: ckan/logic/validators.py:436 #, python-format @@ -1938,8 +1942,8 @@ msgstr "Ce rôle n'existe pas" #: ckan/logic/validators.py:741 msgid "Datasets with no organization can't be private." msgstr "" -"Les jeux de données n'appartenant pas à une organisation ne peuvent pas " -"être privés." +"Les jeux de données n'appartenant pas à une organisation ne peuvent pas être" +" privés." #: ckan/logic/validators.py:747 msgid "Not a list" @@ -2094,7 +2098,8 @@ msgstr "Ressource introuvable." #: ckan/logic/action/get.py:2087 msgid "Do not specify if using \"query\" parameter" -msgstr "Ne sélectionnez pas cette option si vous utilisez le paramètre \"requête\"" +msgstr "" +"Ne sélectionnez pas cette option si vous utilisez le paramètre \"requête\"" #: ckan/logic/action/get.py:2096 msgid "Must be : pair(s)" @@ -2154,15 +2159,14 @@ msgstr "" #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"Pas de jeu de données trouvé pour cette ressource, impossible de vérifier" -" l'authentification." +"Pas de jeu de données trouvé pour cette ressource, impossible de vérifier " +"l'authentification." #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" msgstr "" -"Utilisateur %s non autorisé à créer des ressources sur le jeu de données " -"%s" +"Utilisateur %s non autorisé à créer des ressources sur le jeu de données %s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2181,7 +2185,8 @@ msgstr "L'utilisateur %s n'est pas autorisé à créé des organisations" #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" -msgstr "L'utilisateur {user} n'est pas autorisé à créer des utilisateurs via l'API" +msgstr "" +"L'utilisateur {user} n'est pas autorisé à créer des utilisateurs via l'API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2292,7 +2297,8 @@ msgstr "L'utilisateur %s n'est pas autorisé à modifier la ressource %s" #: ckan/logic/auth/update.py:100 #, python-format msgid "User %s not authorized to change state of package %s" -msgstr "L'utilisateur %s n'est pas autorisé à modifier l'état du jeu de données %s" +msgstr "" +"L'utilisateur %s n'est pas autorisé à modifier l'état du jeu de données %s" #: ckan/logic/auth/update.py:128 #, python-format @@ -2308,8 +2314,7 @@ msgstr "L'utilisateur %s n'est pas autorisé à modifier l'état du groupe %s" #, python-format msgid "User %s not authorized to edit permissions of group %s" msgstr "" -"L'utilisateur %s n'est pas autorisé à modifier les permissions du groupe " -"%s" +"L'utilisateur %s n'est pas autorisé à modifier les permissions du groupe %s" #: ckan/logic/auth/update.py:190 msgid "Have to be logged in to edit user" @@ -2332,7 +2337,8 @@ msgstr "L'utilisateur %s n'est pas autorisé à modifier l'état de révision" #: ckan/logic/auth/update.py:226 #, python-format msgid "User %s not authorized to update task_status table" -msgstr "L'utilisateur %s n'est pas autorisé à mettre à jour la table task_status" +msgstr "" +"L'utilisateur %s n'est pas autorisé à mettre à jour la table task_status" #: ckan/logic/auth/update.py:240 #, python-format @@ -2525,8 +2531,8 @@ msgstr "Lien" #: ckan/public/base/javascript/modules/image-upload.js:61 msgid "Link to a URL on the internet (you can also link to an API)" msgstr "" -"Lien vers une URL sur internet (vous pouvez aussi donner un lien vers une" -" API)" +"Lien vers une URL sur internet (vous pouvez aussi donner un lien vers une " +"API)" #: ckan/public/base/javascript/modules/image-upload.js:68 msgid "Upload" @@ -2594,8 +2600,8 @@ msgstr "Impossible d'accéder aux données du fichier déposé" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Vous êtes en train de transférer un fichier. Êtes-vous sûr de vouloir " "naviguer ailleurs et interrompre ce transfert ?" @@ -2867,41 +2873,39 @@ msgstr "CKAN options de configuration" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Titre du Site : C’est le titre de cette instance de " "CKAN. On le retrouve dans divers endroits d’un bout à l’autre de " "CKAN.

Style : Choisissez parmi une liste de " -"variations de la principale palette de couleurs afin de mettre en place" -" très rapidement un thème personnalisé.

Logo clé du Site" -" : C’est le logo qui apparaît dans l’en-tête de tous les " -"gabarits des instances de CKAN.

À propos : Ce " -"texte apparaîtra dans la page \"à " -"propos\"de ces instances de CKAN .

Texte d’intro " -": Ce texte apparaîtra dans la page " -"d’accueil de ces instances de CKAN pour accueillir les " -"visiteurs.

CSS Personnalisée : C’est un bloc de " -"CSS qui apparaît dans l'élément <head>de toutes les " -"pages. Si vous voulez personnaliser encore plus les gabarits, nous vous " -"conseillons de lire la " -"documentation.

Page d'accueil: C'est pour " -"choisir une mise en page prédéfinie pour les modules qui apparaissent sur" -" votre page d'accueil.

" +"variations de la principale palette de couleurs afin de mettre en place " +"très rapidement un thème personnalisé.

Logo clé du Site " +": C’est le logo qui apparaît dans l’en-tête de tous les gabarits " +"des instances de CKAN.

À propos : Ce texte " +"apparaîtra dans la page \"à propos\"de ces " +"instances de CKAN .

Texte d’intro : Ce texte " +"apparaîtra dans la page d’accueil de ces " +"instances de CKAN pour accueillir les visiteurs.

CSS " +"Personnalisée : C’est un bloc de CSS qui apparaît dans l'élément " +"<head>de toutes les pages. Si vous voulez personnaliser " +"encore plus les gabarits, nous vous conseillons de lire la documentation.

Page " +"d'accueil: C'est pour choisir une mise en page prédéfinie pour les " +"modules qui apparaissent sur votre page d'accueil.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2916,13 +2920,12 @@ msgstr "Administrer CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Comme administrateur vous avez le plein contrôle de cette instance " -"CKAN. Procédez avec prudence!

Pour des conseils sur l'utilisation " -"des fonctionnalités d'administration, voir le Comme administrateur vous avez le plein contrôle de cette instance CKAN. " +"Procédez avec prudence!

Pour des conseils sur l'utilisation des " +"fonctionnalités d'administration, voir le guide d'administration CKAN

" #: ckan/templates/admin/trash.html:20 @@ -3086,8 +3089,9 @@ msgstr "Êtes-vous sûr de vouloir supprimer le membre - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Éditer" @@ -3119,7 +3123,8 @@ msgstr "Rechercher les groupes..." msgid "There are currently no groups for this site" msgstr "Il n'y a actuellement aucun groupe pour ce site" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Et si vous en créiez un ?" @@ -3168,21 +3173,25 @@ msgstr "Nouvel Utilisateur" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Si vous désirez inviter un nouvel utilisateur, entrez son adresse email." +msgstr "" +"Si vous désirez inviter un nouvel utilisateur, entrez son adresse email." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr " Rôle" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Etes-vous sûr de vouloir supprimer ce membre?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3203,14 +3212,13 @@ msgstr "Que sont les rôles ?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Administrateur: Peut éditer les informations de " -"groupe, ainsi que gérer les membres d'organisations.

" -"

Membre: Peut ajouter/supprimer des jeux de données " -"dans les groupes

" +"

Administrateur: Peut éditer les informations de groupe, " +"ainsi que gérer les membres d'organisations.

Membre:" +" Peut ajouter/supprimer des jeux de données dans les groupes

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3280,16 +3288,16 @@ msgstr "Que sont les groupes ?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Vous pouvez utiliser les groupes CKAN pour créer et gérer des collections" -" de jeux de données. Cela peut être pour cataloguer des jeux de données " -"pour un projet ou une équipe en particulier, ou autour d'un thème " -"spécifique, ou comme moyen très simple d'aider à parcourir et découvrir " -"vos jeux de données publiés." +"Vous pouvez utiliser les groupes CKAN pour créer et gérer des collections de" +" jeux de données. Cela peut être pour cataloguer des jeux de données pour un" +" projet ou une équipe en particulier, ou autour d'un thème spécifique, ou " +"comme moyen très simple d'aider à parcourir et découvrir vos jeux de données" +" publiés." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3352,14 +3360,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3370,26 +3377,25 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "CKAN est la plateforme portail leader mondial en termes de données " -"accessibles en code source ouvert.

CKAN est un logiciel " -"disponible clés en main qui permet l’accès et l’utilisation de données " -"- en fournissant les outils pour rationnaliser la publication, le " -"partage , la recherche et l’utilisation de données (y compris le stockage" -" des données et la mise à disposition de solides données API). CKAN " -"est destiné aux éditeurs (gouvernements régionaux et nationaux, " -"sociétés et organisations) qui veulent mettre à disposition leurs " -"données .

CKAN est utilisé par des gouvernements et des groupes " -"d’utilisateurs dans le monde entier et permet le fonctionnement d’une " -"variété de portails officiels et communautaires , notamment des portails " -"pour des gouvernements locaux, nationaux et internationaux, comme

CKAN est un logiciel disponible " +"clés en main qui permet l’accès et l’utilisation de données - en " +"fournissant les outils pour rationnaliser la publication, le partage , la " +"recherche et l’utilisation de données (y compris le stockage des données et" +" la mise à disposition de solides données API). CKAN est destiné aux " +"éditeurs (gouvernements régionaux et nationaux, sociétés et organisations)" +" qui veulent mettre à disposition leurs données .

CKAN est utilisé" +" par des gouvernements et des groupes d’utilisateurs dans le monde entier " +"et permet le fonctionnement d’une variété de portails officiels et " +"communautaires , notamment des portails pour des gouvernements locaux, " +"nationaux et internationaux, comme data.gov.uk au Royaume Uni, publicdata.eu pour la Communauté " -"Européenne, dados.gov.br au Brésil," -" des portails gouvernementaux hollandais et aux Pays Bas, ainsi que " -"des sites municipaux aux Etats Unis, Royaume Uni, Argentine, et " -"Finlande entre autres.

CKAN: http://ckan.org/
Visitez CKAN: http://ckan.org/tour/
" -"Présentation des Fonctionnalités: dados.gov.br au Brésil, " +"des portails gouvernementaux hollandais et aux Pays Bas, ainsi que des " +"sites municipaux aux Etats Unis, Royaume Uni, Argentine, et Finlande entre" +" autres.

CKAN: http://ckan.org/
" +"Visitez CKAN: http://ckan.org/tour/ Présentation des Fonctionnalités: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3398,12 +3404,12 @@ msgstr "Bienvenue sur CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" "Ceci est un paragraphe d'introduction à propos de CKAN ou du site en " -"général. Nous n'avons pas encore de rédactionnel à mettre ici, mais nous " -"en aurons bientôt" +"général. Nous n'avons pas encore de rédactionnel à mettre ici, mais nous en " +"aurons bientôt" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3452,13 +3458,13 @@ msgstr "Logo du site" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Vous pouvez utiliser le langage Markdown ici" +"reference\" data-target=\"popover\" data-content=\"%(markdown_tooltip)s\" " +"data-html=\"true\">le langage Markdown ici" #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3527,8 +3533,8 @@ msgstr "Brouillon" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privée" @@ -3582,15 +3588,15 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Admin: Peut ajouter/modifier et supprimer les jeux de" -" données, ainsi qu’ administrer les membres d’organisations.

" -"

Editeur: Peut ajouter et modifier les jeux de " -"données, mais ne peut pas administrer les membres.

" -"

Membre: Peut voir les jeux de données spécifiques à " -"l’organisation, mais ne peut pas ajouter de nouveaux jeux de données.

" +"

Admin: Peut ajouter/modifier et supprimer les jeux de " +"données, ainsi qu’ administrer les membres d’organisations.

" +"

Editeur: Peut ajouter et modifier les jeux de données, " +"mais ne peut pas administrer les membres.

Membre: " +"Peut voir les jeux de données spécifiques à l’organisation, mais ne peut pas" +" ajouter de nouveaux jeux de données.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3630,33 +3636,32 @@ msgstr "Que sont les organisations ?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Les organisations agissent comme des responsables de l'édition " "d'ensembles de données (par exemple, le ministère de la Santé). Cela " -"signifie que les ensembles de données appartiennent et peuvent être " -"publiées par une organisation à la place d'un utilisateur individuel.

" -"

Au sein des organisations, les administrateurs peuvent attribuer des " -"rôles et autoriser leurs membres, donnant ainsi aux utilisateurs " -"individuels le droit de publier des ensembles de données de cette " -"organisation en particulier (par exemple, Office des statistiques " -"nationales).

" +"signifie que les ensembles de données appartiennent et peuvent être publiées" +" par une organisation à la place d'un utilisateur individuel.

Au sein" +" des organisations, les administrateurs peuvent attribuer des rôles et " +"autoriser leurs membres, donnant ainsi aux utilisateurs individuels le droit" +" de publier des ensembles de données de cette organisation en particulier " +"(par exemple, Office des statistiques nationales).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Les Organisations CKAN sont utilisées pour créer, gérer et publier des " -"collections de jeux de données. Les utilisateurs peuvent avoir différents" -" rôles au sein d'une Organisation, en fonction de leur niveau " -"d'autorisation pour créer, éditer et publier." +"collections de jeux de données. Les utilisateurs peuvent avoir différents " +"rôles au sein d'une Organisation, en fonction de leur niveau d'autorisation " +"pour créer, éditer et publier." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3672,9 +3677,8 @@ msgstr "Un peu d'information au sujet de mon organisation..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Êtes vous sûr de vouloir supprimer cette organisation ? Cela supprimera " "tous les jeux de données publics et privés appartenant à cette organisation." @@ -3699,14 +3703,14 @@ msgstr "Que sont les jeux de données ?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "Un jeu de données CKAN est une collection de ressources (telles que des " -"fichiers), ainsi qu'une description et d'autres information, avec une URL" -" fixe. Les jeux de données sont ce que l'utilisateur voit lorsqu'il " -"effectue une recherche de données." +"fichiers), ainsi qu'une description et d'autres information, avec une URL " +"fixe. Les jeux de données sont ce que l'utilisateur voit lorsqu'il effectue " +"une recherche de données." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3787,16 +3791,16 @@ msgstr "Ajouter une vue" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Les vues de l'Explorateur de données peuvent être lentes et peu fiables à" -" moins que l'extension du magasin de données soit activée. Pour plus " +"Les vues de l'Explorateur de données peuvent être lentes et peu fiables à " +"moins que l'extension du magasin de données soit activée. Pour plus " "d'informations, s'il vous plaît voir la documentation de l'Explorateur " -"de données. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Explorateur de " +"données. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3806,9 +3810,8 @@ msgstr "Ajouter" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Ceci est une ancienne révision de ce jeu de données, telle qu'éditée à " "%(timestamp)s. Elle peut différer significativement de la This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Ce jeu de données n'a pas de données, pourquoi ne pas en ajouter?

" @@ -3992,8 +3995,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " msgstr "" -"Vous pouvez également accéder à ce catalogue en utilisant %(api_link)s " -"(cf %(api_doc_link)s). " +"Vous pouvez également accéder à ce catalogue en utilisant %(api_link)s (cf " +"%(api_doc_link)s). " #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -4041,8 +4044,7 @@ msgstr "Dernière modification" #: ckan/templates/package/snippets/cannot_create_package.html:10 msgid "Before you can create a dataset you need to create an organization." msgstr "" -"Vous devez créer une organisation avant de pouvoir créer un jeu de " -"données." +"Vous devez créer une organisation avant de pouvoir créer un jeu de données." #: ckan/templates/package/snippets/cannot_create_package.html:13 msgid "Create a new organization" @@ -4051,16 +4053,16 @@ msgstr "Créez un nouvelle organisation" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." msgstr "" -"Il n'existe pas actuellement d'organisation à laquelle assigner ce jeu de" -" données." +"Il n'existe pas actuellement d'organisation à laquelle assigner ce jeu de " +"données." #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" "Ask a system administrator to create an organization before you can " "continue." msgstr "" -"Demandez à un administrateur de l'application de vous créer une " -"organisation avant de poursuivre." +"Demandez à un administrateur de l'application de vous créer une organisation" +" avant de poursuivre." #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -4088,8 +4090,8 @@ msgid "" " License definitions and additional information can be found at opendefinition.org " msgstr "" -"Les définitions de la licence et des informations complémentaires peuvent" -" être trouvées chez opendefinition.org" #: ckan/templates/package/snippets/package_basic_fields.html:70 @@ -4115,20 +4117,19 @@ msgstr "Actif" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"La licence des données que vous sélectionnez ci-dessus ne vaut " -"que pour le contenu de tous les fichiers de ressources que vous ajoutez à" -" cet ensemble de données. En soumettant ce formulaire, vous vous engagez " -"à libérer les valeurs des métadonnées que vous entrez dans le " +"La licence des données que vous sélectionnez ci-dessus ne vaut que " +"pour le contenu de tous les fichiers de ressources que vous ajoutez à cet " +"ensemble de données. En soumettant ce formulaire, vous vous engagez à " +"libérer les valeurs des métadonnées que vous entrez dans le " "formulaire en vertu de la Licence de base de" -" données ouvertes." +"href=\"http://opendatacommons.org/licenses/odbl/1-0/\">Licence de base de " +"données ouvertes." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4193,8 +4194,7 @@ msgstr "par exemple : CSV, XML ou JSON" #: ckan/templates/package/snippets/resource_form.html:40 msgid "This will be guessed automatically. Leave blank if you wish" msgstr "" -"Ceci sera généré automatiquement. Laissez ce champ vide si vous le " -"souhaitez" +"Ceci sera généré automatiquement. Laissez ce champ vide si vous le souhaitez" #: ckan/templates/package/snippets/resource_form.html:51 msgid "eg. 2012-06-05" @@ -4241,8 +4241,8 @@ msgstr "Qu'est-ce qu'une ressource ?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Une ressource peut-être un fichier ou un lien vers un fichier contenant " -"des données utiles." +"Une ressource peut-être un fichier ou un lien vers un fichier contenant des " +"données utiles." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4273,8 +4273,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Vous pouvez copier et coller le code intégré dans un système de gestion " -"de contenu ou un logiciel de blogue qui prend en charge le HTML brut" +"Vous pouvez copier et coller le code intégré dans un système de gestion de " +"contenu ou un logiciel de blogue qui prend en charge le HTML brut" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4473,8 +4473,8 @@ msgstr "

Veuillez essayer une autre recherche.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Une erreur est survenue pendant votre " "recherche. Merci d'essayer de la soumettre à nouveau.

" @@ -4623,11 +4623,10 @@ msgstr "Info sur le compte" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Votre profil permet aux autres utilisateurs de CKAN de savoir qui vous " -"êtes et ce que vous faites" +"Votre profil permet aux autres utilisateurs de CKAN de savoir qui vous êtes " +"et ce que vous faites" #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4719,8 +4718,8 @@ msgstr "Mot de passe oublié ?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Aucun problème, utilisez notre formulaire de regénération du mot de passe" -" pour le réinitialiser." +"Aucun problème, utilisez notre formulaire de regénération du mot de passe " +"pour le réinitialiser." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4753,7 +4752,8 @@ msgstr "Vous êtes déjà connecté " #: ckan/templates/user/logout_first.html:24 msgid "You need to log out before you can log in with another account." -msgstr "Vous devez vous déconnecter avant de vous identifier avec un autre compte." +msgstr "" +"Vous devez vous déconnecter avant de vous identifier avec un autre compte." #: ckan/templates/user/logout_first.html:25 msgid "Log out now" @@ -4773,7 +4773,8 @@ msgstr "Pourquoi s'inscrire ?" #: ckan/templates/user/new.html:28 msgid "Create datasets, groups and other exciting things" -msgstr "Créer des jeux de données, des groupes et d'autres choses passionnantes" +msgstr "" +"Créer des jeux de données, des groupes et d'autres choses passionnantes" #: ckan/templates/user/new_user_form.html:5 msgid "username" @@ -4799,8 +4800,8 @@ msgstr "Réinitialisation du mot de passe" #: ckan/templates/user/perform_reset.html:21 msgid "You can also change username. It can not be modified later." msgstr "" -"Vous pouvez aussi changer le nom d'utilisateur. Il ne peut pas être " -"modifié ultérieurement." +"Vous pouvez aussi changer le nom d'utilisateur. Il ne peut pas être modifié " +"ultérieurement." #: ckan/templates/user/perform_reset.html:29 msgid "Update Password" @@ -4814,8 +4815,8 @@ msgstr "Comment ça marche ?" #: ckan/templates/user/perform_reset.html:40 msgid "Simply enter a new password and we'll update your account" msgstr "" -"Fournissez simplement un nouveau mot de passe et nous actualiserons votre" -" compte" +"Fournissez simplement un nouveau mot de passe et nous actualiserons votre " +"compte" #: ckan/templates/user/read.html:21 msgid "User hasn't created any datasets." @@ -4860,11 +4861,11 @@ msgstr "Réinitialisation de la demande" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Entrez votre identifiant utilisateur dans la boite et nous vous enverrons" -" un courriel contenant un lien pour entrer un nouveau mot de passe." +"Entrez votre identifiant utilisateur dans la boite et nous vous enverrons un" +" courriel contenant un lien pour entrer un nouveau mot de passe." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4890,4 +4891,3 @@ msgstr "Rechercher des utilisateurs" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "Votre mot de passe doit comporter au moins 8 caractères." - diff --git a/ckan/i18n/gl/LC_MESSAGES/ckan.po b/ckan/i18n/gl/LC_MESSAGES/ckan.po index 5c23cbc6a52..bb9bc76f52c 100644 --- a/ckan/i18n/gl/LC_MESSAGES/ckan.po +++ b/ckan/i18n/gl/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Galician translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,13 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: gl\n" "Language-Team: Galician (https://www.transifex.com/okfn/teams/11162/gl/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -130,14 +131,14 @@ msgstr "Non se atopou o recurso «Almacén de datos»" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Os datos eran incorrectos (por exemplo: un valor numérico estaba fora do " "intervalo ou foi inserido nun campo de texto)." @@ -167,8 +168,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:33 @@ -179,11 +179,11 @@ msgstr "Puntos de acceso" #: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:37 #: ckanext/datastore/templates/ajax_snippets/api_info.html:39 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" -"A API de Datos é accesíbel mediante as seguintes accións da API de acción" -" do CKAN." +"A API de Datos é accesíbel mediante as seguintes accións da API de acción do" +" CKAN." #: ckanext/datastore/templates-bs2/ajax_snippets/api_info.html:42 #: ckanext/datastore/templates/ajax_snippets/api_info.html:44 @@ -320,8 +320,7 @@ msgstr "API de datos" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Pode obter máis información na Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2928,9 +2925,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -3090,8 +3086,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -3123,7 +3120,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -3172,19 +3170,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:57 @@ -3205,8 +3206,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3278,10 +3279,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3345,14 +3346,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3369,8 +3369,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3416,8 +3416,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3484,8 +3484,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:98 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3540,8 +3540,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3576,19 +3576,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3605,9 +3605,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:38 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:41 @@ -3630,9 +3629,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3713,9 +3712,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3726,9 +3725,8 @@ msgstr "" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3798,9 +3796,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:140 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:162 @@ -3868,8 +3866,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -4009,12 +4007,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4334,8 +4331,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:87 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4482,8 +4479,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4711,8 +4707,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4739,4 +4735,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/he/LC_MESSAGES/ckan.po b/ckan/i18n/he/LC_MESSAGES/ckan.po index 2f8836e6a9c..21c178bcbbf 100644 --- a/ckan/i18n/he/LC_MESSAGES/ckan.po +++ b/ckan/i18n/he/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Hebrew translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: he\n" "Language-Team: Hebrew (https://www.transifex.com/okfn/teams/11162/he/)\n" -"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && " -"n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: he\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +116,16 @@ msgstr "משאב DataStore לא נמצא" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"לנתונים אין משמעות (לדוגמה: ערך מספרי מחוץ לטווח או שהוכנס אל תוך שדה " -"טקסט)." +"לנתונים אין משמעות (לדוגמה: ערך מספרי מחוץ לטווח או שהוכנס אל תוך שדה טקסט)." #: ckanext/datastore/logic/action.py:258 ckanext/datastore/logic/action.py:286 #: ckanext/datastore/logic/action.py:344 ckanext/datastore/logic/action.py:457 @@ -149,8 +148,7 @@ msgstr "גשו למשאב מידע דרך API מקוון עם תמיכה בשא msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -159,9 +157,10 @@ msgstr "נקודות קצה" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." -msgstr "ה-API של המידע יכול להתקבל באמצעות הפעולות הבאות של API פעולות של CKAN. " +"The Data API can be accessed via the following actions of the CKAN action " +"API." +msgstr "" +"ה-API של המידע יכול להתקבל באמצעות הפעולות הבאות של API פעולות של CKAN. " #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 msgid "Create" @@ -269,8 +268,7 @@ msgstr "מידע API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -749,7 +747,8 @@ msgstr "עמוד הבית" msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" -msgstr "אין אפשרות למחוק את חבילה %s מכיוון שגרסה %s כוללת חבילות שטרם נמחקו %s " +msgstr "" +"אין אפשרות למחוק את חבילה %s מכיוון שגרסה %s כוללת חבילות שטרם נמחקו %s " #: ckan/controllers/admin.py:183 #, python-format @@ -1786,8 +1785,8 @@ msgstr "אורך השם אינו יכול לעלות על %i תווים" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2544,9 +2543,10 @@ msgstr "איני מצליחה לקבל נתונים מהקובץ שהועלה" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" -msgstr "אתם מעלים קובץ. האם אתם בטוחים שברצונכם לצאת מהעמוד ולהפסיק את ההעלאה?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" +msgstr "" +"אתם מעלים קובץ. האם אתם בטוחים שברצונכם לצאת מהעמוד ולהפסיק את ההעלאה?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2829,36 +2829,35 @@ msgstr "הגדרות התצורה של תביאתה" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

כותרת האתר זוהי הכותרת של מופע CKAN כפי שהוא מוצג " -"במקומות ב-CKAN.

סגנון: בחרו מרשימה של סוגים שונים" -" של תבניות צבע כדי להפעיל במהירות תבנית מותאמת אישית.

" -"

לוגו תגית האתר: זה הלוגו שמופיע בכותרת של כל התבניות" -" של CKAN.

אודות: הטקסט הזה יופיע במופעי CKAN הללו" -" עמוד אודות.

טקסט " -"מקדים: הטקסט הזה יופיע במופעי CKAN הללו ביתpage כהקדמה למבקרים.

CSS " -"מותאם אישית: זהו קטע של CSS שיופיע ב <head> " -"תגית של כל עמוד. אם אתם מעוניינים להתאים את התבניות יותר אנחנו ממליצים על" -" המדריכים המפורטים " -"שלנו.

עמוד הבית: זה על מנת לבחור סידור מותאם " -"מראש לתבניות שיופיעו בדף הבית.

" +"במקומות ב-CKAN.

סגנון: בחרו מרשימה של סוגים שונים של" +" תבניות צבע כדי להפעיל במהירות תבנית מותאמת אישית.

לוגו תגית" +" האתר: זה הלוגו שמופיע בכותרת של כל התבניות של CKAN.

" +"

אודות: הטקסט הזה יופיע במופעי CKAN הללו עמוד אודות.

טקסט מקדים: " +"הטקסט הזה יופיע במופעי CKAN הללו ביתpage כהקדמה" +" למבקרים.

CSS מותאם אישית: זהו קטע של CSS שיופיע ב " +"<head> תגית של כל עמוד. אם אתם מעוניינים להתאים את " +"התבניות יותר אנחנו ממליצים על המדריכים המפורטים שלנו.

עמוד " +"הבית: זה על מנת לבחור סידור מותאם מראש לתבניות שיופיעו בדף " +"הבית.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2873,9 +2872,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -3039,8 +3037,9 @@ msgstr "האם אתם בטוחים שאתם רוצים למחוק את חבר ה #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "ניהול" @@ -3072,7 +3071,8 @@ msgstr "חיפוש קבוצות..." msgid "There are currently no groups for this site" msgstr "אין כרגע קבוצות לאתר הזה" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "מה דעתכם ליצור קבוצה?" @@ -3121,19 +3121,22 @@ msgstr "משתמש חדש" msgid "If you wish to invite a new user, enter their email address." msgstr "אם אתם רוצים להזמין משתמש חדש, הקלידו את כתובת הדואר האלקטרוני שלהם." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "תפקיד" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "האם אתם בטוחים שאתם רוצים למחוק את חבר הקבוצה הזה?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3154,13 +3157,13 @@ msgstr " מה הם התפקידים" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

מנהל:יכול לערוך את מידע הקבוצה, וכן לנהל את חברי " -"הארגון members.

חבר קבוצה: יכול להוסיף/להסיר " -"צבירי נתונים מקבוצות

" +"

מנהל:יכול לערוך את מידע הקבוצה, וכן לנהל את חברי הארגון" +" members.

חבר קבוצה: יכול להוסיף/להסיר צבירי נתונים " +"מקבוצות

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3230,15 +3233,15 @@ msgstr "מה הן קבוצות?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"אתם יכולים להשתמש בקבוצות של CKAN כדי ליצור ולנהל אוספים של צבירי נתונים." -" זה יכול להיות לשמש לקטלג צבירי נתונים לצורך פרויקט או קבוצה מסוימת, " -"לצבירים בנושא מסוים, או כדרך פשוטה כדי לעזור לאנשים למצוא ולחפש מידע " -"בצבירי הנתונים שפרסמתם. " +"אתם יכולים להשתמש בקבוצות של CKAN כדי ליצור ולנהל אוספים של צבירי נתונים. זה" +" יכול להיות לשמש לקטלג צבירי נתונים לצורך פרויקט או קבוצה מסוימת, לצבירים " +"בנושא מסוים, או כדרך פשוטה כדי לעזור לאנשים למצוא ולחפש מידע בצבירי הנתונים " +"שפרסמתם. " #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3301,14 +3304,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3318,18 +3320,18 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN היא פלטפורמת המידע הפתוחה המובילה בעולם

CKAN היא פתרון " -"שלם ישר מהקופסה שהופך מידע לנגיש ושימושי - על ידי כלים שמאפשרים פרסום, " -"שיתוף חיפוש ושימוש במידע (כולל אחסון המידע וכלי API מתקדמים). CKAN מיועדת" -" לגופים המפרסמים מידע (ברמה הלאומית והאזורית, חברות וארגונים) שמעונינים " -"להפוך את המידע שלהם לפתוח וזמין.

CKAN נמצאות בשימוש ממשלות וקבוצות" -" משתמשים ברחבי העולם ומפעילה מגוון אתרים רשמיים וקהילתיים כולל מידע " -"מקומי, לאומי ובינלאומי. בין היתר ניתן למצוא את CKAN היא פלטפורמת המידע הפתוחה המובילה בעולם

CKAN היא פתרון שלם " +"ישר מהקופסה שהופך מידע לנגיש ושימושי - על ידי כלים שמאפשרים פרסום, שיתוף " +"חיפוש ושימוש במידע (כולל אחסון המידע וכלי API מתקדמים). CKAN מיועדת לגופים " +"המפרסמים מידע (ברמה הלאומית והאזורית, חברות וארגונים) שמעונינים להפוך את " +"המידע שלהם לפתוח וזמין.

CKAN נמצאות בשימוש ממשלות וקבוצות משתמשים " +"ברחבי העולם ומפעילה מגוון אתרים רשמיים וקהילתיים כולל מידע מקומי, לאומי " +"ובינלאומי. בין היתר ניתן למצוא את data.gov.uk ואת האיחוד האירופי publicdata.eu, הברזילאיdados.gov.br, אתרים ממשלתיים של גרמניה " -"והולנד, כמו למשל אתרים עירוניים ואזוריים בארה\"ב, בריטניה, ארגנטינה, " -"פינלנד ומקומות רבים אחרים.

CKAN:

CKAN: http://ckan.org/
סיור ב-CKAN: http://ckan.org/tour/
אפשרויות " "המערכת: Markdown formatting here" msgstr "" -"ניתן להשתמש כאן בתחביר Markdown" #: ckan/templates/macros/form.html:265 @@ -3465,8 +3467,8 @@ msgstr "טיוטא" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "פרטי" @@ -3520,14 +3522,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

מנהל/ת (אדמין): יכולים להוסיף/לערוך צבירי נתונים " -"ולנהל את החברים בארגון.

עורכ/ת (editor): " -"יכולים להוסיף ולערוך צבירי נתונים, אך לא יכולים לערוך את החברים בארגון. " -"

חבר/ה: (member) יכולים לראות את צבירי הנתונים " -"הפרטיים של הארגון, אך לא יכולים להוסיף צבירי נתונים חדשים.

" +"

מנהל/ת (אדמין): יכולים להוסיף/לערוך צבירי נתונים ולנהל" +" את החברים בארגון.

עורכ/ת (editor): יכולים " +"להוסיף ולערוך צבירי נתונים, אך לא יכולים לערוך את החברים בארגון.

" +"

חבר/ה: (member) יכולים לראות את צבירי הנתונים הפרטיים " +"של הארגון, אך לא יכולים להוסיף צבירי נתונים חדשים.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3569,19 +3571,19 @@ msgstr "מה הם ארגונים?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "ארגונים ב-CKAN משמשים כדי ליצור, לנהל ולפרסם אוספים של צבירי נתונים. " "למשתמשים יכולים תפקידים שונםי בארגון, בהתאם לרמת ההרשאות ליצור, לערוך " @@ -3601,9 +3603,8 @@ msgstr "מידע קצר על הארגון שלי..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "האם אתם בטוחים שאתם רוצים למחוק את הארגון הזה? פעולה זו תמחק את כל צבירי " "הנתונים הפומביים והפרטיים השייכים לארגון." @@ -3628,13 +3629,13 @@ msgstr "מה הם צבירי נתונים?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"צביר נתונים של CKAN הוא אוסף של משאבי מידע (כמו קבצים) המופיע בקישור " -"קבוע. הצביר כולל גם תיאור ומידע נוסף. צבירי נתונים הם מה שמשתמשים רואים " -"כאשר הם מחפשים מידע. " +"צביר נתונים של CKAN הוא אוסף של משאבי מידע (כמו קבצים) המופיע בקישור קבוע. " +"הצביר כולל גם תיאור ומידע נוסף. צבירי נתונים הם מה שמשתמשים רואים כאשר הם " +"מחפשים מידע. " #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3715,9 +3716,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3728,12 +3729,11 @@ msgstr "הוספה" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"זהו עדכון ישן של צביר נתונים זה, כפי שנערך ב-%(timestamp)s. הוא עשוי " -"להיות שונה מאוד מהגרסה הנוכחית." +"זהו עדכון ישן של צביר נתונים זה, כפי שנערך ב-%(timestamp)s. הוא עשוי להיות " +"שונה מאוד מהגרסה הנוכחית." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3802,9 +3802,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3872,11 +3872,11 @@ msgstr "הוסף משאב נוסף" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

אין נתונים בצביר נתונים זה, מדוע" -" שלא תוסיפו כמה?

" +"

אין נתונים בצביר נתונים זה, מדוע " +"שלא תוסיפו כמה?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -4021,12 +4021,11 @@ msgstr "פעיל/ה" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4362,11 +4361,11 @@ msgstr "

אנא נסו חיפוש נוסף.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" -"

אירעה שגיאה בעת החיפוש. נא לנסות" -" שוב.

" +"

אירעה שגיאה בעת החיפוש. נא לנסות " +"שוב.

" #: ckan/templates/snippets/search_result_text.html:15 msgid "{number} dataset found for \"{query}\"" @@ -4524,8 +4523,7 @@ msgstr "מידע על חשבון" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "הפרופיל שלך מאפשר למשתמשי CKAN אחרים לדעת מי את/ה ומה אתם עושים." #: ckan/templates/user/edit_user_form.html:7 @@ -4749,11 +4747,11 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"הזינו את שם המשתמש/ת שלך לתוך התיבה ואנחנו נשלח לכם דוא\"ל עם קישור להזין" -" סיסמא חדשה." +"הזינו את שם המשתמש/ת שלך לתוך התיבה ואנחנו נשלח לכם דוא\"ל עם קישור להזין " +"סיסמא חדשה." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4779,4 +4777,3 @@ msgstr "חיפוש משתמשים" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/hr/LC_MESSAGES/ckan.po b/ckan/i18n/hr/LC_MESSAGES/ckan.po index 5e4a00504d4..42e6c319968 100644 --- a/ckan/i18n/hr/LC_MESSAGES/ckan.po +++ b/ckan/i18n/hr/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Croatian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: hr\n" "Language-Team: Croatian (https://www.transifex.com/okfn/teams/11162/hr/)\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "DataStore resurs nije pronаđen" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "Neispravni unos (npr. uneseni broj je prevelik ili se očekuje tekst)" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "Pristup resursima podataka kroz web API uz široku podršku upita" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,8 +157,8 @@ msgstr "Završne točke" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "API-ju podataka je moguće pristupiti korištenjem CKAN API akcija" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -200,7 +199,8 @@ msgstr "Primjer: Javascript" #: ckanext/datastore/templates/ajax_snippets/api_info.html:95 msgid "A simple ajax (JSONP) request to the data API using jQuery." -msgstr "Jednostavan ajax (JSONP) upit prema API-ju podataka korištenjem jQuery." +msgstr "" +"Jednostavan ajax (JSONP) upit prema API-ju podataka korištenjem jQuery." #: ckanext/datastore/templates/ajax_snippets/api_info.html:116 msgid "Example: Python" @@ -268,8 +268,7 @@ msgstr "API podаtаkа" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -748,8 +747,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Nemoguće odbаcivаnje pаketа %s jer pridruženа verzijа %s sаdrži pаkete " -"koji se ne mogu obrisаti %s" +"Nemoguće odbаcivаnje pаketа %s jer pridruženа verzijа %s sаdrži pаkete koji " +"se ne mogu obrisаti %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1039,8 +1038,8 @@ msgstr "Stranica je trenutno nedostupna. Bаzа nije inicijаlizirana." #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Molimo Vаs, аžurirаjte Vаš profil i dodаjte svoju " -"emаil аdresu." +"Molimo Vаs, аžurirаjte Vаš profil i dodаjte svoju emаil " +"аdresu." #: ckan/controllers/home.py:75 #, python-format @@ -1310,7 +1309,8 @@ msgstr "Ne postoji korisnik: %s" #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." -msgstr "Molimo Vаs pronаđite kod za resetiranje lozinke u vašoj ulaznoj pošti." +msgstr "" +"Molimo Vаs pronаđite kod za resetiranje lozinke u vašoj ulaznoj pošti." #: ckan/controllers/user.py:503 #, python-format @@ -1782,8 +1782,8 @@ msgstr "Ime morа biti duljine najviše %i znakova" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1828,8 +1828,8 @@ msgstr "Duljinа oznake \"%s\" je većа od mаksimаlne (%i)" #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Oznaka \"%s\" morа biti sаstаvljen od аlfаnumeričkih znakova ili simbolа:" -" -_." +"Oznaka \"%s\" morа biti sаstаvljen od аlfаnumeričkih znakova ili simbolа: " +"-_." #: ckan/logic/validators.py:436 #, python-format @@ -1865,8 +1865,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Izmjena nije dozvoljena, jer izgledа kao neželjena. Izbjegаvаjte linkove " -"u Vаšem opisu." +"Izmjena nije dozvoljena, jer izgledа kao neželjena. Izbjegаvаjte linkove u " +"Vаšem opisu." #: ckan/logic/validators.py:620 #, python-format @@ -1881,8 +1881,8 @@ msgstr "To ime riječnikа je već u upotrebi." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"Nemoguće je promijeniti vrijednost ključа sа %s nа %s. Ovаj ključ je sаmo" -" zа čitаnje" +"Nemoguće je promijeniti vrijednost ključа sа %s nа %s. Ovаj ključ je sаmo zа" +" čitаnje" #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2107,7 +2107,8 @@ msgstr "Korisnik %s nije ovlаšten dа mijenjа ove grupe" #: ckan/logic/auth/create.py:38 #, python-format msgid "User %s not authorized to add dataset to this organization" -msgstr "Korisnik %s nije ovlašten za dodavanje skupa podataka ovoj organizaciji" +msgstr "" +"Korisnik %s nije ovlašten za dodavanje skupa podataka ovoj organizaciji" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." @@ -2117,8 +2118,7 @@ msgstr "" #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"Nemа pronаđenih pаketa zа ovаj resurs, nije moguća provjera " -"autentifikacije." +"Nemа pronаđenih pаketa zа ovаj resurs, nije moguća provjera autentifikacije." #: ckan/logic/auth/create.py:76 #, python-format @@ -2479,7 +2479,8 @@ msgstr "Veza" #: ckan/public/base/javascript/modules/image-upload.js:61 msgid "Link to a URL on the internet (you can also link to an API)" -msgstr "Kreirajte link na URL na internetu (također možete kreirati link na API)" +msgstr "" +"Kreirajte link na URL na internetu (također možete kreirati link na API)" #: ckan/public/base/javascript/modules/image-upload.js:68 msgid "Upload" @@ -2547,8 +2548,8 @@ msgstr "Nije moguće dohvatiti podatke za učitanu datoteku" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "U tijeku je učitavanje datoteke. Jeste li sigurni da želite otići sa ove " "stranice i prekinuti učitavanje?" @@ -2728,39 +2729,37 @@ msgstr "CKAN opcije konfiguracije" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Naslov stranice: Ovo je naslov CKAN instance koji se" -" pojavljuje na različitim mjestima kroz CKAN.

" -"

Stil: Odaberite listu jednostavnih varijacija " -"standardne sheme boja za brzo postavljanje korisničke teme.

" -"

Logo stranice: Ovo je logo koji se pojavljuje u " -"zaglavlju svih predložaka CKAN instance.

O " -"stranici: Ovaj tekst će se pojavljivati na CKAN instanci o stranici.

Uvodni " +"

Naslov stranice: Ovo je naslov CKAN instance koji se " +"pojavljuje na različitim mjestima kroz CKAN.

Stil: " +"Odaberite listu jednostavnih varijacija standardne sheme boja za brzo " +"postavljanje korisničke teme.

Logo stranice: Ovo je " +"logo koji se pojavljuje u zaglavlju svih predložaka CKAN instance.

" +"

O stranici: Ovaj tekst će se pojavljivati na CKAN " +"instanci o stranici.

Uvodni " "tekst: Ovaj tekst će se pojaviti na CKAN instanci početna stranica kao pozdravna poruka " -"posjetiteljima.

Korisnički CSS: Ovo je CSS blok " -"koji se pojavljuje u <head> oznaci svake stranice. Ako" -" želite potpunije izmjene predložaka predlažemo da pročitate dokumentaciju.

" -"

Početna: Ovo služi za odabir predefiniranog predloška" -" za module koji se pojavljuju na vašoj početnoj stranici.

" +"posjetiteljima.

Korisnički CSS: Ovo je CSS blok koji" +" se pojavljuje u <head> oznaci svake stranice. Ako želite" +" potpunije izmjene predložaka predlažemo da pročitate dokumentaciju.

" +"

Početna: Ovo služi za odabir predefiniranog predloška za" +" module koji se pojavljuju na vašoj početnoj stranici.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2775,9 +2774,8 @@ msgstr "Administriraj CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2941,8 +2939,9 @@ msgstr "Jeste li sigurni da želite izbrisati član - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Uredi" @@ -2974,7 +2973,8 @@ msgstr "Traži grupe..." msgid "There are currently no groups for this site" msgstr "Trenutno ne postoje grupe za ovu stranicu" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "A da kreirate?" @@ -3006,7 +3006,8 @@ msgstr "Postojeći korisnik" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." -msgstr "Ako želite dodati postojećeg korisnika, potražite korisničko ime ispod." +msgstr "" +"Ako želite dodati postojećeg korisnika, potražite korisničko ime ispod." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3023,19 +3024,22 @@ msgstr "Novi korisnik" msgid "If you wish to invite a new user, enter their email address." msgstr "Ako želite pozvati nove korisnike, unesite njihove e-mail adrese." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Uloga" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Jeste li sigurni da želite izbrisati ovaj član?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3056,12 +3060,12 @@ msgstr "Što su uloge?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Administrator: Može izmijeniti informacije o grupi i" -" upravljati članovima organizacije.

Član: Može " +"

Administrator: Može izmijeniti informacije o grupi i " +"upravljati članovima organizacije.

Član: Može " "dodati/maknuti setove podataka iz grupa

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 @@ -3132,16 +3136,15 @@ msgstr "Što su grupe?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" "Možete koristiti CKAN Grupe za kreiranje i upravljanje kolekcija skupova " "podataka. Ovo može biti katalog skupova podataka za određeni projekt ili " -"tim, ili za određenu temu, ili jednostavno služi za olakšavanje " -"korisnicima pretraživanje i pronalazak vaših objavljenih skupova " -"podataka." +"tim, ili za određenu temu, ili jednostavno služi za olakšavanje korisnicima " +"pretraživanje i pronalazak vaših objavljenih skupova podataka." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3204,14 +3207,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3221,21 +3223,21 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN je vodeća svjetka open-source platforma za podatkovni portal.

" -"

CKAN je kompletno out-of-the-box softversko rješenje koje čini " -"podatke dostupnima i upotrebljivima – dajući na raspolaganje alate za " -"efikasno objavljivanje, dijeljenje, pretragu i korištenje podatka " -"(uključujući pohranu podataka i pristup robusnim API-ima za podatke). " -"CKAN je namijenjen tijelima koja objavljuju podatke (državna i lokalna " -"uprava, poduzeća i organizacije) za koje žele te da su javni i " -"dostupni.

CKAN koriste vlade i grupe korisnika širom svijeta. On " -"pokreće raznovrsne službene i društvene podatkovne portale za lokalnu, " -"državnu i internacionalnu upravu, kao što su Vlada Velike Britanije CKAN je vodeća svjetka open-source platforma za podatkovni portal.

" +"

CKAN je kompletno out-of-the-box softversko rješenje koje čini podatke " +"dostupnima i upotrebljivima – dajući na raspolaganje alate za efikasno " +"objavljivanje, dijeljenje, pretragu i korištenje podatka (uključujući " +"pohranu podataka i pristup robusnim API-ima za podatke). CKAN je namijenjen " +"tijelima koja objavljuju podatke (državna i lokalna uprava, poduzeća i " +"organizacije) za koje žele te da su javni i dostupni.

CKAN koriste " +"vlade i grupe korisnika širom svijeta. On pokreće raznovrsne službene i " +"društvene podatkovne portale za lokalnu, državnu i internacionalnu upravu, " +"kao što su Vlada Velike Britanije data.gov.uk Europska Unija publicdata.eu, Brazilska vlada dados.gov.br, Portal Nizozemske Vlade, " -"kao i gradske i međugradske web stranice u Ujedinjenom Kraljevstvu, " -"SAD-u, Argentini, Finskoj...

CKAN: dados.gov.br, Portal Nizozemske Vlade, kao" +" i gradske i međugradske web stranice u Ujedinjenom Kraljevstvu, SAD-u, " +"Argentini, Finskoj...

CKAN: http://ckan.org/
CKAN Obilazak: http://ckan.org/tour/
Istaknuti " "pregled: Markdown formatting here" msgstr "" @@ -3368,8 +3370,8 @@ msgstr "Skica" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privatno" @@ -3423,15 +3425,15 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Administrator: Može dodati/izmijeniti i obrisati " "skupove podataka, te upravljati članovima organizacije.

" -"

Urednik: Može dodati i izmijeniti skupove podataka, " -"ali ne može upravljati članovima organizacije.

" -"

Član: Može vidjeti privatne skupove podataka " -"organizacije, ali ne može dodavati nove skupove podataka.

" +"

Urednik: Može dodati i izmijeniti skupove podataka, ali " +"ne može upravljati članovima organizacije.

Član: " +"Može vidjeti privatne skupove podataka organizacije, ali ne može dodavati " +"nove skupove podataka.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3472,24 +3474,23 @@ msgstr "Što su Organizacije?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN Organizacije se koriste za kreiranje, upravljanje i objavu kolekcija" -" skupova podataka. Korisnici mogu imati različite uloge unutar " -"Organizacije. ovisno o njihovoj razini prava za kreiranje, izmjenu i " -"objavu." +"CKAN Organizacije se koriste za kreiranje, upravljanje i objavu kolekcija " +"skupova podataka. Korisnici mogu imati različite uloge unutar Organizacije. " +"ovisno o njihovoj razini prava za kreiranje, izmjenu i objavu." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3505,9 +3506,8 @@ msgstr "Malo informacija o mojoj Organizaciji" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Jeste li sigurni da želite obrisati ovu Organizaciju? Ovime ćete obrisati " "sve javne i privatne skupove podataka koji pripadaju ovoj organizaciji." @@ -3532,13 +3532,13 @@ msgstr "Što su skupovi podataka?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"CKAN skup podataka je kolekcija resursa podataka (kao što su datoteke), " -"sa opisom i ostalim informacijama, na fiksnom URL-u. Skupovi podataka su " -"ono što korisnici vide kad pretražuju podatke." +"CKAN skup podataka je kolekcija resursa podataka (kao što su datoteke), sa " +"opisom i ostalim informacijama, na fiksnom URL-u. Skupovi podataka su ono " +"što korisnici vide kad pretražuju podatke." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3619,9 +3619,9 @@ msgstr "Dodaj pogled" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3632,13 +3632,11 @@ msgstr "Dodаj" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Ovo je stara verzija ovog Skupa podataka, ažurirana %(timestamp)s. Moguće" -" su značajne razlike u odnosu na aktualnu " -"verziju." +"Ovo je stara verzija ovog Skupa podataka, ažurirana %(timestamp)s. Moguće su" +" značajne razlike u odnosu na aktualnu verziju." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3707,9 +3705,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3777,8 +3775,8 @@ msgstr "Dodaj novi resurs" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Ovaj Skup podataka nema podataka, zašto ne biste dodali neke?

" @@ -3926,12 +3924,11 @@ msgstr "Aktivno" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4043,8 +4040,8 @@ msgstr "Što je resurs?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Resurs može biti bilo koja datoteka ili link na datoteku koja sadrži " -"korisne podatke" +"Resurs može biti bilo koja datoteka ili link na datoteku koja sadrži korisne" +" podatke" #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4269,8 +4266,8 @@ msgstr "

Molimo pokušajte drugu pretragu.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4423,8 +4420,7 @@ msgstr "Informacije o korisničkom računu" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" "Vaš profil omogućava drugim CKAN korisnicima da znaju tko ste i čime se " "bavite" @@ -4650,11 +4646,11 @@ msgstr "Zahtjev" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Upišite korisničko ime u polje i poslat ćemo vam e-mail sa linkom za unos" -" nove lozinke" +"Upišite korisničko ime u polje i poslat ćemo vam e-mail sa linkom za unos " +"nove lozinke" #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4680,4 +4676,3 @@ msgstr "Traži korisnike" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/hu/LC_MESSAGES/ckan.po b/ckan/i18n/hu/LC_MESSAGES/ckan.po index 16c46589bd3..b8939614480 100644 --- a/ckan/i18n/hu/LC_MESSAGES/ckan.po +++ b/ckan/i18n/hu/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Hungarian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: hu\n" -"Language-Team: Hungarian (https://www.transifex.com/okfn/teams/11162/hu/)" -"\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Hungarian (https://www.transifex.com/okfn/teams/11162/hu/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,8 +157,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -268,8 +267,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -1769,8 +1767,8 @@ msgstr "" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1814,7 +1812,8 @@ msgstr "" #: ckan/logic/validators.py:428 #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." -msgstr "A '%s' cimke csak betűket és számokat '-' és '_' jeleket tartalmazhat." +msgstr "" +"A '%s' cimke csak betűket és számokat '-' és '_' jeleket tartalmazhat." #: ckan/logic/validators.py:436 #, python-format @@ -2525,8 +2524,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2701,22 +2700,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2732,9 +2730,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2898,8 +2895,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -2931,7 +2929,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -2980,19 +2979,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3013,8 +3015,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3086,10 +3088,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3153,14 +3155,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3177,8 +3178,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3224,8 +3225,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3296,8 +3297,8 @@ msgstr "Vázlat" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privát" @@ -3351,8 +3352,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3393,19 +3394,19 @@ msgstr "Mik a Szervezetek?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3422,9 +3423,8 @@ msgstr "Kevés információ a szervezetemről..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3447,9 +3447,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3531,9 +3531,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3544,9 +3544,8 @@ msgstr "Hozzáadás" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3616,9 +3615,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3686,8 +3685,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3827,12 +3826,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4168,8 +4166,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4316,8 +4314,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4541,8 +4538,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4569,4 +4566,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/id/LC_MESSAGES/ckan.po b/ckan/i18n/id/LC_MESSAGES/ckan.po index 66d31dac817..3f85a933cd2 100644 --- a/ckan/i18n/id/LC_MESSAGES/ckan.po +++ b/ckan/i18n/id/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Indonesian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: id\n" -"Language-Team: Indonesian " -"(https://www.transifex.com/okfn/teams/11162/id/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Indonesian (https://www.transifex.com/okfn/teams/11162/id/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "Sumber kumpulan data tidak ditemukan" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,8 +157,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -268,8 +267,7 @@ msgstr "API data" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -436,7 +434,8 @@ msgstr "Tautan gambar" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "eg. http://example.com/image.jpg (if blank uses resource url)" -msgstr "contoh: http://example.com/image.jpg (jika kosong, gunakan alamat data)" +msgstr "" +"contoh: http://example.com/image.jpg (jika kosong, gunakan alamat data)" #: ckanext/reclineview/plugin.py:101 msgid "Data Explorer" @@ -841,7 +840,8 @@ msgstr "Tidak ada revisi dengan id: %s" #: ckan/controllers/api.py:514 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" -msgstr "Istilah pencarian hilang ('since_id=UUID' atau 'since_time=TIMESTAMP')" +msgstr "" +"Istilah pencarian hilang ('since_id=UUID' atau 'since_time=TIMESTAMP')" #: ckan/controllers/api.py:526 #, python-format @@ -1037,15 +1037,15 @@ msgstr "Situs ini sedang luring. Basisdata tidak diinisialisasikan." #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Silahkan perbarui profil anda dan tambahkan alamat " -"email anda. " +"Silahkan perbarui profil anda dan tambahkan alamat email " +"anda. " #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." msgstr "" -"%s menggunakan alamat email anda jika anda memerlukan untuk menyetel " -"ulang password anda." +"%s menggunakan alamat email anda jika anda memerlukan untuk menyetel ulang " +"password anda." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1266,8 +1266,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Pengguna \"%s\" sekarang terdaftar tetapu anda masih masuk sebagai \"%s\"" -" dari sebelumnya" +"Pengguna \"%s\" sekarang terdaftar tetapu anda masih masuk sebagai \"%s\" " +"dari sebelumnya" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1766,8 +1766,8 @@ msgstr "Nama maksimal hingga %i karakter panjangnya" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1847,8 +1847,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Pengeditan tidak diperkenankan karena mirip spam. Silahkan abaikan tautan" -" pada deskripsi anda." +"Pengeditan tidak diperkenankan karena mirip spam. Silahkan abaikan tautan " +"pada deskripsi anda." #: ckan/logic/validators.py:620 #, python-format @@ -2525,8 +2525,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2700,22 +2700,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2731,9 +2730,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2897,8 +2895,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -2930,7 +2929,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -2979,19 +2979,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3012,8 +3015,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3085,10 +3088,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3152,14 +3155,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3176,8 +3178,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3223,8 +3225,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3295,8 +3297,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privat" @@ -3350,8 +3352,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3391,19 +3393,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3420,9 +3422,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3445,9 +3446,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3529,9 +3530,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3542,9 +3543,8 @@ msgstr "Tambah" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3614,9 +3614,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3684,8 +3684,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3825,12 +3825,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4166,8 +4165,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4308,8 +4307,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4533,8 +4531,8 @@ msgstr "Meminta setel ulang sandi" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Masukan nama pengguna ke dalam kolom dan kami akan mengirimkan surat " "elektronik beserta tautan untuk mengisi sandi baru" @@ -4563,4 +4561,3 @@ msgstr "Cari Pengguna" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/is/LC_MESSAGES/ckan.po b/ckan/i18n/is/LC_MESSAGES/ckan.po index 0837ff20f84..ee6cfd067f8 100644 --- a/ckan/i18n/is/LC_MESSAGES/ckan.po +++ b/ckan/i18n/is/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Icelandic translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: is\n" -"Language-Team: Icelandic (https://www.transifex.com/okfn/teams/11162/is/)" -"\n" -"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11)\n" +"Language-Team: Icelandic (https://www.transifex.com/okfn/teams/11162/is/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "Tilfang DataStore fannst ekki" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Þessi gögn eru ógild (til dæmis: tölugildi er ekki innan marka eða var " "slegið inn í textareit)." @@ -150,8 +150,7 @@ msgstr "Opnaðu tilfangsgögn í gegnum nettengt API með öflugum leitarstuðni msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Ítarlegri upplýsingar má finna í main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Ítarlegri upplýsingar má finna í Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Titill svæðis: Þetta er heiti vefsvæðisins og er " -"notað víða innan CKAN uppsetningarinnar.

Útlit: " -"Veldu úr lista yfir fölbreytt litaþemu til að breyta útliti svæðisins með" -" fljótlegum hætti.

Merki svæðisins: Þetta er " -"myndin sem birtist í haus vefsvæðisins á öllum síðum.

" -"

Um: Þessi texti er notaður á síðunni um vefinn.

" +"

Titill svæðis: Þetta er heiti vefsvæðisins og er notað " +"víða innan CKAN uppsetningarinnar.

Útlit: Veldu úr " +"lista yfir fölbreytt litaþemu til að breyta útliti svæðisins með fljótlegum " +"hætti.

Merki svæðisins: Þetta er myndin sem birtist" +" í haus vefsvæðisins á öllum síðum.

Um: Þessi texti " +"er notaður á síðunni um vefinn.

" "

Kynningartexti: Þessi texti birtist á forsíðunni til að bjóða gesti velkomna.

" "

Sérsniðið CSS: Þessi kóði birtist í " @@ -2767,13 +2766,12 @@ msgstr "Stjórna CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Sem kerfisstjóri hefur þú fulla stjórn á þessari CKAN-uppsetningu. " -"Farðu mjög varlega!

Fyrir aðstoð við að nota " -"kerfisstjórnarmöguleika, skoðaðu CKAN Sem kerfisstjóri hefur þú fulla stjórn á þessari CKAN-uppsetningu. Farðu " +"mjög varlega!

Fyrir aðstoð við að nota kerfisstjórnarmöguleika, " +"skoðaðu CKAN kerfisstjóraleiðbeiningarnar

" #: ckan/templates/admin/trash.html:20 @@ -2937,8 +2935,9 @@ msgstr "Ertu viss um að þú viljir eyða meðlimi - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Stjórna" @@ -2970,7 +2969,8 @@ msgstr "Leita í söfnum..." msgid "There are currently no groups for this site" msgstr "Það eru engin söfn skráð" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Væri ekki ráð að gera eitthvað í því?" @@ -3021,19 +3021,22 @@ msgstr "Nýr notandi" msgid "If you wish to invite a new user, enter their email address." msgstr "Ef þú vilt bjóða nýjum notanda skaltu slá inn netfang hans." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Hlutverk" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Ertu viss um að þú viljir eyða þessum meðlim?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3054,8 +3057,8 @@ msgstr "Hvað eru hlutverk?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Sjórnandi: Getur breytt upplýsingum safns og stýrt " @@ -3130,15 +3133,15 @@ msgstr "Hvað eru söfn?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Þú getur notað CKAN söfn til að búa til og stjórna gagnapakkasöfnum. " -"Þannig er hægt að skrá gagnapakka fyrir tiltekið verkefni eða lið, eða í " -"tilteknu þema, og þannig geturðu einnig hjálpað fólki við að finna og " -"leita að þínum útgefnu gagnapökkum." +"Þú getur notað CKAN söfn til að búa til og stjórna gagnapakkasöfnum. Þannig " +"er hægt að skrá gagnapakka fyrir tiltekið verkefni eða lið, eða í tilteknu " +"þema, og þannig geturðu einnig hjálpað fólki við að finna og leita að þínum " +"útgefnu gagnapökkum." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3201,14 +3204,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3218,22 +3220,21 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN er leiðandi opinn hugbúnaður fyrir hýsingu á gögnum.

CKAN" -" er heildarlausn tilbúin til uppsetningar og gerir gögn bæði aðgengileg " -"og gagnleg - með því að bjóða upp á lausn sem einfaldar útgáfu, deilingu," -" leit og notkun á gögnum (þ.m.t. geymslu gagna). CKAN er hannað fyrir " -"útgefendur gagna (ríki og sveitarfélög, fyrirtæki og stofnanir) sem vilja" -" gera eigin gögn opinber og aðgengileg.

CKAN er notað af " -"ríkisstjórnum og öðrum aðilum víðs vegar um heiminn og keyrir alls konar " -"opinberar og samfélagslegar gagnaveitur, þ.m.t. gagnagáttir fyrir " -"staðbundna og alþjóðlega stjórnsýslu, t.d. data.gov.uk í Bretlandi og publicdata.eu fyrir ESB, dados.gov.br í Brasilíu og hollenskar " -"stjórnsýslugáttir, og auk þess vefsíður fyrir borgir og sveitarfélög í " -"BNA, Bretlandi, Argentínu, Finnlandi og annars staðar.

CKAN: http://ckan.org/
CKAN Tour: http://ckan.org/tour/
Yfirlit " +"

CKAN er leiðandi opinn hugbúnaður fyrir hýsingu á gögnum.

CKAN er" +" heildarlausn tilbúin til uppsetningar og gerir gögn bæði aðgengileg og " +"gagnleg - með því að bjóða upp á lausn sem einfaldar útgáfu, deilingu, leit " +"og notkun á gögnum (þ.m.t. geymslu gagna). CKAN er hannað fyrir útgefendur " +"gagna (ríki og sveitarfélög, fyrirtæki og stofnanir) sem vilja gera eigin " +"gögn opinber og aðgengileg.

CKAN er notað af ríkisstjórnum og öðrum " +"aðilum víðs vegar um heiminn og keyrir alls konar opinberar og " +"samfélagslegar gagnaveitur, þ.m.t. gagnagáttir fyrir staðbundna og " +"alþjóðlega stjórnsýslu, t.d. data.gov.uk " +"í Bretlandi og publicdata.eu fyrir " +"ESB, dados.gov.br í Brasilíu og " +"hollenskar stjórnsýslugáttir, og auk þess vefsíður fyrir borgir og " +"sveitarfélög í BNA, Bretlandi, Argentínu, Finnlandi og annars staðar.

" +"

CKAN: http://ckan.org/
CKAN Tour: " +"http://ckan.org/tour/
Yfirlit " "yfir það helsta: http://ckan.org/features/

" @@ -3243,11 +3244,11 @@ msgstr "Velkomin(n) í CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Þetta er fínn inngangstexti um CKAN. Við höfum ekkert til að setja hér " -"ennþá en það kemur" +"Þetta er fínn inngangstexti um CKAN. Við höfum ekkert til að setja hér ennþá" +" en það kemur" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3292,8 +3293,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Þú getur notað Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Stjórnandi: Getur bætt við, breytt og eytt " -"gagnapökkum, auk þess að stýra aðgangi meðlima í stofnun.

" -"

Útgefandi: Getur bætt við og breytt gagnapökkum en " -"ekki stýrt aðgangi notenda.

Meðlimur: Getur " -"skoðað óútgefna gagnapakka stofnunar en ekki bætt við nýjum " -"gagnapökkum.

" +"

Stjórnandi: Getur bætt við, breytt og eytt gagnapökkum," +" auk þess að stýra aðgangi meðlima í stofnun.

" +"

Útgefandi: Getur bætt við og breytt gagnapökkum en ekki " +"stýrt aðgangi notenda.

Meðlimur: Getur skoðað " +"óútgefna gagnapakka stofnunar en ekki bætt við nýjum gagnapökkum.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3470,29 +3470,28 @@ msgstr "Hvað eru stofnanir?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Stofnanir eru útgefendur gagnapakka (til dæmis Fjármálaráðuneytið). " -"Gagnapakkar eru gefnir út undir stofnun frekar en í nafni " -"einstaklinga.

Stjórnendur geta úthlutað hlutverkum og " -"aðgangsheimildum innan stofnana og þannig gefið notendum réttindi til að " -"gefa út gagnapakka fyrir viðkomandi stofnun.

" +"Gagnapakkar eru gefnir út undir stofnun frekar en í nafni einstaklinga.

" +"

Stjórnendur geta úthlutað hlutverkum og aðgangsheimildum innan stofnana " +"og þannig gefið notendum réttindi til að gefa út gagnapakka fyrir viðkomandi" +" stofnun.

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN stofnanir eru notaðar til að búa til, stýra og gefa út " -"gagnapakkasöfn. Notendur geta gegnt mismunandi hlutverkum innan " -"stofnanna, í samræmi við heimildir sem þeir hafa til að búa til, breyta " -"og gefa út." +"CKAN stofnanir eru notaðar til að búa til, stýra og gefa út gagnapakkasöfn. " +"Notendur geta gegnt mismunandi hlutverkum innan stofnanna, í samræmi við " +"heimildir sem þeir hafa til að búa til, breyta og gefa út." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3508,9 +3507,8 @@ msgstr "Stutt lýsing á stofnuninni..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Ertu viss um að þú viljir eyða þessari stofnun? Þetta mun eyða öllum " "opinberum og lokuðum gagnapökkum sem tilheyra þessari stofnun." @@ -3535,13 +3533,13 @@ msgstr "Hvað eru gagnapakkar?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"CKAN gagnapakki er safn tilfanga gagna (t.d. skrár), ásamt lýsingu og " -"öðrum upplýsingum, á ákveðinni vefslóð. Gagnapakkar eru það sem notendur " -"sjá þegar þeir leita að gögnum." +"CKAN gagnapakki er safn tilfanga gagna (t.d. skrár), ásamt lýsingu og öðrum " +"upplýsingum, á ákveðinni vefslóð. Gagnapakkar eru það sem notendur sjá þegar" +" þeir leita að gögnum." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3622,15 +3620,15 @@ msgstr "Bæta við sýn" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" "Gagnaskoðandasýnir getur verið hægar og óáreiðanlegar nema DataStore " "viðbótin sé virk. Fyrir frekari upplýsingar skoðaðu leiðbeiningar" -" fyrir gagnaskoðandann (Data Explorer). " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>leiðbeiningar fyrir " +"gagnaskoðandann (Data Explorer). " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3640,9 +3638,8 @@ msgstr "Bæta við" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Þetta er gömul útgáfa af gagnapakkanum, breytt %(timestamp)s. Hún getur " "verið töluvert frábrugðin núgildandi útgáfu." @@ -3714,13 +3711,13 @@ msgstr "Kerfisstjórar hafa mögulega ekki bætt við viðeigandi sýnisviðbót #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"Ef sýn býst við DataStore viðbótinni, gæti DataStore viðbótin verið " -"óvirk, gögnin ekki sett inn í gagnabankann eða gagnabankinn hefur ekki " -"enn klárað að vinna gögnin" +"Ef sýn býst við DataStore viðbótinni, gæti DataStore viðbótin verið óvirk, " +"gögnin ekki sett inn í gagnabankann eða gagnabankinn hefur ekki enn klárað " +"að vinna gögnin" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3787,8 +3784,8 @@ msgstr "Bæta við nýju tilfangi" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Þessi gagnapakki er ekki með nein gögn. Viltu ekki bæta nokkrum við?

" @@ -3936,17 +3933,16 @@ msgstr "Virkt" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Notkunarskilmálarnir sem þú valdir hér fyrir ofan eiga aðeins við " -"um innihald tilfangaskráa sem þú bætir við í gagnapakkann. Með því að " -"senda inn þessar upplýsingar samþykkir þú að birta lýsigögnin sem " -"þú hefur fyllt inn undir notkunarskilmálum Notkunarskilmálarnir
sem þú valdir hér fyrir ofan eiga aðeins við um " +"innihald tilfangaskráa sem þú bætir við í gagnapakkann. Með því að senda inn" +" þessar upplýsingar samþykkir þú að birta lýsigögnin sem þú hefur " +"fyllt inn undir notkunarskilmálum Open Database " "License." @@ -4287,8 +4283,8 @@ msgstr "

Reyndu aðra leit.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4435,8 +4431,7 @@ msgstr "Notandaupplýsingar" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "Prófíllinn þinn gefur öðrum notendum kost á að kynnast þér betur." #: ckan/templates/user/edit_user_form.html:7 @@ -4662,8 +4657,8 @@ msgstr "Breyta aðgangsorði" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Sláðu notandanafnið þitt inn í svæðið. Við munum senda þér tölvupóst með " "tengil á síðu þar sem þú getur valið nýtt aðgangsorð." @@ -4692,4 +4687,3 @@ msgstr "Leita að notanda" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/it/LC_MESSAGES/ckan.po b/ckan/i18n/it/LC_MESSAGES/ckan.po index 18cfc1906dc..397149a70f1 100644 --- a/ckan/i18n/it/LC_MESSAGES/ckan.po +++ b/ckan/i18n/it/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Italian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,13 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: it\n" "Language-Team: Italian (https://www.transifex.com/okfn/teams/11162/it/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -115,14 +116,14 @@ msgstr "Risorsa DataStore non trovata" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Dato non valido (per esempio: un valore numerico fuori intervallo od " "inserito in un campo di testo)." @@ -151,8 +152,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Ulteriori informazioni presso la main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Ulteriori informazioni presso la Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Titolo sito Questo e' il titolo di questa instanza " -"di CKAN che appare in diversi punti attraverso il CKAN.

" -"

Stile: Scegli dall'elenco una semplice variazioni del" -" colore principali del tema per impostare velocemente un diverso " -"tema.

Logo: Questo è il logo che appare in alto " -"nella testata di tutti i template di CKAN.

" -"

Informazioni: Questo testo comparirà in questa " -"istanza di CKAN pagina informazioni.

" -"

Testo presentazione: Questo testo comparirà su questa" -" istanza di CKAN home page per dare il " -"benvenuto ai visitatori.

CSS Personalizzato: " -"Questo e' il blocco di codice di personalizzazione del CSS " -"<head> che compare in ogni pagina. Se vuoi modificare " -"il template più in profondità ti consigliamo di leggere la documentazione.

Pagina " -"iniziale: Questo è per scegliere il layout predefinito dei " -"moduli che appaiono nella tua pagina iniziale.

" +"

Titolo sito Questo e' il titolo di questa instanza di " +"CKAN che appare in diversi punti attraverso il CKAN.

" +"

Stile: Scegli dall'elenco una semplice variazioni del " +"colore principali del tema per impostare velocemente un diverso tema.

" +"

Logo: Questo è il logo che appare in alto nella testata " +"di tutti i template di CKAN.

Informazioni: Questo " +"testo comparirà in questa istanza di CKAN pagina " +"informazioni.

Testo presentazione: Questo testo " +"comparirà su questa istanza di CKAN home page " +"per dare il benvenuto ai visitatori.

CSS " +"Personalizzato: Questo e' il blocco di codice di personalizzazione " +"del CSS <head> che compare in ogni pagina. Se vuoi " +"modificare il template più in profondità ti consigliamo di leggere la documentazione.

" +"

Pagina iniziale: Questo è per scegliere il layout " +"predefinito dei moduli che appaiono nella tua pagina iniziale.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2783,14 +2784,13 @@ msgstr "Amministra CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

In qualità di utente amministratore di sistema hai pieno controllo su" -" questa istanza CKAN. Prosegui con attenzione!

Per informazioni e " -"consigli sulle funzionalità per l'amministratore di sistema, consulta la " -"guida CKAN

" +"

In qualità di utente amministratore di sistema hai pieno controllo su " +"questa istanza CKAN. Prosegui con attenzione!

Per informazioni e " +"consigli sulle funzionalità per l'amministratore di sistema, consulta la guida CKAN

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2804,7 +2804,8 @@ msgstr "" #: ckan/templates/dataviewer/snippets/data_preview.html:9 msgid "This resource can not be previewed at the moment." -msgstr "Questa risorsa non può essere visualizzata in anteprima in questo momento." +msgstr "" +"Questa risorsa non può essere visualizzata in anteprima in questo momento." #: ckan/templates/dataviewer/snippets/data_preview.html:11 #: ckan/templates/package/resource_read.html:115 @@ -2955,8 +2956,9 @@ msgstr "Sei sicuro di voler eliminare il membro - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Gestisci" @@ -2988,7 +2990,8 @@ msgstr "Cerca gruppi..." msgid "There are currently no groups for this site" msgstr "Al momento non ci sono gruppi per questo sito" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Come crearne uno?" @@ -3037,21 +3040,25 @@ msgstr "Nuovo utente" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Se desideri invitare un nuovo utente, inserisci il suo indirizzo email." +msgstr "" +"Se desideri invitare un nuovo utente, inserisci il suo indirizzo email." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Ruolo" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Sei sicuro di voler cancellare questo membro?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3072,8 +3079,8 @@ msgstr "Cosa sono i ruoli?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Amministratore: Può modificare le informazioni del " @@ -3149,15 +3156,15 @@ msgstr "Cosa sono i Gruppi?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Puoi usare i gruppi di CKAN per creare e gestire collezioni di dataset, " -"come un catalogo di dataset di un progetto o di un team, su un " -"particolare argomento o semplicemente come un modo semplice per " -"consentire di trovare e cercare i dataset che hai pubblicato." +"Puoi usare i gruppi di CKAN per creare e gestire collezioni di dataset, come" +" un catalogo di dataset di un progetto o di un team, su un particolare " +"argomento o semplicemente come un modo semplice per consentire di trovare e " +"cercare i dataset che hai pubblicato." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3220,14 +3227,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3238,24 +3244,24 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN è la piattaforma leader mondiale per i portali di dati open-" -"source.

CKAN è una soluzione software completa e pronta all'uso " -"che rende accessibili e utilizzabili i dati – fornendo strumenti per " +"source.

CKAN è una soluzione software completa e pronta all'uso che " +"rende accessibili e utilizzabili i dati – fornendo strumenti per " "ottimizzarne la pubblicazione, la ricerca e l'utilizzo (inclusa " -"l'archiviazione dei dati e la disponibilità di solide API). CKAN si " -"rivolge alle organizzazioni che pubblicano dati (governi nazionali e " -"locali, aziende ed istituzioni) e desiderano renderli aperti e " -"accessibili a tutti.

CKAN è usato da governi e gruppi di utenti in" -" tutto il mondo per gestire una vasta serie di portali di dati di enti " -"ufficiali e di comunità, tra cui portali per governi locali, nazionali e " -"internazionali, come data.gov.uk nel " -"Regno Unito e publicdata.eu " -"dell'Unione Europea, dados.gov.br in" -" Brasile, portali di governo dell'Olanda e dei Paesi Bassi, oltre a siti " -"di amministrazione cittadine e municipali negli USA, nel Regno Unito, " -"Argentina, Finlandia e altri paesi.

CKAN: " +"

CKAN è usato da governi e gruppi di utenti in tutto il mondo per gestire " +"una vasta serie di portali di dati di enti ufficiali e di comunità, tra cui " +"portali per governi locali, nazionali e internazionali, come data.gov.uk nel Regno Unito e publicdata.eu dell'Unione Europea, dados.gov.br in Brasile, portali di " +"governo dell'Olanda e dei Paesi Bassi, oltre a siti di amministrazione " +"cittadine e municipali negli USA, nel Regno Unito, Argentina, Finlandia e " +"altri paesi.

CKAN: http://ckan.org/
Tour di CKAN: http://ckan.org/tour/
Panoramica" -" delle funzioni: http://ckan.org/tour/
Panoramica " +"delle funzioni: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3264,11 +3270,11 @@ msgstr "Benvenuto su CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Questo è un bel paragrafo introduttivo su CKAN o il sito in generale. Noi" -" non abbiamo nessun testo d'aggiungere, ma presto lo faremo" +"Questo è un bel paragrafo introduttivo su CKAN o il sito in generale. Noi " +"non abbiamo nessun testo d'aggiungere, ma presto lo faremo" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3313,13 +3319,13 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"Puoi utilizzare la sintassi Markdown qui" +"Puoi utilizzare la sintassi Markdown qui" #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3388,8 +3394,8 @@ msgstr "Bozza" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privato" @@ -3443,15 +3449,15 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Amministratore: può aggiungere/modificare ed " -"eliminare i dataset, oltre a gestire i membri dell'organizzazione.

" -"

Curatore: può aggiungere e modificare i dataset, ma " -"non può gestire i membri dell'organizzazione.

" -"

Membro: può visualizzare i dataset privati " -"dell'organizzazione, ma non può aggiungerne di nuovi.

" +"

Amministratore: può aggiungere/modificare ed eliminare " +"i dataset, oltre a gestire i membri dell'organizzazione.

" +"

Curatore: può aggiungere e modificare i dataset, ma non " +"può gestire i membri dell'organizzazione.

Membro: " +"può visualizzare i dataset privati dell'organizzazione, ma non può " +"aggiungerne di nuovi.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3491,31 +3497,30 @@ msgstr "Cosa sono le organizzazioni?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Le Organizzazioni si comportano come dipartimenti che pubblicano " -"dataset (per esempio, Dipartimento della Salute). Questo significa che i " -"dataset sono pubblicati ed appartengono ad un dipartimento piuttosto che " -"ad un singolo utente.

All'interno di organizzazioni, gli " -"amministratori possono assegnare ruoli ed autorizzare i propri membri, " -"fornendo ai singoli utenti diritti di pubblicazione di dataset per conto " -"di quella particolare organizzazione (e.g. Istituto Nazionale di " -"Statistica).

" +"

Le Organizzazioni si comportano come dipartimenti che pubblicano dataset" +" (per esempio, Dipartimento della Salute). Questo significa che i dataset " +"sono pubblicati ed appartengono ad un dipartimento piuttosto che ad un " +"singolo utente.

All'interno di organizzazioni, gli amministratori " +"possono assegnare ruoli ed autorizzare i propri membri, fornendo ai singoli " +"utenti diritti di pubblicazione di dataset per conto di quella particolare " +"organizzazione (e.g. Istituto Nazionale di Statistica).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Le Organizzazioni di CKAN sono usate per creare, gestire e pubblicare " -"raccolte di dataset. Gli utenti possono avere diverse ruoli all'interno " -"di un'Organizzazione, in relazione al loro livello di autorizzazione nel " +"raccolte di dataset. Gli utenti possono avere diverse ruoli all'interno di " +"un'Organizzazione, in relazione al loro livello di autorizzazione nel " "creare, modificare e pubblicare." #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3532,9 +3537,8 @@ msgstr "Qualche informazioni sulla mia organizzazione..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Sei sicuro che vuoi eliminare questa Organizzazione? Saranno eliminati tutti" " i dataset pubblici e privati associati a questa organizzazione." @@ -3559,14 +3563,13 @@ msgstr "Cosa sono i dataset?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Un dataset di CKAN è una raccolta di risorse dati (come un insieme di " -"file), corredato da una descrizione e altre informazioni, a un indirizzo " -"fisso. I dataset sono quello che gli utenti visualizzano quando cercano " -"dei dati." +"Un dataset di CKAN è una raccolta di risorse dati (come un insieme di file)," +" corredato da una descrizione e altre informazioni, a un indirizzo fisso. I " +"dataset sono quello che gli utenti visualizzano quando cercano dei dati." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3647,15 +3650,15 @@ msgstr "Aggiungi vista" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Le viste di Esploratore Dati possono essere lente ed inefficaci fintanto " -"che l'estensione non è abilitata. Per maggiori informazioni, consulta la " -"documentazione Esploratore Dati. " +"Le viste di Esploratore Dati possono essere lente ed inefficaci fintanto che" +" l'estensione non è abilitata. Per maggiori informazioni, consulta la documentazione " +"Esploratore Dati. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3665,9 +3668,8 @@ msgstr "Aggiungi" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Questa è una revisione precedente del dataset, come modificato in data " "%(timestamp)s. Potrebbe differire in modo significativo dalla This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Questo dataset non possiede dati, perché non aggiungerne?

" @@ -3941,8 +3941,8 @@ msgid "" " License definitions and additional information can be found at opendefinition.org " msgstr "" -"Le definizioni delle licenze e ulteriori informazioni sono disponibili su" -" opendefinition.org" +"Le definizioni delle licenze e ulteriori informazioni sono disponibili su opendefinition.org" #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -3967,17 +3967,16 @@ msgstr "Attivo" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"La licenza sui dati scelta sopra si applica solamente ai contenuti" -" di qualsiasi file di risorsa aggiunto a questo dataset. Inviando questo " -"modulo, acconsenti a rilasciare i valori metadata inseriti " -"attraverso il modulo secondo quanto previsto nella licenza sui dati
scelta sopra si applica solamente ai contenuti di" +" qualsiasi file di risorsa aggiunto a questo dataset. Inviando questo " +"modulo, acconsenti a rilasciare i valori metadata inseriti attraverso" +" il modulo secondo quanto previsto nella Open Database " "License." @@ -4090,8 +4089,7 @@ msgstr "Cosa è una risorsa?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Una risorsa può essere qualsiasi file o link a file che contenga dati " -"utili." +"Una risorsa può essere qualsiasi file o link a file che contenga dati utili." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4118,8 +4116,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Puoi fare copia ed incolla del codice da incorporare in un CMS o " -"programma blog che supporta HTML grezzo" +"Puoi fare copia ed incolla del codice da incorporare in un CMS o programma " +"blog che supporta HTML grezzo" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4180,8 +4178,8 @@ msgstr "Cos'è una vista?" #: ckan/templates/package/snippets/view_help.html:4 msgid "A view is a representation of the data held against a resource" msgstr "" -"Una vista è una rappresentazione dei dati attribuita nei confronti di una" -" risorsa" +"Una vista è una rappresentazione dei dati attribuita nei confronti di una " +"risorsa" #: ckan/templates/revision/diff.html:6 msgid "Differences" @@ -4320,8 +4318,8 @@ msgstr "

Per favore effettua un'altra ricerca.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4468,8 +4466,7 @@ msgstr "Informazioni sull'Account" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "Il tuo profilo racconta qualcosa di te agli altri utenti CKAN." #: ckan/templates/user/edit_user_form.html:7 @@ -4693,11 +4690,11 @@ msgstr "Richiedi azzeramento" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Inserisci il tuo username e ti manderemo una e-mail con un link per " -"inserire la nuova password." +"Inserisci il tuo username e ti manderemo una e-mail con un link per inserire" +" la nuova password." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4723,4 +4720,3 @@ msgstr "Cerca Utenti" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/ja/LC_MESSAGES/ckan.po b/ckan/i18n/ja/LC_MESSAGES/ckan.po index 95695a3a484..4b7a3d25e8f 100644 --- a/ckan/i18n/ja/LC_MESSAGES/ckan.po +++ b/ckan/i18n/ja/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Japanese translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Azusa Akiyama , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,13 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Azusa Akiyama , 2018\n" -"Language: ja\n" "Language-Team: Japanese (https://www.transifex.com/okfn/teams/11162/ja/)\n" -"Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +117,14 @@ msgstr "データストアリソースが見つかりません" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "データディクショナリを保存しました。再定義したタイプは、リソースが次回データストアにアップロードされたときに有効になります。" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "不正なデータです (例: 数値が範囲外かテキストフィールドに入力された)" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +149,7 @@ msgstr "パワフルなクエリサポートがあるweb APIを通してリソ msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "より詳しい情報は main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " より詳しい情報は Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

サイトタイトル: このCKANインスタンスのタイトルで、CKANの様々な場所で表示されます。

" "

スタイル: 手短にテーマのカスタマイズをするために、主な配色の種類のリストから選択して下さい。

" @@ -2846,13 +2844,11 @@ msgstr "CKAN 管理者" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

一人のsysadmin ユーザとして、あなたはこのCKANインスタンスに対する完全な権限を持っています。注意して作業してください!

\n" -"

sysadmin機能の利用についての説明は、CKANsysadminガイドを参照してください。

" +"

sysadmin機能の利用についての説明は、CKANsysadminガイドを参照してください。

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3015,8 +3011,9 @@ msgstr "メンバー - {name} を削除してもよろしいですか?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "管理" @@ -3048,7 +3045,8 @@ msgstr "グループを検索..." msgid "There are currently no groups for this site" msgstr "このサイトに所属しているグループがありません" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "作成方法" @@ -3097,19 +3095,22 @@ msgstr "新規ユーザ" msgid "If you wish to invite a new user, enter their email address." msgstr "もし新規ユーザを招待したい場合は、そのメールアドレスを入力して下さい。" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "ロール" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "このメンバーを削除してよろしいですか?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3130,8 +3131,8 @@ msgstr "ロールとは?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

管理者: グループ情報の編集や組織のメンバーの管理が可能です。

" @@ -3205,11 +3206,12 @@ msgstr "グループ機能とは" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " -msgstr "あなたはデータセットの集合を作成・管理するためにCKANグループを使うことができます。これは特定のプロジェクトやチームあるいは特定のテーマのためのデータセットのカタログに成り得ますし、人々があなたの所有する公開データセットを発見し,検索するのを助ける簡単な方法として使えます。" +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " +msgstr "" +"あなたはデータセットの集合を作成・管理するためにCKANグループを使うことができます。これは特定のプロジェクトやチームあるいは特定のテーマのためのデータセットのカタログに成り得ますし、人々があなたの所有する公開データセットを発見し,検索するのを助ける簡単な方法として使えます。" #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3272,14 +3274,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3303,8 +3304,8 @@ msgstr "CKANへようこそ" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "これはCKANあるいはサイト全般についての良い紹介文です。我々はまだここへ行くためのコピーがありませんが、すぐに行くでしょう。" #: ckan/templates/home/snippets/promoted.html:19 @@ -3354,8 +3355,8 @@ msgstr "サイトロゴ" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "ここではAdmin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

管理者: " "データセットの追加/削除や組織メンバーの管理が可能です。

編集者:データセットの追加や編集が可能ですが、組織メンバーの管理はできません。

メンバー:" @@ -3528,12 +3529,12 @@ msgstr "組織について" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

組織はデータセットを公開する部門のように振る舞います(例: " "保健省)。データセットが個々のユーザではなく、部門が所有して、部門によって公開されるということになります。

組織内では、管理者はメンバーに役割や権限を割り当てることができます。例えば個々のユーザに特定の組織" @@ -3541,10 +3542,11 @@ msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " -msgstr "CKANの組織は、データセットの集合を作成・管理・公開するために使われます。作成・編集・公開の権限レベルに応じて、ユーザは組織内で異なる役割を持てます。" +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " +msgstr "" +"CKANの組織は、データセットの集合を作成・管理・公開するために使われます。作成・編集・公開の権限レベルに応じて、ユーザは組織内で異なる役割を持てます。" #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3560,9 +3562,8 @@ msgstr "私の組織についての簡単な情報" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "この組織を削除しても良いですか? Note:この組織がパブリックとプライベートのデータセットを持つ間は削除はできません。" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3585,9 +3586,9 @@ msgstr "データセットとは?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "CKANのデータセットはデータリソース (例: ファイル) " "の集合です。データリソースはその説明とその他の情報と固定のURLを持ちます。データセットはユーザがデータを検索するときに目にするものです。" @@ -3671,14 +3672,13 @@ msgstr "ビューを追加" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" "データストア拡張が有効でない場合、データ探索ビューは遅くて信頼性がないかもしれません。より詳しい情報はデータ探索の文書 " -"を参照してください。" +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>データ探索の文書 を参照してください。" #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3688,9 +3688,8 @@ msgstr "追加" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "これはこのデータセットの古いリビジョンです。%(timestamp)sに編集されました。現在のリビジョンとはかなり異なるかもしれません。" @@ -3762,10 +3761,11 @@ msgstr "サイト管理者が関連ビューのプラグインを有効にして #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" -msgstr "ビューがデータストアを要求するなら、データストアプラグインが有効でないか、データがデータストアに入っていないか、データストアによるデータ処理がまだ終わっていないかもしれません" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" +msgstr "" +"ビューがデータストアを要求するなら、データストアプラグインが有効でないか、データがデータストアに入っていないか、データストアによるデータ処理がまだ終わっていないかもしれません" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3832,8 +3832,8 @@ msgstr "新しいリソースの追加" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

このデータセットにはデータがありませんので、 データを追加しましょう

" @@ -3979,12 +3979,11 @@ msgstr "アクティブ" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "データライセンス " "あなたが上で選択したライセンスは、あなたがこのデータセットに追加するリソースファイルの内容に対してのみ適用されます。このフォームで投稿することで、あなたはフォームに入力しているメタデータの値を他の検索を試してください。

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "

検索でエラーが発生しました。もう一度試してください。

" #: ckan/templates/snippets/search_result_text.html:15 @@ -4470,8 +4469,7 @@ msgstr "アカウント情報" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "プロフィールによって、他のCKANユーザにあなたが何者で、何をしているのかを知らせることができます" #: ckan/templates/user/edit_user_form.html:7 @@ -4699,8 +4697,8 @@ msgstr "初期化を申請" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "ユーザ名をそのボックスに入力すれば、新しいパスワードを入力するためのリンクをメールで送ります。" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4727,4 +4725,3 @@ msgstr "ユーザを検索" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "パスワードは8文字以上でなければいけません。" - diff --git a/ckan/i18n/km/LC_MESSAGES/ckan.po b/ckan/i18n/km/LC_MESSAGES/ckan.po index f61a8084f06..5c1d13c9bf3 100644 --- a/ckan/i18n/km/LC_MESSAGES/ckan.po +++ b/ckan/i18n/km/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Khmer translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,13 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: km\n" "Language-Team: Khmer (https://www.transifex.com/okfn/teams/11162/km/)\n" -"Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -115,14 +116,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -147,8 +148,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -157,8 +157,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -267,8 +267,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -1042,7 +1041,8 @@ msgstr "" #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." -msgstr "%s ប្រើអ៊ីម៉ែលរបស់អ្នកប្រសិនបើអ្នកត្រូវការកំណត់ពាក្យសម្ងាត់របស់អ្នកឡើងវិញ។" +msgstr "" +"%s ប្រើអ៊ីម៉ែលរបស់អ្នកប្រសិនបើអ្នកត្រូវការកំណត់ពាក្យសម្ងាត់របស់អ្នកឡើងវិញ។" #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1263,8 +1263,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"អ្នកប្រើ \"%s\" ឥឡូវនេះបានចុះឈ្មោះហើយ ប៉ុន្តែអ្នកនៅតែត្រូវបានកត់ត្រាចូលជា" -" \"%s\" ពីមុនមក" +"អ្នកប្រើ \"%s\" ឥឡូវនេះបានចុះឈ្មោះហើយ ប៉ុន្តែអ្នកនៅតែត្រូវបានកត់ត្រាចូលជា " +"\"%s\" ពីមុនមក" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1763,8 +1763,8 @@ msgstr "" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2518,8 +2518,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2693,22 +2693,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2724,9 +2723,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2890,8 +2888,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -2923,7 +2922,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -2972,19 +2972,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "តួនាទី" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3005,8 +3008,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3078,10 +3081,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3145,14 +3148,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3169,8 +3171,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3216,8 +3218,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3288,8 +3290,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3343,8 +3345,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3384,19 +3386,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3413,9 +3415,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3438,9 +3439,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3522,9 +3523,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3535,9 +3536,8 @@ msgstr "បន្ថែម" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3607,9 +3607,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3677,8 +3677,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3818,12 +3818,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4159,8 +4158,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4301,8 +4300,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4483,7 +4481,8 @@ msgstr "" #: ckan/templates/user/perform_reset.html:40 msgid "Simply enter a new password and we'll update your account" -msgstr "គ្រាន់តែបញ្ចូលពាក្យសម្ងាត់ថ្មី ហើយយើងនឹងធ្វើបច្ចុប្បន្នភាពគណនីរបស់អ្នក" +msgstr "" +"គ្រាន់តែបញ្ចូលពាក្យសម្ងាត់ថ្មី ហើយយើងនឹងធ្វើបច្ចុប្បន្នភាពគណនីរបស់អ្នក" #: ckan/templates/user/read.html:21 msgid "User hasn't created any datasets." @@ -4528,12 +4527,11 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"សូមបញ្ចូលឈ្មោះអ្នកប្រើរបស់អ្នកចូលទៅក្នុងប្រអប់នេះ " -"ហើយយើងនឹងផ្ញើកអ៊ីមែលទៅអ្នក " -"ដោយុមានតំណភ្ជាប់ដើម្បីបញ្ចូលពាក្យសម្ងាត់ជាថ្មី។" +"សូមបញ្ចូលឈ្មោះអ្នកប្រើរបស់អ្នកចូលទៅក្នុងប្រអប់នេះ ហើយយើងនឹងផ្ញើកអ៊ីមែលទៅអ្នក" +" ដោយុមានតំណភ្ជាប់ដើម្បីបញ្ចូលពាក្យសម្ងាត់ជាថ្មី។" #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4559,4 +4557,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/ko_KR/LC_MESSAGES/ckan.po b/ckan/i18n/ko_KR/LC_MESSAGES/ckan.po index 24ebae3ddae..c2f0bd6bfc6 100644 --- a/ckan/i18n/ko_KR/LC_MESSAGES/ckan.po +++ b/ckan/i18n/ko_KR/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Korean (South Korea) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: ko_KR\n" -"Language-Team: Korean (Korea) " -"(https://www.transifex.com/okfn/teams/11162/ko_KR/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Korean (Korea) (https://www.transifex.com/okfn/teams/11162/ko_KR/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: ko_KR\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "데이터스토어 리소스를 찾을 수 없음" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "데이터가 유효하지 않습니다 (예를 들어, 수치값이 범위를 벗어나거나 텍스트 필드에 입력되었습니다). " #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "강력한 질의 지원을 하는 웹 API를 통해 리소스 데이터 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "핵심 CKAN 데이터 API와 데이터스토어 문서 참고.

" @@ -160,8 +159,8 @@ msgstr "엔드포인트" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "데이터 API는 CKAN 액션 API의 다음 액션들을 통해 접근할 수 있습니다." #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -270,11 +269,9 @@ msgstr "데이터 API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" -"핵심 CKAN 데이터 API와 데이터스토어 문서 참고.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -1763,8 +1760,8 @@ msgstr "이름은 최대 %i 글자입니다" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "완전한 소문자 알파벳 (ascii) 문자와 기호입니다: -_" #: ckan/logic/validators.py:361 @@ -2518,8 +2515,8 @@ msgstr "파일을 업로드하기 위한 데이터를 가져올 수 없음" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "파일을 업로드중입니다. 탐색을 위해 업로드를 중지하겠습니까?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2695,34 +2692,33 @@ msgstr "CKAN 구성 옵션" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

사이트명: CKAN 인스턴스의 이름으로 다양한 곳에서 보여집니다.

" -"

스타일: Choose from a list of simple variations of the " -"main colour scheme to get a very quick custom theme working.

" -"

사이트 태그 로고: CKAN 인스턴스 템플릿의 헤더에 보여지는 로고입니다.

" -"

About: 이 텍스트는 CKAN 인스턴스의 about page에 보여집니다.

Intro " -"Text: 이 텍스트는 방문자를 환영하는 의미로 CKAN 인스턴스의 home page에 보여집니다.

Custom " -"CSS: 모든 페이지의 <head>태그에 보여지는 CSS 블록입니다. 템플릿을 " -"수정하려면 문서를 읽는 것을 추천합니다.

" -"

Homepage:홈페이지에 보여줄 모듈의 미리 정의된 레이아웃을 선택합니다.

" +"

스타일: Choose from a list of simple variations of the main" +" colour scheme to get a very quick custom theme working.

사이트 " +"태그 로고: CKAN 인스턴스 템플릿의 헤더에 보여지는 로고입니다.

" +"

About: 이 텍스트는 CKAN 인스턴스의 about" +" page에 보여집니다.

Intro Text: 이 텍스트는 방문자를 환영하는 의미로 " +"CKAN 인스턴스의 home page에 보여집니다.

" +"

Custom CSS: 모든 페이지의 <head>태그에 보여지는 " +"CSS 블록입니다. 템플릿을 수정하려면 문서를 읽는 것을 " +"추천합니다.

Homepage:홈페이지에 보여줄 모듈의 미리 정의된 레이아웃을 " +"선택합니다.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2737,13 +2733,12 @@ msgstr "CKAN 관리" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

sysadmin 사용자로써 CKAN 인스턴스에 대한 모든 권한을 갖고 있습니다. 주의를 갖고 처리하세요!

For" -" guidance on using sysadmin 특징을 사용하기 위한 방법은 CKAN sysadmin guide을 참조하세

" +"

sysadmin 사용자로써 CKAN 인스턴스에 대한 모든 권한을 갖고 있습니다. 주의를 갖고 처리하세요!

For " +"guidance on using sysadmin 특징을 사용하기 위한 방법은 CKAN sysadmin guide을 참조하세

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2906,8 +2901,9 @@ msgstr "멤버의 삭제를 원합니까 - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "관리하기" @@ -2939,7 +2935,8 @@ msgstr "그룹 검색" msgid "There are currently no groups for this site" msgstr "현재 이 사이트에 그룹이 없습니다." -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "하나를 생성하겠습니까?" @@ -2988,19 +2985,22 @@ msgstr "신규 사용자" msgid "If you wish to invite a new user, enter their email address." msgstr "신규 사용자를 초대하려면, 이메일 주소를 입력하세요." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "역할" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "이 멤버의 삭제를 원합니까?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3021,8 +3021,8 @@ msgstr "역할이란?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Admin: 그룹 정보를 편집할 수 있고 기관 멤버를 관리할 수 있습니다.

" @@ -3096,13 +3096,13 @@ msgstr "그룹이란?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"데이터셋의 집합을 생성하고 관리하기 위해 CKAN 그룹을 사용할 수 있습니다. 그룹은 특정한 프로젝트 또는 팀을 위한 카탈로그 " -"데이터셋일 수 있고, 또는 특정한 주제입니다. 그룹을 통해 다른 사용자들은 출판된 데이터셋을 찾거나 검색할 수 있습니다. " +"데이터셋의 집합을 생성하고 관리하기 위해 CKAN 그룹을 사용할 수 있습니다. 그룹은 특정한 프로젝트 또는 팀을 위한 카탈로그 데이터셋일" +" 수 있고, 또는 특정한 주제입니다. 그룹을 통해 다른 사용자들은 출판된 데이터셋을 찾거나 검색할 수 있습니다. " #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3165,14 +3165,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3182,16 +3181,15 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN is the world’s leading open-source data portal platform.

" -"

CKAN is a complete out-of-the-box software solution that makes data " -"accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s CKAN is the world’s leading open-source data portal platform.

CKAN" +" is a complete out-of-the-box software solution that makes data accessible " +"and usable – by providing tools to streamline publishing, sharing, finding " +"and using data (including storage of data and provision of robust data " +"APIs). CKAN is aimed at data publishers (national and regional governments, " +"companies and organizations) wanting to make their data open and " +"available.

CKAN is used by governments and user groups worldwide and " +"powers a variety of official and community data portals including portals " +"for local, national and international government, such as the UK’s data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " @@ -3208,8 +3206,8 @@ msgstr "CKAN에 오신 것을 환영합니다" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "CKAN이나 사이트에 대해 서문입니다. " #: ckan/templates/home/snippets/promoted.html:19 @@ -3255,8 +3253,8 @@ msgstr "사이트 로고" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

관리자: 데이터셋을 추가/삭제/삭제할 수 있고, 조직 멤버를 관리할 수 있습니다.

" "

편집자: 데이터셋을 추가/편집할 수 있지만, 조직 멤버를 관리하지 못합니다.

" @@ -3429,26 +3427,26 @@ msgstr "조직이란?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

기관은 데이터셋을 출판하는 부서와 유사합니다 (예. the Department of Health). 데이터셋은 개인 사용자가" -" 아닌 부서에 의해 출판되거나 소유되는 것을 의미합니다.

기관 내에서 어드민은 멤버들에게 역할과 권한을 부여할 수 " -"있습니다. 멤버는 특정 기관으로부터 데이터셋 출판을 위한 권리를 부여받은 개인사용자입니다 (e.g. Office of " -"National Statistics).

" +"

기관은 데이터셋을 출판하는 부서와 유사합니다 (예. the Department of Health). 데이터셋은 개인 사용자가 아닌" +" 부서에 의해 출판되거나 소유되는 것을 의미합니다.

기관 내에서 어드민은 멤버들에게 역할과 권한을 부여할 수 있습니다. " +"멤버는 특정 기관으로부터 데이터셋 출판을 위한 권리를 부여받은 개인사용자입니다 (e.g. Office of National " +"Statistics).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN 기관은 데이터셋의 집합을 생성, 관리, 출판하는데 사용됩니다. 사용자는 기관내에서 서로 다른 역할을 갖을 수 있으며, " -"권한의 등급에 따라 생성, 편집, 출판이 다릅니다." +"CKAN 기관은 데이터셋의 집합을 생성, 관리, 출판하는데 사용됩니다. 사용자는 기관내에서 서로 다른 역할을 갖을 수 있으며, 권한의 " +"등급에 따라 생성, 편집, 출판이 다릅니다." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3464,9 +3462,8 @@ msgstr "내 조직에 대한 일부 정보..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3489,9 +3486,9 @@ msgstr "데이터셋이란?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "CKAN 데이터셋은 리소스에 대한 설명과 추가적인 정보를 갖고 있는 리소스의 집합으로, 고정된 URL을 갖고 있습니다. 데이터셋은 " "데이터를 탐색할 때 사용자가 보는 결과입니다." @@ -3575,14 +3572,14 @@ msgstr "뷰 추가하기" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"데이터스토어 확장판이 활성화되지 않으면, 데이터 탐색기 뷰는 느리거나 신뢰하지 못할 수 있습니다. 추가적인 정보는 다음을 참조하세요" -" Data Explorer" -" documentation. " +"데이터스토어 확장판이 활성화되지 않으면, 데이터 탐색기 뷰는 느리거나 신뢰하지 못할 수 있습니다. 추가적인 정보는 다음을 참조하세요 Data Explorer " +"documentation. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3592,12 +3589,11 @@ msgstr "추가하기" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"%(timestamp)s에 편집된 데이터의 이전 버전입니다. 현재 버전과 차이가 있을 " -"수 있습니다." +"%(timestamp)s에 편집된 데이터의 이전 버전입니다. 현재 버전과 차이가 있을 수 " +"있습니다." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3666,9 +3662,9 @@ msgstr "사이트 관리자가 관련 있는 뷰 플러그인을 활성화하지 #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "뷰가 데이터스토어를 필요할 경우, 데이터스토어 플러그인을 활성화되지 않을 수 있거나, 데이터가 데이터 스토어에 저정되지 않을 수 " "있습니다. 또는 데이터 스토어는 데이터를 처리하는 것을 완료하지 않은 상태일 수 있습니다." @@ -3738,11 +3734,9 @@ msgstr "새로운 리소스 추가" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" -msgstr "" -"

이 데이터셋에 데이터가 없습니다, 추가해 " -"보세요?

" +"

This dataset has no data, why not " +"add some?

" +msgstr "

이 데이터셋에 데이터가 없습니다, 추가해 보세요?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3860,8 +3854,8 @@ msgid "" "href=\"http://opendefinition.org/licenses/\">opendefinition.org " msgstr "" "라이센스 정의와 추가적인 정보는 opendefinition.org에서 찾을 " -"수 있습니다" +"href=\"http://opendefinition.org/licenses/\">opendefinition.org에서 찾을 수 " +"있습니다" #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -3886,15 +3880,14 @@ msgstr "Active" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"선택한 data license는 이 데이터셋에 추가하는 리소스 파일의 컨텐트에만 적용됩니다. 이 양식을 제출하면, " -"Open Database " +"선택한 data license는 이 데이터셋에 추가하는 리소스 파일의 컨텐트에만 적용됩니다. 이 양식을 제출하면, Open Database " "License에 따라 metadata 값을 배포하는데 동의하는 것입니다. " #: ckan/templates/package/snippets/package_form.html:39 @@ -4230,8 +4223,8 @@ msgstr "

다른 검색을 시도하세요.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "

검색 중 오류가 발생했습니다. 다시 시도해주세요.

" #: ckan/templates/snippets/search_result_text.html:15 @@ -4372,8 +4365,7 @@ msgstr "계정 정보" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "프로파일을 CKAN 사용자가 볼 수 있도록 해 주세요" #: ckan/templates/user/edit_user_form.html:7 @@ -4597,8 +4589,8 @@ msgstr "요청 초기화" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "텍스트박스에 사용자 이름을 넣으면 새로운 비밀번호를 입력하기 위한 링크를 이메일로 보내드립니다" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4625,4 +4617,3 @@ msgstr "사용자 검색하기" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/lt/LC_MESSAGES/ckan.po b/ckan/i18n/lt/LC_MESSAGES/ckan.po index 0ba4e9e425f..d64afd6751a 100644 --- a/ckan/i18n/lt/LC_MESSAGES/ckan.po +++ b/ckan/i18n/lt/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Lithuanian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,16 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: lt\n" -"Language-Team: Lithuanian " -"(https://www.transifex.com/okfn/teams/11162/lt/)\n" -"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100" -" < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < " -"11) ? 1 : n % 1 != 0 ? 2: 3)\n" +"Language-Team: Lithuanian (https://www.transifex.com/okfn/teams/11162/lt/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: lt\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -118,14 +116,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -150,8 +148,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -160,8 +157,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -270,8 +267,7 @@ msgstr "Duomenų API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -846,7 +842,8 @@ msgstr "Negzistuoja poversijis, kurio id: %s" #: ckan/controllers/api.py:514 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" -msgstr "Trūkstamas paieškos termas ('since_id=UUID' arba 'since_time=TIMESTAMP')" +msgstr "" +"Trūkstamas paieškos termas ('since_id=UUID' arba 'since_time=TIMESTAMP')" #: ckan/controllers/api.py:526 #, python-format @@ -1269,8 +1266,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Naudotojas \"%s\" jau yra priregistruotas, bet Jūs vis dar esate " -"prisijungę kaip \"%s\" iš anksčiau" +"Naudotojas \"%s\" jau yra priregistruotas, bet Jūs vis dar esate prisijungę " +"kaip \"%s\" iš anksčiau" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1793,8 +1790,8 @@ msgstr "Vardas turi būti daugiausiai %i simbolių ilgio" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1838,9 +1835,7 @@ msgstr "Gairės \"%s\" ilgis yra didesnis nei maksimalus %i" #: ckan/logic/validators.py:428 #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." -msgstr "" -"Gairė \"%s\" turi būti sudaryta iš raidinių-skaitinių arba \"-_\" " -"simbolių." +msgstr "Gairė \"%s\" turi būti sudaryta iš raidinių-skaitinių arba \"-_\" simbolių." #: ckan/logic/validators.py:436 #, python-format @@ -1876,8 +1871,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Redagavimas neleidžiamas, nes panašus į brukalą. Prašome vengti nuorodų " -"savo aprašyme." +"Redagavimas neleidžiamas, nes panašus į brukalą. Prašome vengti nuorodų savo" +" aprašyme." #: ckan/logic/validators.py:620 #, python-format @@ -2555,8 +2550,8 @@ msgstr "Nepavyko gauti duomenų iš įkelto failo" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2840,22 +2835,21 @@ msgstr "CKAN konfigūracijos parinktys" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2871,9 +2865,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -3039,8 +3032,9 @@ msgstr "Ar tikrai norite ištrinti narį - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -3072,7 +3066,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "Grupių šiam tinklapiui kol kas nėra" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Gal sukurkite vieną?" @@ -3121,19 +3116,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Vaidmuo" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Ar tikrai norite ištrinti šį narį?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3154,8 +3152,8 @@ msgstr "Kas yra vaidmenys?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3227,10 +3225,10 @@ msgstr "Kas yra grupės?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3294,14 +3292,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3311,25 +3308,24 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN yra pasaulyje pirmaujanti atviro-kodo duomenų portalo " -"platforma.

CKAN yra visiškai paruoštas darbui programinės įrangos " -"sprendimas, kuris padaro duomenis pasiekiamus ir panaudojamus, " -"suteikdamas įrankius srautiniam publikavimui, dalinimuisi, paieškai ir " -"duomenų naudojimui (įskaitant duomenų talpinimą ir stabilaus duomenų API " -"suteikimą). CKAN taikinys yra duomenų publikuotojai (nacionalinės ir " -"regioninės valdžios, kompanijos ir organizacijos), norinčios atverti ir " -"padaryti prieinamais savo duomenis.

CKAN naudoja valdžios ir " -"naudotojų grupės pasaulio mastu ir palaiko įvairovę oficialių ir " -"bendruomeninių duomenų portalų, įskaitant portalus, skirtus vietinei, " -"nacionalinei ar tarptautinei valdžiai, tokiai kaip UK data.gov.uk ir Europos sąjungos publicdata.eu, Brazilijos CKAN yra pasaulyje pirmaujanti atviro-kodo duomenų portalo platforma.

" +"

CKAN yra visiškai paruoštas darbui programinės įrangos sprendimas, kuris" +" padaro duomenis pasiekiamus ir panaudojamus, suteikdamas įrankius " +"srautiniam publikavimui, dalinimuisi, paieškai ir duomenų naudojimui " +"(įskaitant duomenų talpinimą ir stabilaus duomenų API suteikimą). CKAN " +"taikinys yra duomenų publikuotojai (nacionalinės ir regioninės valdžios, " +"kompanijos ir organizacijos), norinčios atverti ir padaryti prieinamais savo" +" duomenis.

CKAN naudoja valdžios ir naudotojų grupės pasaulio mastu " +"ir palaiko įvairovę oficialių ir bendruomeninių duomenų portalų, įskaitant " +"portalus, skirtus vietinei, nacionalinei ar tarptautinei valdžiai, tokiai " +"kaip UK data.gov.uk ir Europos sąjungos " +"publicdata.eu, Brazilijos dados.gov.br, Olandijos ir Nyderlandų " -"valdžių portalams, taip pat ir miestų bei savivaldybių tinklapiams US, " -"UK, Argentinoje, Suomijoje ir kitur.

CKAN:

CKAN: http://ckan.org/
CKAN gidas: http://ckan.org/tour/
" -"Funkcionalumo apžvalga: http://ckan.org/tour/
Funkcionalumo" +" apžvalga: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3338,11 +3334,11 @@ msgstr "Sveiki atvykę į CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Tai graži įžanginė pastraipa apie CKAN ar apskritai šį tinklapį. Mes kol " -"kas neturime jokios kopijos, kad patektumėme čia, bet greitai turėsime" +"Tai graži įžanginė pastraipa apie CKAN ar apskritai šį tinklapį. Mes kol kas" +" neturime jokios kopijos, kad patektumėme čia, bet greitai turėsime" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3387,8 +3383,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3459,8 +3455,8 @@ msgstr "Eskizas" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privatus" @@ -3514,15 +3510,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Administratorius: Gali pridėti/redaguoti ir trinti " "rinkmenas, taip pat valdyti organizacijos narius.

" -"

Redaguotojas: Gali pridėti ir redaguoti rinkmenas, " -"bet ne valdyti organizacijos narius.

Narys: Gali " -"matyti organizacijos privačias rinkmenas, bet ne pridėti naujas " -"rinkmenas.

" +"

Redaguotojas: Gali pridėti ir redaguoti rinkmenas, bet " +"ne valdyti organizacijos narius.

Narys: Gali matyti " +"organizacijos privačias rinkmenas, bet ne pridėti naujas rinkmenas.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3564,19 +3559,19 @@ msgstr "Kas yra organizacijos?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3593,9 +3588,8 @@ msgstr "Truputis informacijos apie mano organizaciją..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3618,9 +3612,9 @@ msgstr "Kas yra rinkmena?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3702,9 +3696,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3715,12 +3709,11 @@ msgstr "Pridėti" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Tai senas rinkmenos poversijis, redaguojant %(timestamp)s. Jis gali " -"stipriai skirtis nuo naujausio poversijo." +"Tai senas rinkmenos poversijis, redaguojant %(timestamp)s. Jis gali stipriai" +" skirtis nuo naujausio poversijo." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3789,9 +3782,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3859,8 +3852,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3881,8 +3874,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -"Šį registrą taip pat galite pasiekti naudodamiesi %(api_link)s (žiūrėkite" -" %(api_doc_link)s) arba parsisiųskite %(dump_link)s." +"Šį registrą taip pat galite pasiekti naudodamiesi %(api_link)s (žiūrėkite " +"%(api_doc_link)s) arba parsisiųskite %(dump_link)s." #: ckan/templates/package/search.html:60 #, python-format @@ -3890,8 +3883,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " msgstr "" -"Šį registrą taip pat galite pasiekti pasinaudodami %(api_link)s " -"(žiūrėkite %(api_doc_link)s)." +"Šį registrą taip pat galite pasiekti pasinaudodami %(api_link)s (žiūrėkite " +"%(api_doc_link)s)." #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -4006,12 +3999,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4349,8 +4341,8 @@ msgstr "

Prašome pabandyti kitą paiešką.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4509,8 +4501,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4734,8 +4725,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4762,4 +4753,3 @@ msgstr "Ieškoti naudotojų" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/lv/LC_MESSAGES/ckan.po b/ckan/i18n/lv/LC_MESSAGES/ckan.po index cf7b088173f..384f7b94beb 100644 --- a/ckan/i18n/lv/LC_MESSAGES/ckan.po +++ b/ckan/i18n/lv/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Latvian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: lv\n" "Language-Team: Latvian (https://www.transifex.com/okfn/teams/11162/lv/)\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :" -" 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +116,17 @@ msgstr "Datu glabātuves resurss nav atrasts" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Dati bija nederīgi (piemēram: skaitliska vērtība ir ārpus diapazona vai " -"tika ievietots teksta laukā)." +"Dati bija nederīgi (piemēram: skaitliska vērtība ir ārpus diapazona vai tika" +" ievietots teksta laukā)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -145,15 +145,13 @@ msgstr "CKAN datu API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" msgstr "" -"Piekļut resursu datiem izmantojot tīmekļa API ar spēcīgu vaicājumu " -"atbalstu" +"Piekļut resursu datiem izmantojot tīmekļa API ar spēcīgu vaicājumu atbalstu" #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Sīkāka informācija main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Sīkāka informācija galvenā CKAN datu API un DataStore dokumentācija " -".

" +"target=\"_blank\"> galvenā CKAN datu API un DataStore dokumentācija ." #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -855,7 +852,8 @@ msgstr "Nav izmaiņu ar šādu identifikatoru: %s" #: ckan/controllers/api.py:514 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')" -msgstr "Trūkst meklēšanas termins ('since_id=UUID' vai 'since_time=TIMESTAMP')" +msgstr "" +"Trūkst meklēšanas termins ('since_id=UUID' vai 'since_time=TIMESTAMP')" #: ckan/controllers/api.py:526 #, python-format @@ -1278,8 +1276,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Lietotājs \"%s\" ir reģistrēts, bet joprojām lietotājs pieteicies sistēmā" -" ar iepriekšējo lietotāju \"%s\"" +"Lietotājs \"%s\" ir reģistrēts, bet joprojām lietotājs pieteicies sistēmā ar" +" iepriekšējo lietotāju \"%s\"" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1794,9 +1792,10 @@ msgstr "Nosaukumam jābūt maksimāli %i simbolus garam" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" -msgstr "Jābūt tikai mazo burtu un ciparu (ASCII) simboliem un šādiem simboliem: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" +msgstr "" +"Jābūt tikai mazo burtu un ciparu (ASCII) simboliem un šādiem simboliem: -_" #: ckan/logic/validators.py:361 msgid "That URL is already in use." @@ -1875,8 +1874,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Rediģēšana nav atļauta, jo tas izskatās pēc suragātteksta. Izvairieties " -"no saitēm jūsu aprakstā." +"Rediģēšana nav atļauta, jo tas izskatās pēc suragātteksta. Izvairieties no " +"saitēm jūsu aprakstā." #: ckan/logic/validators.py:620 #, python-format @@ -1976,8 +1975,7 @@ msgstr "Mēģina izveidot organizāciju kā kategoriju" #: ckan/logic/action/create.py:893 msgid "You must supply a package id or name (parameter \"package\")." msgstr "" -"Jums ir jānorāda paketes identifikators vai nosaukums (rādītājs " -"\"pakete\")." +"Jums ir jānorāda paketes identifikators vai nosaukums (rādītājs \"pakete\")." #: ckan/logic/action/create.py:896 msgid "You must supply a rating (parameter \"rating\")." @@ -2117,7 +2115,8 @@ msgstr "Lietotājam %s nav tiesības lai rediģētu šīs kategorijas" #: ckan/logic/auth/create.py:38 #, python-format msgid "User %s not authorized to add dataset to this organization" -msgstr "Lietotājam %s nav tiesību, lai pievienotu datu kopas šai organizācijai" +msgstr "" +"Lietotājam %s nav tiesību, lai pievienotu datu kopas šai organizācijai" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." @@ -2555,11 +2554,11 @@ msgstr "Nevar iegūt datus par augšupielādēto failu" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Jūs augšupielādējat failu. Vai tiešām vēlaties doties prom, un apturēt šo" -" augšupielādi?" +"Jūs augšupielādējat failu. Vai tiešām vēlaties doties prom, un apturēt šo " +"augšupielādi?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2736,35 +2735,34 @@ msgstr "CKAN iestatījumu iespējas" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Lapas virsraksts: Šis CKAN instances nosaukums " -"parādās vairākās vietās CKAN risinājumā.

Stils: " -"Izvēlieties no saraksta dažādu krāsu tēmas, lai ātri un vienkārši iegūtu " -"pielāgotu tēmu.

Site Tag Logo: Šis ir logo, kas " -"parādās CKAN instances galvenē.

Par: Teksts, kas " -"parādīsies CKAN instances ”Par” lapā.

" -"

Ievadteksts: Teksts, kas parādīsies CKAN instances sākumlapā kā sveiciens lapas " -"apmeklētājiem.

Pielāgots CSS: Šis ir CSS bloks, " -"kas parādīsies <head> tagā katrā lapā. Ja jūs vēlaties" -" plašāku risinājuma izskata pielāgojumu mēs rekomendējam lasīt " -"dokumentāciju .

" +"

Lapas virsraksts: Šis CKAN instances nosaukums parādās " +"vairākās vietās CKAN risinājumā.

Stils: Izvēlieties " +"no saraksta dažādu krāsu tēmas, lai ātri un vienkārši iegūtu pielāgotu " +"tēmu.

Site Tag Logo: Šis ir logo, kas parādās CKAN " +"instances galvenē.

Par: Teksts, kas parādīsies CKAN " +"instances ”Par” lapā.

" +"

Ievadteksts: Teksts, kas parādīsies CKAN instances sākumlapā kā sveiciens lapas apmeklētājiem.

" +"

Pielāgots CSS: Šis ir CSS bloks, kas parādīsies " +"<head> tagā katrā lapā. Ja jūs vēlaties plašāku " +"risinājuma izskata pielāgojumu mēs rekomendējam lasīt dokumentāciju .

" "

Sākumlapa: Paredzēts, lai veiktu sākumlapas " "iepriekšdefinēto moduļu izkārtojumu sākumlapā.

" @@ -2781,12 +2779,11 @@ msgstr "Administrēt CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Kā sistēmas administratora lietotājam, Jums ir pilnīga kontrole pār šo" -" CKAN instanci. Rīkojieties uzmanīgi!

Lai skaidrotu izmantojamās " +"

Kā sistēmas administratora lietotājam, Jums ir pilnīga kontrole pār šo " +"CKAN instanci. Rīkojieties uzmanīgi!

Lai skaidrotu izmantojamās " "sistēmas administratora iespējas, lasiet CKAN sistēmas administratora rokasgrāmatu " @@ -2951,8 +2948,9 @@ msgstr "Vai tiešām vēlaties dzēst biedru - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Pārvaldīt" @@ -2984,7 +2982,8 @@ msgstr "Meklē kategorijas..." msgid "There are currently no groups for this site" msgstr "Pašlaik nav kategorijas šajā vietnē" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Kā būtu ar izveidošanu?" @@ -3016,7 +3015,8 @@ msgstr "Eksistējošs lietotājs" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." -msgstr "Ja vēlaties pievienot esošu lietotāju, meklējiet tā lietotājvārdu zemāk." +msgstr "" +"Ja vēlaties pievienot esošu lietotāju, meklējiet tā lietotājvārdu zemāk." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3033,19 +3033,22 @@ msgstr "Jauns lietotājs" msgid "If you wish to invite a new user, enter their email address." msgstr "Ja vēlaties uzaicināt jaunu lietotāju, ievadiet tā epasta adresi." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Loma" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Vai tiešām vēlaties dzēst šo biedru?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3066,13 +3069,13 @@ msgstr "Kas ir lomas?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Admin: , var rediģēt kategorijas informāciju, kā " -"arī pārvaldīt organizācijas biedrus

Biedrs. " -" Var pievienot/noņemt datu kopas no kategorijām " +"

Admin: , var rediģēt kategorijas informāciju, kā arī " +"pārvaldīt organizācijas biedrus

Biedrs. Var " +"pievienot/noņemt datu kopas no kategorijām " #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3142,15 +3145,15 @@ msgstr "Kas ir kategorija?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Jūs varat izmantot kategorijas, lai izveidotu un pārvaldītu kolekcijas " -"datu kopām. Tās var būt katalogs datu kopām par konkrētu projektu vai " -"komandu, vai par konkrētu tēmu, vai arī kā ļoti vienkāršs veids, kā " -"palīdzēt cilvēkiem atrast un meklēt savas publicētās datu kopas." +"Jūs varat izmantot kategorijas, lai izveidotu un pārvaldītu kolekcijas datu " +"kopām. Tās var būt katalogs datu kopām par konkrētu projektu vai komandu, " +"vai par konkrētu tēmu, vai arī kā ļoti vienkāršs veids, kā palīdzēt " +"cilvēkiem atrast un meklēt savas publicētās datu kopas." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3213,14 +3216,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3232,9 +3234,9 @@ msgid "" msgstr "" "

CKAN ir pasaulē vadošais atvērtā koda datu publicēšanas portāls.

" "

CKAN ir pilnīgs out-of-the-box programmatūras risinājums, kas padara " -"pieejamus un izmantojamus datus - nodrošinot instrumentus, lai " -"racionalizētu publicēšanu, koplietošanu, meklēšanu un datu izmantošanu " -"(ieskaitot datu uzglabāšanu un spēcīgu datu API).

" +"pieejamus un izmantojamus datus - nodrošinot instrumentus, lai racionalizētu" +" publicēšanu, koplietošanu, meklēšanu un datu izmantošanu (ieskaitot datu " +"uzglabāšanu un spēcīgu datu API).

" #: ckan/templates/home/snippets/promoted.html:8 msgid "Welcome to CKAN" @@ -3242,19 +3244,19 @@ msgstr "Laipni lūgti CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" "Lorem Ipsum – tas ir teksta salikums, kuru izmanto poligrāfijā un " "maketēšanas darbos. Lorem Ipsum ir kļuvis par vispārpieņemtu teksta " -"aizvietotāju kopš 16. gadsimta sākuma. Tajā laikā kāds nezināms " -"iespiedējs izveidoja teksta fragmentu, lai nodrukātu grāmatu ar burtu " -"paraugiem. Tas ir ne tikai pārdzīvojis piecus gadsimtus, bet bez " -"ievērojamām izmaiņām saglabājies arī mūsdienās, pārejot uz datorizētu " -"teksta apstrādi. Tā popularizēšanai 60-tajos gados kalpoja Letraset burtu" -" paraugu publicēšana ar Lorem Ipsum teksta fragmentiem un, nesenā " -"pagātnē, tādas maketēšanas programmas kā Aldus PageMaker, kuras šablonu " -"paraugos ir izmantots Lorem Ipsum teksts." +"aizvietotāju kopš 16. gadsimta sākuma. Tajā laikā kāds nezināms iespiedējs " +"izveidoja teksta fragmentu, lai nodrukātu grāmatu ar burtu paraugiem. Tas ir" +" ne tikai pārdzīvojis piecus gadsimtus, bet bez ievērojamām izmaiņām " +"saglabājies arī mūsdienās, pārejot uz datorizētu teksta apstrādi. Tā " +"popularizēšanai 60-tajos gados kalpoja Letraset burtu paraugu publicēšana ar" +" Lorem Ipsum teksta fragmentiem un, nesenā pagātnē, tādas maketēšanas " +"programmas kā Aldus PageMaker, kuras šablonu paraugos ir izmantots Lorem " +"Ipsum teksts." #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3299,13 +3301,13 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Šeit jūs varat izmantot samazināto formatējumu" +"reference\" data-target=\"popover\" data-content=\"%(markdown_tooltip)s\" " +"data-html=\"true\">samazināto formatējumu" #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3374,8 +3376,8 @@ msgstr "Sagatave" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privāts" @@ -3429,17 +3431,17 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Admin: Var pievienot, mainīt un dzēst datu kopas, " "pārvaldīt (pievienot, mainīt, dzēst) organizācijas biedru, skatīt un " "lejupielādēt datu kopas, sekot datu kopām, organizācijām, datu kopu " "grupām

Editor:−\tpievienot un mainīt datu kopas, " "skatīt un lejupielādēt datu kopas, sekot datu kopām, organizācijām, datu " -"kopu grupām

Member:\tskatīt organizācijas " -"privātās datu kopas, skatīt un lejupielādēt datu kopas, sekot datu kopām," -" organizācijām, datu kopu grupām.

" +"kopu grupām

Member:\tskatīt organizācijas privātās " +"datu kopas, skatīt un lejupielādēt datu kopas, sekot datu kopām, " +"organizācijām, datu kopu grupām.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3480,30 +3482,29 @@ msgstr "Kas ir organizācijas?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Organizācija darbojās, kā datu kopu publicēšanas departaments (piem, " "veselības departaments). Tas nozīmē ka datu kopas var tik publicētas zem " "kāda departamenta nevis zem individuāla lietotāja.

Organizācijās, " -"administratori var piešķirt lomas un atļaut tās biedriem, piešķirt citiem" -" lietotājiem tiesības publicēt datu kopu no konkrētās organizācijas " +"administratori var piešķirt lomas un atļaut tās biedriem, piešķirt citiem " +"lietotājiem tiesības publicēt datu kopu no konkrētās organizācijas " "(piemēram, Valsts statistikas birojs).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN organizācijas tiek izmantoti, lai izveidotu, pārvaldītu un publicētu" -" datu kopu kolekcijas. Lietotāji var būt ar dažādām lomām organizācijā, " -"atkarībā piešķirtajām tiesībām tie var izveidot, rediģēt un publicēt " -"datus." +"CKAN organizācijas tiek izmantoti, lai izveidotu, pārvaldītu un publicētu " +"datu kopu kolekcijas. Lietotāji var būt ar dažādām lomām organizācijā, " +"atkarībā piešķirtajām tiesībām tie var izveidot, rediģēt un publicēt datus." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3519,9 +3520,8 @@ msgstr "Nedaudz informācijas par manu organizāciju ..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Vai tiešām vēlaties dzēst šo organizāciju? Tas izdzēsīs visas publiskās un " "privātās datu kopas, kas pieder šai organizācijai." @@ -3546,13 +3546,12 @@ msgstr "Kas ir datu kopas?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"CKAN datu kopa ir datu resursu kolekcija (piemēram, faili), kopā ar " -"aprakstu un citu informāciju. Datu kopas ir tas, ko lietotāji redz, " -"meklējot datus." +"CKAN datu kopa ir datu resursu kolekcija (piemēram, faili), kopā ar aprakstu" +" un citu informāciju. Datu kopas ir tas, ko lietotāji redz, meklējot datus." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3633,15 +3632,15 @@ msgstr "Pievienot skatu" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Datu pārlūka skats var būt lēns un neuzticams kamēr nav pieslēgts " -"DataStore paplašinājums. Lai iegūtu vairāk informācijas, lūdzu, skatīt Data " -"Explorer dokumentāciju ." +"Datu pārlūka skats var būt lēns un neuzticams kamēr nav pieslēgts DataStore " +"paplašinājums. Lai iegūtu vairāk informācijas, lūdzu, skatīt Data Explorer " +"dokumentāciju ." #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3651,12 +3650,11 @@ msgstr "Pievienot" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Šīs ir vecas datu kopas izmaiņas, kas tika rediģētas %(timestamp)s. Tās " -"var būtiski atšķirties no pašreizējām izmaiņām." +"Šīs ir vecas datu kopas izmaiņas, kas tika rediģētas %(timestamp)s. Tās var " +"būtiski atšķirties no pašreizējām izmaiņām." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3722,18 +3720,18 @@ msgstr "Nav izveidots skats, kas ir piemērots šim resursam" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" msgstr "" -"Šīs vietnes administrators, iespējams, nav iespējojis attiecīgos apskates" -" spraudni" +"Šīs vietnes administrators, iespējams, nav iespējojis attiecīgos apskates " +"spraudni" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "Ja skatam nepieciešama datu glabātuve, datu glabātuves spraudnis nav " -"iespējots vai dati nevar būt nogadāti datu glabātuvē, vai datu glabātuve " -"vēl nav pabeigusi datu apstrādi" +"iespējots vai dati nevar būt nogadāti datu glabātuvē, vai datu glabātuve vēl" +" nav pabeigusi datu apstrādi" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3800,11 +3798,11 @@ msgstr "Pievienot jaunu resursu" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

Šai datu kopai nav datu, kādēļ gan" -" nepievienot?

" +"

Šai datu kopai nav datu, kādēļ gan " +"nepievienot?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3949,17 +3947,16 @@ msgstr "Aktīvs" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Izvēlētā datu licence attiecas tikai uz resursu failu saturu, kuru" -" Jūs pievienojat šai datu kopai. Iesniedzot šo formu, Jūs piekrītat " -"publicēt metadatu vērtības, kuras Jūs ievadijāt šajā formā zem Atvērto datubāzu " +"Izvēlētā datu licence attiecas tikai uz resursu failu saturu, kuru " +"Jūs pievienojat šai datu kopai. Iesniedzot šo formu, Jūs piekrītat publicēt " +"metadatu vērtības, kuras Jūs ievadijāt šajā formā zem Atvērto datubāzu " "licences." #: ckan/templates/package/snippets/package_form.html:39 @@ -4299,8 +4296,8 @@ msgstr "

Lūdzu, mēģiniet citu meklēšanu.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Radās kļūda meklējot. Lūdzu " "mēģiniet vēlreiz.

" @@ -4455,11 +4452,10 @@ msgstr "Konta informācija" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Jūsu profils ļauj citiem CKAN lietotājiem uzzināt par to, kas jūs esat un" -" ko jūs darāt." +"Jūsu profils ļauj citiem CKAN lietotājiem uzzināt par to, kas jūs esat un ko" +" jūs darāt." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4551,8 +4547,7 @@ msgstr "Aizmirsi savu paroli?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Nav problēmu, izmantojiet mūsu paroles atjaunošanas formu, lai atjaunotu " -"to." +"Nav problēmu, izmantojiet mūsu paroles atjaunošanas formu, lai atjaunotu to." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4585,7 +4580,8 @@ msgstr "Jūs esat jau pieteicies" #: ckan/templates/user/logout_first.html:24 msgid "You need to log out before you can log in with another account." -msgstr "Jums ir nepieciešams atteikties no sistēmas, lai pieteiktos ar citu kontu." +msgstr "" +"Jums ir nepieciešams atteikties no sistēmas, lai pieteiktos ar citu kontu." #: ckan/templates/user/logout_first.html:25 msgid "Log out now" @@ -4684,11 +4680,11 @@ msgstr "Pieprasīt atiestatīšanu" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Ievadiet savu lietotājvārdu lodziņā, un mēs nosūtīsim jums e-pastu ar " -"saiti, lai ievadītu jaunu paroli." +"Ievadiet savu lietotājvārdu lodziņā, un mēs nosūtīsim jums e-pastu ar saiti," +" lai ievadītu jaunu paroli." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4714,4 +4710,3 @@ msgstr "Meklēt lietotājus" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/mk/LC_MESSAGES/ckan.po b/ckan/i18n/mk/LC_MESSAGES/ckan.po index a10421bc93f..205f417136d 100644 --- a/ckan/i18n/mk/LC_MESSAGES/ckan.po +++ b/ckan/i18n/mk/LC_MESSAGES/ckan.po @@ -1,12 +1,13 @@ -# Macedonian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Aleksandar Jovanov , 2018 # Konstantin Sivakov , 2018 +# #, fuzzy msgid "" msgstr "" @@ -15,14 +16,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Konstantin Sivakov , 2018\n" -"Language: mk\n" -"Language-Team: Macedonian " -"(https://www.transifex.com/okfn/teams/11162/mk/)\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1\n" +"Language-Team: Macedonian (https://www.transifex.com/okfn/teams/11162/mk/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -118,19 +118,19 @@ msgstr "Ресурсот не е пронајден во податочното #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" "Зачуван е Речникот на податоци. Секоја промена на типот на податок ќе се " "рефлектира кога ресурсот е повторно прикачен во податочното складиште." #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Податоците не се валидни (на пример: бројна вредност е надвор од опсегот " -"или била внесена во поле за текст)." +"Податоците не се валидни (на пример: бројна вредност е надвор од опсегот или" +" била внесена во поле за текст)." #: ckanext/datastore/logic/action.py:258 ckanext/datastore/logic/action.py:286 #: ckanext/datastore/logic/action.py:344 ckanext/datastore/logic/action.py:457 @@ -155,8 +155,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Дополнителни информации во main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Дополнителни информации во главната документација на CKAN API за податоци и " -"Складиште на податоци .

" +"target=\"_blank\">главната документација на CKAN API за податоци и Складиште" +" на податоци .

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -695,7 +694,8 @@ msgstr "Линк до веб страна" #: ckanext/webpageview/theme/templates/webpage_form.html:3 msgid "eg. http://example.com (if blank uses resource url)" -msgstr "пр. https://sajt.com (доколку остани празно се користи линк до ресурсот)" +msgstr "" +"пр. https://sajt.com (доколку остани празно се користи линк до ресурсот)" #: ckan/templates/dataviewer/snippets/data_preview.html:23 #: ckan/templates/package/snippets/resource_view.html:56 @@ -779,8 +779,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Не може да се исчисти податочниот сет %s затоа што поврзаната ревизија %s" -" вклучува податочни сетови кои не се избришани %s" +"Не може да се исчисти податочниот сет %s затоа што поврзаната ревизија %s " +"вклучува податочни сетови кои не се избришани %s" #: ckan/controllers/admin.py:183 #, python-format @@ -900,7 +900,8 @@ msgstr "Погрешна вредност на qjson: %r" #: ckan/controllers/api.py:609 msgid "Request params must be in form of a json encoded dictionary." -msgstr "Параметрите за барањето мора да бидат во форма на json енкодиран речник." +msgstr "" +"Параметрите за барањето мора да бидат во форма на json енкодиран речник." #: ckan/controllers/feed.py:233 ckan/controllers/group.py:137 #: ckan/controllers/group.py:225 ckan/controllers/group.py:393 @@ -1072,8 +1073,7 @@ msgstr "Не сте овластени за да ги погледнете сл #: ckan/controllers/home.py:35 msgid "This site is currently off-line. Database is not initialised." msgstr "" -"Овај сајт е моментално недостапен. Базата на податоци не е " -"иницијализирана." +"Овај сајт е моментално недостапен. Базата на податоци не е иницијализирана." #: ckan/controllers/home.py:73 #, python-format @@ -1118,8 +1118,8 @@ msgstr "Невалиден формат за ревизија: %r" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." msgstr "" -"Прегледување на податочни сетови од тип \"{package_type}\" не е поддржано" -" ({file_!r})." +"Прегледување на податочни сетови од тип \"{package_type}\" не е поддржано " +"({file_!r})." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1310,8 +1310,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Корисникот \"%s\" е сега регистриран, но сè уште сте најавени како " -"\"%s\" од претходно" +"Корисникот \"%s\" е сега регистриран, но сè уште сте најавени како \"%s\" " +"од претходно" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1818,8 +1818,8 @@ msgstr "Името мора да биде најмногу %i карактери #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "Мора да бидат мали алфанумерички карактери (ascii) и овие симболи: -_" #: ckan/logic/validators.py:361 @@ -1863,7 +1863,8 @@ msgstr "Должината на тагот “%s“ е поголем од на #: ckan/logic/validators.py:428 #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." -msgstr "Тагот “%s“ мора да биде од алфанумерички карактери или од симболите: -_." +msgstr "" +"Тагот “%s“ мора да биде од алфанумерички карактери или од симболите: -_." #: ckan/logic/validators.py:436 #, python-format @@ -1903,8 +1904,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Уредувањето не е дозволено бидејќи изгледа како спам. Ве молиме " -"избегнувајте линкови во вашиот опис." +"Уредувањето не е дозволено бидејќи изгледа како спам. Ве молиме избегнувајте" +" линкови во вашиот опис." #: ckan/logic/validators.py:620 #, python-format @@ -1919,8 +1920,8 @@ msgstr "Името на вокабуларот веќе постои." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"Не може да се промени вредноста на клучот од %s на %s. Овој клуч е само " -"за читање." +"Не може да се промени вредноста на клучот од %s на %s. Овој клуч е само за " +"читање." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2072,7 +2073,8 @@ msgstr "REST API: Избришете член: %s" #: ckan/logic/action/delete.py:358 msgid "Organization cannot be deleted while it still has datasets" -msgstr "Организацијата неможе да биде избришана додека поседува податочни сетови." +msgstr "" +"Организацијата неможе да биде избришана додека поседува податочни сетови." #: ckan/logic/action/delete.py:560 ckan/logic/action/delete.py:586 #: ckan/logic/action/get.py:2432 ckan/logic/action/update.py:906 @@ -2152,12 +2154,12 @@ msgstr "Корисникот %s не е овластен да ги промен #, python-format msgid "User %s not authorized to add dataset to this organization" msgstr "" -"Корисникот %s не е овластен да додава податочни сетови за оваа " -"организација" +"Корисникот %s не е овластен да додава податочни сетови за оваа организација" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." -msgstr "ИД за податочниот сет не е обезбеден, неможе да се провери овласувањето" +msgstr "" +"ИД за податочниот сет не е обезбеден, неможе да се провери овласувањето" #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 @@ -2223,7 +2225,8 @@ msgstr "Корисникот %s не е овластен да го избриш #: ckan/logic/auth/delete.py:56 msgid "Resource view not found, cannot check auth." -msgstr "Приказот за ресурсот не е пронајден, неможе да се провери овластувањето." +msgstr "" +"Приказот за ресурсот не е пронајден, неможе да се провери овластувањето." #: ckan/logic/auth/delete.py:73 #, python-format @@ -2592,8 +2595,8 @@ msgstr "Не може да се добијат податоци за прика #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Прикачувате датотека. Дали сте сигурни дека сакате да отидете и да " "престанете со прикачувањето?" @@ -2869,40 +2872,37 @@ msgstr "CKAN опции за конфигурација" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Наслов на сајтот:Ова е насловот на оваа CKAN " -"инстанца. Се појавува на различни места низ " -"CKAN.

Стил:Изберете од листата на едноставни " -"варијации на главната шема на бои за да добиете многу брза прилагодлива " -"тема да работи.

Таг лого на сајтот:Ова е логото " -"што се појавува во насловот на сите шаблони на CKAN " -"инстанци

ЗаОвој текст ќе се појави на овие CKAN " -"инстанци страницата " -"за.

Воведен текст:Овој текст ќе се појави на " -"овие CKAN инстанци на главна страница како " -"добредојде на посетителите.

Прилагоден CSS:Ова е " -"блок од CSS што се појавува во<head>тагот од секоја " -"страница. Ако сакате да ги прилагодите шаблоните целосно, препорачуваме " -"читање на " -"документацијата

Главна страница:Ова е за избор" -" на предефиниран изглед за модулите кои се појавуваат на вашата почетна " -"страница

" +"

Наслов на сајтот:Ова е насловот на оваа CKAN инстанца. " +"Се појавува на различни места низ CKAN.

Стил:Изберете" +" од листата на едноставни варијации на главната шема на бои за да добиете " +"многу брза прилагодлива тема да работи.

Таг лого на " +"сајтот:Ова е логото што се појавува во насловот на сите шаблони на " +"CKAN инстанци

ЗаОвој текст ќе се појави на овие CKAN " +"инстанци страницата за.

Воведен " +"текст:Овој текст ќе се појави на овие CKAN инстанци на главна страница како добредојде на " +"посетителите.

Прилагоден CSS:Ова е блок од CSS што се" +" појавува во<head>тагот од секоја страница. Ако сакате да" +" ги прилагодите шаблоните целосно, препорачуваме читање на документацијата

Главна " +"страница:Ова е за избор на предефиниран изглед за модулите кои се " +"појавуваат на вашата почетна страница

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2917,13 +2917,12 @@ msgstr "Администрирајте CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Како корисник на системски администратор имате целосна контрола врз " -"оваа CKAN инстанца. Продолжете со внимание!

а упатства за користење" -" на функциите на системскиот администратор, видете го CKAN Како корисник на системски администратор имате целосна контрола врз оваа " +"CKAN инстанца. Продолжете со внимание!

а упатства за користење на " +"функциите на системскиот администратор, видете го CKAN водичот за системски " "администратор

" @@ -2933,7 +2932,8 @@ msgstr "Исчистете" #: ckan/templates/admin/trash.html:32 msgid "

Purge deleted datasets forever and irreversibly.

" -msgstr "

Исчистете ги избришаните податочни сетови засекогаш и неповратно.

" +msgstr "" +"

Исчистете ги избришаните податочни сетови засекогаш и неповратно.

" #: ckan/templates/dataviewer/snippets/data_preview.html:9 msgid "This resource can not be previewed at the moment." @@ -3088,8 +3088,9 @@ msgstr "Дали сте сигурни дека сакате да го избр #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Управувај" @@ -3121,7 +3122,8 @@ msgstr "Пребарај групи..." msgid "There are currently no groups for this site" msgstr "Моментално, не постојат групи за оваа страна" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Дали сакате да креирате?" @@ -3174,19 +3176,22 @@ msgstr "" "Доколку сакате да поканите нов корисник, внесете ја неговата електронска " "пошта." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Улога" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Дали сте сигурни дека сакате да го избришете овој член?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3207,14 +3212,14 @@ msgstr "Што претставуваат улоги?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

АдминистраторМоже да промени информација за групата, " "како и да управува со членовите на " -"организацијата.

Член:Може да додаде/избрише " -"податочни сетови од групите

" +"организацијата.

Член:Може да додаде/избрише податочни" +" сетови од групите

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3284,16 +3289,16 @@ msgstr "Што претставуваат групи?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Можете да употребите CKAN групи за да креирате и управувате со колекција " -"од податочни сетови. Ова може да овозможи каталогно подредување на " -"податочни сетови за одреден проект или тим, или за одредена тема, или " -"како едноставен начин да овозможите на луѓето да ги пронајдат и пребараат" -" вашите лично објавени податочни сетови." +"Можете да употребите CKAN групи за да креирате и управувате со колекција од " +"податочни сетови. Ова може да овозможи каталогно подредување на податочни " +"сетови за одреден проект или тим, или за одредена тема, или како едноставен " +"начин да овозможите на луѓето да ги пронајдат и пребараат вашите лично " +"објавени податочни сетови." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3356,14 +3361,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3374,21 +3378,20 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN е водечка портал платформа за отворени податоци, во " -"светот.

CKAN е комплетно софтверско решение кое овозможува пристап " -"до податоци и нивно користење - преку обезбедување на алатки за " -"поедноставување на објавување, споделување, наоѓање и користење на " -"податоци (вклучувајќи складирање на податоци и обезбедување на цврсти " -"API-ја на податоци ). CKAN е наменета за издавачи на податоци (национални" -" и регионални влади, компании и организации) кои сакаат да ги направат " -"своите податоци отворени и достапни.

CKAN се користи од страна на " -"влади и кориснички групи низ целиот свет и поддржува различни официјални " -"и општи портали за податоци, вклучувајќи портали за локална, национална и" -" меѓународна влада, како што е Велика Британија data.gov.uk и Европската Унија publicdata.eu, Бразилската dados.gov.br, Холандски владини " -"портали, како и градски и општински локации во САД, Велика Британија, " -"Аргентина, Финска и на други места.

CKAN:

CKAN е комплетно софтверско решение кое овозможува пристап до " +"податоци и нивно користење - преку обезбедување на алатки за поедноставување" +" на објавување, споделување, наоѓање и користење на податоци (вклучувајќи " +"складирање на податоци и обезбедување на цврсти API-ја на податоци ). CKAN е" +" наменета за издавачи на податоци (национални и регионални влади, компании и" +" организации) кои сакаат да ги направат своите податоци отворени и " +"достапни.

CKAN се користи од страна на влади и кориснички групи низ " +"целиот свет и поддржува различни официјални и општи портали за податоци, " +"вклучувајќи портали за локална, национална и меѓународна влада, како што е " +"Велика Британија data.gov.uk и Европската" +" Унија publicdata.eu, Бразилската dados.gov.br, Холандски владини портали, " +"како и градски и општински локации во САД, Велика Британија, Аргентина, " +"Финска и на други места.

CKAN:http://ckan.org/
CKAN Тура:http://ckan.org/tour/
Преглед на " "карактеристики:Markdown formatting here" msgstr "" -"Можете да користите Означи форматирањетука" #: ckan/templates/macros/form.html:265 @@ -3528,8 +3531,8 @@ msgstr "Скица" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Приватно" @@ -3583,16 +3586,16 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Администратор:Може да додава/уредува и брише " -"податочни сетови, како и да управува со членови на " +"

Администратор:Може да додава/уредува и брише податочни " +"сетови, како и да управува со членови на " "организацијата.

Уредувач:Може да додава и уредува " "податочни сетови, но не може да управува со членови на " -"организацијата.

Член:Може да ги прегледува " -"приватните податочни сетови на организацијата, но не и да додава нови " -"податочни сетови

" +"организацијата.

Член:Може да ги прегледува приватните" +" податочни сетови на организацијата, но не и да додава нови податочни сетови" +"

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3632,32 +3635,31 @@ msgstr "Што се Организации?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Организациите дејствуваат како издавачки одделенија за податочни " -"сетови (на пример, Министерството за здравство). Ова значи дека " -"податочните сетови може да бидат објавени и припаѓаат на оддел наместо на" -" поединечен корисник. 

Во рамките на организациите, " -"администраторите можат да доделуваат улоги и да ги овластуваат своите " -"членови, давајќи им на индивидуалните корисници право да објавуваат " -"податочни сетови од таа одредена организација (пр. Канцеларијата за " -"национална статистика).

" +"

Организациите дејствуваат како издавачки одделенија за податочни сетови " +"(на пример, Министерството за здравство). Ова значи дека податочните сетови " +"може да бидат објавени и припаѓаат на оддел наместо на поединечен корисник. " +"

Во рамките на организациите, администраторите можат да доделуваат " +"улоги и да ги овластуваат своите членови, давајќи им на индивидуалните " +"корисници право да објавуваат податочни сетови од таа одредена организација " +"(пр. Канцеларијата за национална статистика).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "CKAN организациите се користат за креирање, управување и објавување на " "збирки на податочни сетови. Корисниците можат да имаат различни улоги во " -"рамките на една организација, во зависност од нивното ниво на овластување" -" за креирање, уредување и објавување" +"рамките на една организација, во зависност од нивното ниво на овластување за" +" креирање, уредување и објавување" #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3673,13 +3675,12 @@ msgstr "Малку информации за мојата организациј #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" -"Дали сте сигурни дека сакате да ја избришете оваа организација? " -"Забелешка*: Бришењето не може да се изврши додека јавните или приватните " -"податочни сетови припаѓаат на оваа организација." +"Дали сте сигурни дека сакате да ја избришете оваа организација? Забелешка*: " +"Бришењето не може да се изврши додека јавните или приватните податочни " +"сетови припаѓаат на оваа организација." #: ckan/templates/organization/snippets/organization_form.html:63 msgid "Save Organization" @@ -3701,17 +3702,18 @@ msgstr "Што се податочни сетови?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"CKAN податочен сет претставува колекција од ресурси (како датотеки), " -"заедно со опис и други информации, до постојан линк. Податочните сетови " -"се она што корисниците го гледаат кога бараат податоци." +"CKAN податочен сет претставува колекција од ресурси (како датотеки), заедно " +"со опис и други информации, до постојан линк. Податочните сетови се она што " +"корисниците го гледаат кога бараат податоци." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" -msgstr "Дали сте сигурни дека сакате да го избришете податочниот сет - {name}?" +msgstr "" +"Дали сте сигурни дека сакате да го избришете податочниот сет - {name}?" #: ckan/templates/package/confirm_delete_resource.html:11 msgid "Are you sure you want to delete resource - {name}?" @@ -3788,12 +3790,12 @@ msgstr "Додадете приказ" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Прегледите на Data Explorer може да бидат бавни и несигурни, освен ако не" -" е овозможена екстензијата за DataStore. За повеќе информации, ве молиме " +"Прегледите на Data Explorer може да бидат бавни и несигурни, освен ако не е " +"овозможена екстензијата за DataStore. За повеќе информации, ве молиме " "погледнете Документација на Data Explorer" @@ -3806,9 +3808,8 @@ msgstr "Додадете" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Ова е стара ревизија на овој податочен сет, како што е изменето во " "%(timestamp)s. Може да се разликува значително од This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Овој податочен сет не содржи податоци,зошто не додадете?

" @@ -4045,7 +4046,8 @@ msgstr "Креирајте нова организација" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." -msgstr "Не постои организација на која што можете да го додадете податочниот сет." +msgstr "" +"Не постои организација на која што можете да го додадете податочниот сет." #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" @@ -4107,19 +4109,18 @@ msgstr "Активно" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "Лиценцата за податоцикоја ја избирате погоре се однесува само на " -"содржината на секоја датотека од ресурс која ја додавате на овој " -"податочен сет. Со поднесување на оваа форма, вие се согласувате да ги " -"објавите мета податочните вредности кои ги внесувате во формуларот" -" под Лиценцата " -"за отворени податоци" +"содржината на секоја датотека од ресурс која ја додавате на овој податочен " +"сет. Со поднесување на оваа форма, вие се согласувате да ги објавите мета" +" податочните вредности кои ги внесувате во формуларот под Лиценцата за отворени" +" податоци" #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4230,8 +4231,8 @@ msgstr "Што претставува ресурс?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Ресурс може да биде секоја датотека или линк до датотека која содржи " -"корисни податоци." +"Ресурс може да биде секоја датотека или линк до датотека која содржи корисни" +" податоци." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4262,8 +4263,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Можете да го копирате и залепите вметнатиот код во системот за управување" -" со податоци или блог софтвер кој поддржува чист HTML" +"Можете да го копирате и залепите вметнатиот код во системот за управување со" +" податоци или блог софтвер кој поддржува чист HTML" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4323,7 +4324,8 @@ msgstr "Што означува приказ?" #: ckan/templates/package/snippets/view_help.html:4 msgid "A view is a representation of the data held against a resource" -msgstr "Приказот претставува репрезентација на податоците содржани во ресурсот" +msgstr "" +"Приказот претставува репрезентација на податоците содржани во ресурсот" #: ckan/templates/revision/diff.html:6 msgid "Differences" @@ -4446,8 +4448,8 @@ msgstr "

Ве молиме обидете се со ново #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Се појави грешка при " "пребарувањето.Ве молиме обидете се повторно.

" @@ -4596,11 +4598,10 @@ msgstr "Информации за сметката" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Вашиот профил доволува останатите корисници на CKAN да знаат кои сте Вие " -"и што правите." +"Вашиот профил доволува останатите корисници на CKAN да знаат кои сте Вие и " +"што правите." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4691,7 +4692,8 @@ msgstr "Дали ја заборавивте Вашата лозинка?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." -msgstr "Не грижете се, искористете ја нашата форма за ресетирање на лозинката." +msgstr "" +"Не грижете се, искористете ја нашата форма за ресетирање на лозинката." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4724,7 +4726,8 @@ msgstr "Веќе сте логирани" #: ckan/templates/user/logout_first.html:24 msgid "You need to log out before you can log in with another account." -msgstr "Потребно е да се одјавите пред да можете да се најавите со друга сметка." +msgstr "" +"Потребно е да се одјавите пред да можете да се најавите со друга сметка." #: ckan/templates/user/logout_first.html:25 msgid "Log out now" @@ -4770,8 +4773,8 @@ msgstr "Ресетирање на лозинката" #: ckan/templates/user/perform_reset.html:21 msgid "You can also change username. It can not be modified later." msgstr "" -"Вие исто така можете да го промените вашето корисничко име. Истото нема " -"да може да биде променето подоцна." +"Вие исто така можете да го промените вашето корисничко име. Истото нема да " +"може да биде променето подоцна." #: ckan/templates/user/perform_reset.html:29 msgid "Update Password" @@ -4829,11 +4832,11 @@ msgstr "Ресетирај" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Внесете го Вашето корисничко име во полето и ние ќе Ви испратиме " -"електронска порака со линк за влез и нова лозинка." +"Внесете го Вашето корисничко име во полето и ние ќе Ви испратиме електронска" +" порака со линк за влез и нова лозинка." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4859,4 +4862,3 @@ msgstr "Пребарувај корисници" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "Вашата лозинка мора да е 8 карактери или повеќе." - diff --git a/ckan/i18n/mn_MN/LC_MESSAGES/ckan.po b/ckan/i18n/mn_MN/LC_MESSAGES/ckan.po index 5382e5d13fd..c35161587bd 100644 --- a/ckan/i18n/mn_MN/LC_MESSAGES/ckan.po +++ b/ckan/i18n/mn_MN/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Mongolian (Mongolia) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Zoljargal Munkhjargal , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,14 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Zoljargal Munkhjargal , 2018\n" -"Language: mn_MN\n" -"Language-Team: Mongolian (Mongolia) " -"(https://www.transifex.com/okfn/teams/11162/mn_MN/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Mongolian (Mongolia) (https://www.transifex.com/okfn/teams/11162/mn_MN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: mn_MN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,14 +117,14 @@ msgstr "Өгөгдлийн агуулахын нөөц олдсонгүй" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Өгөгдөл буруу байна (жишээ нь, тоон утга хязгаараас давсан эсвэл бичвэр " "талбарт тоо оруулсан)" @@ -144,14 +144,14 @@ msgstr "CKAN өгөгдлийн API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" -msgstr "Илүү нарийвчилсан хайлт хийх боломжтой веб API-аар нөөц өгөгдөлд хандах" +msgstr "" +"Илүү нарийвчилсан хайлт хийх боломжтой веб API-аар нөөц өгөгдөлд хандах" #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -160,8 +160,8 @@ msgstr "Төгсгөлийн цэгүүд" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "API-н өгөгдөлд CKAN болон API-н үйлдлээр дамжиж хандах боломжтой." #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -270,13 +270,11 @@ msgstr "Өгөгдлийн API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" -"CKAN Data API болон Өгөгдлийн нөөцийн баримт бичигт" -" нэмэлт мэдээллийг агуулж байгаа болно.

" +"CKAN Data API болон Өгөгдлийн нөөцийн баримт бичигт " +"нэмэлт мэдээллийг агуулж байгаа болно.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -405,7 +403,8 @@ msgstr "0 Өгөгдлийн бүрдлүүд" #: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 msgid "CKAN's data previewing tool has many powerful features" -msgstr "CKAN-ны өгөгдөл урьдчилан харах хэрэгсэл нь олон хүчирхэг боломжуудтай" +msgstr "" +"CKAN-ны өгөгдөл урьдчилан харах хэрэгсэл нь олон хүчирхэг боломжуудтай" #: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 #: ckan/templates/group/snippets/info.html:32 @@ -872,7 +871,8 @@ msgstr "Буруу хэлбэржсэн qjson утга: %r" #: ckan/controllers/api.py:609 msgid "Request params must be in form of a json encoded dictionary." -msgstr "Хүсэлтийн параметр нь json-оор шифрлэгдсэн үгсийн сан хэлбэрт байх ёстой" +msgstr "" +"Хүсэлтийн параметр нь json-оор шифрлэгдсэн үгсийн сан хэлбэрт байх ёстой" #: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 #: ckan/controllers/group.py:226 ckan/controllers/group.py:394 @@ -1039,7 +1039,8 @@ msgstr "Дагагчдыг харах эрхгүй байна %s" #: ckan/controllers/home.py:35 msgid "This site is currently off-line. Database is not initialised." -msgstr "Тус сайт одоогоор хаалттай байна. Өгөгдлийн сангийн тохиргоо хийгдээгүй." +msgstr "" +"Тус сайт одоогоор хаалттай байна. Өгөгдлийн сангийн тохиргоо хийгдээгүй." #: ckan/controllers/home.py:73 #, python-format @@ -1080,8 +1081,7 @@ msgstr "Засварын хэлбэр таарахгүй байна: %r" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." msgstr "" -"\"{package_type}\" төрлийн өгөгдлийн бүрдлийг харах ({file_!r})-д " -"боломжгүй." +"\"{package_type}\" төрлийн өгөгдлийн бүрдлийг харах ({file_!r})-д боломжгүй." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1272,8 +1272,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"\"%s\" хэрэглэгч бүртгэгдсэн боловч өмнөх \"%s\" хэрэглэгчээр холбогдсон" -" хэвээор байна." +"\"%s\" хэрэглэгч бүртгэгдсэн боловч өмнөх \"%s\" хэрэглэгчээр холбогдсон " +"хэвээор байна." #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1385,7 +1385,8 @@ msgstr "{actor} {dataset} өгөгдлийн бүрдлийг шинэчлэлэ #: ckan/lib/activity_streams.py:72 msgid "{actor} changed the extra {extra} of the dataset {dataset}" -msgstr "{actor} {dataset} өгөгдлийн бүрдлийн нэмэлт {extra} хэсгийг шинэчлэлээ" +msgstr "" +"{actor} {dataset} өгөгдлийн бүрдлийн нэмэлт {extra} хэсгийг шинэчлэлээ" #: ckan/lib/activity_streams.py:75 msgid "{actor} updated the resource {resource} in the dataset {dataset}" @@ -1780,8 +1781,8 @@ msgstr "Нэрийн урт хамгийн ихдээ %i тэмдэгт байх #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1876,7 +1877,8 @@ msgstr "Тухайн үг ашиглагдаж байна." #: ckan/logic/validators.py:634 #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" -msgstr "%s-н утгыг %s болгон өөрчлөх боломжгүй. Энэ нь зөвхөн унших боломжтой." +msgstr "" +"%s-н утгыг %s болгон өөрчлөх боломжгүй. Энэ нь зөвхөн унших боломжтой." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -1926,15 +1928,11 @@ msgstr "" #: ckan/logic/validators.py:803 msgid "\"filter_fields\" is required when \"filter_values\" is filled" -msgstr "" -"\"filter_values\" утгыг оруулсан бол \"filter_fields\" утга заавал байх " -"ёстой" +msgstr "\"filter_values\" утгыг оруулсан бол \"filter_fields\" утга заавал байх ёстой" #: ckan/logic/validators.py:806 msgid "\"filter_values\" is required when \"filter_fields\" is filled" -msgstr "" -"\"filter_fields\" утга оруулсан бол \"filter_values\" утга заавал байх " -"ёстой" +msgstr "\"filter_fields\" утга оруулсан бол \"filter_values\" утга заавал байх ёстой" #: ckan/logic/validators.py:820 msgid "There is a schema field with the same name" @@ -2046,7 +2044,8 @@ msgstr "\"%s\" шошго олдсонгүй." #: ckan/logic/action/delete.py:604 ckan/logic/action/delete.py:608 msgid "You must be logged in to unfollow something." -msgstr "Та ямар нэгэн зүйлийг дагахаа болихын тулд нэвтэрсэн байх шаардлагатай." +msgstr "" +"Та ямар нэгэн зүйлийг дагахаа болихын тулд нэвтэрсэн байх шаардлагатай." #: ckan/logic/action/delete.py:619 msgid "You are not following {0}." @@ -2231,7 +2230,8 @@ msgstr "" #: ckan/logic/auth/get.py:252 msgid "You must be logged in to access your dashboard." -msgstr "Та өөрийн хяналтын самбартаа хандахын тулд нэвтэрсэн байх шаардлагатай." +msgstr "" +"Та өөрийн хяналтын самбартаа хандахын тулд нэвтэрсэн байх шаардлагатай." #: ckan/logic/auth/update.py:39 #, python-format @@ -2542,8 +2542,8 @@ msgstr "Хуулсан файлын мэдээллийг авах боломжг #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Та яг одоо файл хуулж байна. Хуулж байгаа файлаа зогсоогоод гарахдаа " "итгэлтэй байна уу." @@ -2722,38 +2722,37 @@ msgstr "CKAN тохиргооны сонголтууд" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" -msgstr "" -"

Сайтын гарчиг: Энэ бол CKAN -ий гарчиг хэсэг жишээ нь" -" янз бүрийн ялгаатай газарын CKAN.

Загвар: " -"Ашиглаж байгаа загвараа маш хурдан солихийг хүсвэл үндсэн өнгөний схемийн" -" жагсаалтнаас сонгоно уу.

Сайтын шишгийн лого: " -"Энэ лого нь бүх CKAN -ий ялгаатай загваруудын толгой хэсэгт " -"харагдана.

Тухай: Энэ текст нь CKAN дээр гарч " -"байх болно жишээ нь хуудасны тухай.

" -"

Нийтлэлийн оршил текст: Энэ текст нь CKAN дээр гарч " -"байх болно жишээ нь нүүр хуудас тавтай " -"морилно уу.

Уламжлал CSS: Энэ нь CSS -ийн нэг " -"хэсэг нь <head> хуудас бүрийн шошго. Та загваруудыг " -"илүү өөрчилхийг хүсэж байгаа бол бид энийг зөвлөж байна баримт бичгийг унших.

" -"

Нүүр хуудас: Энэ бол нүүр хуудас дээр харагдах зохион" -" байгуулалтыг урьдчилан тодорхойлсон модулиудаас сонгох.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" +msgstr "" +"

Сайтын гарчиг: Энэ бол CKAN -ий гарчиг хэсэг жишээ нь " +"янз бүрийн ялгаатай газарын CKAN.

Загвар: Ашиглаж " +"байгаа загвараа маш хурдан солихийг хүсвэл үндсэн өнгөний схемийн " +"жагсаалтнаас сонгоно уу.

Сайтын шишгийн лого: Энэ " +"лого нь бүх CKAN -ий ялгаатай загваруудын толгой хэсэгт харагдана.

" +"

Тухай: Энэ текст нь CKAN дээр гарч байх болно жишээ нь " +"хуудасны тухай.

Нийтлэлийн " +"оршил текст: Энэ текст нь CKAN дээр гарч байх болно жишээ нь нүүр хуудас тавтай морилно уу.

" +"

Уламжлал CSS: Энэ нь CSS -ийн нэг хэсэг нь " +"<head> хуудас бүрийн шошго. Та загваруудыг илүү " +"өөрчилхийг хүсэж байгаа бол бид энийг зөвлөж байна баримт бичгийг унших.

Нүүр " +"хуудас: Энэ бол нүүр хуудас дээр харагдах зохион байгуулалтыг " +"урьдчилан тодорхойлсон модулиудаас сонгох.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2768,14 +2767,13 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Та систем админ хэрэглэгч адил энэ CKAN-ыг бүрэн удирдах боломжтой " "байна. Болгоомжтой ажиллаарай!

Систем админы хийх үйлдлийн " -"боломжуудыг CKAN систем админы" -" гарын авлагаас үзнэ үү.

" +"боломжуудыг CKAN систем админы " +"гарын авлагаас үзнэ үү.

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2938,8 +2936,9 @@ msgstr "Та {name} гишүүнийг устгахдаа илтгэлтэй б #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Удирдах" @@ -2971,7 +2970,8 @@ msgstr "Бүлгүүд хайх..." msgid "There are currently no groups for this site" msgstr "Энэ сайтад одоогоор ямарч бүлэг байхгүй байна" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Нэгийг үүсгэх үү?" @@ -3022,19 +3022,22 @@ msgstr "Шинэ хэрэглэгч" msgid "If you wish to invite a new user, enter their email address." msgstr "Та шинэ хэрэглэгч урих бол имэйл хаягийг нь оруулна уу" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Хэрэглэгчийн төрөл" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Та энэ гишүүнийг устгахдаа итгэлтэй байна уу?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3055,8 +3058,8 @@ msgstr "Хэрэглэгчийн төрөл гэж юу вэ?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Админ нь: Байгууллагын хэрэглчдийн тохиргоог хийхээс " @@ -3131,15 +3134,15 @@ msgstr "Бүлгүүд гэж юу вэ?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Өгөгдлийн бүрдлийн цуглуулгыг үүсгэх болон зохион байгуулахад CKAN-н " -"Бүлгийг ашиглах боломжтой. Ангилсан өгөгдлийн бүрдлийг ашиглах " -"хэрэгцээтэй төслийн баг, хэлэлцүүлгийн сэдэв, хувь хүн болон та өөрөө " -"нээлттэй өгөгдлийн бүрдлээс хялбараар хайх боломж олгоно." +"Өгөгдлийн бүрдлийн цуглуулгыг үүсгэх болон зохион байгуулахад CKAN-н Бүлгийг" +" ашиглах боломжтой. Ангилсан өгөгдлийн бүрдлийг ашиглах хэрэгцээтэй төслийн " +"баг, хэлэлцүүлгийн сэдэв, хувь хүн болон та өөрөө нээлттэй өгөгдлийн " +"бүрдлээс хялбараар хайх боломж олгоно." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3202,14 +3205,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3220,22 +3222,22 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN нь дэлхийн тэргүүлэх нээлттэй эхийн өгөгдлийн портал платформ " -"юм.

Мөн өгөгдлийг нийтлэх, хуваалцах, хайх, ашиглах боломжийг олгох" -" замаар өгөгдлийг эргэлтэнд оруулдаг програм хангамжийн шийдэл. (өгөгдөл " +"юм.

Мөн өгөгдлийг нийтлэх, хуваалцах, хайх, ашиглах боломжийг олгох " +"замаар өгөгдлийг эргэлтэнд оруулдаг програм хангамжийн шийдэл. (өгөгдөл " "хадгалах, API-ийн тусламжтай нийтлэх/нийлүүлэх ч мөн багтсан ). CKAN нь " -"өгөгдлөө нээлттэй болгохоор зорьж буй өгөгдөл түгээгчдэд ( улс болон орон" -" нутаг дахь төрийн байгууллага, компани, бусад байгууллага) зориулагдсан." -"

CKAN-г засгийн газрууд, дэлхийн өнцөг булан бүрт буй " -"хэрэглэгчдийн бүлгүүд хэрэглэхээс гадна орон нутаг, улс, олон улсын " -"засгийн газрууд албан болон нийгмийн өгөгдлийг нийтлэхэд ашиглаж байна " -"Тухайлбал: . Английн data.gov.uk, " -"Европын холбооны publicdata.eu, " -"Бразилийн dados.gov.br, Герман болон" -" Нидерландын засгийн газрын сайтуудаас гадна АНУ, Англи, Аргентин, " -"Финланд болон бусад улсын хотуудын сайт.

CKAN: http://ckan.org/
CKAN-тай танилцах: " -"http://ckan.org/tour/
Онцлог:" -" http://ckan.org/features/

" +"өгөгдлөө нээлттэй болгохоор зорьж буй өгөгдөл түгээгчдэд ( улс болон орон " +"нутаг дахь төрийн байгууллага, компани, бусад байгууллага) зориулагдсан. " +"

CKAN-г засгийн газрууд, дэлхийн өнцөг булан бүрт буй хэрэглэгчдийн " +"бүлгүүд хэрэглэхээс гадна орон нутаг, улс, олон улсын засгийн газрууд албан " +"болон нийгмийн өгөгдлийг нийтлэхэд ашиглаж байна Тухайлбал: . Английн data.gov.uk, Европын холбооны publicdata.eu, Бразилийн dados.gov.br, Герман болон Нидерландын " +"засгийн газрын сайтуудаас гадна АНУ, Англи, Аргентин, Финланд болон бусад " +"улсын хотуудын сайт.

CKAN: http://ckan.org/
CKAN-тай танилцах: http://ckan.org/tour/
Онцлог: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 msgid "Welcome to CKAN" @@ -3243,11 +3245,11 @@ msgstr "CKAN-д тавтай морил" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Энэ нь CKAN ны талаарх хураангуй мэдээлэл байна. Бидэнд энэ мэдээний " -"хуулбар байхгүй байна гэхдээ удахгүй хуулбартай болох болно." +"Энэ нь CKAN ны талаарх хураангуй мэдээлэл байна. Бидэнд энэ мэдээний хуулбар" +" байхгүй байна гэхдээ удахгүй хуулбартай болох болно." #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3292,8 +3294,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3364,8 +3366,8 @@ msgstr "Төсөл" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Хувийн" @@ -3419,15 +3421,15 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Админ нь: Байгууллагын гишүүдийг тохируулахаас гадна " "өгөгдлийн бүрдлүүдийг нэмэх болон устгах боломжтой.

" "

Засварлагч нь: Өгөгдлийн бүрдлийг нэмэх болон устгах " "боломжтой боловч байгууллагын гишүүдийг тохируулах боломжгүй.

" -"

Гишүүн нь: Байгууллагын хаалттай өгөгдлийн бүрдлийг " -"үзэх боломжтой боловч шинээр нэмэх боломжгүй.

" +"

Гишүүн нь: Байгууллагын хаалттай өгөгдлийн бүрдлийг үзэх" +" боломжтой боловч шинээр нэмэх боломжгүй.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3467,29 +3469,29 @@ msgstr "Байгууллага гэж юу вэ?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Байгууллага нь өгөгдлийн бүрдэл нийтлэгч байгууллага байна (Жишээ нь, " -"Үндэсний Статистикийн Хороо). Энэ нь аливаа өгөгдлийн бүрдэл хэн нэгэн " -"хүн эсвэл ажилтанд хамаарах бус тухайн өгөгдлийг нийтлэгч байгууллагатай " +"Үндэсний Статистикийн Хороо). Энэ нь аливаа өгөгдлийн бүрдэл хэн нэгэн хүн " +"эсвэл ажилтанд хамаарах бус тухайн өгөгдлийг нийтлэгч байгууллагатай " "холбоотой.

Байгууллага дотор админ хэрэглэгчид нь гишүүдэд үүрэг " "оноох, эрх олгох, энгийн хэрэглэгчид тухайн байгууллагын өмнөөс өгөгдөл " "нийтлэх эрхийг өгөх боломжтой.

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN дахь байгууллагууд нь өгөгдлийн бүрдлийг үүсгэх, зоион байгуулах " -"болон нийтлэхэд ашиглагдана. Өгөгдлийн бүрдлийг үүсгэх, засварлах болон " -"нийтлэх эрхээс хамаарч байгууллагын хэрэглэгчдийн төрөл өөр байж болно." +"CKAN дахь байгууллагууд нь өгөгдлийн бүрдлийг үүсгэх, зоион байгуулах болон " +"нийтлэхэд ашиглагдана. Өгөгдлийн бүрдлийг үүсгэх, засварлах болон нийтлэх " +"эрхээс хамаарч байгууллагын хэрэглэгчдийн төрөл өөр байж болно." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3505,9 +3507,8 @@ msgstr "Миний байгууллагийн талаар товч мэдээл #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Та тус байгууллагыг устгахдаа итгэлтэй байна уу? Ингэснээр тухайн " "байгууллагад хамааралтай нээлттэй болон хаалттай өгөгдлийн бүрдлүүд устана." @@ -3532,14 +3533,14 @@ msgstr "Өгөгдлийн бүрдэл гэж юу вэ?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "CKAN Өгөгдлийн бүрдэл гэж тайлбар болон бусад дэлгэрэнгүй мэдээлэл бүхий " -"материалууд (файл гэх мэт) бөгөөд тогтсон зам дээр байршуулсан цуглуулга" -" юм. Хэрэглэгч өгөгдөл хайж байхдаа үзэх боломжтой зүйлийг өгөгдлийн " -"бүрдэл гэнэ." +"материалууд (файл гэх мэт) бөгөөд тогтсон зам дээр байршуулсан цуглуулга " +"юм. Хэрэглэгч өгөгдөл хайж байхдаа үзэх боломжтой зүйлийг өгөгдлийн бүрдэл " +"гэнэ." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3620,15 +3621,15 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Өгөгдлийн Хөтөч харагдац нь DataStore өргөтгөл идэвхжээгүй тохиолдолд " -"удаан, найдваргүй ажиллаж болзошгүй. Дэлгэрэнгүй мэдээллийг Өгөгдлийн " -"Хөтчийн баримтаас танилцана уу." +"Өгөгдлийн Хөтөч харагдац нь DataStore өргөтгөл идэвхжээгүй тохиолдолд удаан," +" найдваргүй ажиллаж болзошгүй. Дэлгэрэнгүй мэдээллийг Өгөгдлийн Хөтчийн " +"баримтаас танилцана уу." #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3638,13 +3639,12 @@ msgstr "Нэмэх" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Энэ нь өгөгдлийн бүрдлийн өмнөх засвар бөгөөд %(timestamp)s -д " -"засварлагдсан. Иймд одоогийн хувилбараас зөрүүтэй" -" байж болно." +"засварлагдсан. Иймд одоогийн хувилбараас зөрүүтэй " +"байж болно." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3709,13 +3709,14 @@ msgstr "" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" -msgstr "Энэ сайтын администраторууд харагдац плагинийг идэвхжүүлээгүй байгаа болно" +msgstr "" +"Энэ сайтын администраторууд харагдац плагинийг идэвхжүүлээгүй байгаа болно" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3783,8 +3784,8 @@ msgstr "Шинэ нөөц үүсгэх" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Тус өгөгдлийн бүрдэлд өгөгдөл байхгүй байна, энд дарж нэмэх боломжтой

" @@ -3807,8 +3808,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -"%(api_link)s -ийг ашиглан бүртгүүлж болно (%(api_doc_link)s -ээс харна " -"уу) эсвэл %(dump_link)s -ээс татаж авна уу." +"%(api_link)s -ийг ашиглан бүртгүүлж болно (%(api_doc_link)s -ээс харна уу) " +"эсвэл %(dump_link)s -ээс татаж авна уу." #: ckan/templates/package/search.html:60 #, python-format @@ -3816,8 +3817,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " msgstr "" -"Та %(api_link)s -ийг ашиглан бүртгүүлж болно (%(api_doc_link)s -ээс харна" -" уу)." +"Та %(api_link)s -ийг ашиглан бүртгүүлж болно (%(api_doc_link)s -ээс харна " +"уу)." #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -3907,8 +3908,8 @@ msgid "" "href=\"http://opendefinition.org/licenses/\">opendefinition.org " msgstr "" "Лицензийн тодорхойлолт болон нэмэлт мэдээлллийг opendefinition.org-с " -"авах боломжтой." +"href=\"http://opendefinition.org/licenses/\">opendefinition.org-с авах " +"боломжтой." #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -3933,19 +3934,18 @@ msgstr "Идэвхитэй" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." -msgstr "" -"Өгөгдлийн лиценз та дээрх нөөцүүдээс өөрийн тохирохыг сонгон " -"энэхүү өгөгдлийн бүрдэлд нэмж болно. Энэхүү формыг бөглөж илгээснээр та " -"дараах зөвшөөрлөөр нийтлэгдэж байгаа болно. мета өгөгдөл таны " -"энэхүү форумд оруулсан утга нь Нээлттэй өгөгдлийн" -" сангийн лицензтэй болно." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." +msgstr "" +"Өгөгдлийн лиценз та дээрх нөөцүүдээс өөрийн тохирохыг сонгон энэхүү " +"өгөгдлийн бүрдэлд нэмж болно. Энэхүү формыг бөглөж илгээснээр та дараах " +"зөвшөөрлөөр нийтлэгдэж байгаа болно. мета өгөгдөл таны энэхүү форумд " +"оруулсан утга нь Нээлттэй өгөгдлийн " +"сангийн лицензтэй болно." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4083,7 +4083,8 @@ msgstr "" msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" -msgstr "Хуулж авсан шигтгээ код оо та КМС эсвэл блог програм дотор оо нааж болно" +msgstr "" +"Хуулж авсан шигтгээ код оо та КМС эсвэл блог програм дотор оо нааж болно" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4252,7 +4253,8 @@ msgstr "Ямар ч лиценз өгөгдөөгүй" #: ckan/templates/snippets/license.html:28 msgid "This dataset satisfies the Open Definition." -msgstr "Энэ өгөгдлийн бүрдэл нь Нээлттэй тодорхойлолтын шаардлагыг хангаж байна." +msgstr "" +"Энэ өгөгдлийн бүрдэл нь Нээлттэй тодорхойлолтын шаардлагыг хангаж байна." #: ckan/templates/snippets/organization.html:48 msgid "There is no description for this organization" @@ -4282,11 +4284,11 @@ msgstr "

Өөр хайлт хийнэ үү.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" -"

Хайлт хийхэд алдаа гарлаа. дахин" -" хайлт хийнэ үү.

" +"

Хайлт хийхэд алдаа гарлаа. дахин " +"хайлт хийнэ үү.

" #: ckan/templates/snippets/search_result_text.html:15 msgid "{number} dataset found for \"{query}\"" @@ -4432,8 +4434,7 @@ msgstr "Бүртгэлийн мэдээлэл" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" "Таны мэдээлэл CKAN-ын хэрэглэгчдэд таны хэн болох, юу хийдэг талаарх " "мэдээлэл олгож өгнө." @@ -4659,11 +4660,11 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Тус талбарт хэрэглэгчийн нэрийг оруулснаар шинэ нууц үг оруулах боломж " -"бүхий холбоосыг таны имэйл хаяг руу илгээнэ." +"Тус талбарт хэрэглэгчийн нэрийг оруулснаар шинэ нууц үг оруулах боломж бүхий" +" холбоосыг таны имэйл хаяг руу илгээнэ." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4689,4 +4690,3 @@ msgstr "Хэрэглэгчид хайх" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/nl/LC_MESSAGES/ckan.po b/ckan/i18n/nl/LC_MESSAGES/ckan.po index ed60fa1ac7d..d7b9a94b3f7 100644 --- a/ckan/i18n/nl/LC_MESSAGES/ckan.po +++ b/ckan/i18n/nl/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Dutch translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,13 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: nl\n" "Language-Team: Dutch (https://www.transifex.com/okfn/teams/11162/nl/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -115,14 +116,14 @@ msgstr "Datastore bron niet gevonden" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "De data was ongeldig (bijvoorbeeld een numerieke waarde viel buiten de " "geldige reeks of was aan een tekstveld toegevoegd)." @@ -143,14 +144,14 @@ msgstr "CKAN Data API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" -msgstr "Toegang tot bron data via een web API met krachtige query ondersteuning" +msgstr "" +"Toegang tot bron data via een web API met krachtige query ondersteuning" #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Verdere informatie in de main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Verdere informatie in de Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Titel: Dit is de titel van deze CKAN installatie. De " "titel verschijnt op verschillende plaatsen in de applicatie.

" "

Stijl: Kies uit een lijst met variaties van het " -"standaard kleurenschema.

Site Tag Logo: Dit is " -"het logo dat verschijnt in de kop van alle CKAN sjablonen.

" +"standaard kleurenschema.

Site Tag Logo: Dit is het " +"logo dat verschijnt in de kop van alle CKAN sjablonen.

" "

Over: Deze tekst verschijnt op de \"over\" pagina.

" "

Introductietekst: Deze tekst verschijnt op de \"home\" pagina als welkomstboodschap voor " -"bezoekers.

Custom CSS: Deze CSS verschijnt in de " -"kop (<head>) sectie van elke pagina. Voor het " -"geavanceerd aanpassen van de sjablonen van CKAN verwijzen we graag naar " -"de documentatie.

" +"bezoekers.

Custom CSS: Deze CSS verschijnt in de kop" +" (<head>) sectie van elke pagina. Voor het geavanceerd " +"aanpassen van de sjablonen van CKAN verwijzen we graag naar de documentatie.

" "

Home pagina: Hiermee kan worden aangegeven in welke " "layout en welke modules op de home pagina worden getoond.

" @@ -2777,14 +2781,13 @@ msgstr "Beheer CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Als sysadmin gebruiker heeft u de volledige controle over deze CKAN " -"installatie. Wees voorzichtig!

Zie de CKAN sysadmin guide voor hulp bij " -"het gebruik van sysadmin functionaliteiten.

" +"installatie. Wees voorzichtig!

Zie de CKAN sysadmin guide voor hulp bij het gebruik van sysadmin " +"functionaliteiten.

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2947,8 +2950,9 @@ msgstr "Weet u zeker dat u dit lid wilt deleten - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Beheer" @@ -2980,7 +2984,8 @@ msgstr "Zoek groepen..." msgid "There are currently no groups for this site" msgstr "Er zijn momenteel geen groepen voor deze site" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Wil je er niet een maken?" @@ -3029,21 +3034,25 @@ msgstr "Nieuwe gebruiker" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Als je een nieuwe gebruiker wil uitnodigen, vul dan zijn mailadres in." +msgstr "" +"Als je een nieuwe gebruiker wil uitnodigen, vul dan zijn mailadres in." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rol" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Weet u zeker dat u dit lid wil verwijderen?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3064,13 +3073,13 @@ msgstr "Wat zijn de rollen?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Admin: Kan groepsinformatie wijzigen en " -"organisatieleden beheren.

Member: Kan datasets " -"toevoegen/verwijderen van groepen

" +"

Admin: Kan groepsinformatie wijzigen en organisatieleden" +" beheren.

Member: Kan datasets toevoegen/verwijderen" +" van groepen

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3140,15 +3149,15 @@ msgstr "Wat zijn groepen?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"U kunt een CKAN groep maken en collecties van datagroepen beheren. DIt " -"kan zijn om datasets te catalogiseren voor een project of een team, of op" -" basis van een thema, of als een eenvoudige weg om mensen jouw datasets " -"te vinden en te doorzoeken." +"U kunt een CKAN groep maken en collecties van datagroepen beheren. DIt kan " +"zijn om datasets te catalogiseren voor een project of een team, of op basis " +"van een thema, of als een eenvoudige weg om mensen jouw datasets te vinden " +"en te doorzoeken." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3211,14 +3220,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3228,21 +3236,19 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN is een toonaangevend open-source data portal platform.

" -"

CKAN is een out-of-the-box software oplossing die data bruikbaar en " -"open maakt. CKAN biedt instrumenten aan die de mogelijkheden geven voor " -"de publicatie, het delen, het vinden en het gebruiken van data. " -"(inclusief de opslag van data). CKAN richt zich op data publishers " -"(nationale en regionale overheden, bedrijven en organisaties) die hun " -"data open en beschikbaar willen maken.

CKAN wordt gebruikt door " -"overheden en communities over de hele wereld. Waaronder het Verenigd " -"Koninkrijk de Verenigde StatenCKAN is een toonaangevend open-source data portal platform.

CKAN " +"is een out-of-the-box software oplossing die data bruikbaar en open maakt. " +"CKAN biedt instrumenten aan die de mogelijkheden geven voor de publicatie, " +"het delen, het vinden en het gebruiken van data. (inclusief de opslag van " +"data). CKAN richt zich op data publishers (nationale en regionale overheden," +" bedrijven en organisaties) die hun data open en beschikbaar willen " +"maken.

CKAN wordt gebruikt door overheden en communities over de " +"hele wereld. Waaronder het Verenigd Koninkrijk de Verenigde Statendata.gov.uk de Europeese Unie publicdata.eu, de Braziliaanse dados.gov.br,en Nederlandse " -"overheid.

CKAN: http://ckan.org/
CKAN Tour: http://ckan.org/tour/
Features " +"href=\"http://dados.gov.br/\">dados.gov.br,en Nederlandse overheid.

" +"

CKAN: http://ckan.org/
CKAN Tour: " +"http://ckan.org/tour/
Features " "overzicht: http://ckan.org/features/

" @@ -3252,12 +3258,11 @@ msgstr "Welkom bij CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Dit is een mooie inleidende pararaaf over CKAN of de site in het " -"algemeen. Tot op heden hebben we nog geen copy hier, maar dit zal " -"binnenkort komen." +"Dit is een mooie inleidende pararaaf over CKAN of de site in het algemeen. " +"Tot op heden hebben we nog geen copy hier, maar dit zal binnenkort komen." #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3302,8 +3307,8 @@ msgstr "Site logo" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "U kan hiet Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Admin: Kan datasets toevoegen/bewerken/verwijderen " -"en leden van organisaties beheren.

Editor: Kan " -"datasets toevoegen en bewerken, maar kan de leden van organisaties niet " -"beheren.

Member: Kan de datasets van organisaties" -" bekijken , maar niet toevoegen.

" +"

Admin: Kan datasets toevoegen/bewerken/verwijderen en " +"leden van organisaties beheren.

Editor: Kan datasets" +" toevoegen en bewerken, maar kan de leden van organisaties niet beheren.

" +"

Member: Kan de datasets van organisaties bekijken , " +"maar niet toevoegen.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3479,29 +3484,29 @@ msgstr "Wat zijn organisaties?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Organisaties zijn afdelingen die datasets publiceren (bv. de afdeling" -" Volksgezondheid). Dit betekent dat de datasets gepubliceerd en beheerd " +"

Organisaties zijn afdelingen die datasets publiceren (bv. de afdeling " +"Volksgezondheid). Dit betekent dat de datasets gepubliceerd en beheerd " "kunnen worden door een afdeling in plaats van een enkele gebruiker.

" -"

Binnen organisaties kunnen beheerders rollen toewijzen aan leden. " -"Hiermee geven zij leden toestemming om datasets te publiceren (bv. " -"Centraal Bureau voor de Statistiek).

" +"

Binnen organisaties kunnen beheerders rollen toewijzen aan leden. Hiermee" +" geven zij leden toestemming om datasets te publiceren (bv. Centraal Bureau " +"voor de Statistiek).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "CKAN organisaties worden gebruikt om collecties van datasets te maken, " -"beheren en publiceren. Gebruikers kunnen meerdere rollen hebben binnen " -"een organisatie, afhankelijk van een autorisatielevel om toe te voegen, " +"beheren en publiceren. Gebruikers kunnen meerdere rollen hebben binnen een " +"organisatie, afhankelijk van een autorisatielevel om toe te voegen, " "wijzigen en publiceren." #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3518,9 +3523,8 @@ msgstr "Informatie over de organisatie..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Weet u zeker dat u deze organisatie wilt verwijderen? Hierdoor worden ook de" " publieke en prive datasets van deze organisatie verwijderd." @@ -3545,13 +3549,13 @@ msgstr "Wat zijn datasets?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "Een CKAN dataset is een verzameling van data bronnen (zoals bestanden), " -"samen met een beschrijving en andere informatie, op een vaste URL. " -"Datasets is datgene dat gebruikers zien wanneer ze zoeken voor data." +"samen met een beschrijving en andere informatie, op een vaste URL. Datasets " +"is datgene dat gebruikers zien wanneer ze zoeken voor data." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3632,15 +3636,15 @@ msgstr "Overzicht toevoegen" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Data Explorer views kunnen traag en onbetrouwbaar zijn tenzij de " -"DataStore extensie actief is. Zie de Data Explorer" -" documentatie voor meer informatie. " +"Data Explorer views kunnen traag en onbetrouwbaar zijn tenzij de DataStore " +"extensie actief is. Zie de Data Explorer " +"documentatie voor meer informatie. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3650,13 +3654,11 @@ msgstr "Toevoegen" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Dit is een oude revisie van de dataset zoals bewerkt op %(timestamp)s. " -"Het kan aanzienlijk verschillen van de huidige " -"revisie." +"Dit is een oude revisie van de dataset zoals bewerkt op %(timestamp)s. Het " +"kan aanzienlijk verschillen van de huidige revisie." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3727,9 +3729,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3797,11 +3799,11 @@ msgstr "Voeg een nieuwe bron toe" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

Deze dataset heeft geen data, Voeg" -" toe

" +"

Deze dataset heeft geen data, Voeg " +"toe

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3892,7 +3894,8 @@ msgstr "Er zijn geen organisaties waaraan u deze dataset kan toewijzen." msgid "" "Ask a system administrator to create an organization before you can " "continue." -msgstr "Vraag een systeembeheerder een organisatie te maken voor u verder gaat." +msgstr "" +"Vraag een systeembeheerder een organisatie te maken voor u verder gaat." #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -3946,12 +3949,11 @@ msgstr "Actief" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4062,7 +4064,8 @@ msgstr "Wat is een bron?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." -msgstr "Een bron kan een bestand of link zijn die over nuttige informatie beschikt" +msgstr "" +"Een bron kan een bestand of link zijn die over nuttige informatie beschikt" #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4287,8 +4290,8 @@ msgstr "

Probeer een andere zoekopdracht.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4435,11 +4438,9 @@ msgstr "Accountinformatie" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Jouw profiel laat andere CKAN gebruikers zien wie jij bent en wat jij " -"doet." +"Jouw profiel laat andere CKAN gebruikers zien wie jij bent en wat jij doet." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4565,7 +4566,8 @@ msgstr "Je bent al ingelogd" #: ckan/templates/user/logout_first.html:24 msgid "You need to log out before you can log in with another account." -msgstr "Je moet eerst uitloggen voordat je kan inloggen met een andere account." +msgstr "" +"Je moet eerst uitloggen voordat je kan inloggen met een andere account." #: ckan/templates/user/logout_first.html:25 msgid "Log out now" @@ -4664,11 +4666,11 @@ msgstr "Herstel aanvragen" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Voor je gebruikersnaam in en wij sturen je een e-mail met een link naar " -"een nieuw wachtwoord." +"Voor je gebruikersnaam in en wij sturen je een e-mail met een link naar een " +"nieuw wachtwoord." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4694,4 +4696,3 @@ msgstr "Zoek Gebruikers" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/no/LC_MESSAGES/ckan.mo b/ckan/i18n/no/LC_MESSAGES/ckan.mo index 6741da2a72d..3bb1174cf30 100644 Binary files a/ckan/i18n/no/LC_MESSAGES/ckan.mo and b/ckan/i18n/no/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/no/LC_MESSAGES/ckan.po b/ckan/i18n/no/LC_MESSAGES/ckan.po index 17b34cbced8..11dfe04a455 100644 --- a/ckan/i18n/no/LC_MESSAGES/ckan.po +++ b/ckan/i18n/no/LC_MESSAGES/ckan.po @@ -1,10 +1,12 @@ -# Norwegian Bokmål (Norway) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# Hilde Austlid , 2019 +# #, fuzzy msgid "" msgstr "" @@ -12,19 +14,18 @@ msgstr "" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" -"Last-Translator: Adrià Mercader , 2018\n" -"Language: nb_NO\n" -"Language-Team: Norwegian (https://www.transifex.com/okfn/teams/11162/no/)" -"\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Last-Translator: Hilde Austlid , 2019\n" +"Language-Team: Norwegian (https://www.transifex.com/okfn/teams/11162/no/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" -msgstr "Fullførstikkorauthori" +msgstr "Fullfør" #: ckanext/datapusher/helpers.py:22 msgid "Pending" @@ -116,19 +117,19 @@ msgstr "Fant ikke DataStore-ressurs" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" "Ugyldige data (f.eks. et tall utenfor tillatt verdi eller tekst i et felt " "for tall)." #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Ugyldige data (f.eks. et tall utenfor tillatt verdi eller tekst i et felt" -" for tall)." +"Ugyldige data (f.eks. et tall utenfor tillatt verdi eller tekst i et felt " +"for tall)." #: ckanext/datastore/logic/action.py:258 ckanext/datastore/logic/action.py:286 #: ckanext/datastore/logic/action.py:344 ckanext/datastore/logic/action.py:457 @@ -151,8 +152,7 @@ msgstr "Få tilgang til ressursdata via et web-API med sterk query-støtte" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Les mer i main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Les mer i dokumentasjonen for data-API i CKAN og " -"DataStore.

" +"target=\"_blank\">dokumentasjonen for data-API i CKAN og DataStore.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -675,7 +673,8 @@ msgstr "Nettside-adresse" #: ckanext/webpageview/theme/templates/webpage_form.html:3 msgid "eg. http://example.com (if blank uses resource url)" -msgstr "f.eks. http://example.com (hvis denne er tom brukes URL til ressursen)" +msgstr "" +"f.eks. http://example.com (hvis denne er tom brukes URL til ressursen)" #: ckan/templates/dataviewer/snippets/data_preview.html:23 #: ckan/templates/package/snippets/resource_view.html:56 @@ -1055,8 +1054,8 @@ msgstr "Oppdater profilen din og legg til e-postadressen din. #, python-format msgid "%s uses your email address if you need to reset your password." msgstr "" -"%s bruker e-postadressen din i tilfelle du trenger å tilbakestille " -"passordet ditt." +"%s bruker e-postadressen din i tilfelle du trenger å tilbakestille passordet" +" ditt." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1086,7 +1085,8 @@ msgstr "Ugyldig versjonsformat: %r" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." -msgstr "Støtter ikke visning av datasett av typen \"{package_type}\" ({file_!r})." +msgstr "" +"Støtter ikke visning av datasett av typen \"{package_type}\" ({file_!r})." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1277,8 +1277,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Bruker \"%s\" er nå registrert, men du er fortsatt logget inn som \"%s\" " -"fra før" +"Bruker \"%s\" er nå registrert, men du er fortsatt logget inn som \"%s\" fra" +" før" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1785,8 +1785,8 @@ msgstr "Navnet må inneholde maksimalt %i tegn" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "Må bestå av små bokstaver, tall og og disse symbolene: -_" #: ckan/logic/validators.py:361 @@ -1831,8 +1831,7 @@ msgstr "Lengden til stikkordet \"%s\" er mer enn maksimalt %i" #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Stikkordet \"%s\" må skrives med alfanumeriske tegn (ascii) og symboler: " -"-_." +"Stikkordet \"%s\" må skrives med alfanumeriske tegn (ascii) og symboler: -_." #: ckan/logic/validators.py:436 #, python-format @@ -1926,8 +1925,8 @@ msgstr "ikke en streng" #: ckan/logic/validators.py:782 msgid "This parent would create a loop in the hierarchy" msgstr "" -"Kan ikke sette dette elementet som overordnet, det ville føre til en " -"sirkel i hierarkiet" +"Kan ikke sette dette elementet som overordnet, det ville føre til en sirkel " +"i hierarkiet" #: ckan/logic/validators.py:792 msgid "\"filter_fields\" and \"filter_values\" should have the same length" @@ -1987,7 +1986,8 @@ msgstr "Rangeringen må være mellom %i og %i." #: ckan/logic/action/create.py:1064 msgid "Error sending the invite email, the user was not created: {0}" -msgstr "Klarte ikke å sende invitasjons-e-post, brukeren ble ikke opprettet: {0}" +msgstr "" +"Klarte ikke å sende invitasjons-e-post, brukeren ble ikke opprettet: {0}" #: ckan/logic/action/create.py:1277 ckan/logic/action/create.py:1284 msgid "You must be logged in to follow users" @@ -2124,7 +2124,8 @@ msgstr "Ingen datakilde funnet for denne ressursen, kan ikke sjekke aut." #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" -msgstr "Bruker %s har ikke tillatelse til å opprette ressurser for datasettet %s" +msgstr "" +"Bruker %s har ikke tillatelse til å opprette ressurser for datasettet %s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2547,8 +2548,8 @@ msgstr "Finner ikke data for opplastet fil" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Du laster opp en fil. Er du sikker på at du vil forlate siden og stoppe " "denne opplastingen?" @@ -2583,6 +2584,99 @@ msgstr "Vis mer" msgid "Hide" msgstr "Skjul" +#: ckan/public-bs2/base/test/spec/i18n.spec.js:13 +#: ckan/public-bs2/base/test/spec/module.spec.js:385 +#: ckan/public/base/test/spec/i18n.spec.js:13 +#: ckan/public/base/test/spec/module.spec.js:385 +msgid "foo" +msgstr "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:17 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:46 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:50 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:54 +#: ckan/public/base/test/spec/i18n.spec.js:17 +#: ckan/public/base/test/spec/i18n.spec.js:46 +#: ckan/public/base/test/spec/i18n.spec.js:50 +#: ckan/public/base/test/spec/i18n.spec.js:54 +msgid "no translation" +msgid_plural "no translations" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:22 +#: ckan/public/base/test/spec/i18n.spec.js:22 +#, python-format +msgid "hello %(name)s!" +msgstr "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:29 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:76 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:81 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:86 +#: ckan/public/base/test/spec/i18n.spec.js:29 +#: ckan/public/base/test/spec/i18n.spec.js:76 +#: ckan/public/base/test/spec/i18n.spec.js:81 +#: ckan/public/base/test/spec/i18n.spec.js:86 +#, python-format +msgid "no %(attr)s translation" +msgid_plural "no %(attr)s translations" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:39 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:40 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:41 +#: ckan/public-bs2/base/test/spec/module.spec.js:395 +#: ckan/public-bs2/base/test/spec/module.spec.js:396 +#: ckan/public-bs2/base/test/spec/module.spec.js:397 +#: ckan/public/base/test/spec/i18n.spec.js:39 +#: ckan/public/base/test/spec/i18n.spec.js:40 +#: ckan/public/base/test/spec/i18n.spec.js:41 +#: ckan/public/base/test/spec/module.spec.js:395 +#: ckan/public/base/test/spec/module.spec.js:396 +#: ckan/public/base/test/spec/module.spec.js:397 +msgid "bar" +msgid_plural "bars" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:61 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:65 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:69 +#: ckan/public/base/test/spec/i18n.spec.js:61 +#: ckan/public/base/test/spec/i18n.spec.js:65 +#: ckan/public/base/test/spec/i18n.spec.js:69 +#, python-format +msgid "%(color)s shirt" +msgid_plural "%(color)s shirts" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:93 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:94 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:95 +#: ckan/public/base/test/spec/i18n.spec.js:93 +#: ckan/public/base/test/spec/i18n.spec.js:94 +#: ckan/public/base/test/spec/i18n.spec.js:95 +#, python-format +msgid "%(num)d item" +msgid_plural "%(num)d items" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:100 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:105 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:110 +#: ckan/public/base/test/spec/i18n.spec.js:100 +#: ckan/public/base/test/spec/i18n.spec.js:105 +#: ckan/public/base/test/spec/i18n.spec.js:110 +#, python-format +msgid "%(num)d missing translation" +msgid_plural "%(num)d missing translations" +msgstr[0] "%(num)d manglende oversettelse" +msgstr[1] "%(num)d manglende oversettelser" + #: ckan/templates/error_document_template.html:3 #, python-format msgid "Error %(error_code)s" @@ -2727,37 +2821,36 @@ msgstr "Oppsett-valg for CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Nettstedets tittel: Dette er navnet på dette CKAN-" "nettstedet. Det dukker opp forskjellige steder rundt omkring i CKAN.

" -"

Stil: Velg blant flere varianter av fargekart for å " -"få en rask tilpasning av utseendet.

Logo: Dette " -"er logoen som vises i toppteksten på alle sidene.

" -"

Om: Denne teksten vises på om-siden.

Introtekst: Denne teksten vises " -"på hjemmesiden, og er en første informasjon " -"til alle besøkende.

Egendefinert CSS: Dette er en" -" CSS-blokk som settes inn i i <head>-tagten på alle " -"sidene. Hvis du vil styre utseendet mer fullstendig, les dokumentasjonen.

" -"

Hjemmeside: Her velger du en forhåndsdefinert layout " -"for modulene som vises på hjemmesiden.

" +"

Stil: Velg blant flere varianter av fargekart for å få " +"en rask tilpasning av utseendet.

Logo: Dette er " +"logoen som vises i toppteksten på alle sidene.

Om: " +"Denne teksten vises på om-siden.

" +"

Introtekst: Denne teksten vises på hjemmesiden, og er en første informasjon til alle " +"besøkende.

Egendefinert CSS: Dette er en CSS-blokk " +"som settes inn i i <head>-tagten på alle sidene. Hvis du " +"vil styre utseendet mer fullstendig, les dokumentasjonen.

" +"

Hjemmeside: Her velger du en forhåndsdefinert layout for" +" modulene som vises på hjemmesiden.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2772,13 +2865,12 @@ msgstr "Administrer CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Som sysadmin-bruker har du full kontroll over denne CKAN-" -"installasjonen. Vær sikker på at du vet hva du gjør!

Du finner mer" -" informasjon i CKANs sysadmin-" +"

Som sysadmin-bruker har du full kontroll over denne CKAN-installasjonen." +" Vær sikker på at du vet hva du gjør!

Du finner mer informasjon i " +"CKANs sysadmin-" "dokumentasjon

" #: ckan/templates/admin/trash.html:20 @@ -2942,8 +3034,9 @@ msgstr "Er du sikker på at du vil slette medlem - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Administrer" @@ -2975,7 +3068,8 @@ msgstr "Søk i grupper..." msgid "There are currently no groups for this site" msgstr "Det er for tiden ingen grupper for dette nettstedet" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Hva med å opprette en?" @@ -3026,19 +3120,22 @@ msgstr "Ny bruker" msgid "If you wish to invite a new user, enter their email address." msgstr "Hvis du vil invitere en ny bruker, oppgi e-postadressen deres" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rolle" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Er du sikker på at du vil slette dette medlemmet?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3059,13 +3156,13 @@ msgstr "Hva er roller?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Admin: Kan redigere informasjon om gruppa og " -"administrere medlemmer av organisasjonen.

Medlem:" -" Kan legge til og fjerne datasett fra grupper.

" +"administrere medlemmer av organisasjonen.

Medlem: " +"Kan legge til og fjerne datasett fra grupper.

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3135,15 +3232,15 @@ msgstr "Hva er grupper?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" "Du kan bruke grupper i CKAN for å opprette og administrere samlinger av " "datasett. Du kan for eksempel gruppere datasett for et bestemt prosjekt " -"eller en arbeidsgruppe, et bestemt emne, eller som en enkel måte å hjelpe" -" brukere til å finne fram til datasettene dine." +"eller en arbeidsgruppe, et bestemt emne, eller som en enkel måte å hjelpe " +"brukere til å finne fram til datasettene dine." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3206,14 +3303,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3226,19 +3322,17 @@ msgstr "" "

CKAN er verdens ledende programvare for dataportaler, basert på åpen " "kildekode.

CKAN er en komplett programvareløsning som gjør data " "tilgjengelig og klar for bruk - ved å tilby verktøy som gjør det lett å " -"publisere, dele, finne og bruke data (inkludert lagring av data og " -"robuste data-APIer). CKAN er rettet mot dem som vil publisere data " -"(nasjonale og regionale myndigheter, bedrifter og organisasjoner) og åpne" -" dem opp for viderebruk.

CKAN brukes av myndigheter og " -"brukergrupper verden over, og brukes til en rekke offisielle og " -"brukerdrevne dataportaler, som Storbritannias data.gov.uk og EUs

CKAN brukes av myndigheter og brukergrupper verden over, " +"og brukes til en rekke offisielle og brukerdrevne dataportaler, som " +"Storbritannias data.gov.uk og EUs publicdata.eu, den brasilianske dados.gov.br, så vel som portaler for " -"byer og kommuner i USA, Storbritannia, Argentina, Finland og andre " -"steder.

CKAN: http://ckan.org/ CKAN Tour: http://ckan.org/tour/
Features " +"href=\"http://dados.gov.br/\">dados.gov.br, så vel som portaler for byer" +" og kommuner i USA, Storbritannia, Argentina, Finland og andre steder.

" +"

CKAN: http://ckan.org/
CKAN Tour: " +"http://ckan.org/tour/
Features " "overview: http://ckan.org/features/

" @@ -3248,11 +3342,11 @@ msgstr "Velkommen til CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Dette er en fin innledning til CKAN eller om nettstedet. Snart har vi en " -"bra tekst klar her." +"Dette er en fin innledning til CKAN eller om nettstedet. Snart har vi en bra" +" tekst klar her." #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3266,6 +3360,10 @@ msgstr "F.eks. miljø" msgid "Search data" msgstr "Søk i data" +#: ckan/templates/home/snippets/search.html:8 +msgid "Search datasets" +msgstr "Søk i datasett" + #: ckan/templates/home/snippets/search.html:16 msgid "Popular tags" msgstr "Populære stikkord" @@ -3297,13 +3395,13 @@ msgstr "Logo for nettstedet" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"Du kan bruke Markdown-formatering her" +"Du kan bruke Markdown-formatering her" #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3372,8 +3470,8 @@ msgstr "Utkast" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privat" @@ -3427,14 +3525,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Admin: Kan legge til, redigere og slette datasett, og" -" administrere gruppemedlemmer.

Redaktør: Kan " -"legge til og redigere datasett, men ikke administrere " -"gruppemedlemmer.

Medlem: Kan se gruppens private " -"datasett, men ikke legge til nye datasett.

" +"

Admin: Kan legge til, redigere og slette datasett, og " +"administrere gruppemedlemmer.

Redaktør: Kan legge " +"til og redigere datasett, men ikke administrere gruppemedlemmer.

" +"

Medlem: Kan se gruppens private datasett, men ikke legge" +" til nye datasett.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3474,25 +3572,25 @@ msgstr "Hva er organisasjoner?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Organisasjoner fungerer som publiserende enheter for datasett. Dette " "betyr at datasett kan bli publisert av og tilhøre en enhet (f.eks. " "Helsedirektoratet eller Statistisk sentralbyrå) i stedet for en enkelt " -"bruker.

Innen en organisasjon kan administratorer tildele roller og" -" gi tillatelser til medlemmene sine, slik at enkeltbrukere kan å " -"publisere datasett fra organisasjonen sin.

" +"bruker.

Innen en organisasjon kan administratorer tildele roller og gi" +" tillatelser til medlemmene sine, slik at enkeltbrukere kan å publisere " +"datasett fra organisasjonen sin.

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Organisasjoner i CKAN brukes for å opprette, administrere og publisere " "samlinger av datasett. Brukere kan ha forskjellige roller innen en " @@ -3513,9 +3611,8 @@ msgstr "Litt informasjon om min organisasjon..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Er du sikker på at du vil slette denne organisasjon? Dette vil slette alle " "de offentlige og private datasettene som er knyttet til denne " @@ -3541,13 +3638,13 @@ msgstr "Hva er datasett?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Datasett i CKAN er en samling av dataressurser (f.eks. filer), sammen med" -" beskrivelse og annen informasjon, på en fast URL. Datasett er det " -"brukere ser når de søker etter data." +"Datasett i CKAN er en samling av dataressurser (f.eks. filer), sammen med " +"beskrivelse og annen informasjon, på en fast URL. Datasett er det brukere " +"ser når de søker etter data." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3628,15 +3725,15 @@ msgstr "Opprett visning" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Data Explorer-visninger kan være trege og upålitelige hvis ikke " -"DataStore-tillegget er installert. Les mer i dokumentasjonen for Data Explorer. " +"Data Explorer-visninger kan være trege og upålitelige hvis ikke DataStore-" +"tillegget er installert. Les mer i dokumentasjonen for Data " +"Explorer. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3646,13 +3743,11 @@ msgstr "Legg til" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Dette er en eldre versjon av dette datasettet, redigert %(timestamp)s. " -"Det kan være forskjellig fra den nåværende " -"versjonen." +"Dette er en eldre versjon av dette datasettet, redigert %(timestamp)s. Det " +"kan være forskjellig fra den nåværende versjonen." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3718,19 +3813,18 @@ msgstr "Det har ikke blitt laget noen visning som passer for denne ressursen" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" msgstr "" -"Nettstedsadministratorene har kanskje ikke aktivert de nødvendige " -"tilleggene for visningen." +"Nettstedsadministratorene har kanskje ikke aktivert de nødvendige tilleggene" +" for visningen." #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"Hvis en visning krever DataStore kan det hende at DataStore-tillegget " -"ikke er aktivert på nettstedet, eller dataene har ikke blitt importert " -"inn i DataStore ennå, eller DataStore er ikke ferdig med å behandle " -"dataene." +"Hvis en visning krever DataStore kan det hende at DataStore-tillegget ikke " +"er aktivert på nettstedet, eller dataene har ikke blitt importert inn i " +"DataStore ennå, eller DataStore er ikke ferdig med å behandle dataene." #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3797,11 +3891,11 @@ msgstr "Legg til ny ressurs" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

Dette datasettet har ingen data, hva med å legge til noen?

" +"

Dette datasettet har ingen data, hva" +" med å legge til noen?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3886,7 +3980,8 @@ msgstr "Opprett ny organisasjon" #: ckan/templates/package/snippets/cannot_create_package.html:18 msgid "There are no organizations to which you can assign this dataset." -msgstr "Det finnes ikke noen organisasjoner som du kan knytte dette datasettet til" +msgstr "" +"Det finnes ikke noen organisasjoner som du kan knytte dette datasettet til" #: ckan/templates/package/snippets/cannot_create_package.html:19 msgid "" @@ -3946,16 +4041,15 @@ msgstr "Aktiv" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Datalisensen du velger over gjelder kun innholdet av ressursfilene" -" du legger til i dette datasettet. Ved å fylle ut dette skjemaet godtar " -"du å publisere metadataene under lisensen Datalisensen
du velger over gjelder kun innholdet av ressursfilene du" +" legger til i dette datasettet. Ved å fylle ut dette skjemaet godtar du å " +"publisere metadataene under lisensen Open Database " "License." @@ -4267,8 +4361,8 @@ msgstr "Lisens er ikke oppgitt" #: ckan/templates/snippets/license.html:28 msgid "This dataset satisfies the Open Definition." msgstr "" -"Dette datasettet tilfredsstiller \"Open Definition\", en definisjon av " -"åpen kunnskap." +"Dette datasettet tilfredsstiller \"Open Definition\", en definisjon av åpen " +"kunnskap." #: ckan/templates/snippets/organization.html:48 msgid "There is no description for this organization" @@ -4298,11 +4392,11 @@ msgstr "

Prøv et annet søk.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" -"

Det oppstod en feil under " -"søkinga. Prøv igjen.

" +"

Det oppstod en feil under søkinga. " +"Prøv igjen.

" #: ckan/templates/snippets/search_result_text.html:15 msgid "{number} dataset found for \"{query}\"" @@ -4448,11 +4542,9 @@ msgstr "Kontoinformasjon" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"I profilen kan du fortelle andre CKAN-brukere om hvem du er og hva du " -"gjør." +"I profilen kan du fortelle andre CKAN-brukere om hvem du er og hva du gjør." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4505,8 +4597,7 @@ msgstr "Er du sikker på at du vil slette denne brukeren?" #: ckan/templates/user/edit_user_form.html:50 msgid "Are you sure you want to regenerate the API key?" msgstr "" -"Er du sikker på at du vil lage ny API-nøkkel? (Den vil erstatte den " -"gamle.)" +"Er du sikker på at du vil lage ny API-nøkkel? (Den vil erstatte den gamle.)" #: ckan/templates/user/edit_user_form.html:50 msgid "Regenerate API Key" @@ -4677,8 +4768,8 @@ msgstr "Be om tilbakestilling" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Oppgi brukernavnet ditt, så sender vi deg en e-post med lenke som du kan " "bruke for å velge nytt passord." @@ -4707,4 +4798,3 @@ msgstr "Søk brukere" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/pl/LC_MESSAGES/ckan.po b/ckan/i18n/pl/LC_MESSAGES/ckan.po index 72fbfe79457..76bb6f18dec 100644 --- a/ckan/i18n/pl/LC_MESSAGES/ckan.po +++ b/ckan/i18n/pl/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Polish translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Teiron, 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,15 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Teiron, 2018\n" -"Language: pl\n" "Language-Team: Polish (https://www.transifex.com/okfn/teams/11162/pl/)\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && " -"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " -"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -118,14 +117,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -150,8 +149,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -160,8 +158,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -270,8 +268,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -751,8 +748,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Nie można unicestwić pakietu %s ponieważ wersja %s posiada pakiety, które" -" nie zostały usunięte %s" +"Nie można unicestwić pakietu %s ponieważ wersja %s posiada pakiety, które " +"nie zostały usunięte %s" #: ckan/controllers/admin.py:183 #, python-format @@ -870,7 +867,8 @@ msgstr "" #: ckan/controllers/api.py:609 msgid "Request params must be in form of a json encoded dictionary." -msgstr "Parametry żądania muszą mieć postać tablicy asocjacyjnej w formacie json." +msgstr "" +"Parametry żądania muszą mieć postać tablicy asocjacyjnej w formacie json." #: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 #: ckan/controllers/group.py:226 ckan/controllers/group.py:394 @@ -1312,7 +1310,8 @@ msgstr "Brak użytkownika: %s" #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." -msgstr "Kod resetujący powinien znajdować się w Twojej skrzyce e-mail. Sprawdź ją." +msgstr "" +"Kod resetujący powinien znajdować się w Twojej skrzyce e-mail. Sprawdź ją." #: ckan/controllers/user.py:503 #, python-format @@ -1792,8 +1791,8 @@ msgstr "Nazwa może zawierać maksymalnie %i znaków" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1974,8 +1973,7 @@ msgstr "" #: ckan/logic/action/create.py:893 msgid "You must supply a package id or name (parameter \"package\")." msgstr "" -"Musisz określić identyfikator pakietu lub jego nazwę (parametr " -"\"pakiet\")." +"Musisz określić identyfikator pakietu lub jego nazwę (parametr \"pakiet\")." #: ckan/logic/action/create.py:896 msgid "You must supply a rating (parameter \"rating\")." @@ -2124,7 +2122,8 @@ msgstr "" #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." -msgstr "Nie znaleziono pakietu dla tego zasobu, nie można sprawdzić autoryzacji." +msgstr "" +"Nie znaleziono pakietu dla tego zasobu, nie można sprawdzić autoryzacji." #: ckan/logic/auth/create.py:76 #, python-format @@ -2554,8 +2553,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2736,22 +2735,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2767,9 +2765,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2933,8 +2930,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -2966,7 +2964,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -3015,19 +3014,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3048,8 +3050,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3121,10 +3123,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3188,14 +3190,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3212,8 +3213,8 @@ msgstr "Witaj w CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3259,8 +3260,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3331,8 +3332,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3386,8 +3387,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3430,19 +3431,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3459,9 +3460,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3484,9 +3484,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3568,9 +3568,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3581,9 +3581,8 @@ msgstr "Dodaj" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3653,9 +3652,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3723,8 +3722,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3864,12 +3863,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4205,8 +4203,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4365,8 +4363,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4590,8 +4587,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4618,4 +4615,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/pt_BR/LC_MESSAGES/ckan.mo b/ckan/i18n/pt_BR/LC_MESSAGES/ckan.mo index 377856c2beb..e418e488f3d 100644 Binary files a/ckan/i18n/pt_BR/LC_MESSAGES/ckan.mo and b/ckan/i18n/pt_BR/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/pt_BR/LC_MESSAGES/ckan.po b/ckan/i18n/pt_BR/LC_MESSAGES/ckan.po index 7e2a9551388..f302e0ffabf 100644 --- a/ckan/i18n/pt_BR/LC_MESSAGES/ckan.po +++ b/ckan/i18n/pt_BR/LC_MESSAGES/ckan.po @@ -1,10 +1,12 @@ -# Portuguese (Brazil) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# Glaucio Rocha , 2018 +# #, fuzzy msgid "" msgstr "" @@ -12,15 +14,14 @@ msgstr "" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" -"Last-Translator: Adrià Mercader , 2018\n" -"Language: pt_BR\n" -"Language-Team: Portuguese (Brazil) " -"(https://www.transifex.com/okfn/teams/11162/pt_BR/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Last-Translator: Glaucio Rocha , 2018\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/okfn/teams/11162/pt_BR/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +117,17 @@ msgstr "recurso DataStore não encontrado" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Os dados são inválidos (por exemplo: um valor numérico está fora dos " -"limites ou foi inserido num campo de texto)." +"Os dados são inválidos (por exemplo: um valor numérico está fora dos limites" +" ou foi inserido num campo de texto)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -150,8 +151,7 @@ msgstr "Acesse recursos pela web API com poderoso suporte a consultas" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Maiores informações no main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Maiores informações no documentação principal da API de dados do CKAN Data API" -" e do DataStore.

" +"target=\"_blank\">documentação principal da API de dados do CKAN Data API e " +"do DataStore.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -410,8 +409,8 @@ msgstr "0 Conjunto de Dados" #: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 msgid "CKAN's data previewing tool has many powerful features" msgstr "" -"A ferramenta de pré-visualização de dados do CKAN tem muitas " -"funcionalidades poderosas" +"A ferramenta de pré-visualização de dados do CKAN tem muitas funcionalidades" +" poderosas" #: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 #: ckan/templates/group/snippets/info.html:32 @@ -881,8 +880,8 @@ msgstr "Valor qjson mal formado: %r" #: ckan/controllers/api.py:609 msgid "Request params must be in form of a json encoded dictionary." msgstr "" -"Parâmetros de requisição devem estar na forma de um dicionário codificado" -" em json." +"Parâmetros de requisição devem estar na forma de um dicionário codificado em" +" json." #: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 #: ckan/controllers/group.py:226 ckan/controllers/group.py:394 @@ -1049,19 +1048,21 @@ msgstr "Não autorizado a visualizar os seguidores %s" #: ckan/controllers/home.py:35 msgid "This site is currently off-line. Database is not initialised." -msgstr "Este site está fora do ar no momento. Base de dados não está inicializada." +msgstr "" +"Este site está fora do ar no momento. Base de dados não está inicializada." #: ckan/controllers/home.py:73 #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Por favor atualize o seu perfil e adicione o seu " -"endereço de e-mail. " +"Por favor atualize o seu perfil e adicione o seu endereço" +" de e-mail. " #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." -msgstr "%s usa o seu endereço de e-mail se você precisar redefinir a sua senha." +msgstr "" +"%s usa o seu endereço de e-mail se você precisar redefinir a sua senha." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1328,7 +1329,8 @@ msgstr "Não existe usuário: %s" #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." -msgstr "Por favor verifique sua caixa de entrada para um código de redefinição." +msgstr "" +"Por favor verifique sua caixa de entrada para um código de redefinição." #: ckan/controllers/user.py:503 #, python-format @@ -1792,8 +1794,8 @@ msgstr "Nome tem que ter um máximo de %i caracteres" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" "Precisa conter apenas caracteres alfanuméricos (ascii) e os seguintes " "símbolos: -_" @@ -1862,9 +1864,9 @@ msgstr "Por favor forneça as duas senhas" msgid "Passwords must be strings" msgstr "Senhas devem ser strings" -#: ckan/logic/validators.py:582 -msgid "Your password must be 4 characters or longer" -msgstr "Sua senha deve conter no mínimo 4 caracteres" +#: ckan/logic/validators.py:589 +msgid "Your password must be 8 characters or longer" +msgstr "Sua senha deve possuir 8 caracteres ou mais" #: ckan/logic/validators.py:590 msgid "The passwords you entered do not match" @@ -1891,8 +1893,8 @@ msgstr "Esse nome de vocabulário já está sendo utilizado." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"Não é possível alterar o valor da chave de %s para %s. Essa chave é " -"somente para leitura." +"Não é possível alterar o valor da chave de %s para %s. Essa chave é somente " +"para leitura." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -1942,9 +1944,7 @@ msgstr "\"filter_fields\" e \"filter_values\" devem ter o mesmo comprimento" #: ckan/logic/validators.py:803 msgid "\"filter_fields\" is required when \"filter_values\" is filled" -msgstr "" -"\"filter_fields\" é obrigatório quando \"filter_values\" estiver " -"preenchido" +msgstr "\"filter_fields\" é obrigatório quando \"filter_values\" estiver preenchido" #: ckan/logic/validators.py:806 msgid "\"filter_values\" is required when \"filter_fields\" is filled" @@ -1996,7 +1996,8 @@ msgstr "Avaliação deve ser entre %i e %i." #: ckan/logic/action/create.py:1064 msgid "Error sending the invite email, the user was not created: {0}" -msgstr "Houve um erro ao enviar o e-mail de convite, o usuário não foi criado: {0}" +msgstr "" +"Houve um erro ao enviar o e-mail de convite, o usuário não foi criado: {0}" #: ckan/logic/action/create.py:1277 ckan/logic/action/create.py:1284 msgid "You must be logged in to follow users" @@ -2042,8 +2043,12 @@ msgstr "API REST: Excluir %s" msgid "REST API: Delete Member: %s" msgstr "API REST: Excluir membro: %s" -#: ckan/logic/action/delete.py:544 ckan/logic/action/delete.py:570 -#: ckan/logic/action/get.py:2482 ckan/logic/action/update.py:953 +#: ckan/logic/action/delete.py:358 +msgid "Organization cannot be deleted while it still has datasets" +msgstr "Organização não pode ser excluída enquanto possuir conjuntos de dados" + +#: ckan/logic/action/delete.py:560 ckan/logic/action/delete.py:586 +#: ckan/logic/action/get.py:2432 ckan/logic/action/update.py:906 msgid "id not in data" msgstr "id não está nos dados" @@ -2140,8 +2145,8 @@ msgstr "" #, python-format msgid "User %s not authorized to create resources on dataset %s" msgstr "" -"Usuário(a) %s não está autorizado(a) a criar recursos no conjunto de " -"dados %s" +"Usuário(a) %s não está autorizado(a) a criar recursos no conjunto de dados " +"%s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2195,7 +2200,8 @@ msgstr "Usuário %s não está autorizado a excluir o recurso %s" #: ckan/logic/auth/delete.py:56 msgid "Resource view not found, cannot check auth." -msgstr "Visão de recurso não encontrada, não é possível verificar a autenticação." +msgstr "" +"Visão de recurso não encontrada, não é possível verificar a autenticação." #: ckan/logic/auth/delete.py:73 #, python-format @@ -2253,7 +2259,8 @@ msgstr "Usuário(a) %s não está autorizado(a) a ler o grupo %s" #: ckan/logic/auth/get.py:252 msgid "You must be logged in to access your dashboard." -msgstr "Você precisa estar autenticado para acessar o seu painel de controle. " +msgstr "" +"Você precisa estar autenticado para acessar o seu painel de controle. " #: ckan/logic/auth/update.py:39 #, python-format @@ -2311,7 +2318,8 @@ msgstr "Usuário %s não está autorizado a atualizar a tabela " #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" -msgstr "O usuário %s não está autorizado a atualizar a tabela term_translation" +msgstr "" +"O usuário %s não está autorizado a atualizar a tabela term_translation" #: ckan/logic/auth/update.py:262 msgid "Valid API key needed to edit a package" @@ -2447,7 +2455,8 @@ msgstr "Nenhum resultado encontrado" msgid "Input is too short, must be at least one character" msgid_plural "Input is too short, must be at least %(num)d characters" msgstr[0] "A entrada é curta demais, deve possuir pelo menos um caractere" -msgstr[1] "A entrada é curta demais, deve possuir pelo menos %(num)d caracteres" +msgstr[1] "" +"A entrada é curta demais, deve possuir pelo menos %(num)d caracteres" #: ckan/public/base/javascript/modules/basic-form.js:4 msgid "There are unsaved modifications to this form" @@ -2564,11 +2573,11 @@ msgstr "Não foi possível obter os dados do arquivo carregado" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Você está enviando um arquivo. Tem certeza de que quer navegar para outra" -" página e parar esse envio?" +"Você está enviando um arquivo. Tem certeza de que quer navegar para outra " +"página e parar esse envio?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2622,8 +2631,8 @@ msgid "" "Powered by CKAN" msgstr "" -"Impulsionado por CKAN" +"Impulsionado por CKAN" #: ckan/templates/header.html:12 msgid "Sysadmin settings" @@ -2744,40 +2753,39 @@ msgstr "Opções de configuração do CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Título do sítio: Este é o título dessa instância do " "CKAN Ele aparece em vários lugares em todo o CKAN.

" "

Estilo: Escolha a partir de uma lista de variações " -"simples do esquema principal de cores para conseguir um tema " -"personalizado funcionando muito rapidamente.

Logomarca do " -"sítio: Esta é a logomarca que aparece no cabeçalho de todos os " -"modelos dessa instância do CKAN.

Sobre: Esse " -"texto aparecerá na página sobre dessa " -"instância do CKAN.

Texto introdutório: Esse texto" -" aparecerá na página inicial dessa instância" -" do CKAN como uma mensagem de boas vindas aos visitantes.

" -"

CSS Personalizado: Esse é o bloco de CSS que aparece " -"na tag <head> de cada página. Se você desejar " -"personalizar os modelos mais completamente, recomendamos ler a documentação.

" -"

Página inicial: Isso é para escolher uma disposição " -"pré-definida para os módulos que aparecem na sua página inicial.

" +"simples do esquema principal de cores para conseguir um tema personalizado " +"funcionando muito rapidamente.

Logomarca do sítio: " +"Esta é a logomarca que aparece no cabeçalho de todos os modelos dessa " +"instância do CKAN.

Sobre: Esse texto aparecerá na página sobre dessa instância do CKAN.

" +"

Texto introdutório: Esse texto aparecerá na página inicial dessa instância do CKAN como uma " +"mensagem de boas vindas aos visitantes.

CSS " +"Personalizado: Esse é o bloco de CSS que aparece na tag " +"<head> de cada página. Se você desejar personalizar os " +"modelos mais completamente, recomendamos ler a documentação.

Página " +"inicial: Isso é para escolher uma disposição pré-definida para os " +"módulos que aparecem na sua página inicial.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2792,15 +2800,14 @@ msgstr "Administrar o CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Como um(a) usuário(a) administrador(a) do sistema você tem total " "controle sobre esta instância do CKAN. Proceda com cuidado!

Para " -"aconselhamento sobre o uso das funcionalidades de administrador do " -"sistema, vejao guia do " -"administrador do CKAN.

" +"aconselhamento sobre o uso das funcionalidades de administrador do sistema, " +"vejao guia do administrador " +"do CKAN.

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2965,8 +2972,9 @@ msgstr "Você tem certeza de que deseja apagar o membro - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Gerenciar" @@ -2998,7 +3006,8 @@ msgstr "Buscar grupos..." msgid "There are currently no groups for this site" msgstr "Atualmente não há grupos neste sítio" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Que tal criar um?" @@ -3047,21 +3056,25 @@ msgstr "Novo Usuário" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." -msgstr "Se você quer convidar um novo usuário, inclua o endereço de email dele." +msgstr "" +"Se você quer convidar um novo usuário, inclua o endereço de email dele." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Papel" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Você tem certeza de que deseja apagar este usuário?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3082,13 +3095,13 @@ msgstr "O que são papeis?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Administrador: Pode editar informações do grupo, bem " -"como gerenciar os membros da organização.

Membro:" -" Pode adicionar ou remover conjuntos de dados dos grupos

" +"como gerenciar os membros da organização.

Membro: " +"Pode adicionar ou remover conjuntos de dados dos grupos

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3158,16 +3171,16 @@ msgstr "O que são grupos?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Você pode usar Grupos do CKAN para criar e gerenciar coleções de " -"conjuntos de dados. Isso pode ser feito para catalogar conjuntos de dados" -" de um projeto ou time particular, ou em um tema particular, ou como uma " -"forma simples de ajudar as pessoas a encontrar e buscar seus próprios " -"conjuntos de dados." +"Você pode usar Grupos do CKAN para criar e gerenciar coleções de conjuntos " +"de dados. Isso pode ser feito para catalogar conjuntos de dados de um " +"projeto ou time particular, ou em um tema particular, ou como uma forma " +"simples de ajudar as pessoas a encontrar e buscar seus próprios conjuntos de" +" dados." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3230,14 +3243,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3248,24 +3260,23 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN é a maior plataforma para portal de dados em software livre do " -"mundo.

CKAN é uma solução completa e pronta para usar que torna os" -" dados acessíveis e utilizáveis – ao prover ferramentas para simplificar " -"a publicação, o compartilhamento, o encontro e a utilização dos dados " +"mundo.

CKAN é uma solução completa e pronta para usar que torna os " +"dados acessíveis e utilizáveis – ao prover ferramentas para simplificar a " +"publicação, o compartilhamento, o encontro e a utilização dos dados " "(incluindo o armazenamento de dados e o provimento de robustas APIs de " -"dados). CKAN está direcionado a publicadores de dados (governos nacionais" -" e regionais, companhias e organizações) que querem tornar seus dados " -"abertos e disponíveis.

CKAN é usado por governos e grupos de " -"usuários em todo o mundo e impulsiona vários portais oficiais e da " -"comunidade, incluindo portais governamentais locais, nacionais e " -"internacionais, tais como o

CKAN é usado por governos e grupos de usuários em todo " +"o mundo e impulsiona vários portais oficiais e da comunidade, incluindo " +"portais governamentais locais, nacionais e internacionais, tais como o data.gov.uk do Reino Unido, o publicdata.eu da União Europeia, o dados.gov.br do Brasil, o portal do " -"governo da Holanda, assim como sítios de cidades e municípios nos EUA, " -"Reino Unido, Argentina, Finlândia e em outros lugares.

CKAN:

CKAN: http://ckan.org/
Tour do CKAN: http://ckan.org/tour/
Visão " -"geral das funcionalidades: http://ckan.org/tour/
Visão geral " +"das funcionalidades: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3274,8 +3285,8 @@ msgstr "Bem-vindo ao CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" "Este é um belo parágrafo introdutório sobre o CKAN ou sobre o sítio em " "geral. Nós não temos uma cópia para colocar aqui, mas em breve teremos" @@ -3323,13 +3334,13 @@ msgstr "Logo do site" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"Você pode usar formatação Markdown aqui" +"Você pode usar formatação Markdown aqui" #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3398,8 +3409,8 @@ msgstr "Rascunho" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privada" @@ -3453,15 +3464,15 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Administrador: Pode adicionar/editar e excluir " "conjuntos de dados, assim como gerenciar membros da organização.

" -"

Editor: Pode adicionar e editar conjuntos de dados, " -"mas não gerenciar membros da organização.

Membro:" -" Pode ver os conjuntos de dados privados da organização, mas não " -"adicionar novos conjuntos de dados.

" +"

Editor: Pode adicionar e editar conjuntos de dados, mas " +"não gerenciar membros da organização.

Membro: Pode " +"ver os conjuntos de dados privados da organização, mas não adicionar novos " +"conjuntos de dados.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3501,29 +3512,29 @@ msgstr "O que são Organizações?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Organizações funcionam como órgãos de publicação para conjuntos de " -"dados (por exemplo, o Ministério da Saúde). Isso significa que conjuntos " -"de dados podem ser publicados por e pertencer a um órgão em vez de um " -"usuário individual.

Dentro de organizações, os administradores " -"podem atribuir papeis e autorizar seus membros, dando a usuários " -"individuais o direito de publicar conjuntos de dados daquela organização " -"específica (ex.: Instituto Brasileiro de Geografia e Estatística).

" +"

Organizações funcionam como órgãos de publicação para conjuntos de dados" +" (por exemplo, o Ministério da Saúde). Isso significa que conjuntos de dados" +" podem ser publicados por e pertencer a um órgão em vez de um usuário " +"individual.

Dentro de organizações, os administradores podem atribuir" +" papeis e autorizar seus membros, dando a usuários individuais o direito de " +"publicar conjuntos de dados daquela organização específica (ex.: Instituto " +"Brasileiro de Geografia e Estatística).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"Organizações do CKAN são usadas para criar, gerenciar e publicar coleções" -" de conjuntos de dados. Usuários podem possuir diferentes papéis em uma " +"Organizações do CKAN são usadas para criar, gerenciar e publicar coleções de" +" conjuntos de dados. Usuários podem possuir diferentes papéis em uma " "organização, dependendo do seu level de autorização para criar, editar e " "publicar." @@ -3541,12 +3552,12 @@ msgstr "Um pouco de informações sobre a minha organização..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" -"Tem certeza que deseja apagar esta Organização ? Isso irá apagar todos os " -"conjuntos de dados públicos e privados pertencentes a ela." +"Tem certeza que deseja excluir esta organização? Nota*: A exclusão não pode " +"ser executada enquanto conjuntos de dados, públicos ou privados, pertencerem" +" a esta Organização." #: ckan/templates/organization/snippets/organization_form.html:63 msgid "Save Organization" @@ -3568,14 +3579,14 @@ msgstr "O que são conjuntos de dados?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "Um conjunto de dados do CKAN é uma coleção de recursos de dados (como " -"arquivos), unidos com uma descrição e outras informações, em uma URL " -"fixa. Conjuntos de dados são o que usuários visualizam quando estão " -"buscando dados." +"arquivos), unidos com uma descrição e outras informações, em uma URL fixa. " +"Conjuntos de dados são o que usuários visualizam quando estão buscando " +"dados." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3656,15 +3667,15 @@ msgstr "Adicionar visão" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" " As visões do Data Explorer podem ser lentas e instáveis se a extensão " -"DataStore não estiver habilitada. Para mais informações, por favor veja a" -" documentação " -"do Data Explorer. " +"DataStore não estiver habilitada. Para mais informações, por favor veja a documentação do Data " +"Explorer. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3674,9 +3685,8 @@ msgstr "Adicionar" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Esta é uma revisão velha deste conjunto de dados, conforme editada em " "%(timestamp)s. Ela pode diferir significativamente da This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Esse conjunto de dados não possui dados, por que não adicionar alguns?

" @@ -3850,8 +3859,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -" Você também pode ter acesso a esses registros usando a %(api_link)s " -"(veja %(api_doc_link)s) ou descarregar um %(dump_link)s. " +" Você também pode ter acesso a esses registros usando a %(api_link)s (veja " +"%(api_doc_link)s) ou descarregar um %(dump_link)s. " #: ckan/templates/package/search.html:60 #, python-format @@ -3859,8 +3868,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " msgstr "" -" Você também pode ter acesso a esses registros usando a %(api_link)s " -"(veja %(api_doc_link)s). " +" Você também pode ter acesso a esses registros usando a %(api_link)s (veja " +"%(api_doc_link)s). " #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -3926,8 +3935,8 @@ msgid "" "Ask a system administrator to create an organization before you can " "continue." msgstr "" -"Peça a um administrador do sistema para criar uma organização antes que " -"você possa continuar." +"Peça a um administrador do sistema para criar uma organização antes que você" +" possa continuar." #: ckan/templates/package/snippets/package_basic_fields.html:4 #: ckan/templates/package/snippets/view_form.html:8 @@ -3955,8 +3964,8 @@ msgid "" " License definitions and additional information can be found at opendefinition.org " msgstr "" -" Definições de licenças e informações adicionais podem ser encontradas em" -" opendefinition.org " +" Definições de licenças e informações adicionais podem ser encontradas em opendefinition.org " #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -3981,12 +3990,11 @@ msgstr "Ativo" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "A licença de dados que você escolher acima aplica-se somente ao " "conteúdo de quaisquer recursos de arquivos que você adicionar a este " @@ -4104,8 +4112,8 @@ msgstr "O que é um recurso?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Um recurso pode ser um arquivo ou um link para um arquivo que contenha " -"dados úteis" +"Um recurso pode ser um arquivo ou um link para um arquivo que contenha dados" +" úteis" #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4132,8 +4140,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Você pode copiar e colar o código para embutir em um CMS ou software de " -"blog que suporte HTML puro" +"Você pode copiar e colar o código para embutir em um CMS ou software de blog" +" que suporte HTML puro" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4302,7 +4310,8 @@ msgstr "Nenhuma Licença Fornecida" #: ckan/templates/snippets/license.html:28 msgid "This dataset satisfies the Open Definition." -msgstr "Este conjunto de dados satisfaz a Definição de Aberto - Open Definition." +msgstr "" +"Este conjunto de dados satisfaz a Definição de Aberto - Open Definition." #: ckan/templates/snippets/organization.html:48 msgid "There is no description for this organization" @@ -4332,8 +4341,8 @@ msgstr "

Por favor tente uma nova pesquisa.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Houve um erro ao pesquisar. Por " "favor tente novamente.

" @@ -4482,11 +4491,10 @@ msgstr "Informações da Conta" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Seu perfil permite que outros usuários do CKAN saibam quem você é o que " -"você faz." +"Seu perfil permite que outros usuários do CKAN saibam quem você é o que você" +" faz." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4578,8 +4586,7 @@ msgstr "Esqueceu sua senha ?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Sem problema, use nosso formulário de recuperação de senha para " -"redefiní-la." +"Sem problema, use nosso formulário de recuperação de senha para redefiní-la." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4711,11 +4718,11 @@ msgstr "Solicitação reiniciada" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Entre seu nome de usuário para que um email seja enviado com um link para" -" restaurar sua senha" +"Entre seu nome de usuário para que um email seja enviado com um link para " +"restaurar sua senha" #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4741,4 +4748,3 @@ msgstr "Buscar Usuários" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/pt_PT/LC_MESSAGES/ckan.po b/ckan/i18n/pt_PT/LC_MESSAGES/ckan.po index 03d1140d9ca..9c9072d1b5a 100644 --- a/ckan/i18n/pt_PT/LC_MESSAGES/ckan.po +++ b/ckan/i18n/pt_PT/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Portuguese (Portugal) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Rui , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,14 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Rui , 2018\n" -"Language: pt_PT\n" -"Language-Team: Portuguese (Portugal) " -"(https://www.transifex.com/okfn/teams/11162/pt_PT/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/okfn/teams/11162/pt_PT/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,14 +117,14 @@ msgstr "O recurso DataStore não foi encontrado" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Os dados eram inválidos (por exemplo: um valor numérico está fora do " "intervalo ou foi inserido num campo de texto)." @@ -153,8 +153,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Mais informações sobre main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Mais informações sobre o API principal dos dados CKAN e a documentação sobre " -"o armazenamento de dados.

" +"target=\"_blank\"> o API principal dos dados CKAN e a documentação sobre o " +"armazenamento de dados.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -884,8 +882,7 @@ msgstr "Valor qjson mal gerado: %r" #: ckan/controllers/api.py:609 msgid "Request params must be in form of a json encoded dictionary." msgstr "" -"A solicitação de parâmetros ao dicionário deve ser na forma de código " -"json." +"A solicitação de parâmetros ao dicionário deve ser na forma de código json." #: ckan/controllers/feed.py:234 ckan/controllers/group.py:128 #: ckan/controllers/group.py:226 ckan/controllers/group.py:394 @@ -1067,8 +1064,7 @@ msgstr "" #, python-format msgid "%s uses your email address if you need to reset your password." msgstr "" -"%s use o seu endereço de email se precisar de redefinir a sua palavra-" -"passe." +"%s use o seu endereço de email se precisar de redefinir a sua palavra-passe." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1333,7 +1329,8 @@ msgstr "Não existe tal utilizador: %s" #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." -msgstr "Por favor, verifique a sua caixa de correio para o código de reposição." +msgstr "" +"Por favor, verifique a sua caixa de correio para o código de reposição." #: ckan/controllers/user.py:503 #, python-format @@ -1402,11 +1399,13 @@ msgstr "O {actor} atualizou o conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:72 msgid "{actor} changed the extra {extra} of the dataset {dataset}" -msgstr "O {actor} alterou o campo extra {extra} do conjunto de dados {dataset}" +msgstr "" +"O {actor} alterou o campo extra {extra} do conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:75 msgid "{actor} updated the resource {resource} in the dataset {dataset}" -msgstr "O {actor} atualizou o recurso {resource} no conjunto de dados {dataset}" +msgstr "" +"O {actor} atualizou o recurso {resource} no conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:78 msgid "{actor} updated their profile" @@ -1430,7 +1429,8 @@ msgstr "O {actor} apagou o campo extra {extra} do conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:93 msgid "{actor} deleted the resource {resource} from the dataset {dataset}" -msgstr "O {actor} eliminou o recurso {resource} do conjunto de dados {dataset}" +msgstr "" +"O {actor} eliminou o recurso {resource} do conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:97 msgid "{actor} created the group {group}" @@ -1446,11 +1446,13 @@ msgstr "O {actor} criou o conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:106 msgid "{actor} added the extra {extra} to the dataset {dataset}" -msgstr "O {actor} adicionou o campo extra {extra} ao conjunto de dados {dataset}" +msgstr "" +"O {actor} adicionou o campo extra {extra} ao conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:109 msgid "{actor} added the resource {resource} to the dataset {dataset}" -msgstr "O {actor} adicionou o recurso {resource} ao conjunto de dados {dataset}" +msgstr "" +"O {actor} adicionou o recurso {resource} ao conjunto de dados {dataset}" #: ckan/lib/activity_streams.py:112 msgid "{actor} signed up" @@ -1797,8 +1799,8 @@ msgstr "O nome deve ter no máximo %i caracteres" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" "Deverão ser, unicamente, carateres alfanuméricos minúsculos (ascii) e os " "símbolos: - _ ." @@ -1896,8 +1898,8 @@ msgstr "Esse nome de vocabulário já está em uso." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"Não é possivel alterar o numero da chave de %s para %s. Esta é somente de" -" leitura." +"Não é possivel alterar o numero da chave de %s para %s. Esta é somente de " +"leitura." #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2017,8 +2019,7 @@ msgstr "Já está a seguir {0}" #: ckan/logic/action/create.py:1336 ckan/logic/action/create.py:1344 msgid "You must be logged in to follow a dataset." msgstr "" -"É necessário ter a sessão iniciada para poder seguir um conjunto de " -"dados. " +"É necessário ter a sessão iniciada para poder seguir um conjunto de dados. " #: ckan/logic/action/create.py:1402 msgid "User {username} does not exist." @@ -2144,7 +2145,8 @@ msgstr "" #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" -msgstr "Utilizador %s não está autorizado a criar recursos no conjunto de dados %s" +msgstr "" +"Utilizador %s não está autorizado a criar recursos no conjunto de dados %s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2164,8 +2166,8 @@ msgstr "Utilizador %s não está autorizado a criar organizações" #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" msgstr "" -"Utilizador {user} não está autorizado a criar novos perfis de " -"utilizadores via API" +"Utilizador {user} não está autorizado a criar novos perfis de utilizadores " +"via API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2200,7 +2202,8 @@ msgstr "Utilizador %s não está autorizado a eliminar o recurso %s" #: ckan/logic/auth/delete.py:56 msgid "Resource view not found, cannot check auth." -msgstr "Visualização de recurso não encontrado, não é possível verificar autor." +msgstr "" +"Visualização de recurso não encontrado, não é possível verificar autor." #: ckan/logic/auth/delete.py:73 #, python-format @@ -2259,8 +2262,7 @@ msgstr "Utilizador %s não está autorizado a ler o grupo %s" #: ckan/logic/auth/get.py:252 msgid "You must be logged in to access your dashboard." msgstr "" -"Necessita de iniciar a sessão para poder ter acesso ao painel de " -"controlo. " +"Necessita de iniciar a sessão para poder ter acesso ao painel de controlo. " #: ckan/logic/auth/update.py:39 #, python-format @@ -2318,7 +2320,8 @@ msgstr "Utilizador %s não está autorizado a atualizar a tabela task_status" #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" -msgstr "Utilizador %s não está autorizado a atualizar a tabela term_translation" +msgstr "" +"Utilizador %s não está autorizado a atualizar a tabela term_translation" #: ckan/model/license.py:222 msgid "License not specified" @@ -2563,11 +2566,10 @@ msgstr "Não foi possivel obter dados a partir do ficheiro enviado" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Está a enviar um ficheiro. Tem a certeza de que deseja sair e parar o " -"envio?" +"Está a enviar um ficheiro. Tem a certeza de que deseja sair e parar o envio?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2836,40 +2838,39 @@ msgstr "Opções da configuração CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Título do portal: Este é o título desta instância " -"CKAN. Aparece em vários pontos do CKAN.

Estilo: " -" Escolha de uma lista de esquemas de cores com variações simples" -" do esquema principal para conseguir uma personalização rápida do tema do" -" portal.

Logótipo do portal: Este é o logótipo" -" que aparece no cabeçalho de todos os modelos de instância CKAN.

" -"

Sobre: Texto descritivo sobre a página será exibido nesta instância CKAN .

" -"

Texto Introdutório: Este texto será exibido nesta " -"instância CKAN home page como uma nota de " -"boas vindas aos visitantes.

CSS personalizado: " -" O bloco CSS aparece na <head> etiqueta de cada " -"página. Se deseja personalizar os estilos e os conteúdos da página de uma" -" forma mais completa, recomendamos a leitura da seguinte documentação .

" -"

Página Inicial: Permite escolher o layout " -"pré-definido dos módulos que surgem na página inicial.

" +"CKAN. Aparece em vários pontos do CKAN.

Estilo: " +"Escolha de uma lista de esquemas de cores com variações simples do esquema " +"principal para conseguir uma personalização rápida do tema do portal.

" +"

Logótipo do portal: Este é o logótipo que aparece no " +"cabeçalho de todos os modelos de instância CKAN.

Sobre: " +" Texto descritivo sobre a página será " +"exibido nesta instância CKAN .

Texto Introdutório: " +" Este texto será exibido nesta instância CKAN home page como uma nota de boas vindas aos " +"visitantes.

CSS personalizado: O bloco CSS " +"aparece na <head> etiqueta de cada página. Se deseja " +"personalizar os estilos e os conteúdos da página de uma forma mais completa," +" recomendamos a leitura da " +"seguinte documentação .

Página Inicial: " +"Permite escolher o layout pré-definido dos módulos que surgem na página " +"inicial.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2884,14 +2885,13 @@ msgstr "Administrador CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Como Administrador do Sistema tem total controlo sobre o CKAN. " -"Proceda com CUIDADO!

Para obter mais informações para um uso " -"correto, consulte no CKAN o " -"guia Administrador do Sistema

" +"

Como Administrador do Sistema tem total controlo sobre o CKAN. Proceda " +"com CUIDADO!

Para obter mais informações para um uso correto, " +"consulte no CKAN o guia " +"Administrador do Sistema

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3056,8 +3056,9 @@ msgstr "Tem a certeza que deseja apagar o membro - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Gerir" @@ -3089,7 +3090,8 @@ msgstr "Procurar grupos ..." msgid "There are currently no groups for this site" msgstr "Atualmente, este site não tem grupos" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "E que tal criar um?" @@ -3139,22 +3141,24 @@ msgstr "Novo Utilizador" #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." msgstr "" -"Se pretende convidar um novo membro, escreva o respetivo contacto de " -"email. " +"Se pretende convidar um novo membro, escreva o respetivo contacto de email. " -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Função" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Tem a certeza que deseja apagar este membro?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3175,14 +3179,13 @@ msgstr "O que são as funções?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Administrador: Pode editar as informações do grupo," -" bem como gerir os membros da organização.

Membro: " -" Pode adicionar e remover conjuntos de dados provenientes de " -"grupos

" +"

Administrador: Pode editar as informações do grupo, " +"bem como gerir os membros da organização.

Membro: " +" Pode adicionar e remover conjuntos de dados provenientes de grupos

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3252,16 +3255,16 @@ msgstr "O que são os Grupos?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" "Pode usar Grupos CKAN para criar e gerir coleções de conjuntos de dados. " -"Poderão servir para catalogar conjuntos de dados de um projeto ou equipa " -"em particular, ou sobre um tema especifico, ou como uma forma simples de " -"ajudar os utilizadores a encontrar e pesquisar os seus próprios conjuntos" -" de dados publicados." +"Poderão servir para catalogar conjuntos de dados de um projeto ou equipa em " +"particular, ou sobre um tema especifico, ou como uma forma simples de ajudar" +" os utilizadores a encontrar e pesquisar os seus próprios conjuntos de dados" +" publicados." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3324,14 +3327,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3341,25 +3343,23 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

A plataforma CKAN é líder mundial em portais de dados abertos.

" -"

CKAN é um software revolucionário, uma solução que torna dados " -"acessíveis e utilizáveis - fornecendo ferramentas para agilizar a " -"publicação, partilha, encontrar e utilizar dados (incluindo o " -"armazenamento de dados e prestação de dados APIs). CKAN é dirigido a " -"editores de dados (governos nacionais e regionais, empresas e " -"organizações) que querem fazer dos seus dados, dados abertos e " -"disponíveis.

CKAN é usado pelos governos e grupos de " -"utilizadores em todo o mundo em portais de dados da comunidade, incluindo" -" portais para o governo local, nacional e internacional, tais como o " -"Reino Unido data.gov.uk e União " -"Europeia publicdata.eu, os " -"brasileiros dados.gov.br, os portais" -" governamentais holandeses e dos países baixos, bem como das cidades e " -"locais municipais dos EUA, Reino Unido, Argentina, Finlândia, entre " -"outros.

CKAN: A plataforma CKAN é líder mundial em portais de dados abertos.

" +"CKAN é um software revolucionário, uma solução que torna dados acessíveis e " +"utilizáveis - fornecendo ferramentas para agilizar a publicação, partilha, " +"encontrar e utilizar dados (incluindo o armazenamento de dados e prestação " +"de dados APIs). CKAN é dirigido a editores de dados (governos nacionais e " +"regionais, empresas e organizações) que querem fazer dos seus dados, dados " +"abertos e disponíveis.

CKAN é usado pelos governos e grupos de " +"utilizadores em todo o mundo em portais de dados da comunidade, incluindo " +"portais para o governo local, nacional e internacional, tais como o Reino " +"Unido data.gov.uk e União Europeia publicdata.eu, os brasileiros dados.gov.br, os portais governamentais " +"holandeses e dos países baixos, bem como das cidades e locais municipais dos" +" EUA, Reino Unido, Argentina, Finlândia, entre outros.

CKAN: http://ckan.org/
CKAN Tour: http://ckan.org/tour/
Vista " -"geral das características: http://ckan.org/tour/
Vista geral " +"das características: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3368,12 +3368,11 @@ msgstr "Bem-vindo ao CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Este é um parágrafo introdutório agradável sobre o CKAN ou sobre o site " -"em geral. Ainda não temos qualquer cópia para ir aqui, mas em breve vamos" -" ter" +"Este é um parágrafo introdutório agradável sobre o CKAN ou sobre o site em " +"geral. Ainda não temos qualquer cópia para ir aqui, mas em breve vamos ter" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3418,13 +3417,13 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Aqui, pode usar o formato Markdown " +"reference\" data-target=\"popover\" data-content=\"%(markdown_tooltip)s\" " +"data-html=\"true\"> Markdown " #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3474,8 +3473,7 @@ msgstr "encontrados para \"{query}\"" #: ckan/templates/organization/bulk_process.html:18 msgid "Sorry no datasets found for \"{query}\"" msgstr "" -"Pedimos desculpa, não foram encontrados conjuntos de dados para " -"\"{query}\"" +"Pedimos desculpa, não foram encontrados conjuntos de dados para \"{query}\"" #: ckan/templates/organization/bulk_process.html:37 msgid "Make public" @@ -3495,8 +3493,8 @@ msgstr "Rascunho" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privado" @@ -3550,15 +3548,15 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Administrador: Pode adicionar, editar e excluir " -"conjuntos de dados, bem como gerir os membros da organização

" -"

Editor: Pode adicionar e editar conjuntos de dados," -" mas não pode girir os membros da organização.

Membro: " -" Pode visualizar os conjuntos de dados privados da organização, " -"mas não pode adicionar novos conjuntos de dados.

" +"conjuntos de dados, bem como gerir os membros da organização

" +" Editor: Pode adicionar e editar conjuntos de dados, mas não pode " +"girir os membros da organização.

Membro: Pode " +"visualizar os conjuntos de dados privados da organização, mas não pode " +"adicionar novos conjuntos de dados.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3598,32 +3596,26 @@ msgstr "O que são as Organizações?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

As organizações agem como departamentos de publicação para conjuntos " -"de dados (p.ex., o Departamento de Saúde).\n" -"Isto significa que os conjuntos de dados podem ser publicados e pertencem" -" a um departamento em vez de a um utilizador individual.

Dentro " -"das organizações, os administradores podem atribuir funções e autorizar " -"os seus membros, dando aos utilizadores individuais, o direito de " -"publicar conjuntos de dados de determinada organização (p.ex., Instituto " -"Nacional de Estatística).

" +"

As organizações agem como departamentos de publicação para conjuntos de dados (p.ex., o Departamento de Saúde).\n" +"Isto significa que os conjuntos de dados podem ser publicados e pertencem a um departamento em vez de a um utilizador individual.

Dentro das organizações, os administradores podem atribuir funções e autorizar os seus membros, dando aos utilizadores individuais, o direito de publicar conjuntos de dados de determinada organização (p.ex., Instituto Nacional de Estatística).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Organizações CKAN são usadas para criar, gerir e publicar coleções de " -"conjuntos de dados. Os utilizadores podem ter diferentes funções dentro " -"de uma organização, dependendo do nível de autorização cedido para criar," -" editar e publicar." +"conjuntos de dados. Os utilizadores podem ter diferentes funções dentro de " +"uma organização, dependendo do nível de autorização cedido para criar, " +"editar e publicar." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3639,9 +3631,8 @@ msgstr "Alguma informação sobre a minha organização ..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Tem certeza de que deseja eliminar esta Organização? Irá apagar todos os " "conjuntos de dados públicos e privados pertencentes a esta organização." @@ -3666,14 +3657,14 @@ msgstr "O que são conjuntos de dados?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "Um conjunto de dados CKAN é uma coleção de recursos de dados (como p.ex. " -"ficheiros), juntamente com uma descrição, entre outras informações, num " -"URL fixo. Os conjuntos de dados são os que os utilizadores vêem quando " -"pesquisam por dados." +"ficheiros), juntamente com uma descrição, entre outras informações, num URL " +"fixo. Os conjuntos de dados são os que os utilizadores vêem quando pesquisam" +" por dados." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3754,15 +3745,15 @@ msgstr "Adicionar vista" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Vistas do tipo Data Explorer podem ser lentas e falíveis, a não ser que a" -" extensão DataStore seja ativada. Para mais informação, consulte por " -"favor a documentação do Data Explorer . " +"Vistas do tipo Data Explorer podem ser lentas e falíveis, a não ser que a " +"extensão DataStore seja ativada. Para mais informação, consulte por favor a " +"documentação do " +"Data Explorer . " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3772,12 +3763,11 @@ msgstr "Adicionar" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Esta é uma revisão antiga deste conjunto de dados, está tal como editado " -"a %(timestamp)s. Pode divergir significativamente da revisão atual. " #: ckan/templates/package/resource_edit_base.html:17 @@ -3844,14 +3834,14 @@ msgstr "Não foi criada nenhuma vista que seja adequada a este recurso" #: ckan/templates/package/resource_read.html:121 msgid "The site administrators may not have enabled the relevant view plugins" msgstr "" -"Os administradores do site podem não ter ativado os plugins de " -"visualização relevantes" +"Os administradores do site podem não ter ativado os plugins de visualização " +"relevantes" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "Se a visualização requer o DataStore, o plugin DataStore pode não estar " "ativo, ou os dados podem não ter sidos carregados no DataStore, ou o " @@ -3922,8 +3912,8 @@ msgstr "Adicionar novo recurso" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Este conjunto de dados não tem dados, não gostaria de acrescentar alguns?

" @@ -3954,7 +3944,8 @@ msgstr "" msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " -msgstr "Pode aceder a este registo usando %(api_link)s (ver %(api_doc_link)s)." +msgstr "" +"Pode aceder a este registo usando %(api_link)s (ver %(api_doc_link)s)." #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -4043,10 +4034,10 @@ msgid "" " License definitions and additional information can be found at opendefinition.org " msgstr "" -"As definições das licenças e mais informações adicionais sobre as mesmas," -" podem ser encontradas em creativecommons.org e " -"em opendefinition.org" +"As definições das licenças e mais informações adicionais sobre as mesmas, " +"podem ser encontradas em " +"creativecommons.org e em opendefinition.org" #: ckan/templates/package/snippets/package_basic_fields.html:70 #: ckan/templates/snippets/organization.html:23 @@ -4071,17 +4062,16 @@ msgstr "Ativo" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "A licença escolhida acima só se aplica aos conteúdos de todos os " -"ficheiros de recursos que se adicionem a este conjunto de dados. Ao " -"submeter este formulário, está a concordar em ceder livremente os " -"
metadados que inseriu, sob a forma metadados " +"que inseriu, sob a forma Open Database " "License ." @@ -4226,8 +4216,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Pode copiar e colar o código para embutir num CMS ou blogue que suporte a" -" escrita de HTML" +"Pode copiar e colar o código para embutir num CMS ou blogue que suporte a " +"escrita de HTML" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4426,8 +4416,8 @@ msgstr "

Por favor, tente um novo termo de pesquisa.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4574,11 +4564,10 @@ msgstr "Informação sobre a conta" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"O seu perfil permite que outros utilizadores CKAN saibam quem é e o que " -"faz. " +"O seu perfil permite que outros utilizadores CKAN saibam quem é e o que faz." +" " #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4705,8 +4694,8 @@ msgstr "Já está com a sessão iniciada" #: ckan/templates/user/logout_first.html:24 msgid "You need to log out before you can log in with another account." msgstr "" -"Precisa de terminar a sua sessão para poder iniciar uma sessão com uma " -"conta diferente." +"Precisa de terminar a sua sessão para poder iniciar uma sessão com uma conta" +" diferente." #: ckan/templates/user/logout_first.html:25 msgid "Log out now" @@ -4760,7 +4749,8 @@ msgstr "Como é que isto funciona?" #: ckan/templates/user/perform_reset.html:40 msgid "Simply enter a new password and we'll update your account" -msgstr "Basta escrever uma nova palavra-passe que nós atualizaremos a sua conta" +msgstr "" +"Basta escrever uma nova palavra-passe que nós atualizaremos a sua conta" #: ckan/templates/user/read.html:21 msgid "User hasn't created any datasets." @@ -4805,11 +4795,11 @@ msgstr "Pedir redefinição" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Escreva o seu nome de utilizador que nós lhe enviamos de seguida um email" -" com um link de acesso, onde poderá inserir a sua nova palavra-passe." +"Escreva o seu nome de utilizador que nós lhe enviamos de seguida um email " +"com um link de acesso, onde poderá inserir a sua nova palavra-passe." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4835,4 +4825,3 @@ msgstr "Pesquisar por utilizadores" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/ro/LC_MESSAGES/ckan.mo b/ckan/i18n/ro/LC_MESSAGES/ckan.mo index 076d8816cfa..f6b0dacca71 100644 Binary files a/ckan/i18n/ro/LC_MESSAGES/ckan.mo and b/ckan/i18n/ro/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/ro/LC_MESSAGES/ckan.po b/ckan/i18n/ro/LC_MESSAGES/ckan.po index 2953bdc8514..405c35062f9 100644 --- a/ckan/i18n/ro/LC_MESSAGES/ckan.po +++ b/ckan/i18n/ro/LC_MESSAGES/ckan.po @@ -1,11 +1,13 @@ -# Romanian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Bogdan Mateescu, 2018 +# Costin Bleotu , 2019 +# #, fuzzy msgid "" msgstr "" @@ -13,19 +15,18 @@ msgstr "" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" -"Last-Translator: Bogdan Mateescu, 2018\n" -"Language: ro\n" +"Last-Translator: Costin Bleotu , 2019\n" "Language-Team: Romanian (https://www.transifex.com/okfn/teams/11162/ro/)\n" -"Plural-Forms: nplurals=3; " -"plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" -msgstr "" +msgstr "Complet" #: ckanext/datapusher/helpers.py:22 msgid "Pending" @@ -80,7 +81,7 @@ msgstr "" #: ckanext/datapusher/templates/datapusher/resource_data.html:48 msgid "Status" -msgstr "" +msgstr "Status" #: ckanext/datapusher/templates/datapusher/resource_data.html:52 msgid "Last updated" @@ -109,7 +110,7 @@ msgstr "" #: ckanext/datastore/controller.py:46 #, python-format msgid "format: must be one of %s" -msgstr "" +msgstr "format: trebuie sa fie unul de tipul %s" #: ckanext/datastore/controller.py:58 msgid "DataStore resource not found" @@ -117,21 +118,21 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 #: ckanext/datastore/logic/action.py:534 ckanext/datastore/logic/action.py:559 msgid "Resource \"{0}\" was not found." -msgstr "" +msgstr "Resursa \"{0}\" nu a fost găsită." #: ckanext/datastore/logic/auth.py:19 msgid "User {0} not authorized to update resource {1}" @@ -144,15 +145,14 @@ msgstr "Date API CKAN" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" msgstr "" -"Acces la datele de resurse prin intermediul unui API cu suport de " -"interogare puternic" +"Acces la datele de resurse prin intermediul unui API cu suport de interogare" +" puternic" #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -161,8 +161,8 @@ msgstr "obiective" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -271,8 +271,7 @@ msgstr "Date API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -1044,8 +1043,7 @@ msgstr "Acest site este momentan off-line. Nu este inițializată baza de date." #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Vă rog Actualizați profilul și indicați adresa de " -"e-mail." +"Vă rog Actualizați profilul și indicați adresa de e-mail." #: ckan/controllers/home.py:75 #, python-format @@ -1787,8 +1785,8 @@ msgstr "Numele trebuie să conțină maximum %i caractere" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1833,8 +1831,8 @@ msgstr "Lungimea etichetei \"%s\" este mai mare decît maximul necesar %i" #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Eticheta \"%s\" trebuie să conţină caractere alfanumerice sau simboluri: " -"-_. " +"Eticheta \"%s\" trebuie să conţină caractere alfanumerice sau simboluri: -_." +" " #: ckan/logic/validators.py:436 #, python-format @@ -1870,8 +1868,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Editarea nu este permisă, fiind privită ca spam. Vă rugăm să evitați " -"link-uri în descriere." +"Editarea nu este permisă, fiind privită ca spam. Vă rugăm să evitați link-" +"uri în descriere." #: ckan/logic/validators.py:620 #, python-format @@ -1972,7 +1970,8 @@ msgstr "Încercarea de a crea o organizație ca un grup" #: ckan/logic/action/create.py:893 msgid "You must supply a package id or name (parameter \"package\")." -msgstr "Trebuie să furnizaţi un id de pachet sau nume (parametrul ''package'')." +msgstr "" +"Trebuie să furnizaţi un id de pachet sau nume (parametrul ''package'')." #: ckan/logic/action/create.py:896 msgid "You must supply a rating (parameter \"rating\")." @@ -2558,8 +2557,8 @@ msgstr "Incapabil să obțin date din fișierul încărcat" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Sunteți în proces de încărcare a fișierului. Sunteți sigur să doriți să " "navigați mai departe și să opriți încărcarea fișierului?" @@ -2838,22 +2837,21 @@ msgstr "CKAN opțiuni configurare" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2869,9 +2867,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -3035,8 +3032,9 @@ msgstr "Sunteți sigur că doriți să ștergeți membrul - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -3068,7 +3066,8 @@ msgstr "Caută grupuri..." msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Creăm unul nou?" @@ -3117,19 +3116,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rolul" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Sunteți sigur că doriți să ștergeți acest membru?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3150,8 +3152,8 @@ msgstr "Ce sunt roluri?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3223,10 +3225,10 @@ msgstr "Ce sunt Grupuri?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3290,14 +3292,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3310,22 +3311,21 @@ msgstr "" "

CKAN este principala platformă open-source pentru portalul de date " "deschise CKAN este o soluție completă de software care face datele " "accesibile și ușor de utilizat - prin furnizarea instrumentelor pentru a " -"simplifica publicarea, partajarea , găsirea și utilizarea de date " -"(inclusiv stocarea de date și furnizarea de API-uri robuste de date). " -"CKAN se adresează editorilor de date (guverne, companii și organizații " -"naționale și regionale), care doresc să facă datele lor deschise și " -"disponibile. CKAN este utilizat de către guverne și grupuri de " -"utilizatori din întreaga lume și fortifică o varietate de portaluri de " -"date oficiale și comunitare, inclusiv portaluri pentru guvernul local, " -"național și internațional, cum ar fi data.gov.uk și publicdata.eu , dados.gov.br , portalurile " -"Guvernului Olandei, precum și site-urile orașelor și municipalităților " -"din SUA, Marea Britanie, Argentina, Finlanda și în alte parți " -"CKAN:. http://ckan . org /
" -"CKAN Tur:
http://ckan.org/tour/ " -"
Prezentarea caracteristicilor :
" +"CKAN este utilizat de către guverne și grupuri de utilizatori din întreaga " +"lume și fortifică o varietate de portaluri de date oficiale și comunitare, " +"inclusiv portaluri pentru guvernul local, național și internațional, cum ar " +"fi data.gov.uk și publicdata.eu , dados.gov.br , " +"portalurile Guvernului Olandei, precum și site-urile orașelor și " +"municipalităților din SUA, Marea Britanie, Argentina, Finlanda și în alte " +"parți CKAN:. http://ckan . org / " +"
CKAN Tur:
http://ckan.org/tour/
Prezentarea caracteristicilor :
http://ckan.org/features/ " #: ckan/templates/home/snippets/promoted.html:8 @@ -3334,11 +3334,11 @@ msgstr "Bun venit la CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Acesta este un paragraf introductiv despre CKAN sau site-ul în general. " -"Noi încă nu avem o copie care ar merge aici, dar în curând o vom avea." +"Acesta este un paragraf introductiv despre CKAN sau site-ul în general. Noi " +"încă nu avem o copie care ar merge aici, dar în curând o vom avea." #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3383,8 +3383,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3455,8 +3455,8 @@ msgstr "Proiect" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Privat" @@ -3510,8 +3510,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3553,19 +3553,19 @@ msgstr "Ce sunt Organizații?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3582,9 +3582,8 @@ msgstr "Informație scurtă despre organizația mea" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Sigur doriți să ștergeți această Organizație? Aceasta va șterge toate " "seturile de date publice și private care aparțin aceastei organizație." @@ -3609,9 +3608,9 @@ msgstr "Ce sunt seturile de date?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3693,9 +3692,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3706,9 +3705,8 @@ msgstr "Adaugă" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3778,9 +3776,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3848,8 +3846,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3989,12 +3987,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4330,8 +4327,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4484,8 +4481,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4709,8 +4705,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4737,4 +4733,3 @@ msgstr "Caută Utilizatori" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/ru/LC_MESSAGES/ckan.mo b/ckan/i18n/ru/LC_MESSAGES/ckan.mo index 050579ad849..607873f8f53 100644 Binary files a/ckan/i18n/ru/LC_MESSAGES/ckan.mo and b/ckan/i18n/ru/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/ru/LC_MESSAGES/ckan.po b/ckan/i18n/ru/LC_MESSAGES/ckan.po index 2bfba9d5cea..a0d144055e8 100644 --- a/ckan/i18n/ru/LC_MESSAGES/ckan.po +++ b/ckan/i18n/ru/LC_MESSAGES/ckan.po @@ -1,12 +1,13 @@ -# Russian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 -# tuffnatty , 2018 # Ivan Begtin , 2018 +# tuffnatty , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,16 +15,14 @@ msgstr "" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" -"Last-Translator: Ivan Begtin , 2018\n" -"Language: ru\n" +"Last-Translator: tuffnatty , 2018\n" "Language-Team: Russian (https://www.transifex.com/okfn/teams/11162/ru/)\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) " -"|| (n%100>=11 && n%100<=14)? 2 : 3)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -119,19 +118,19 @@ msgstr "Ресурс DataStore не найден" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" "Дата словарь сохранён. Любая перезапись будет действовать когда ресурс в " "следующий раз будет загружен в хранилище данных" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Данные некорректны (например: численное значение за пределами ограничений" -" или введено в текстовое поле)." +"Данные некорректны (например: численное значение за пределами ограничений " +"или введено в текстовое поле)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -155,8 +154,7 @@ msgstr "Доступ к данным ресурса через web API с под msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -165,11 +163,10 @@ msgstr "Endpoints" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" -"Data API может использоваться через следующие действия в API действий " -"CKAN." +"Data API может использоваться через следующие действия в API действий CKAN." #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 msgid "Create" @@ -283,8 +280,7 @@ msgstr "Данные API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -417,8 +413,7 @@ msgstr "0 Пакеты данных" #: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 msgid "CKAN's data previewing tool has many powerful features" msgstr "" -"Инструмент предварительного просмотра данных CKAN имеет ряд мощных " -"функций. " +"Инструмент предварительного просмотра данных CKAN имеет ряд мощных функций. " #: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 #: ckan/templates/group/snippets/info.html:32 @@ -1290,8 +1285,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Пользователь \"%s\" зарегистрирован, но вы все еще находитесь в сессии " -"как пользователь \"%s\" " +"Пользователь \"%s\" зарегистрирован, но вы все еще находитесь в сессии как " +"пользователь \"%s\" " #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1814,8 +1809,8 @@ msgstr "Имя должно содержать максимум %i символ #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1911,8 +1906,7 @@ msgstr "Это название словаря уже используется." #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"Невозможно изменить значение ключа %s на %s. Ключ доступен только для " -"чтения" +"Невозможно изменить значение ключа %s на %s. Ключ доступен только для чтения" #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2014,7 +2008,8 @@ msgstr "Значение рейтинга должно быть в предел #: ckan/logic/action/create.py:1064 msgid "Error sending the invite email, the user was not created: {0}" -msgstr "Ошибка при отправке email-приглашения. Пользователь не был создан: {0}" +msgstr "" +"Ошибка при отправке email-приглашения. Пользователь не был создан: {0}" #: ckan/logic/action/create.py:1277 ckan/logic/action/create.py:1284 msgid "You must be logged in to follow users" @@ -2132,7 +2127,8 @@ msgstr "Пользователь %s не имеет достаточно пра #: ckan/logic/auth/create.py:31 ckan/logic/auth/update.py:45 #, python-format msgid "User %s not authorized to edit these groups" -msgstr "Пользователь %s не имеет достаточно прав для редактирования этих группы" +msgstr "" +"Пользователь %s не имеет достаточно прав для редактирования этих группы" #: ckan/logic/auth/create.py:38 #, python-format @@ -2148,14 +2144,15 @@ msgstr "ID пакета данных не предоставлен, невозм #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." -msgstr "Для этого ресурса не найдено пакетов. Невозможно проверить подлинность." +msgstr "" +"Для этого ресурса не найдено пакетов. Невозможно проверить подлинность." #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" msgstr "" -"Пользователь %s не имеет достаточно прав для добавления ресурсов к пакету" -" данных %s" +"Пользователь %s не имеет достаточно прав для добавления ресурсов к пакету " +"данных %s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2302,8 +2299,7 @@ msgstr "Пользователь %s не имеет прав для измене #, python-format msgid "User %s not authorized to edit permissions of group %s" msgstr "" -"Пользователь %s не имеет прав для редактирования прав доступа для группы " -"%s" +"Пользователь %s не имеет прав для редактирования прав доступа для группы %s" #: ckan/logic/auth/update.py:190 msgid "Have to be logged in to edit user" @@ -2313,8 +2309,7 @@ msgstr "Необходимо авторизоваться чтобы редак #, python-format msgid "User %s not authorized to edit user %s" msgstr "" -"Пользователь %s не имеет достаточно прав для редактирования пользователя " -"%s" +"Пользователь %s не имеет достаточно прав для редактирования пользователя %s" #: ckan/logic/auth/update.py:209 msgid "User {0} not authorized to update user {1}" @@ -2592,8 +2587,8 @@ msgstr "Невозможно получить данные для загружа #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "Вы загружаете файл. Вы уверены что хотите прервать ?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2772,22 +2767,21 @@ msgstr "Опции настроек CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2803,9 +2797,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2969,8 +2962,9 @@ msgstr "Вы уверены, что хотите удалить участник #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -3002,7 +2996,8 @@ msgstr "Поиск групп..." msgid "There are currently no groups for this site" msgstr "В настоящее время нет групп для этого сайта" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Может создать?" @@ -3034,7 +3029,8 @@ msgstr "Существующий Пользователь" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." -msgstr "Чтобы добавить существующего пользователя, воспользуйтесь поиском ниже" +msgstr "" +"Чтобы добавить существующего пользователя, воспользуйтесь поиском ниже" #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3050,22 +3046,25 @@ msgstr "Новый Пользователь" #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." msgstr "" -"Если Вы хотите пригласить нового пользователя, введите его адрес " -"электронной почты." +"Если Вы хотите пригласить нового пользователя, введите его адрес электронной" +" почты." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Роль" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Вы уверены, что хотите удалить этого участника?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3086,8 +3085,8 @@ msgstr "Какие роли?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3159,10 +3158,10 @@ msgstr "Что такое группы?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3226,14 +3225,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3245,23 +3243,21 @@ msgid "" msgstr "" "

CKAN является ведущей платформой в мире для публикации открытых " "данных.

CKAN является готовым программным решением из коробки, " -"которое делает данные доступными и используемыми - предоставляя " -"инструменты для упорядочения, публикации, обмена, поиска и использования " -"данных (включая хранение данных и предоставление надежных API). CKAN " -"предназначен для издателей данных (национальных и региональных " -"правительств, компаний и организаций), помогая сделать их данные " -"открытыми и доступными.

CKAN используется правительствами и " -"сообществами по всему миру, включая порталы для местных, национальных и " -"международных правительственных организаций, таких как Великобритания data.gov.uk и Европейский Союз publicdata.eu, Бразилия dados.gov.br, Голландия и Нидерланды, а" -" также городские и муниципальные сайты в США, Великобритании, Аргентине, " -"Финляндии и других странах

CKAN:

CKAN " +"используется правительствами и сообществами по всему миру, включая порталы " +"для местных, национальных и международных правительственных организаций, " +"таких как Великобритания data.gov.uk и " +"Европейский Союз publicdata.eu, " +"Бразилия dados.gov.br, Голландия и " +"Нидерланды, а также городские и муниципальные сайты в США, Великобритании, " +"Аргентине, Финляндии и других странах

CKAN: http://ckan.org/
CKAN Тур: http://ckan.org/tour/
" -"Особенности: http://ckan.org/features/

" +"href=\"http://ckan.org/tour/\">http://ckan.org/tour/
Особенности: " +"http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 msgid "Welcome to CKAN" @@ -3269,8 +3265,8 @@ msgstr "Добро пожаловать в CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" "Это хороший вводный абзац о CKAN или для сайта в целом. Мы еще не " "выкладывали сюда копий, но скоро мы это сделаем" @@ -3322,8 +3318,8 @@ msgstr "Логотип сайта" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3394,8 +3390,8 @@ msgstr "Черновик" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Личный" @@ -3449,15 +3445,12 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Администратор:Может добавлять/редактировать и удалять" -" данные, а также управлять участниками организации.

\n" -"

Редактор: Может добавлять/редактировать данные, но не" -" управлять участниками организации.

\n" -"

Участник: Может просматривать приватные данные " -"организации, но не может добавлять данные

" +"

Администратор:Может добавлять/редактировать и удалять данные, а также управлять участниками организации.

\n" +"

Редактор: Может добавлять/редактировать данные, но не управлять участниками организации.

\n" +"

Участник: Может просматривать приватные данные организации, но не может добавлять данные

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3499,19 +3492,19 @@ msgstr "Какие Организации?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3528,9 +3521,8 @@ msgstr "Кратко о моей организации..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Вы уверены что хотите удалить эту организацию? Это удалит все публичные и " "непубличные массивы данных принадлежащие данной организации." @@ -3555,9 +3547,9 @@ msgstr "Какие пакеты данных?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3639,9 +3631,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3652,9 +3644,8 @@ msgstr "Добавить" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Это старая версия пакета данных, в редакции по %(timestamp)s. Она может " "отличаться от текущей версии." @@ -3726,9 +3717,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3796,8 +3787,8 @@ msgstr "Добавить новый ресурс" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3875,7 +3866,8 @@ msgstr "Последнее обновление" #: ckan/templates/package/snippets/cannot_create_package.html:10 msgid "Before you can create a dataset you need to create an organization." -msgstr "Для того, чтобы создать набор данных, Вам необходимо создать организацию" +msgstr "" +"Для того, чтобы создать набор данных, Вам необходимо создать организацию" #: ckan/templates/package/snippets/cannot_create_package.html:13 msgid "Create a new organization" @@ -3945,12 +3937,11 @@ msgstr "Активный" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4292,8 +4283,8 @@ msgstr "

Попробуйте поискать еще.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4452,11 +4443,10 @@ msgstr "Информация об аккаунте" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Ваш профиль позволяет другим CKAN-пользователям знать кто Вы есть и что " -"Вы делаете" +"Ваш профиль позволяет другим CKAN-пользователям знать кто Вы есть и что Вы " +"делаете" #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4548,8 +4538,7 @@ msgstr "Забыли пароль?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Все в порядке, используйте нашу форму восстановления пароля для его " -"сброса." +"Все в порядке, используйте нашу форму восстановления пароля для его сброса." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4681,11 +4670,11 @@ msgstr "Запросить сброс пароля" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Введите имя пользователя в поле, и мы вышлем Вам письмо с ссылкой для " -"ввода нового пароля." +"Введите имя пользователя в поле, и мы вышлем Вам письмо с ссылкой для ввода " +"нового пароля." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4711,4 +4700,3 @@ msgstr "Поиск пользователей" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/sk/LC_MESSAGES/ckan.po b/ckan/i18n/sk/LC_MESSAGES/ckan.po index 62c7f1d2e59..3a88b65b500 100644 --- a/ckan/i18n/sk/LC_MESSAGES/ckan.po +++ b/ckan/i18n/sk/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Slovak translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: sk\n" "Language-Team: Slovak (https://www.transifex.com/okfn/teams/11162/sk/)\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 " -"&& n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: sk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +116,17 @@ msgstr "Požadovaný zdroj z DataStore nebol nájdený" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Dáta boli neplatné (napríklad: číselná hodnota je mimo rozsah alebo bola" -" vložená do textového poľa)." +"Dáta boli neplatné (napríklad: číselná hodnota je mimo rozsah alebo bola " +"vložená do textového poľa)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -144,14 +144,14 @@ msgstr "CKAN dátové API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" -msgstr "Prístup k zdrojom dát prostredníctvom webového API s podporou dopytovania" +msgstr "" +"Prístup k zdrojom dát prostredníctvom webového API s podporou dopytovania" #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Viac informácií na main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Viac informácií na Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Názov stránky: Názov CKAN objektu sa vyskytuje na " -"viacerých miestach prostredníctvom CKAN

Štýl: " -"Zvoľte niektorú z jednoduchších kombinácií farebných schém pre vytvorenie" -" jednoduchej témy.

Logo stránky: Toto logo " -"vyskytujúce sa v hlavičkých každej CKAN šablóny.

" -"

Informácie o: Tento text sa zobrazí v CKAN objektoch " -"o stránke.

Intro " -"Text: Tento text sa objaví na domovskej" -" stránke tento CKAN objekt pre privítání návštěvníkov.

" -"

Vlastné alebo upravené CSS: Toto je blok pre CSS, " -"ktorý sa objaví v <head> tagu každej stránky. Ak si " -"želáte upraviť šablóny viac, prečítajte si dokumentáciu.

Hlavná " -"stránka: Touto voľbou sa určí predpripravené rozloženie modulu, " -"ktoré se zobrazuje na hlavnej stránke.

" +"viacerých miestach prostredníctvom CKAN

Štýl: Zvoľte" +" niektorú z jednoduchších kombinácií farebných schém pre vytvorenie " +"jednoduchej témy.

Logo stránky: Toto logo " +"vyskytujúce sa v hlavičkých každej CKAN šablóny.

Informácie " +"o: Tento text sa zobrazí v CKAN objektoch o stránke.

Intro Text: " +"Tento text sa objaví na domovskej stránke tento" +" CKAN objekt pre privítání návštěvníkov.

Vlastné alebo " +"upravené CSS: Toto je blok pre CSS, ktorý sa objaví v " +"<head> tagu každej stránky. Ak si želáte upraviť šablóny " +"viac, prečítajte si dokumentáciu.

Hlavná stránka: " +"Touto voľbou sa určí predpripravené rozloženie modulu, ktoré se zobrazuje na" +" hlavnej stránke.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2904,14 +2904,11 @@ msgstr "Spravovať CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Ako používateľ sysadmin máte plnú kontrolu nad touto inštanciou CKAN. " -"Pokračujte opatrne!\n" -"

Pre informácie o používaní sysadmin funkcií, pozrite odkaz sysadmin sprievodca

" +"

Ako používateľ sysadmin máte plnú kontrolu nad touto inštanciou CKAN. Pokračujte opatrne!\n" +"

Pre informácie o používaní sysadmin funkcií, pozrite odkaz sysadmin sprievodca

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3074,8 +3071,9 @@ msgstr "Naozaj chcete odstrániť člena - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Spravovať" @@ -3107,7 +3105,8 @@ msgstr "Prehľadávať skupiny..." msgid "There are currently no groups for this site" msgstr "Na tejto stranke aktuálne nie sú žiadne skupiny" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Čo tak jednu vytvoriť?" @@ -3158,19 +3157,22 @@ msgstr "Nový používateľ" msgid "If you wish to invite a new user, enter their email address." msgstr "Pokiaľ chcete pozvať nového používateľa, zadajte jeho e-mail" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Rola" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Skutočne chcete odstrániť tohto člena?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3191,13 +3193,13 @@ msgstr "Čo sú role?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Administrátor: Môže upravovať informácie o skupine, " -"tak ako aj spravovať členov organizácie.

Člen: " -"Môže pridávať/mazať datasety zo skupín

" +"

Administrátor: Môže upravovať informácie o skupine, tak" +" ako aj spravovať členov organizácie.

Člen: Môže " +"pridávať/mazať datasety zo skupín

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3267,15 +3269,15 @@ msgstr "Čo sú skupiny?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -" Možeš využiť CKAN Groups na vytvorenie a spravovanie kolekcií datasetov." -" This could be to catalogue datasets for a particular project or team, or" -" on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" Možeš využiť CKAN Groups na vytvorenie a spravovanie kolekcií datasetov. " +"This could be to catalogue datasets for a particular project or team, or on " +"a particular theme, or as a very simple way to help people find and search " +"your own published datasets. " #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3338,14 +3340,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3355,24 +3356,23 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN je celosvetovo vedúca open-source dátová platforma.

CKAN " -"je kompletné out-of-box softvérové ​​riešenie, ktoré robí dáta prístupné " -"a použiteľné - poskytuje nástroje pre zefektívnenie ich publikovania a " -"katalogizáciu, zdieľanie, vyhľadávanie a používanie dát (ako úložisko dát" -" s robustným dátovým rozhraním API). CKAN je určený pre všetkých " -"poskytovateľov dát (národné a regionálne vlády, spoločnosti a " -"organizácie), ktorí chcú, aby ich dáta boli otvorené a dostupné.

" -"

CKAN je používaný vládami a skupinami používateľov po celom svete na " -"prevádzku rôznych oficiálnych a komunitných dátových portálov, vrátane " -"portálov pre miestne, národné a medzinárodné vlády, ako napríklad vo " -"Veľkej Británii data.gov.uk a " -"Európskej únii publicdata.eu , " -"Brazílii dados.gov.br , Holandsku, " -"ale aj stránky miest a obcií v USA, Veľkej Británii, Argentíne, Fínsku a " -"inde

CKAN: http://ckan.org/
CKAN prehliadka: http://ckan.org/tour/
Prehľad " -"funkcii: CKAN je celosvetovo vedúca open-source dátová platforma.

CKAN je " +"kompletné out-of-box softvérové ​​riešenie, ktoré robí dáta prístupné a " +"použiteľné - poskytuje nástroje pre zefektívnenie ich publikovania a " +"katalogizáciu, zdieľanie, vyhľadávanie a používanie dát (ako úložisko dát s " +"robustným dátovým rozhraním API). CKAN je určený pre všetkých poskytovateľov" +" dát (národné a regionálne vlády, spoločnosti a organizácie), ktorí chcú, " +"aby ich dáta boli otvorené a dostupné.

CKAN je používaný vládami a " +"skupinami používateľov po celom svete na prevádzku rôznych oficiálnych a " +"komunitných dátových portálov, vrátane portálov pre miestne, národné a " +"medzinárodné vlády, ako napríklad vo Veľkej Británii data.gov.uk a Európskej únii publicdata.eu , Brazílii dados.gov.br , Holandsku, ale aj stránky " +"miest a obcií v USA, Veľkej Británii, Argentíne, Fínsku a inde " +"

CKAN: http://ckan.org/
CKAN " +"prehliadka: http://ckan.org/tour/
Prehľad funkcii: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3381,11 +3381,11 @@ msgstr "Vitajte v CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Toto je milý úvodný paragraf o CKAN vo všeobecnosti. Nemáme sem zatiaľ čo" -" dať, ale čoskoro sa to zmení" +"Toto je milý úvodný paragraf o CKAN vo všeobecnosti. Nemáme sem zatiaľ čo " +"dať, ale čoskoro sa to zmení" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3430,12 +3430,12 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"Tu môžete použiť Markdown formátovanie" #: ckan/templates/macros/form.html:265 @@ -3505,8 +3505,8 @@ msgstr "Predbežný návrh" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Súkromný" @@ -3560,15 +3560,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Administrátor: Môže pridávať, upravovať a mazať " -"datasety a môže taktiež spravovat členov organizácie.

" -"

Editor: Môže pridávať, upravovať a mazať datasety, " -"ale nemôže spravovať členov organizácie.

Člen: " -"Môže si zobraziť súkromné datasety organizácie, ale nemôže přidávať " -"datasety.

" +"

Administrátor: Môže pridávať, upravovať a mazať datasety" +" a môže taktiež spravovat členov organizácie.

" +"

Editor: Môže pridávať, upravovať a mazať datasety, ale " +"nemôže spravovať členov organizácie.

Člen: Môže si " +"zobraziť súkromné datasety organizácie, ale nemôže přidávať datasety.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3610,23 +3609,22 @@ msgstr "Čo sú to Organizácie" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Organizácie sú používané na vytváranie, spravovanie a publikovanie \"\n" -"\"zbierok datasetov. Používatelia môžu mať rozličné role v Organizácii, v" -" závislosti \"\n" +"\"zbierok datasetov. Používatelia môžu mať rozličné role v Organizácii, v závislosti \"\n" "\"od ich úrovne autorizácie vytvárať, upravovať a pulikovať" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3643,9 +3641,8 @@ msgstr "Zopár informácií o mojej organizácií" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Ste si istý, že chcete zmazať Organizáciu? Súčasne zmažete aj všetky verejné" " a súkromné datasety, ktoré boli vytvorené za túto organizáciu." @@ -3670,9 +3667,9 @@ msgstr "Čo sú to datasety?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" "CKAN dataset je súbor dátových zdrojov (ako napríklad súbory), spolu s " "popisom a ďalšími informáciami na pevnej URL. Datasety sú to, čo " @@ -3757,15 +3754,15 @@ msgstr "Pridať náhľad" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" "Náhľady Data Explorer môžu byť pomalé a nespoľahlivé, ak nie je povolené " "DataStore rozšírenie. Ďalšie informácie nájdete v Data Explorer" -" dokumentácii." +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"dokumentácii." #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3775,12 +3772,11 @@ msgstr "Pridať" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Toto je staré spracovanie tohto datasetu upravované v %(timestamp)s. Môže" -" sa výrazne líšiť od aktuálnej verzie." +"Toto je staré spracovanie tohto datasetu upravované v %(timestamp)s. Môže sa" +" výrazne líšiť od aktuálnej verzie." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3849,12 +3845,12 @@ msgstr "Je možné, že správca stránky nepovolil príslušný plugin pre náh #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"Ak náhľad vyžaduje DataStore, DataStore plugin nemusí byť povolený, alebo" -" dáta neboli odoslané do DataStore, alebo DataStore doposiaľ neukončil " +"Ak náhľad vyžaduje DataStore, DataStore plugin nemusí byť povolený, alebo " +"dáta neboli odoslané do DataStore, alebo DataStore doposiaľ neukončil " "spracovanie dát" #: ckan/templates/package/resource_read.html:144 @@ -3922,11 +3918,11 @@ msgstr "Pridať nový zdroj" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

Dataset neobsahuje dáta, prečo " -"nejaké nepridať?

" +"

Dataset neobsahuje dáta, prečo nejaké" +" nepridať?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3955,8 +3951,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " msgstr "" -"Prístup do tohto zoznamu je možný aj cez API rozhranie %(api_link)s (viď." -" dokumentácia API %(api_doc_link)s)." +"Prístup do tohto zoznamu je možný aj cez API rozhranie %(api_link)s (viď. " +"dokumentácia API %(api_doc_link)s)." #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -4071,18 +4067,17 @@ msgstr "Aktívny" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Licencia zvolená vyššie sa vzťahuje len na obsah zdrojových " -"súborov, ktoré pridáte do tohto datasetu. Odoslaním tohto formulára " -"súhlasíte s publikovaním metadát, ktoré zadáte do formulára pod Otvorená " -"databázová licencia." +"Licencia zvolená vyššie sa vzťahuje len na obsah zdrojových súborov, " +"ktoré pridáte do tohto datasetu. Odoslaním tohto formulára súhlasíte s " +"publikovaním metadát, ktoré zadáte do formulára pod Otvorená databázová " +"licencia." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4221,8 +4216,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Môžete skopírovať a vložiť pridaný kód do CMS alebo do blog softvéru, " -"ktorý podporuje raw HTML" +"Môžete skopírovať a vložiť pridaný kód do CMS alebo do blog softvéru, ktorý " +"podporuje raw HTML" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4421,8 +4416,8 @@ msgstr "

Prosím vyskúšajte iný vyhľadávací výraz.

#: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4581,11 +4576,10 @@ msgstr "Informácie o účte" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Pomocou vášho CKAN profilu môžete povedať ostatným používateľom niečo o " -"sebe a o tom čo robíte." +"Pomocou vášho CKAN profilu môžete povedať ostatným používateľom niečo o sebe" +" a o tom čo robíte." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4731,7 +4725,8 @@ msgstr "Prečo by som sa mal prihlásiť?" #: ckan/templates/user/new.html:28 msgid "Create datasets, groups and other exciting things" -msgstr "Aby ste mohli vytvárať datasety, skupiny a veľa ďalších zaujímavých vecí" +msgstr "" +"Aby ste mohli vytvárať datasety, skupiny a veľa ďalších zaujímavých vecí" #: ckan/templates/user/new_user_form.html:5 msgid "username" @@ -4810,11 +4805,11 @@ msgstr "Požiadať o obnovenie" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Zadajte svoje používateľské meno do poľa a bude Vám zaslaný email s " -"odkazom pre zadanie nového hesla." +"Zadajte svoje používateľské meno do poľa a bude Vám zaslaný email s odkazom " +"pre zadanie nového hesla." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4840,4 +4835,3 @@ msgstr "Hľadať používateľov" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/sl/LC_MESSAGES/ckan.po b/ckan/i18n/sl/LC_MESSAGES/ckan.po index c5885777d2a..e0d2c7691a4 100644 --- a/ckan/i18n/sl/LC_MESSAGES/ckan.po +++ b/ckan/i18n/sl/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Slovenian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,15 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: sl\n" -"Language-Team: Slovenian (https://www.transifex.com/okfn/teams/11162/sl/)" -"\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 " -"|| n%100==4 ? 2 : 3)\n" +"Language-Team: Slovenian (https://www.transifex.com/okfn/teams/11162/sl/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,14 +116,14 @@ msgstr "DataStore vir ni na voljo" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Podatki so napačni (na primer: numerična vrednost je izven dovoljenega " "obsega ali pa je bila vnešena v tekstovno polje)." @@ -145,14 +144,14 @@ msgstr "CKAN podatkovni API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" -msgstr "Dostopaj do podatkov virov preko spletnega API-ja z močno query podporo" +msgstr "" +"Dostopaj do podatkov virov preko spletnega API-ja z močno query podporo" #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Več informacij o main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Več informacij o Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Naslov strani: To je naslov te CKAN instance Pojavi " -"se na različnih mestih po CKANu.

Stil: Izberite s" -" seznama preprostih variacij glavne barvne sheme za hitro menjavo " -"teme.

Logo strani: Ta logo se pojavi v glavi vseh" -" osnutkov the CKAN instance.

O strani: Ta tekst " -"se pojavi na O strani te CKAN instance

" -"

Intro Tekst: Ta tekst se pojavi na domači strani te CKAN instance kot pozdrav " -"obiskovalcem.

Lasten CSS: Ta blok CSS-a se pojave" -" v <glavi> vsake strani. Če želite bolj spremeniti " -"podobo te strani , potem priporoačmo da preberete dokumentacijo.

" +"

Naslov strani: To je naslov te CKAN instance Pojavi se " +"na različnih mestih po CKANu.

Stil: Izberite s " +"seznama preprostih variacij glavne barvne sheme za hitro menjavo teme.

" +"

Logo strani: Ta logo se pojavi v glavi vseh osnutkov the" +" CKAN instance.

O strani: Ta tekst se pojavi na O strani te CKAN instance

Intro " +"Tekst: Ta tekst se pojavi na domači " +"strani te CKAN instance kot pozdrav obiskovalcem.

Lasten " +"CSS: Ta blok CSS-a se pojave v <glavi> vsake " +"strani. Če želite bolj spremeniti podobo te strani , potem priporoačmo da " +"preberete dokumentacijo.

" "

Domača stran: To je za izbiranje vnaprej določenih " "osnutkov za module, ki se pojavijo na domači strani.

" @@ -2797,13 +2794,12 @@ msgstr "Administriraj CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Kot skrbnik sistema imaš poln nadzor nad to CKAN instanco. Nadaljuj " -"skrbno!

Za nasvete o uporabi skrbniških natavitev, si poglej CKAN " -"skrbniška navodila

" +"skrbno!

Za nasvete o uporabi skrbniških natavitev, si poglej CKAN skrbniška navodila

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2966,8 +2962,9 @@ msgstr "Ali ste prepričani, da želite izbrisati člana - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Oskrbi" @@ -2999,7 +2996,8 @@ msgstr "Išči po skupinah..." msgid "There are currently no groups for this site" msgstr "Trenutno ni skupin za to stran" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Ali bi naredili novo?" @@ -3032,8 +3030,7 @@ msgstr "Obstoječi član" #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." msgstr "" -"Če želite dodati obstoječega člana, poiščite njihovo uporabniško ime " -"spodaj." +"Če želite dodati obstoječega člana, poiščite njihovo uporabniško ime spodaj." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3050,19 +3047,22 @@ msgstr "Nov uporabnik" msgid "If you wish to invite a new user, enter their email address." msgstr "Če želite povabiti novega člana, vnesite njihov email naslov." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Vloga" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Ste preprićani da želite izbrisati tega člana?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3083,12 +3083,12 @@ msgstr "Kaj so vloge?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Skrbnik: Lahko ureja informacijo o skupini, kot tudi" -" upravlja s člani organizacije.

Član: Lahko " +"

Skrbnik: Lahko ureja informacijo o skupini, kot tudi " +"upravlja s člani organizacije.

Član: Lahko " "doda/odstrani nabore podatkov iz skupin

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 @@ -3159,13 +3159,13 @@ msgstr "Kaj so skupine?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -" CKAN skupine lahko uporabite za ustvarjanje in upravljanje zbirk naborov" -" podatkov. To so lahko katalogi naborov podatkov za določen projekt ali " +" CKAN skupine lahko uporabite za ustvarjanje in upravljanje zbirk naborov " +"podatkov. To so lahko katalogi naborov podatkov za določen projekt ali " "ekipo, ali za določeno tematiko, ali kot preprost način da drugi ljudje " "najdejo in uporabijo vaše objavljene nabore podatkov. " @@ -3230,14 +3230,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3248,20 +3247,20 @@ msgid "" "href=\"http://ckan.org/features/\">http://ckan.org/features/

" msgstr "" "

CKAN je vodilna odprto-kodna platforma za podatkovne portale na " -"svetu.

CKAN je popolnoma 'out-of-the-box' rešitev, ki naredi " -"podatke dostopne in uporabne – tako da ponudi orodja za preprosto objavo," -" izmenjavo, iskanje in uporabo podatkov (vključno s shrambo podatkov in " -"ponudbo robustnih podatkovnih API-jev). CKAN je namenjen objavljalcem " -"podatkov (državne in regionalne uprave, podjetja in organizacije), ki " -"želijo narediti svoje podatke odprte in dostopne.

CKAN uporabljajo" -" državne vlade ter uporabniške skupine po celem svetu in tudi omogoča " -"številne portale uradnim in skupnostnim skupinam, kot tudi portale za " -"lokalne, državne, in mednarodne vlade, kot je npr. za Združeno kraljestvo" -" data.gov.uk za Evropsko unijo

CKAN je popolnoma 'out-of-the-box' rešitev, ki naredi podatke " +"dostopne in uporabne – tako da ponudi orodja za preprosto objavo, izmenjavo," +" iskanje in uporabo podatkov (vključno s shrambo podatkov in ponudbo " +"robustnih podatkovnih API-jev). CKAN je namenjen objavljalcem podatkov " +"(državne in regionalne uprave, podjetja in organizacije), ki želijo narediti" +" svoje podatke odprte in dostopne.

CKAN uporabljajo državne vlade ter" +" uporabniške skupine po celem svetu in tudi omogoča številne portale uradnim" +" in skupnostnim skupinam, kot tudi portale za lokalne, državne, in " +"mednarodne vlade, kot je npr. za Združeno kraljestvo data.gov.uk za Evropsko unijo publicdata.eu, za Brazilski dados.gov.br, Nizozemski vladni portal," -" kot tudi za mesta in občine v ZDA, združenem kraljestvu, Argentini, " -"Finski in še drugod.

CKAN: dados.gov.br, Nizozemski vladni portal, " +"kot tudi za mesta in občine v ZDA, združenem kraljestvu, Argentini, Finski " +"in še drugod.

CKAN: http://ckan.org/
CKAN Ogled: http://ckan.org/tour/
Lastnosti " "overview: Markdown formatting here" msgstr "" "Uporabite lahko Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Skrbnik: Lahko doda/uredi in izbriše nabore " -"podatkov, kot tudi upravlja s člani organizacije.

" -"

Urejevalec: Lahko doda in uredi nabore poadtkov, tuda" -" ne more upravljati s člani organizacije.

Član: " -"Lahko vidi zasebne nabore podatkov organizacije, vendar ne more dodati " -"novih naborov podatkov.

" +"

Skrbnik: Lahko doda/uredi in izbriše nabore podatkov, " +"kot tudi upravlja s člani organizacije.

Urejevalec: " +"Lahko doda in uredi nabore poadtkov, tuda ne more upravljati s člani " +"organizacije.

Član: Lahko vidi zasebne nabore " +"podatkov organizacije, vendar ne more dodati novih naborov podatkov.

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3502,30 +3500,29 @@ msgstr "Kaj so organizacije?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Organizations delujejo kot oddelki za izdajanje naborov podatkov " -"(npr. oddelek za zdravstvo). To pomeni da se lahko nabori podatkov " -"izdajo in pripadajo oddelku namesto posamezenm uporabniku.

" -"

Skrbniki lahko določijo vloge in omogočijo članom znotraj " -"organizacije, da lahko objavijo nabore podatkov njihove organizacije " -"(npr. Urad za državno statistiko).

" +"

Organizations delujejo kot oddelki za izdajanje naborov podatkov (npr. " +"oddelek za zdravstvo). To pomeni da se lahko nabori podatkov izdajo in " +"pripadajo oddelku namesto posamezenm uporabniku.

Skrbniki lahko " +"določijo vloge in omogočijo članom znotraj organizacije, da lahko objavijo " +"nabore podatkov njihove organizacije (npr. Urad za državno statistiko).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" " CKAN organizacije se uporabljajo da ustvarijo, upravljajo in izdajajo " "zbrike naborov podatkov. Uporabniki lahko imajo različne vloge znotraj " -"organizacije, glede na njihovo raven avtorizacije za ustvarjanje, " -"urejanje in izdajanje podatkov. " +"organizacije, glede na njihovo raven avtorizacije za ustvarjanje, urejanje " +"in izdajanje podatkov. " #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3541,9 +3538,8 @@ msgstr "Nekaj informacij o moji organizaciji..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Ste prepričani, da želite izbrisati to organizacijo? To bo izbrisalo vse " "javne in zasebne nabore podatkov, ki pripadajo tej organizaciji." @@ -3568,12 +3564,12 @@ msgstr "Kaj so nabori podatkov?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -" CKAN nabor podatkov je zbirka podatkovnih virov (npr. datotek), z opisom" -" in drugimi informaciji, na stalnem URL naslovu. Nabore podatkov vidijo " +" CKAN nabor podatkov je zbirka podatkovnih virov (npr. datotek), z opisom in" +" drugimi informaciji, na stalnem URL naslovu. Nabore podatkov vidijo " "uporabniki ko iščejo podatke. " #: ckan/templates/package/confirm_delete.html:12 @@ -3655,15 +3651,15 @@ msgstr "Dodaj pogled" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" " Data Explorer pogledi so lahko počasni in nezanesljivi, razen če je " "omogočena DataStore razširitev. Za več informacij, prosim poglejte Data Explorer" -" dokumentacijo. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"dokumentacijo. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3673,9 +3669,8 @@ msgstr "Dodaj" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "To je starejša različica tega nabora podatkov, kot je bila urejena " "%(timestamp)s. Lahko se zelo razlikuje od trenutne " @@ -3748,9 +3743,9 @@ msgstr "Skrbniki sistema mogoče niso omogočili vtičnikov za ustrezne poglede" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "Če pogled potrebuje DataStore, lahko da njegov vtičnik ni vključen , ali " "podatki še niso na voljo v DataStore, ali pa DataStore še ni dokončal s " @@ -3821,8 +3816,8 @@ msgstr "Dodaj nov vir" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Ta nabor podatkov nima podatkov, zakaj jih ne bi nekaj dodali?

" @@ -3970,19 +3965,17 @@ msgstr "Aktivno" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "Licenca ki ste jo izbrali zgoraj se nanaša samo na vsebino " -"virov/datotek, ki ste jih dodali k temu naboru podatkov. Ob predložitvi " -"tega obrazca, se strinjate z objavo meta podatkov, ki ste jih " -"vnesli v obrazec pod Open Database " -"License." +"virov/datotek, ki ste jih dodali k temu naboru podatkov. Ob predložitvi tega" +" obrazca, se strinjate z objavo meta podatkov, ki ste jih vnesli v " +"obrazec pod Open " +"Database License." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4093,8 +4086,8 @@ msgstr "Kaj je vir?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Vir je lahko vsaka datoteka ali povezava na datoteko, ki vsebuje uporabne" -" podatke." +"Vir je lahko vsaka datoteka ali povezava na datoteko, ki vsebuje uporabne " +"podatke." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4121,8 +4114,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Vključitveno kodo lahko kopirate in prilepite v CMS ali blog software, ki" -" podpira surov HTML zapis" +"Vključitveno kodo lahko kopirate in prilepite v CMS ali blog software, ki " +"podpira surov HTML zapis" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4321,8 +4314,8 @@ msgstr "

Poskusite drugačno iskanje.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4481,11 +4474,10 @@ msgstr "Informacije o računu" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -" Vaš profil omogoča durgim CKAN uporabnikom, da spoznajo kdo ste in s čim" -" se ukvarjate. " +" Vaš profil omogoča durgim CKAN uporabnikom, da spoznajo kdo ste in s čim se" +" ukvarjate. " #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4708,11 +4700,11 @@ msgstr "Zahtevajte ponastavitev" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Vnesite uporabniško ime v polje in vam bomo poslali email s povezavo, " -"kjer boste vnesli novo geslo." +"Vnesite uporabniško ime v polje in vam bomo poslali email s povezavo, kjer " +"boste vnesli novo geslo." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4738,4 +4730,3 @@ msgstr "Preišči uporabnike" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/sq/LC_MESSAGES/ckan.po b/ckan/i18n/sq/LC_MESSAGES/ckan.po index 8a18ef3c46f..9bc42a46b58 100644 --- a/ckan/i18n/sq/LC_MESSAGES/ckan.po +++ b/ckan/i18n/sq/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Albanian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,13 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: sq\n" "Language-Team: Albanian (https://www.transifex.com/okfn/teams/11162/sq/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -115,14 +116,14 @@ msgstr "Burimi i depove të të dhënave nuk u gjet" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "Të dhënat ishin të pavlefshme (si për shembull: një vlerë numerike është " "jashtë rangut ose është futur në një fushë të tekstit)." @@ -151,8 +152,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Informata shtesë në main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Informata shtesë në API kryesor të të dhënave të CKAN dhe dokumentimi i " -"depos të të dhënave.

" +"target=\"_blank\">API kryesor të të dhënave të CKAN dhe dokumentimi i depos " +"të të dhënave.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -413,8 +412,7 @@ msgstr "0 sete të të dhënave" #: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 msgid "CKAN's data previewing tool has many powerful features" msgstr "" -"Mjeti i CKAN për rishikimin e të dhënave ka shumë karakteristika të " -"fuqishme" +"Mjeti i CKAN për rishikimin e të dhënave ka shumë karakteristika të fuqishme" #: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 #: ckan/templates/group/snippets/info.html:32 @@ -453,8 +451,7 @@ msgstr "Url e imazhit" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "eg. http://example.com/image.jpg (if blank uses resource url)" msgstr "" -"p.sh. http://example.com/image.jpg (nëse vendi bosh përdor url-në e " -"burimit)" +"p.sh. http://example.com/image.jpg (nëse vendi bosh përdor url-në e burimit)" #: ckanext/reclineview/plugin.py:101 msgid "Data Explorer" @@ -1051,19 +1048,21 @@ msgstr "Të paautorizuar për të shikuar ndjekësit %s" #: ckan/controllers/home.py:35 msgid "This site is currently off-line. Database is not initialised." -msgstr "Kjo faqe është aktualisht off-line. Baza e të dhënave nuk është ndezur." +msgstr "" +"Kjo faqe është aktualisht off-line. Baza e të dhënave nuk është ndezur." #: ckan/controllers/home.py:73 #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Ju lutem ndryshoni profilin tuaj, si dhe shtoni email" -" adresën " +"Ju lutem ndryshoni profilin tuaj, si dhe shtoni email " +"adresën " #: ckan/controllers/home.py:75 #, python-format msgid "%s uses your email address if you need to reset your password." -msgstr "%s përdor email adresën tuaj nëse ju nevojitet ndryshimi i fjalëkalimit." +msgstr "" +"%s përdor email adresën tuaj nëse ju nevojitet ndryshimi i fjalëkalimit." #: ckan/controllers/package.py:288 msgid "Invalid search query: {error_message}" @@ -1284,8 +1283,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Përdoruesi \"%s\" është i regjistruar tani, mirëpo ju jeni ende të kyçur " -"si \"%s\", nga më parë" +"Përdoruesi \"%s\" është i regjistruar tani, mirëpo ju jeni ende të kyçur si " +"\"%s\", nga më parë" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1792,9 +1791,10 @@ msgstr "Emri duhet të jetë një maksimum prej %i karaktere i gjatë" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" -msgstr "Duhet të jenë karaktere aflanumerike të vogla (ascii) dhe këto simbole: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" +msgstr "" +"Duhet të jenë karaktere aflanumerike të vogla (ascii) dhe këto simbole: -_" #: ckan/logic/validators.py:361 msgid "That URL is already in use." @@ -2128,14 +2128,15 @@ msgstr "" #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." -msgstr "Asnjë paketë nuk u gjet për këtë burim, autentifkimi nuk mund të kryhet." +msgstr "" +"Asnjë paketë nuk u gjet për këtë burim, autentifkimi nuk mund të kryhet." #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" msgstr "" -"Përdoruesi %s nuk është i autorizuar të krijoj burime në setin e të " -"dhënave %s" +"Përdoruesi %s nuk është i autorizuar të krijoj burime në setin e të dhënave " +"%s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2154,7 +2155,8 @@ msgstr "Përdoruesi %s nuk është i autorizuar të krijoj organizata" #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" -msgstr "Përdoruesi {user} nuk është i autorizuar të krijoj përdorues përmes API" +msgstr "" +"Përdoruesi {user} nuk është i autorizuar të krijoj përdorues përmes API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2262,7 +2264,8 @@ msgstr "Përdoruesi %s nuk është i autorizuar të redaktoj burimin %s" #: ckan/logic/auth/update.py:100 #, python-format msgid "User %s not authorized to change state of package %s" -msgstr "Përdoruesi %s nuk është i autorizuar të ndryshoj gjendjen e paketës %s" +msgstr "" +"Përdoruesi %s nuk është i autorizuar të ndryshoj gjendjen e paketës %s" #: ckan/logic/auth/update.py:128 #, python-format @@ -2302,14 +2305,14 @@ msgstr "" #: ckan/logic/auth/update.py:226 #, python-format msgid "User %s not authorized to update task_status table" -msgstr "Përdoruesi %s nuk është i autorizuar të ndryshoj tabelën e task_status" +msgstr "" +"Përdoruesi %s nuk është i autorizuar të ndryshoj tabelën e task_status" #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" msgstr "" -"Përdoruesi %s nuk është i autorizuar të ndryshoj tabelën e " -"term_translation" +"Përdoruesi %s nuk është i autorizuar të ndryshoj tabelën e term_translation" #: ckan/model/license.py:222 msgid "License not specified" @@ -2554,11 +2557,11 @@ msgstr "E pamundur të nxirren të dhënat për dosjen e ngarkuar" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" -"Ju jeni duke ngarkuar një skedar. A jeni të sigurt që doni të largoheni " -"dhe t'a ndalni këtë ngarkim?" +"Ju jeni duke ngarkuar një skedar. A jeni të sigurt që doni të largoheni dhe " +"t'a ndalni këtë ngarkim?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 @@ -2734,22 +2737,21 @@ msgstr "Opcionet e konfigurimit të CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2765,15 +2767,14 @@ msgstr "Administratro CKAN-in " #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Si një adiminstrator i sistemit ju keni kontroll të plotë mbi këtë " -"instancë të CKAN-it. Vazhdoni me kujdes!

Për udhëzime mbi " -"përdorimin e karakteristikave të adimnstratorit të sistemit, shikoni " -"CKANudhërrëfyesin e " -"adiminstratorit të sistemit

" +"instancë të CKAN-it. Vazhdoni me kujdes!

Për udhëzime mbi përdorimin " +"e karakteristikave të adimnstratorit të sistemit, shikoni CKANudhërrëfyesin e adiminstratorit të " +"sistemit

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2938,8 +2939,9 @@ msgstr "A jeni të sigurtë që doni të fshini anëtarin - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Menaxho" @@ -2971,7 +2973,8 @@ msgstr "Kërko grupin..." msgid "There are currently no groups for this site" msgstr "Momentalisht nuk ka grupe për këtë faqe" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Dëshironi të krijoni një të re?" @@ -3021,22 +3024,24 @@ msgstr "Përdorues i ri" #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." msgstr "" -"Nëse dëshrioni të shtoni një përdorues të ri, shtypni elmain adresën e " -"tyre." +"Nëse dëshrioni të shtoni një përdorues të ri, shtypni elmain adresën e tyre." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Roli" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "A jeni i sigurtë që dëshironi të fshini këtë anëtar?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3057,12 +3062,12 @@ msgstr "Çka janë rolet?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Administratori:Mund të redaktoj informacionet e " -"grupit, gjithashtu të menagjoj me antarët e organizatës

" +"

Administratori:Mund të redaktoj informacionet e grupit, " +"gjithashtu të menagjoj me antarët e organizatës

" "

Anëtari:Mund të shtoj/fshij setet e të dhënave prej " "grupeve

" @@ -3134,16 +3139,16 @@ msgstr "Çfarë janë Grupet?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Grupet e CKAN-it mund t'i përdorni për të krijuar dhe menaxhuar " -"koleksionet e seteve të të dhënave. Këto përdoren me qëllim të " -"grumbullimit të seteve të të dhënave për një projekt apo ekip të veçantë," -" ose temë të caktuar, ose edhe si një mënyrë më e lehtë për t'i ndihmuar " -"të tjerët për të gjetur e kërkuar setet e publikuara të të dhënave." +"Grupet e CKAN-it mund t'i përdorni për të krijuar dhe menaxhuar koleksionet" +" e seteve të të dhënave. Këto përdoren me qëllim të grumbullimit të seteve " +"të të dhënave për një projekt apo ekip të veçantë, ose temë të caktuar, ose " +"edhe si një mënyrë më e lehtë për t'i ndihmuar të tjerët për të gjetur e " +"kërkuar setet e publikuara të të dhënave." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3206,14 +3211,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3230,11 +3234,11 @@ msgstr "Mirësevini në CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Ky është një paragraf hyrës rreth CKAN ose faqës në përgjithësi. Nuk kemi" -" ndonjë shembull për të treguar këtu ende, por së shpejti do kemi" +"Ky është një paragraf hyrës rreth CKAN ose faqës në përgjithësi. Nuk kemi " +"ndonjë shembull për të treguar këtu ende, por së shpejti do kemi" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3279,12 +3283,12 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" -"Mund të përdorni Markdown formatimin here" #: ckan/templates/macros/form.html:265 @@ -3354,8 +3358,8 @@ msgstr "Draft" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Private" @@ -3409,15 +3413,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Administratori: Mund të shtoj/redaktoj dhe fshij " -"setet e të dhënave, si dhe të menaxhoj anëtarët e organizatës

" -"

Redaktori:Mund të shtoj dhe redaktoj setet e të " -"dhënave, por jo të menaxhoj anëtarët e organizatës.

" -"

Anëtari: Mund të shikoj setet private të të dhënave " -"të organizatës .

" +"

Administratori: Mund të shtoj/redaktoj dhe fshij setet e" +" të dhënave, si dhe të menaxhoj anëtarët e organizatës

" +"

Redaktori:Mund të shtoj dhe redaktoj setet e të dhënave," +" por jo të menaxhoj anëtarët e organizatës.

Anëtari:" +" Mund të shikoj setet private të të dhënave të organizatës .

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3457,31 +3460,31 @@ msgstr "Çfarë janë Organizatat?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Organizatat sillen si departmente publicistike për të dhënat (për " -"shembull, Departmenti i Shëndetësisë). Kjo nënkupton që setet e të " -"dhënave mund të publikohen dhe t'i përkasin një departmenti, në vend të " -"një përdoruesi individual.

Mbrenda organizatave, administratori " -"mund të caktoj role dhe të autorizoj anëtarët e tij, duke i'u dhënë të " -"drejta përdoruesve individual të publikojnë sete të të dhënave për një " -"organizatë të caktuar (p.sh. Zyra Kombëtare e Statistikave).

" +"shembull, Departmenti i Shëndetësisë). Kjo nënkupton që setet e të dhënave " +"mund të publikohen dhe t'i përkasin një departmenti, në vend të një " +"përdoruesi individual.

Mbrenda organizatave, administratori mund të " +"caktoj role dhe të autorizoj anëtarët e tij, duke i'u dhënë të drejta " +"përdoruesve individual të publikojnë sete të të dhënave për një organizatë " +"të caktuar (p.sh. Zyra Kombëtare e Statistikave).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Organizatat në CKAN përdoren për të krijuar, menaxhuar dhe publikuar " -"koleksione të të dhënave. Përdoruesit mund të kenë role të ndryshme " -"mbrenda një Organizate, dhe varësisht prej nivelit të autorizimit ata " -"mund të krijojn, redaktojn dhe bëjnë publikime." +"koleksione të të dhënave. Përdoruesit mund të kenë role të ndryshme mbrenda " +"një Organizate, dhe varësisht prej nivelit të autorizimit ata mund të " +"krijojn, redaktojn dhe bëjnë publikime." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3497,9 +3500,8 @@ msgstr "Disa informacione rreth organizatës time..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Jeni të sigurtë që doni ta fshini këtë organizatë? Kjo do të fshijë të " "gjitha setet e të dhënave publike dhe private që i përkasin kësaj " @@ -3525,9 +3527,9 @@ msgstr "Çfarë janë setet e të dhënave?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3609,9 +3611,9 @@ msgstr "Shto faqën" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3622,9 +3624,8 @@ msgstr "Shto" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Ky është një verison i vjetër i setit të të dhënave, e modifikuar më " "%(timestamp)s. Mund të dalloj thelbësisht prej versionit momental This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Ky set i të dhënave nuk ka të dhëna, pse të mos shtoni disa?

" @@ -3919,17 +3920,16 @@ msgstr "Aktiv" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Licencën e të dhënave që ju zgjidhni sipër vlen vetëm për " -"përmbajtjet e çfarëdo dosjeje burimore që ju e shtoni në këtë set të të " -"dhënave. Me ruajtjen e formës, ju pajtoheni të lëshoni të dhënat " -"personale që ju i shtypni në formën nën Licencën e të dhënave që ju zgjidhni sipër vlen vetëm për përmbajtjet" +" e çfarëdo dosjeje burimore që ju e shtoni në këtë set të të dhënave. Me " +"ruajtjen e formës, ju pajtoheni të lëshoni të dhënat personale që " +"ju i shtypni në formën nën Open Database " "License." @@ -4131,7 +4131,8 @@ msgstr "Çfarë është një faqe?" #: ckan/templates/package/snippets/view_help.html:4 msgid "A view is a representation of the data held against a resource" -msgstr "Një faqe është një përfaqësim i të dhënave, të mbajtura kundër një burimi" +msgstr "" +"Një faqe është një përfaqësim i të dhënave, të mbajtura kundër një burimi" #: ckan/templates/revision/diff.html:6 msgid "Differences" @@ -4270,8 +4271,8 @@ msgstr "

Ju lutem provoni të kërkoni diçka tjetër

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4418,11 +4419,10 @@ msgstr "Info mbi llogarinë" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Profili juaj lejon që përdoruesit e tjerë të CKAN të dijnë se kush jeni " -"ju dhe se çfarë bëni." +"Profili juaj lejon që përdoruesit e tjerë të CKAN të dijnë se kush jeni ju " +"dhe se çfarë bëni." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4514,8 +4514,8 @@ msgstr "Keni harruar fjalëkalimin tuaj?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Nuk ka problem, përdorni formularin tonë të rimëkëmbjes të fjalëkalimit " -"për të rivendosur atë." +"Nuk ka problem, përdorni formularin tonë të rimëkëmbjes të fjalëkalimit për " +"të rivendosur atë." #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4548,7 +4548,8 @@ msgstr "Ju jeni tashmë të kyçur" #: ckan/templates/user/logout_first.html:24 msgid "You need to log out before you can log in with another account." -msgstr "Ju duhet të dilni jasht sistemit para se të kyçeni me një tjetër llogari." +msgstr "" +"Ju duhet të dilni jasht sistemit para se të kyçeni me një tjetër llogari." #: ckan/templates/user/logout_first.html:25 msgid "Log out now" @@ -4649,8 +4650,8 @@ msgstr "Kërkesa u rivendos" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Shtypni emrin tuaj të përdoruesit në kuti dhe ne do të ju dërgojmë një " "lidhje për të shtypur një fjalëkalim të ri." @@ -4679,4 +4680,3 @@ msgstr "Kërko përdorues" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/sr/LC_MESSAGES/ckan.po b/ckan/i18n/sr/LC_MESSAGES/ckan.po index 15f92e3da2f..9f3d68c1c49 100644 --- a/ckan/i18n/sr/LC_MESSAGES/ckan.po +++ b/ckan/i18n/sr/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Serbian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: sr\n" "Language-Team: Serbian (https://www.transifex.com/okfn/teams/11162/sr/)\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,8 +157,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -268,8 +267,7 @@ msgstr "АПИ података" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -748,8 +746,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Немогуће одбацивање пакета %s јер придружена верзија %s садржи пакете " -"који се не могу обрисати %s" +"Немогуће одбацивање пакета %s јер придружена верзија %s садржи пакете који " +"се не могу обрисати %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1039,8 +1037,8 @@ msgstr "Сајт је тренутно недоступан. База није #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Молимо Вас, ажурирајте Ваш профил и додајте своју " -"емаил адресу." +"Молимо Вас, ажурирајте Ваш профил и додајте своју емаил " +"адресу." #: ckan/controllers/home.py:75 #, python-format @@ -1266,8 +1264,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Корисник \"%s\" је сада регистрован, али сте и далје улоговани као \"%s\"" -" од раније" +"Корисник \"%s\" је сада регистрован, али сте и далје улоговани као \"%s\" од" +" раније" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1782,8 +1780,8 @@ msgstr "Име може бити дуго највише %i карактера" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1828,8 +1826,7 @@ msgstr "Дужина тага \"%s\" је вeћа од максималне (%i) #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Таг \"%s\" мора бити састављен од алфанумеричких карактера или симбола: " -"-_." +"Таг \"%s\" мора бити састављен од алфанумеричких карактера или симбола: -_." #: ckan/logic/validators.py:436 #, python-format @@ -1865,8 +1862,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Мењања није дозвољено, јер изгледа непожељно. Избегавајте линкове у Вашем" -" опису." +"Мењања није дозвољено, јер изгледа непожељно. Избегавајте линкове у Вашем " +"опису." #: ckan/logic/validators.py:620 #, python-format @@ -2117,8 +2114,7 @@ msgstr "" #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"Нема пронађених пакетa за овај ресурс, не може да провери аут (лош " -"превод)." +"Нема пронађених пакетa за овај ресурс, не може да провери аут (лош превод)." #: ckan/logic/auth/create.py:76 #, python-format @@ -2547,8 +2543,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2724,22 +2720,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2755,9 +2750,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2921,8 +2915,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -2954,7 +2949,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -3003,19 +2999,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3036,8 +3035,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3109,10 +3108,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3176,14 +3175,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3200,8 +3198,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3247,8 +3245,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3319,8 +3317,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3374,8 +3372,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3417,19 +3415,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3446,9 +3444,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3471,9 +3468,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3555,9 +3552,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3568,9 +3565,8 @@ msgstr "Додај" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3640,9 +3636,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3710,8 +3706,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3851,12 +3847,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4192,8 +4187,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4346,8 +4341,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4571,8 +4565,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4599,4 +4593,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.mo b/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.mo index 967f3e2a1e7..78568d7681b 100644 Binary files a/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.mo and b/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.po b/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.po index 03df65a1738..c7b59cd30c5 100644 --- a/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.po +++ b/ckan/i18n/sr_Latn/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Serbian (Latin) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,15 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: sr_Latn\n" -"Language-Team: Serbian (Latin) " -"(https://www.transifex.com/okfn/teams/11162/sr%40latin/)\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Language-Team: Serbian (Latin) (https://www.transifex.com/okfn/teams/11162/sr@latin/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,14 +116,14 @@ msgstr "" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:258 ckanext/datastore/logic/action.py:286 @@ -148,8 +147,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,8 +156,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -268,8 +266,7 @@ msgstr "API podаtаkа" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -748,8 +745,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Nemoguće odbаcivаnje pаketа %s jer pridruženа verzijа %s sаdrži pаkete " -"koji se ne mogu obrisаti %s" +"Nemoguće odbаcivаnje pаketа %s jer pridruženа verzijа %s sаdrži pаkete koji " +"se ne mogu obrisаti %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1039,8 +1036,8 @@ msgstr "Sаjt je trenutno nedostupаn. Bаzа nije inicijаlizovаnа." #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Molimo Vаs, аžurirаjte Vаš profil i dodаjte svoju " -"emаil аdresu." +"Molimo Vаs, аžurirаjte Vаš profil i dodаjte svoju emаil " +"аdresu." #: ckan/controllers/home.py:75 #, python-format @@ -1266,8 +1263,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Korisnik \"%s\" je sаdа registrovаn, аli ste i dаlje ulogovаni kаo \"%s\"" -" od rаnije" +"Korisnik \"%s\" je sаdа registrovаn, аli ste i dаlje ulogovаni kаo \"%s\" od" +" rаnije" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1782,8 +1779,8 @@ msgstr "Ime može biti dugo nаjviše %i kаrаkterа" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1828,8 +1825,7 @@ msgstr "Dužinа tаgа \"%s\" je većа od mаksimаlne (%i)" #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Tаg \"%s\" morа biti sаstаvljen od аlfаnumeričkih kаrаkterа ili simbolа: " -"-_." +"Tаg \"%s\" morа biti sаstаvljen od аlfаnumeričkih kаrаkterа ili simbolа: -_." #: ckan/logic/validators.py:436 #, python-format @@ -2117,8 +2113,7 @@ msgstr "" #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"Nemа pronаđenih pаketa zа ovаj resurs, ne može dа proveri аut (loš " -"prevod)." +"Nemа pronаđenih pаketa zа ovаj resurs, ne može dа proveri аut (loš prevod)." #: ckan/logic/auth/create.py:76 #, python-format @@ -2547,8 +2542,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2724,22 +2719,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2755,9 +2749,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2921,8 +2914,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -2954,7 +2948,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -3003,19 +2998,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3036,8 +3034,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3109,10 +3107,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3176,14 +3174,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3200,8 +3197,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3247,8 +3244,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3319,8 +3316,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3374,8 +3371,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3417,19 +3414,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3446,9 +3443,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3471,9 +3467,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3555,9 +3551,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3568,9 +3564,8 @@ msgstr "Dodаj" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3640,9 +3635,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3710,8 +3705,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3851,12 +3846,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4192,8 +4186,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4346,8 +4340,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4571,8 +4564,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4599,4 +4592,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/sv/LC_MESSAGES/ckan.mo b/ckan/i18n/sv/LC_MESSAGES/ckan.mo index bc016d7a01a..cbe1173b0a5 100644 Binary files a/ckan/i18n/sv/LC_MESSAGES/ckan.mo and b/ckan/i18n/sv/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/sv/LC_MESSAGES/ckan.po b/ckan/i18n/sv/LC_MESSAGES/ckan.po index 697cbda0a49..eb82e436af8 100644 --- a/ckan/i18n/sv/LC_MESSAGES/ckan.po +++ b/ckan/i18n/sv/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Swedish translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Börje Lewin , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,13 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Börje Lewin , 2018\n" -"Language: sv\n" "Language-Team: Swedish (https://www.transifex.com/okfn/teams/11162/sv/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,17 +117,19 @@ msgstr "Hittade inte DataStore-resursen" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" +"Dataordlistan har sparats. Alla ersättningar träder i kraft när resursen " +"laddats upp till DataStore" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Data är ogiltiga (t.ex. ett numeriskt värde i fel intervall eller infogat" -" i ett textfält)." +"Data är ogiltiga (t.ex. ett numeriskt värde i fel intervall eller infogat i " +"ett textfält)." #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -144,14 +147,14 @@ msgstr "CKAN Data API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" -msgstr "Få tillgång till resursens data via ett webb-API med kraftfullt frågestöd." +msgstr "" +"Få tillgång till resursens data via ett webb-API med kraftfullt frågestöd." #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Mer information finns i main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" " Mer information finns i main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" @@ -468,7 +469,7 @@ msgstr "Karta" #: ckanext/reclineview/theme/public/recline_view.js:28 msgid "error loading view" -msgstr "" +msgstr "Fel vid laddning av vy" #: ckanext/reclineview/theme/public/recline_view.js:75 msgid "Could not load view" @@ -760,8 +761,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Kan inte radera paketet %s eftersom den relaterade versionen %s " -"innehåller paket som ännu inte är raderade %s" +"Kan inte radera paketet %s eftersom den relaterade versionen %s innehåller " +"paket som ännu inte är raderade %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1045,7 +1046,8 @@ msgstr "Behörighet saknas för att se followers %s" #: ckan/controllers/home.py:35 msgid "This site is currently off-line. Database is not initialised." -msgstr "Webbplatsen är för tillfället offline. Databasen är inte initialiserad." +msgstr "" +"Webbplatsen är för tillfället offline. Databasen är inte initialiserad." #: ckan/controllers/home.py:73 #, python-format @@ -1277,9 +1279,7 @@ msgstr "Felaktig Captcha. Var god försök igen." msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" -msgstr "" -"Användare \"%s\" är nu registrerad men du är fortfarande inloggad som " -"\"%s\" " +msgstr "Användare \"%s\" är nu registrerad men du är fortfarande inloggad som \"%s\" " #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1786,8 +1786,8 @@ msgstr "Namn får vara max %i tecken" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" "Får bara vara gemena alfanumeriska tecken (gemener och siffror) samt " "specialtecknen - och _" @@ -1869,8 +1869,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Redigering inte tillåten eftersom det verkar vara spam. Undvik länkar i " -"din beskrivning." +"Redigering inte tillåten eftersom det verkar vara spam. Undvik länkar i din " +"beskrivning." #: ckan/logic/validators.py:620 #, python-format @@ -1926,7 +1926,8 @@ msgstr "Inte text" #: ckan/logic/validators.py:782 msgid "This parent would create a loop in the hierarchy" -msgstr "Denna överordnade entitet skulle skapa en otillåten slinga i hierarkin" +msgstr "" +"Denna överordnade entitet skulle skapa en otillåten slinga i hierarkin" #: ckan/logic/validators.py:792 msgid "\"filter_fields\" and \"filter_values\" should have the same length" @@ -2120,7 +2121,8 @@ msgstr "ID för dataset saknas. Kan inte kontrollera behörighet." #: ckan/logic/auth/create.py:68 ckan/logic/auth/delete.py:34 #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." -msgstr "Inget paket hittades för denna resurs, kan inte kontrollera behörigheter." +msgstr "" +"Inget paket hittades för denna resurs, kan inte kontrollera behörigheter." #: ckan/logic/auth/create.py:76 #, python-format @@ -2295,7 +2297,8 @@ msgstr "Användare %s har inte rättighet att uppdatera tabellen task_status" #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" -msgstr "Användare %s saknar behörighet att uppdatera tabellen term_translation" +msgstr "" +"Användare %s saknar behörighet att uppdatera tabellen term_translation" #: ckan/model/license.py:222 msgid "License not specified" @@ -2540,8 +2543,8 @@ msgstr "Kunde inte läsa data i den uppladdade filen" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Du laddar upp en fil. Är du säker på att du vill lämna sidan och avbryta " "uppladdningen?" @@ -2720,39 +2723,37 @@ msgstr "CKANs konfigurationsinställningar" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Sidtitel: Det här är sidtiteln för denna CKAN-instans" -" Den förekommer på flera ställen i CKAN.

Stil: " -"Välj ur en lista med enkla varianter av huvudsakligt färgschema, för att " -"snabbt få till ett modifierat schema.

Logo för sidans " -"tagg: Det här är logon som visas i sidhuvudet på alla instansens" -" av CKAN-mallar.

Om: Den här texten kommer visas " -"på CKAN-instansens Om-sida.

" +"

Sidtitel: Det här är sidtiteln för denna CKAN-instans " +"Den förekommer på flera ställen i CKAN.

Stil: Välj " +"ur en lista med enkla varianter av huvudsakligt färgschema, för att snabbt " +"få till ett modifierat schema.

Logo för sidans tagg:" +" Det här är logon som visas i sidhuvudet på alla instansens av CKAN-" +"mallar.

Om: Den här texten kommer visas på CKAN-" +"instansens Om-sida.

" "

Introduktionstext: Denna text kommer visas på denna " -"CKAN-instans hemsida som en välkomstsfras " -"för besökare.

Modifierad CSS: Det här är ett " -"block med CSS som kommer ligga i <head>-taggen på " -"varje sida. Om du önskar anpassa mallarna ytterligare rekommenderar vi att du läser " +"CKAN-instans hemsida som en välkomstsfras för " +"besökare.

Modifierad CSS: Det här är ett block med " +"CSS som kommer ligga i <head>-taggen på varje sida. Om du" +" önskar anpassa mallarna ytterligare rekommenderar vi att du läser " "dokumentationen.

Hemsida: Det här är för att " -"välja en i förväg skapad layout för modulerna som visas på din " -"hemsida.

" +"välja en i förväg skapad layout för modulerna som visas på din hemsida.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2767,14 +2768,12 @@ msgstr "Administrera CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

Som sysadmin har du full kontroll över denna CKAN-instans. Var " -"försiktig!

För mer information om vad du kan göra som sysadmin, " -"läs CKAN sysadmin " -"guide

" +"försiktig!

För mer information om vad du kan göra som sysadmin, läs " +"CKAN sysadmin guide

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2810,7 +2809,8 @@ msgstr "Fler detaljer..." #: ckan/templates/dataviewer/snippets/no_preview.html:12 #, python-format msgid "No handler defined for data type: %(type)s." -msgstr "Det finns ingen hanterare, så kallad handler, för datatypen: %(type)s." +msgstr "" +"Det finns ingen hanterare, så kallad handler, för datatypen: %(type)s." #: ckan/templates/development/snippets/form.html:5 msgid "Standard" @@ -2937,8 +2937,9 @@ msgstr "Vill du verkligen radera medlemman - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Hantera" @@ -2970,7 +2971,8 @@ msgstr "Sök grupper..." msgid "There are currently no groups for this site" msgstr "Det finns för närvarande inga grupper för denna site" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Vill du skapa en?" @@ -3021,19 +3023,22 @@ msgstr "Ny användare" msgid "If you wish to invite a new user, enter their email address." msgstr "Om du vill bjuda in en ny användare, mata in dess e-postadress." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Roll" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Vill du verkligen radera denna medlem?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3054,14 +3059,13 @@ msgstr "Vad är roller?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

Administratör:Kan redigera gruppinformation och " -"administrera organisationens medlemmar.

" -"

Medlem:Kan lägga till och ta bort dataset från " -"grupper.

" +"administrera organisationens medlemmar.

Medlem:Kan " +"lägga till och ta bort dataset från grupper.

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3131,16 +3135,15 @@ msgstr "Vad är grupper?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Du kan använda CKAN-grupper för att skapa och hantera samlingar av " -"dataset. Det kan användas för att katalogisera dataset för ett visst " -"projekt eller ett team, eller för ett särskilt tema, eller som ett enkelt" -" sätt att hjälpa användare att hitta och söka i dina egna publicerade " -"dataset." +"Du kan använda CKAN-grupper för att skapa och hantera samlingar av dataset. " +"Det kan användas för att katalogisera dataset för ett visst projekt eller " +"ett team, eller för ett särskilt tema, eller som ett enkelt sätt att hjälpa " +"användare att hitta och söka i dina egna publicerade dataset." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3203,14 +3206,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3223,14 +3225,13 @@ msgstr "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3246,12 +3247,12 @@ msgstr "Välkommen till CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Det här är en trevlig liten introduktionstext om CKAN eller denna " -"webbplats i allmänhet. Vi har ingen färdig text att lägga här ännu men " -"det kommer snart" +"Det här är en trevlig liten introduktionstext om CKAN eller denna webbplats " +"i allmänhet. Vi har ingen färdig text att lägga här ännu men det kommer " +"snart" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3296,8 +3297,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "Du kan använda Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Administratör: Kan lägga till, redigera och radera " "dataset, samt administrera organisationens medlemmar.

" -"

Redaktör: Kan lägga till och redigera dataset men " -"inte administrera medlemmar.

Medlem: Kan se " +"

Redaktör: Kan lägga till och redigera dataset men inte " +"administrera medlemmar.

Medlem: Kan se " "organisationens privata dataset men kan inte lägga till nya dataset.

" #: ckan/templates/organization/members.html:14 @@ -3473,29 +3474,29 @@ msgstr "Vad är Organisationer?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" -"

Organisationer utgör publicerande enheter för dataset (t.ex. Kungliga" -" biblioteket). Det innebär att dataset kan publiceras och tillhöra en " +"

Organisationer utgör publicerande enheter för dataset (t.ex. Kungliga " +"biblioteket). Det innebär att dataset kan publiceras och tillhöra en " "organisatorisk enhet istället för en enskild person.

Inom " -"organisationer kan administratörer tilldela roller och ge behörighet till" -" enskilda personer att publicera dataset från den aktuella " +"organisationer kan administratörer tilldela roller och ge behörighet till " +"enskilda personer att publicera dataset från den aktuella " "organisationen.

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"CKAN-organisationer används för att skapa, hantera och publicera " -"samlingar av dataset. Användare kan ha olika roller inom en organisation," -" beroende på deras behörighet att skapa, redigera och publicera." +"CKAN-organisationer används för att skapa, hantera och publicera samlingar " +"av dataset. Användare kan ha olika roller inom en organisation, beroende på " +"deras behörighet att skapa, redigera och publicera." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3511,9 +3512,8 @@ msgstr "Lite information om min organisation..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Vill du verkligen radera denna organisation? Detta kommer att radera alla " "publika och privata dataset som hör till denna organisation." @@ -3538,14 +3538,13 @@ msgstr "Vad är dataset?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Ett dataset i CKAN är en samling av dataresurser (såsom filer), " -"tillsammans med en beskrivning och annan information, som finns " -"tillgänglig på en permanent URL. Dataset är vad användare ser när de " -"söker efter data." +"Ett dataset i CKAN är en samling av dataresurser (såsom filer), tillsammans " +"med en beskrivning och annan information, som finns tillgänglig på en " +"permanent URL. Dataset är vad användare ser när de söker efter data." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3626,15 +3625,15 @@ msgstr "Lägg till vy" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -" Vyer för Data Explorer blir snabbare och pålitligare om tillägget " -"DataStore är aktiverat. För mer information, se Dokumentation" -" för Data Explorer. " +" Vyer för Data Explorer blir snabbare och pålitligare om tillägget DataStore" +" är aktiverat. För mer information, se Dokumentation för Data " +"Explorer. " #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3644,12 +3643,11 @@ msgstr "Lägg till" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Detta är en gammal version av detta dataset, redigerad vid %(timestamp)s." -" Den kan skilja sig markant från den senaste " +"Detta är en gammal version av detta dataset, redigerad vid %(timestamp)s. " +"Den kan skilja sig markant från den senaste " "versionen." #: ckan/templates/package/resource_edit_base.html:17 @@ -3719,13 +3717,13 @@ msgstr "Administratörerna har inte aktiverat rätt plugin för vyerna" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "Om en vy kräver DataStore så kanske denna plugin inte aktiverats. " -"Alternativt har inte data levererats till DataStore eller också är " -"DataStore inte klar med bearbetningen av data" +"Alternativt har inte data levererats till DataStore eller också är DataStore" +" inte klar med bearbetningen av data" #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3792,11 +3790,11 @@ msgstr "Lägg till resurs" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

Detta dataset saknar data, varför" -" inte lägga till några?

" +"

Detta dataset saknar data, varför " +"inte lägga till några?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3816,15 +3814,16 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -"Du kan också komma åt katalogen via %(api_link)s (se %(api_doc_link)s) " -"eller ladda ner en %(dump_link)s. " +"Du kan också komma åt katalogen via %(api_link)s (se %(api_doc_link)s) eller" +" ladda ner en %(dump_link)s. " #: ckan/templates/package/search.html:60 #, python-format msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s). " -msgstr " Du kan också komma åt katalogen via %(api_link)s (se %(api_doc_link)s). " +msgstr "" +" Du kan också komma åt katalogen via %(api_link)s (se %(api_doc_link)s). " #: ckan/templates/package/view_edit_base.html:9 msgid "All views" @@ -3939,18 +3938,16 @@ msgstr "Aktiv" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Den datalicens du valt ovan gäller bara innehållet i resursfiler " -"som du lägger till i detta dataset. Genom att bekräfta detta formulär " -"godkänner du att de metadata du registrerar i formuläret släpps " -"under licensen Open Database " +"Den datalicens du valt ovan gäller bara innehållet i resursfiler som " +"du lägger till i detta dataset. Genom att bekräfta detta formulär godkänner " +"du att de metadata du registrerar i formuläret släpps under licensen " +"Open Database " "License." #: ckan/templates/package/snippets/package_form.html:39 @@ -4015,7 +4012,8 @@ msgstr "t.ex. CSV, XML or JSON" #: ckan/templates/package/snippets/resource_form.html:40 msgid "This will be guessed automatically. Leave blank if you wish" -msgstr "Här kommer en automatisk gissning att läggas in. Lämna blankt om du vill" +msgstr "" +"Här kommer en automatisk gissning att läggas in. Lämna blankt om du vill" #: ckan/templates/package/snippets/resource_form.html:51 msgid "eg. 2012-06-05" @@ -4062,8 +4060,8 @@ msgstr "Vad är en Resurs?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"En resurs kan vara en fil, eller länk till en fil, som innehåller " -"användbar data." +"En resurs kan vara en fil, eller länk till en fil, som innehåller användbar " +"data." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4090,8 +4088,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Du kan kopiera och klistra in koden i ett CMS eller en blogg som stödjer " -"rå HTML" +"Du kan kopiera och klistra in koden i ett CMS eller en blogg som stödjer rå " +"HTML" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4290,8 +4288,8 @@ msgstr "

Försök med en ny sökfråga.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4438,8 +4436,7 @@ msgstr "Kontoinformation" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "Din profil visar andra CKAN-användare vem du är och vad du gör." #: ckan/templates/user/edit_user_form.html:7 @@ -4665,11 +4662,11 @@ msgstr "Begär återställning" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" -"Mata in ditt användarnamn i fältet, så skickar vi e-post med en länk för " -"att ange ett nytt lösenord." +"Mata in ditt användarnamn i fältet, så skickar vi e-post med en länk för att" +" ange ett nytt lösenord." #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4695,4 +4692,3 @@ msgstr "Sök användare" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/th/LC_MESSAGES/ckan.po b/ckan/i18n/th/LC_MESSAGES/ckan.po index 05da3e8481b..fab5614cf4c 100644 --- a/ckan/i18n/th/LC_MESSAGES/ckan.po +++ b/ckan/i18n/th/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Thai translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # Pongkiat Jongtriluck , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,13 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Pongkiat Jongtriluck , 2018\n" -"Language: th\n" "Language-Team: Thai (https://www.transifex.com/okfn/teams/11162/th/)\n" -"Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +117,14 @@ msgstr "ไม่พบทรัพยากรที่จัดเก็บข #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" "ข้อมูลไม่ถูกต้อง (ตัวอย่างเช่น " "ค่าของตัวเลขอยู่นอกขอบเขตที่กำหนดหรือถูกนำไปใส่ในฟิลด์สำหรับข้อความ)" @@ -150,8 +151,7 @@ msgstr "เข้าถึงทรัพยากรข้อมูลผ่า msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -160,8 +160,8 @@ msgstr "ปลายทาง" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "Data API สามารถเข้าถึงได้ด้วยการเรียกใช้ CKAN action API" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -270,8 +270,7 @@ msgstr "Data API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -400,7 +399,8 @@ msgstr "0 ชุดข้อมูล" #: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 msgid "CKAN's data previewing tool has many powerful features" -msgstr "เครื่องมือสำหรับการดูตัวอย่างข้อมูลของ CKAN มีฟีเจอร์ที่ทรงพลังจำนวนมาก" +msgstr "" +"เครื่องมือสำหรับการดูตัวอย่างข้อมูลของ CKAN มีฟีเจอร์ที่ทรงพลังจำนวนมาก" #: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 #: ckan/templates/group/snippets/info.html:32 @@ -664,7 +664,8 @@ msgstr "URL ของเว็บเพจ" #: ckanext/webpageview/theme/templates/webpage_form.html:3 msgid "eg. http://example.com (if blank uses resource url)" -msgstr "ตัวอย่างเช่น http://example.com (ถ้าปล่อยว่างจะใช้ URL ของแหล่งข้อมูล)" +msgstr "" +"ตัวอย่างเช่น http://example.com (ถ้าปล่อยว่างจะใช้ URL ของแหล่งข้อมูล)" #: ckan/templates/dataviewer/snippets/data_preview.html:23 #: ckan/templates/package/snippets/resource_view.html:56 @@ -747,7 +748,8 @@ msgstr "หน้าหลัก" msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" -msgstr "ไม่สามารถถอดถอนแพคเกจ %s เนื่องจากรุ่นที่ %s ใช้แพคเกจ %s ที่ยังไม่ถูกลบ" +msgstr "" +"ไม่สามารถถอดถอนแพคเกจ %s เนื่องจากรุ่นที่ %s ใช้แพคเกจ %s ที่ยังไม่ถูกลบ" #: ckan/controllers/admin.py:183 #, python-format @@ -1765,8 +1767,8 @@ msgstr "ชื่อต้องมีความยาวไม่เกิน #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2522,8 +2524,8 @@ msgstr "ไม่สามารถที่จะดึงข้อมูลจ #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "คุณกำลังอัพโหลดไฟล์อยู่ กรุณายืนยันว่าคุณต้องการเปลี่ยนไปหน้าอื่น " "และหยุดการอัพโหลดนี้" @@ -2701,36 +2703,34 @@ msgstr "ตัวเลือกการปรับแต่ง CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

ชื่อไซต์: หัวข้อของ CKAN นี้ ซึ่งจะใช้ในส่วนต่างๆ ของ" -" CKAN.

รูปแบบ: เลือกจากรายการตัวเลือกที่มี " +"

ชื่อไซต์: หัวข้อของ CKAN นี้ ซึ่งจะใช้ในส่วนต่างๆ ของ " +"CKAN.

รูปแบบ: เลือกจากรายการตัวเลือกที่มี " "เพื่อให้สามารถตกแต่งหน้าตาได้แบบรวดเร็ว

" -"

ป้ายกำกับโลโก้: โลโก้ที่จะแสดงในส่วนหัวของแม่แบบของ " -"CKAN ทั้งหมด

เกี่ยวกับ: ข้อความส่วนนี้จะแสดงใน หน้าเกี่ยวกับ ของ CKAN

" +"

ป้ายกำกับโลโก้: โลโก้ที่จะแสดงในส่วนหัวของแม่แบบของ CKAN" +" ทั้งหมด

เกี่ยวกับ: ข้อความส่วนนี้จะแสดงใน หน้าเกี่ยวกับ ของ CKAN

" "

ข้อความเกริ่นนำ: ข้อความส่วนนี้จะแสดงใน หน้าหลัก ของ CKAN " "เพื่อเป็นการต้อนรับผู้ที่เข้ามา

CSS ที่กำหนดเอง: " "โค๊ด CSS ที่จะแสดงใน <head> ของทุกหน้า " -"หากคุณต้องการปรับแต่งแม่แบบเพิ่มเติม เราขอแนะนำให้อ่านเอกสารอ้างอิง

" -"

หน้าหลัก: " +"หากคุณต้องการปรับแต่งแม่แบบเพิ่มเติม เราขอแนะนำให้อ่านเอกสารอ้างอิง

หน้าหลัก: " "สำหรับเลือกรูปแบบการจัดเรียงของโมดูลที่มีเตรียมไว้ให้

" #: ckan/templates/admin/confirm_reset.html:3 @@ -2746,9 +2746,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2912,8 +2911,9 @@ msgstr "คุณแน่ใจว่าต้องการลบสมาช #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "จัดการ" @@ -2945,7 +2945,8 @@ msgstr "ค้นหากลุ่ม..." msgid "There are currently no groups for this site" msgstr "ยังไม่มีกลุ่มสำหรับไซต์นี้" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "ต้องการสร้างหรือไม่?" @@ -2994,19 +2995,22 @@ msgstr "ผู้ใช้ใหม่" msgid "If you wish to invite a new user, enter their email address." msgstr "ถ้าคุณต้องการเชิญผู้ใช้ใหม่ กรอกที่อยู่อีเมลของพวกเขา" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "หน้าที่" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "คุณแน่ใจว่าต้องการลบสมาชิกนี้?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3027,8 +3031,8 @@ msgstr "มีหน้าที่อะไร?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

ผู้ดูแลระบบ: สามารถเปลี่ยนแปลงข้อมูลของกลุ่ม " @@ -3103,10 +3107,10 @@ msgstr "กลุ่มคืออะไร?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" "คุณสามารถใช้กลุ่ม CKAN ในการสร้างและจัดการชุดข้อมูล " "ไม่ว่าจะเป็นการสร้างแค็ตตาล็อกสำหรับชุดข้อมูลสำหรับโปรเจ็คต์ ทีม หรือธีม " @@ -3173,14 +3177,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3216,8 +3219,8 @@ msgstr "ยินดีต้อนรับสู่ CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" "พื้นที่สำหรับใส่ข้อความสั้นๆ แนะนำภาพรวมของ CKAN หรือของไซท์ " "เรายังไม่มีข้อความแนะนำมาให้ในส่วนนี้ แต่จะมีให้ในอนาคต" @@ -3265,8 +3268,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3337,8 +3340,8 @@ msgstr "ร่าง" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "ส่วนตัว" @@ -3392,8 +3395,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Admin:เพิ่ม/แก้ไข/ลบ ชุดข้อมูล " "และจัดการสมาชิกขององค์กร

" @@ -3438,19 +3441,19 @@ msgstr "อะไรคือองค์กร?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "องค์กรสามารถถูกใช้ในการสร้าง จัดการ และเผยแพร่ชุดข้อมูล " "ผู้ใช้อาจมีได้มากกว่าหนึ่งหน้าที่ในองค์กร " @@ -3470,9 +3473,8 @@ msgstr "ข้อมูลเบื้องต้นเกี่ยวกับ #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3495,12 +3497,12 @@ msgstr "อะไรคือข้อมูล?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"ใน CKAN ชุดข้อมูลคือการรวบรวมของชุดข้อมูล (เช่นไฟล์) คำอธิบายและอื่นๆ บน " -"URL หนึ่ง ชุดข้อมูลคือสิ่งที่ผู้ใช้เห็นเวลาค้นหาข้อมูล" +"ใน CKAN ชุดข้อมูลคือการรวบรวมของชุดข้อมูล (เช่นไฟล์) คำอธิบายและอื่นๆ บน URL" +" หนึ่ง ชุดข้อมูลคือสิ่งที่ผู้ใช้เห็นเวลาค้นหาข้อมูล" #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3581,9 +3583,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3594,12 +3596,11 @@ msgstr "เพิ่ม" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"นี่เป็นชุดข้อมูลรุ่นเก่าที่ถูกแก้ไขเมื่อ %(timestamp)s " -"ซึ่งอาจจะแตกต่างจาก รุ่นปัจจุบัน." +"นี่เป็นชุดข้อมูลรุ่นเก่าที่ถูกแก้ไขเมื่อ %(timestamp)s ซึ่งอาจจะแตกต่างจาก " +"รุ่นปัจจุบัน." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3668,9 +3669,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3738,8 +3739,8 @@ msgstr "เพิ่มทรัพยากรใหม่" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

ชุดข้อมูลนี้ไม่มีข้อมูล ลองเพิ่มดูไหม?

" @@ -3762,8 +3763,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -"คุณสามารถเข้าถึงคลังทาง %(api_link)s (ให้ดู %(api_doc_link)s) " -"หรือดาวน์โหลด %(dump_link)s." +"คุณสามารถเข้าถึงคลังทาง %(api_link)s (ให้ดู %(api_doc_link)s) หรือดาวน์โหลด " +"%(dump_link)s." #: ckan/templates/package/search.html:60 #, python-format @@ -3885,12 +3886,11 @@ msgstr "ทำงาน" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4001,7 +4001,8 @@ msgstr "อะไรคือทรัพยากร?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." -msgstr "ทรัพยากรสามารถเป็นไฟล์หรือลิ้งค์ที่เชื่อมไปยังไฟล์ข้อมูลที่เป็นประโยชน์" +msgstr "" +"ทรัพยากรสามารถเป็นไฟล์หรือลิ้งค์ที่เชื่อมไปยังไฟล์ข้อมูลที่เป็นประโยชน์" #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4226,8 +4227,8 @@ msgstr "

กรุณาลองค้นหาใหม่There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4368,9 +4369,9 @@ msgstr "ข้อมูลผู้ใช้" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " -msgstr "ข้อมูลแนะนำตัวของคุณจะทำให้ผู้ใช้ CKAN อื่นๆ ได้รู้จักคุณและผลงานคุณดีขึ้น" +" Your profile lets other CKAN users know about who you are and what you do. " +msgstr "" +"ข้อมูลแนะนำตัวของคุณจะทำให้ผู้ใช้ CKAN อื่นๆ ได้รู้จักคุณและผลงานคุณดีขึ้น" #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4593,9 +4594,10 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." -msgstr "ป้อนชื่อผู้ใช้ของคุณใส่ลงในกล่องนี้เพื่อที่เราจะได้ส่งอีเมล์พร้อมลิ้งค์ในการตั้งรหัสผ่านใหม่ให้คุณ" +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." +msgstr "" +"ป้อนชื่อผู้ใช้ของคุณใส่ลงในกล่องนี้เพื่อที่เราจะได้ส่งอีเมล์พร้อมลิ้งค์ในการตั้งรหัสผ่านใหม่ให้คุณ" #: ckan/templates/user/snippets/followee_dropdown.html:14 #: ckan/templates/user/snippets/followee_dropdown.html:15 @@ -4621,4 +4623,3 @@ msgstr "ค้นหาผู้ใช้" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/tr/LC_MESSAGES/ckan.mo b/ckan/i18n/tr/LC_MESSAGES/ckan.mo index 9dca0be301e..a9bdcb63212 100644 Binary files a/ckan/i18n/tr/LC_MESSAGES/ckan.mo and b/ckan/i18n/tr/LC_MESSAGES/ckan.mo differ diff --git a/ckan/i18n/tr/LC_MESSAGES/ckan.po b/ckan/i18n/tr/LC_MESSAGES/ckan.po index 1f424497050..2268c4ef9dc 100644 --- a/ckan/i18n/tr/LC_MESSAGES/ckan.po +++ b/ckan/i18n/tr/LC_MESSAGES/ckan.po @@ -1,10 +1,12 @@ -# Turkish translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# Ayça Ulutoprak , 2019 +# #, fuzzy msgid "" msgstr "" @@ -12,26 +14,26 @@ msgstr "" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" -"Last-Translator: Adrià Mercader , 2018\n" -"Language: tr\n" +"Last-Translator: Ayça Ulutoprak , 2019\n" "Language-Team: Turkish (https://www.transifex.com/okfn/teams/11162/tr/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" -msgstr "" +msgstr "Tamamlandı" #: ckanext/datapusher/helpers.py:22 msgid "Pending" -msgstr "" +msgstr "Bekliyor" #: ckanext/datapusher/helpers.py:23 msgid "Submitting" -msgstr "" +msgstr "Gönderiliyor" #: ckan/controllers/package.py:659 ckanext/datapusher/helpers.py:24 msgid "Error" @@ -39,7 +41,7 @@ msgstr "Hata" #: ckanext/datapusher/helpers.py:29 msgid "Not Uploaded Yet" -msgstr "" +msgstr "Henüz karşıya yüklenmedi" #: ckan/controllers/package.py:591 ckan/controllers/package.py:1054 #: ckan/controllers/package.py:1074 ckan/controllers/package.py:1141 @@ -70,7 +72,7 @@ msgstr "" #: ckanext/datapusher/templates/datapusher/resource_data.html:25 #: ckanext/datapusher/templates/datapusher/resource_data.html:27 msgid "Error:" -msgstr "" +msgstr "Hata:" #: ckanext/datapusher/templates/datapusher/resource_data.html:36 msgid "Error traceback:" @@ -78,15 +80,15 @@ msgstr "" #: ckanext/datapusher/templates/datapusher/resource_data.html:48 msgid "Status" -msgstr "" +msgstr "Durum" #: ckanext/datapusher/templates/datapusher/resource_data.html:52 msgid "Last updated" -msgstr "" +msgstr "Son güncelleme" #: ckanext/datapusher/templates/datapusher/resource_data.html:56 msgid "Never" -msgstr "" +msgstr "Hiç bir zaman" #: ckanext/datapusher/templates/datapusher/resource_data.html:62 msgid "Upload Log" @@ -94,7 +96,7 @@ msgstr "" #: ckanext/datapusher/templates/datapusher/resource_data.html:76 msgid "Details" -msgstr "" +msgstr "Detaylar" #: ckanext/datapusher/templates/datapusher/resource_data.html:83 msgid "End of log" @@ -102,12 +104,12 @@ msgstr "" #: ckanext/datapusher/templates/package/resource_edit_base.html:5 msgid "DataStore" -msgstr "" +msgstr "Veri Deposu" #: ckanext/datastore/controller.py:46 #, python-format msgid "format: must be one of %s" -msgstr "" +msgstr "format şunlardan biri olmalı: %s" #: ckanext/datastore/controller.py:58 msgid "DataStore resource not found" @@ -115,14 +117,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -147,8 +149,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -157,13 +158,13 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 msgid "Create" -msgstr "" +msgstr "Oluştur" #: ckanext/datastore/templates/ajax_snippets/api_info.html:46 msgid "Update / Insert" @@ -179,23 +180,23 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:66 msgid "Querying" -msgstr "" +msgstr "Sorgulama" #: ckanext/datastore/templates/ajax_snippets/api_info.html:70 msgid "Query example (first 5 results)" -msgstr "" +msgstr "Sorgu örnekleri (ilk 5 sonuç)" #: ckanext/datastore/templates/ajax_snippets/api_info.html:75 msgid "Query example (results containing 'jones')" -msgstr "" +msgstr "Sorgu örnekleri ('jones' içeren sonuçlar)" #: ckanext/datastore/templates/ajax_snippets/api_info.html:80 msgid "Query example (via SQL statement)" -msgstr "" +msgstr "Sorgu örnekleri (SQL ile)" #: ckanext/datastore/templates/ajax_snippets/api_info.html:91 msgid "Example: Javascript" -msgstr "" +msgstr "Örnek: Javascript" #: ckanext/datastore/templates/ajax_snippets/api_info.html:95 msgid "A simple ajax (JSONP) request to the data API using jQuery." @@ -203,9 +204,16 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:116 msgid "Example: Python" -msgstr "" +msgstr "Örnek: Python" + +#: ckan/templates/group/member_new.html:60 +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:26 +#: ckanext/datastore/templates/datastore/dictionary.html:20 +msgid "Save" +msgstr "Kaydet" -#: ckanext/datastore/templates/datastore/dictionary.html:16 +#: ckanext/datastore/templates-bs2/datastore/dictionary.html:16 +#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:3 msgid "Field {num}." msgstr "" @@ -223,7 +231,7 @@ msgstr "" #: ckanext/datastore/templates/datastore/dictionary.html:21 #: ckanext/datastore/templates/package/resource_read.html:21 msgid "Description" -msgstr "" +msgstr "Açıklama" #: ckan/templates/group/member_new.html:60 #: ckanext/datastore/templates/datastore/dictionary.html:26 @@ -233,7 +241,7 @@ msgstr "" #: ckanext/datastore/templates/package/resource_edit_base.html:6 #: ckanext/datastore/templates/package/resource_read.html:14 msgid "Data Dictionary" -msgstr "" +msgstr "Veri Sözlüğü" #: ckanext/datastore/templates/package/resource_read.html:18 #: ckanext/datatablesview/templates/datatables/datatables_form.html:17 @@ -242,7 +250,7 @@ msgstr "" #: ckanext/datastore/templates/package/resource_read.html:19 msgid "Type" -msgstr "" +msgstr "Tip" #: ckan/public/base/javascript/modules/activity-stream.js:97 #: ckan/public/base/javascript/modules/popover-context.js:62 @@ -257,7 +265,7 @@ msgstr "" #: ckanext/reclineview/theme/templates/recline_view.html:14 #: ckanext/textview/theme/templates/text_view.html:9 msgid "Loading..." -msgstr "" +msgstr "Yükleniyor..." #: ckanext/datastore/templates/package/snippets/data_api_button.html:10 msgid "Data API" @@ -267,13 +275,12 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 msgid "Table" -msgstr "" +msgstr "Tablo" #: ckanext/datatablesview/templates/datatables/datatables_form.html:6 msgid "Responsive display" @@ -281,11 +288,11 @@ msgstr "" #: ckanext/datatablesview/templates/datatables/datatables_form.html:12 msgid "Show Columns" -msgstr "" +msgstr "Sütunları Göster" #: ckanext/datatablesview/templates/datatables/datatables_view.html:28 msgid "Hide/Unhide Columns" -msgstr "" +msgstr "Sütunları Gizle/Göster" #: ckanext/example_iconfigurer/templates/admin/config.html:11 msgid "Datasets per page" @@ -312,7 +319,7 @@ msgstr "" #: ckan/templates/snippets/sort_by.html:15 #: ckanext/example_idatasetform/templates/package/search.html:13 msgid "Name Ascending" -msgstr "" +msgstr "İsme Göre Artan" #: ckan/templates/group/index.html:20 ckan/templates/group/read.html:17 #: ckan/templates/organization/bulk_process.html:98 @@ -324,7 +331,7 @@ msgstr "" #: ckan/templates/snippets/sort_by.html:16 #: ckanext/example_idatasetform/templates/package/search.html:14 msgid "Name Descending" -msgstr "" +msgstr "İsme Göre Azalan" #: ckan/templates/group/read.html:18 #: ckan/templates/organization/bulk_process.html:99 @@ -334,7 +341,7 @@ msgstr "" #: ckan/templates/snippets/sort_by.html:17 #: ckanext/example_idatasetform/templates/package/search.html:15 msgid "Last Modified" -msgstr "" +msgstr "Son Güncelleme" #: ckanext/example_idatasetform/templates/package/search.html:16 msgid "Custom Field Ascending" @@ -351,7 +358,7 @@ msgstr "" #: ckan/templates/snippets/sort_by.html:19 #: ckanext/example_idatasetform/templates/package/search.html:18 msgid "Popular" -msgstr "" +msgstr "Popüler" #: ckanext/example_idatasetform/templates/package/snippets/additional_info.html:6 #: ckanext/example_idatasetform/templates/package/snippets/package_basic_fields.html:4 @@ -373,7 +380,7 @@ msgstr "" #: ckanext/example_itranslation/templates/home/index.html:4 msgid "This is an untranslated string" -msgstr "" +msgstr "Bu tercüme edilmemiş bir metin." #: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:20 #: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:19 @@ -394,11 +401,11 @@ msgstr[1] "" #: ckanext/example_theme_docs/v10_custom_snippet/templates/snippets/example_theme_most_popular_groups.html:25 #: ckanext/example_theme_docs/v11_HTML_and_CSS/templates/snippets/example_theme_most_popular_groups.html:24 msgid "0 Datasets" -msgstr "" +msgstr "0 Veri Seti" #: ckanext/example_theme_docs/v12_extra_public_dir/templates/home/snippets/promoted.html:4 msgid "CKAN's data previewing tool has many powerful features" -msgstr "" +msgstr "CKAN veri önizleme aracının pek çok güçlü özelliği vardır." #: ckan/templates/group/followers.html:3 ckan/templates/group/followers.html:6 #: ckan/templates/group/snippets/info.html:32 @@ -412,7 +419,7 @@ msgstr "" #: ckan/templates/user/read_base.html:49 #: ckanext/example_theme_docs/v18_snippet_api/templates/ajax_snippets/example_theme_popover.html:12 msgid "Followers" -msgstr "" +msgstr "Takipçiler" #: ckan/logic/__init__.py:98 ckan/logic/action/__init__.py:60 #: ckan/templates/package/edit_base.html:21 @@ -422,13 +429,13 @@ msgstr "" #: ckan/templates/snippets/context/dataset.html:13 #: ckanext/example_theme_docs/v18_snippet_api/templates/ajax_snippets/example_theme_popover.html:15 msgid "Resources" -msgstr "" +msgstr "Kaynaklar" #: ckan/public/base/javascript/modules/image-upload.js:80 #: ckan/templates/macros/form.html:412 ckanext/imageview/plugin.py:26 #: ckanext/imageview/plugin.py:31 msgid "Image" -msgstr "" +msgstr "Resim" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "Image url" @@ -437,6 +444,7 @@ msgstr "Resim bağlantısı" #: ckanext/imageview/theme/templates/image_form.html:3 msgid "eg. http://example.com/image.jpg (if blank uses resource url)" msgstr "" +"örn: http://example.com/image.jpg (boş bırakılırsa kaynak url'ini kullanır)" #: ckanext/reclineview/plugin.py:101 msgid "Data Explorer" @@ -445,12 +453,12 @@ msgstr "" #: ckanext/reclineview/plugin.py:171 #: ckanext/reclineview/theme/public/recline_view.js:200 msgid "Graph" -msgstr "" +msgstr "Grafik" #: ckanext/reclineview/plugin.py:231 #: ckanext/reclineview/theme/public/recline_view.js:207 msgid "Map" -msgstr "" +msgstr "Harita" #: ckanext/reclineview/theme/public/recline_view.js:28 msgid "error loading view" @@ -475,7 +483,7 @@ msgstr "" #: ckan/templates/package/snippets/view_form_filters.html:46 #: ckanext/reclineview/theme/public/recline_view.js:215 msgid "Filters" -msgstr "" +msgstr "Filtreler" #: ckanext/reclineview/theme/templates/recline_graph_form.html:3 #: ckanext/reclineview/theme/templates/recline_map_form.html:3 @@ -485,21 +493,21 @@ msgstr "" #: ckanext/reclineview/theme/templates/recline_graph_form.html:3 #: ckanext/reclineview/theme/templates/recline_map_form.html:3 msgid "eg: 0" -msgstr "" +msgstr "örn: 0" #: ckanext/reclineview/theme/templates/recline_graph_form.html:4 #: ckanext/reclineview/theme/templates/recline_map_form.html:4 msgid "Number of rows" -msgstr "" +msgstr "Satır sayısı" #: ckanext/reclineview/theme/templates/recline_graph_form.html:4 #: ckanext/reclineview/theme/templates/recline_map_form.html:4 msgid "eg: 100" -msgstr "" +msgstr "örn: 100" #: ckanext/reclineview/theme/templates/recline_graph_form.html:6 msgid "Graph type" -msgstr "" +msgstr "Grafik tipi" #: ckanext/reclineview/theme/templates/recline_graph_form.html:7 msgid "Group (Axis 1)" @@ -511,19 +519,19 @@ msgstr "" #: ckanext/reclineview/theme/templates/recline_map_form.html:6 msgid "Field type" -msgstr "" +msgstr "Alan tipi" #: ckanext/reclineview/theme/templates/recline_map_form.html:7 msgid "Latitude field" -msgstr "" +msgstr "Enlem alanı" #: ckanext/reclineview/theme/templates/recline_map_form.html:8 msgid "Longitude field" -msgstr "" +msgstr "Boylam alanı" #: ckanext/reclineview/theme/templates/recline_map_form.html:9 msgid "GeoJSON field" -msgstr "" +msgstr "GeoJSON alanı" #: ckanext/reclineview/theme/templates/recline_map_form.html:10 msgid "Auto zoom to features" @@ -535,7 +543,7 @@ msgstr "" #: ckanext/stats/templates/ckanext/stats/index.html:10 msgid "Total number of Datasets" -msgstr "" +msgstr "Toplam veriseti sayısı" #: ckanext/stats/templates/ckanext/stats/index.html:17 #: ckanext/stats/templates/ckanext/stats/index.html:40 @@ -549,11 +557,11 @@ msgstr "" #: ckanext/stats/templates/ckanext/stats/index.html:33 #: ckanext/stats/templates/ckanext/stats/index.html:179 msgid "Dataset Revisions per Week" -msgstr "" +msgstr "Haftalık veriseti revizyonları" #: ckanext/stats/templates/ckanext/stats/index.html:41 msgid "All dataset revisions" -msgstr "" +msgstr "Tüm veriseti revizyonları" #: ckanext/stats/templates/ckanext/stats/index.html:42 msgid "New datasets" @@ -579,7 +587,7 @@ msgstr "" #: ckanext/stats/templates/ckanext/stats/index.html:84 #: ckanext/stats/templates/ckanext/stats/index.html:181 msgid "Most Edited Datasets" -msgstr "" +msgstr "En çok güncellenen veri setleri" #: ckan/logic/converters.py:146 ckan/logic/validators.py:149 #: ckan/logic/validators.py:191 ckan/templates/package/read_base.html:19 @@ -589,11 +597,11 @@ msgstr "Veri seti" #: ckanext/stats/templates/ckanext/stats/index.html:90 msgid "Number of edits" -msgstr "" +msgstr "Güncelleme sayısı" #: ckanext/stats/templates/ckanext/stats/index.html:103 msgid "No edited datasets" -msgstr "" +msgstr "Düzenlenmiş veri seti yok" #: ckanext/stats/templates/ckanext/stats/index.html:108 #: ckanext/stats/templates/ckanext/stats/index.html:182 @@ -630,7 +638,7 @@ msgstr "Veriseti sayısı" #: ckanext/stats/templates/ckanext/stats/index.html:152 #: ckanext/stats/templates/ckanext/stats/index.html:184 msgid "Users Creating Most Datasets" -msgstr "" +msgstr "En Çok Veri Seti Oluşturan Kullanıcılar" #: ckan/logic/converters.py:121 ckan/logic/validators.py:214 #: ckan/logic/validators.py:231 ckan/logic/validators.py:706 @@ -650,7 +658,7 @@ msgstr "Toplam veriseti sayısı" #: ckanext/textview/plugin.py:67 ckanext/textview/plugin.py:69 msgid "Text" -msgstr "" +msgstr "Metin" #: ckanext/webpageview/plugin.py:21 ckanext/webpageview/plugin.py:26 msgid "Website" @@ -668,7 +676,7 @@ msgstr "" #: ckan/templates/package/snippets/resource_view.html:56 #: ckanext/webpageview/theme/templates/webpage_view.html:2 msgid "Your browser does not support iframes." -msgstr "" +msgstr "Tarayıcınız iframe kullanımını desteklemiyor." #: ckan/authz.py:182 #, python-format @@ -726,7 +734,7 @@ msgstr "Karşılama metni" #: ckan/controllers/admin.py:56 msgid "Text on home page" -msgstr "" +msgstr "Ana sayfadaki metin" #: ckan/controllers/admin.py:57 msgid "Custom CSS" @@ -754,7 +762,7 @@ msgstr "" #: ckan/controllers/admin.py:185 msgid "Purge complete" -msgstr "" +msgstr "Temizleme tamamlandı" #: ckan/controllers/admin.py:187 msgid "Action not implemented." @@ -849,7 +857,7 @@ msgstr "" #: ckan/controllers/api.py:587 #, python-format msgid "Bad search option: %s" -msgstr "" +msgstr "Hatalı arama seçeneği: %s" #: ckan/controllers/api.py:590 #, python-format @@ -937,15 +945,15 @@ msgstr "Lisanslar" #: ckan/controllers/package.py:1387 ckan/controllers/package.py:1421 #, python-format msgid "User %r not authorized to edit %s" -msgstr "" +msgstr "%r kullanıcısı, %s'ı düzenlemek için yetkilendirilmemiştir." #: ckan/controllers/group.py:442 msgid "Not authorized to perform bulk update" -msgstr "" +msgstr "Toplu güncelleme için yetki bulunmamakta" #: ckan/controllers/group.py:460 msgid "Unauthorized to create a group" -msgstr "" +msgstr "Grup yaratmak için yetki bulunmamakta" #: ckan/controllers/group.py:538 ckan/controllers/group.py:568 #: ckan/controllers/package.py:922 ckan/controllers/package.py:970 @@ -962,7 +970,7 @@ msgstr "" #: ckan/controllers/group.py:614 ckan/controllers/group.py:629 #, python-format msgid "Unauthorized to delete group %s" -msgstr "" +msgstr "%s grubunu silmek için yetki bulunmamaktadır." #: ckan/controllers/group.py:620 msgid "Organization has been deleted." @@ -975,22 +983,22 @@ msgstr "Grup silinmiştir." #: ckan/controllers/group.py:624 #, python-format msgid "%s has been deleted." -msgstr "" +msgstr "%s silinmiştir." #: ckan/controllers/group.py:653 #, python-format msgid "User %r not authorized to edit members of %s" -msgstr "" +msgstr "%r kullanıcısı %s üyelerini güncellemek için yetkili değildir." #: ckan/controllers/group.py:705 #, python-format msgid "Unauthorized to add member to group %s" -msgstr "" +msgstr "%s grubuna üye eklemek için yetkiniz yoktur" #: ckan/controllers/group.py:724 ckan/controllers/group.py:737 #, python-format msgid "Unauthorized to delete group %s members" -msgstr "" +msgstr "%s grubunun üyelerini silmek için yetkiniz yoktur" #: ckan/controllers/group.py:731 msgid "Group member has been deleted." @@ -1002,7 +1010,7 @@ msgstr "" #: ckan/controllers/group.py:779 msgid "CKAN Group Revision History" -msgstr "" +msgstr "CKAN Grup Revizyon Tarihçesi" #: ckan/controllers/group.py:783 msgid "Recent changes to CKAN Group: " @@ -1015,12 +1023,12 @@ msgstr "Günlük mesajı:" #: ckan/controllers/group.py:854 ckan/controllers/package.py:1171 #: ckan/controllers/user.py:715 msgid "You are now following {0}" -msgstr "" +msgstr "Artık {0}'i takip ediyorsunuz" #: ckan/controllers/group.py:874 ckan/controllers/package.py:1190 #: ckan/controllers/user.py:735 msgid "You are no longer following {0}" -msgstr "" +msgstr "Artık {0}'i takip etmiyorsunuz." #: ckan/controllers/group.py:894 ckan/controllers/user.py:580 #, python-format @@ -1029,14 +1037,14 @@ msgstr "" #: ckan/controllers/home.py:35 msgid "This site is currently off-line. Database is not initialised." -msgstr "" +msgstr "Bu site şu anda hizmet dışı. Veritabanı başlatılmamış." #: ckan/controllers/home.py:73 #, python-format msgid "Please update your profile and add your email address. " msgstr "" -"Lütfen profilinizi güncelleyin ve e-posta adresinizi" -" ekleyin." +"Lütfen profilinizi güncelleyin ve e-posta adresinizi " +"ekleyin." #: ckan/controllers/home.py:75 #, python-format @@ -1103,7 +1111,7 @@ msgstr "" #: ckan/controllers/package.py:646 ckan/controllers/package.py:683 #: ckan/controllers/package.py:709 msgid "The dataset {id} could not be found." -msgstr "" +msgstr "Veri seti {id} bulunamadı." #: ckan/controllers/package.py:650 msgid "You must add at least one data resource" @@ -1123,7 +1131,7 @@ msgstr "" #: ckan/controllers/package.py:976 msgid "Unable to update search index." -msgstr "" +msgstr "Arama indeksi güncellenemedi." #: ckan/controllers/package.py:1013 msgid "Dataset has been deleted." @@ -1204,7 +1212,7 @@ msgstr "" #: ckan/controllers/revision.py:190 msgid "Revision updated" -msgstr "" +msgstr "Revizyon güncellendi" #: ckan/controllers/tag.py:60 msgid "Other" @@ -1274,15 +1282,15 @@ msgstr "" #: ckan/controllers/user.py:385 msgid "Password entered was incorrect" -msgstr "" +msgstr "Girilen şifre hatalıdır" #: ckan/controllers/user.py:386 ckan/templates/user/edit_user_form.html:29 msgid "Old Password" -msgstr "" +msgstr "Eski Şifre" #: ckan/controllers/user.py:386 msgid "incorrect password" -msgstr "" +msgstr "Hatalı şifre" #: ckan/controllers/user.py:427 msgid "Login failed. Bad username or password." @@ -1393,7 +1401,7 @@ msgstr "" #: ckan/lib/activity_streams.py:87 msgid "{actor} deleted the dataset {dataset}" -msgstr "" +msgstr "{actor}, {dataset} verisetini sildi." #: ckan/lib/activity_streams.py:90 msgid "{actor} deleted the extra {extra} from the dataset {dataset}" @@ -1409,7 +1417,7 @@ msgstr "{actor} , {group} grubunu oluşturdu." #: ckan/lib/activity_streams.py:100 msgid "{actor} created the organization {organization}" -msgstr "" +msgstr "{actor} , {organization} organizasyonunu oluşturdu." #: ckan/lib/activity_streams.py:103 msgid "{actor} created the dataset {dataset}" @@ -1568,39 +1576,39 @@ msgstr "{tebibytes} TiB" #: ckan/lib/formatters.py:187 msgid "{n}" -msgstr "" +msgstr "{n}" #: ckan/lib/formatters.py:189 msgid "{k}k" -msgstr "" +msgstr "{k}k" #: ckan/lib/formatters.py:191 msgid "{m}M" -msgstr "" +msgstr "{m}M" #: ckan/lib/formatters.py:193 msgid "{g}G" -msgstr "" +msgstr "{g}G" #: ckan/lib/formatters.py:195 msgid "{t}T" -msgstr "" +msgstr "{t}T" #: ckan/lib/formatters.py:197 msgid "{p}P" -msgstr "" +msgstr "{p}P" #: ckan/lib/formatters.py:199 msgid "{e}E" -msgstr "" +msgstr "{e}E" #: ckan/lib/formatters.py:201 msgid "{z}Z" -msgstr "" +msgstr "{z}Z" #: ckan/lib/formatters.py:203 msgid "{y}Y" -msgstr "" +msgstr "{y}Y" #: ckan/lib/helpers.py:1048 msgid "Update your avatar at gravatar.com" @@ -1616,7 +1624,7 @@ msgstr "" #: ckan/lib/helpers.py:1401 msgid "Created new dataset." -msgstr "" +msgstr "Yeni veriseti oluşturuldu." #: ckan/lib/helpers.py:1403 msgid "Edited resources." @@ -1641,7 +1649,7 @@ msgstr[1] "" #: ckan/lib/mailer.py:39 #, python-format msgid "%s <%s>" -msgstr "" +msgstr "%s <%s>" #: ckan/lib/mailer.py:109 msgid "No recipient email address available!" @@ -1649,11 +1657,11 @@ msgstr "" #: ckan/lib/mailer.py:127 ckan/templates/home/snippets/stats.html:17 msgid "organization" -msgstr "" +msgstr "organizasyon" #: ckan/lib/mailer.py:128 ckan/templates/home/snippets/stats.html:23 msgid "group" -msgstr "" +msgstr "grup" #: ckan/lib/navl/dictization_functions.py:14 #: ckan/lib/navl/dictization_functions.py:17 @@ -1718,7 +1726,7 @@ msgstr "" #: ckan/logic/validators.py:97 msgid "Must be a natural number" -msgstr "" +msgstr "Bir doğal sayı olmalı" #: ckan/logic/validators.py:103 msgid "Must be a postive integer" @@ -1726,7 +1734,7 @@ msgstr "" #: ckan/logic/validators.py:130 msgid "Date format incorrect" -msgstr "" +msgstr "Tarih formatı hatalı" #: ckan/logic/validators.py:139 msgid "No links are allowed in the log_message." @@ -1768,8 +1776,8 @@ msgstr "" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2072,22 +2080,22 @@ msgstr "" #: ckan/logic/action/update.py:1059 msgid "Organization was not found." -msgstr "" +msgstr "Organizasyon bulunamadı" #: ckan/logic/auth/create.py:27 ckan/logic/auth/create.py:45 #, python-format msgid "User %s not authorized to create packages" -msgstr "" +msgstr "%s kullanıcısı paket yaratmak için yetkili değil" #: ckan/logic/auth/create.py:31 ckan/logic/auth/update.py:45 #, python-format msgid "User %s not authorized to edit these groups" -msgstr "" +msgstr "%s kullanıcısı bu grupları düzenlemek için yetkili değil." #: ckan/logic/auth/create.py:38 #, python-format msgid "User %s not authorized to add dataset to this organization" -msgstr "" +msgstr "%s kullanıcısı bu organizasyona veri seti eklemek için yetkili değil" #: ckan/logic/auth/create.py:61 msgid "No dataset id provided, cannot check auth." @@ -2106,12 +2114,12 @@ msgstr "" #: ckan/logic/auth/create.py:108 #, python-format msgid "User %s not authorized to edit these packages" -msgstr "" +msgstr "%s kullanıcısı bu paketleri düzenlemek için yetkili değil" #: ckan/logic/auth/create.py:119 #, python-format msgid "User %s not authorized to create groups" -msgstr "" +msgstr "%s kullanıcısı grup yaratmak için yetkili değil" #: ckan/logic/auth/create.py:129 #, python-format @@ -2128,7 +2136,7 @@ msgstr "" #: ckan/logic/auth/create.py:189 msgid "Group was not found." -msgstr "" +msgstr "Grup bulunamadı" #: ckan/logic/auth/create.py:209 msgid "Valid API key needed to create a package" @@ -2141,12 +2149,12 @@ msgstr "" #: ckan/logic/auth/create.py:237 #, python-format msgid "User %s not authorized to add members" -msgstr "" +msgstr "%s kullanıcısı üye eklemek için yetkili değil" #: ckan/logic/auth/create.py:261 ckan/logic/auth/update.py:115 #, python-format msgid "User %s not authorized to edit group %s" -msgstr "" +msgstr "%s kullanıcısı %s grubunu düzenlemek için yetkili değil" #: ckan/logic/auth/delete.py:40 #, python-format @@ -2247,7 +2255,7 @@ msgstr "" #: ckan/logic/auth/update.py:190 msgid "Have to be logged in to edit user" -msgstr "" +msgstr "Kullanıcıyı güncellemek için giriş yapmalısınız" #: ckan/logic/auth/update.py:198 #, python-format @@ -2400,7 +2408,7 @@ msgstr "" #: ckan/public/base/javascript/modules/autocomplete.js:195 msgid "No matches found" -msgstr "" +msgstr "Eşleşme bulunamadı" #: ckan/public/base/javascript/modules/autocomplete.js:204 #, python-format @@ -2425,7 +2433,7 @@ msgstr "" #: ckan/templates/user/new_user_form.html:9 #: ckan/templates/user/perform_reset.html:21 msgid "Confirm" -msgstr "" +msgstr "Onayla" #: ckan/public/base/javascript/modules/confirm-action.js:103 #: ckan/public/base/javascript/modules/resource-reorder.js:59 @@ -2496,7 +2504,7 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-reorder.js:69 #: ckan/public/base/javascript/modules/resource-view-reorder.js:59 msgid "Saving..." -msgstr "" +msgstr "Kaydediliyor..." #: ckan/public/base/javascript/modules/resource-upload-field.js:57 msgid "Upload a file" @@ -2504,7 +2512,7 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:144 msgid "An Error Occurred" -msgstr "" +msgstr "Hata oluştu" #: ckan/public/base/javascript/modules/resource-upload-field.js:201 msgid "Unable to upload file" @@ -2524,14 +2532,14 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 #: ckan/templates/package/snippets/view_form_filters.html:16 msgid "Add Filter" -msgstr "" +msgstr "Filtre ekle" #: ckan/public/base/javascript/modules/resource-view-filters.js:52 msgid "Select a field" @@ -2548,7 +2556,7 @@ msgstr "" #: ckan/templates/package/resource_edit_base.html:12 #: ckan/templates/package/snippets/resource_item.html:56 msgid "Edit" -msgstr "" +msgstr "Düzenle" #: ckan/public/base/javascript/modules/table-toggle-more.js:25 msgid "Show more" @@ -2556,12 +2564,105 @@ msgstr "" #: ckan/public/base/javascript/modules/table-toggle-more.js:26 msgid "Hide" -msgstr "" +msgstr "Gizle" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:13 +#: ckan/public-bs2/base/test/spec/module.spec.js:385 +#: ckan/public/base/test/spec/i18n.spec.js:13 +#: ckan/public/base/test/spec/module.spec.js:385 +msgid "foo" +msgstr "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:17 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:46 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:50 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:54 +#: ckan/public/base/test/spec/i18n.spec.js:17 +#: ckan/public/base/test/spec/i18n.spec.js:46 +#: ckan/public/base/test/spec/i18n.spec.js:50 +#: ckan/public/base/test/spec/i18n.spec.js:54 +msgid "no translation" +msgid_plural "no translations" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:22 +#: ckan/public/base/test/spec/i18n.spec.js:22 +#, python-format +msgid "hello %(name)s!" +msgstr "merhaba %(name)s!" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:29 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:76 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:81 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:86 +#: ckan/public/base/test/spec/i18n.spec.js:29 +#: ckan/public/base/test/spec/i18n.spec.js:76 +#: ckan/public/base/test/spec/i18n.spec.js:81 +#: ckan/public/base/test/spec/i18n.spec.js:86 +#, python-format +msgid "no %(attr)s translation" +msgid_plural "no %(attr)s translations" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:39 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:40 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:41 +#: ckan/public-bs2/base/test/spec/module.spec.js:395 +#: ckan/public-bs2/base/test/spec/module.spec.js:396 +#: ckan/public-bs2/base/test/spec/module.spec.js:397 +#: ckan/public/base/test/spec/i18n.spec.js:39 +#: ckan/public/base/test/spec/i18n.spec.js:40 +#: ckan/public/base/test/spec/i18n.spec.js:41 +#: ckan/public/base/test/spec/module.spec.js:395 +#: ckan/public/base/test/spec/module.spec.js:396 +#: ckan/public/base/test/spec/module.spec.js:397 +msgid "bar" +msgid_plural "bars" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:61 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:65 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:69 +#: ckan/public/base/test/spec/i18n.spec.js:61 +#: ckan/public/base/test/spec/i18n.spec.js:65 +#: ckan/public/base/test/spec/i18n.spec.js:69 +#, python-format +msgid "%(color)s shirt" +msgid_plural "%(color)s shirts" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:93 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:94 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:95 +#: ckan/public/base/test/spec/i18n.spec.js:93 +#: ckan/public/base/test/spec/i18n.spec.js:94 +#: ckan/public/base/test/spec/i18n.spec.js:95 +#, python-format +msgid "%(num)d item" +msgid_plural "%(num)d items" +msgstr[0] "" +msgstr[1] "" + +#: ckan/public-bs2/base/test/spec/i18n.spec.js:100 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:105 +#: ckan/public-bs2/base/test/spec/i18n.spec.js:110 +#: ckan/public/base/test/spec/i18n.spec.js:100 +#: ckan/public/base/test/spec/i18n.spec.js:105 +#: ckan/public/base/test/spec/i18n.spec.js:110 +#, python-format +msgid "%(num)d missing translation" +msgid_plural "%(num)d missing translations" +msgstr[0] "" +msgstr[1] "" #: ckan/templates/error_document_template.html:3 #, python-format msgid "Error %(error_code)s" -msgstr "" +msgstr "Hata %(error_code)s" #: ckan/templates/footer.html:9 msgid "About {0}" @@ -2610,11 +2711,11 @@ msgstr "" #: ckan/templates/header.html:43 ckan/templates/header.html:45 msgid "Log out" -msgstr "" +msgstr "Çıkış yap" #: ckan/templates/header.html:56 ckan/templates/user/logout_first.html:15 msgid "Log in" -msgstr "" +msgstr "Giriş yap" #: ckan/templates/header.html:58 ckan/templates/user/new.html:3 msgid "Register" @@ -2646,7 +2747,7 @@ msgstr "" #: ckan/templates/snippets/simple_search.html:5 #: ckan/templates/user/snippets/user_search.html:6 msgid "Search" -msgstr "" +msgstr "Ara" #: ckan/templates/page.html:6 msgid "Skip to content" @@ -2700,22 +2801,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2731,9 +2831,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2765,7 +2864,7 @@ msgstr "" #: ckan/templates/dataviewer/snippets/no_preview.html:5 msgid "More details..." -msgstr "" +msgstr "Daha fazla detay..." #: ckan/templates/dataviewer/snippets/no_preview.html:12 #, python-format @@ -2851,7 +2950,7 @@ msgstr "" #: ckan/templates/user/activity_stream.html:6 #: ckan/templates/user/read_base.html:20 msgid "Activity Stream" -msgstr "" +msgstr "İşlem Akışı" #: ckan/templates/group/admins.html:3 ckan/templates/group/admins.html:6 #: ckan/templates/organization/admins.html:3 @@ -2884,7 +2983,7 @@ msgstr "" #: ckan/templates/group/confirm_delete.html:11 msgid "Are you sure you want to delete group - {name}?" -msgstr "" +msgstr "{name} grubunu silmek istediğinize emin misiniz?" #: ckan/templates/group/confirm_delete_member.html:11 #: ckan/templates/organization/confirm_delete_member.html:11 @@ -2897,42 +2996,44 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" #: ckan/templates/group/edit.html:12 msgid "Edit Group" -msgstr "" +msgstr "Grubu Düzenle" #: ckan/templates/group/edit_base.html:23 ckan/templates/group/members.html:3 #: ckan/templates/organization/edit_base.html:24 #: ckan/templates/organization/members.html:3 msgid "Members" -msgstr "" +msgstr "Üyeler" #: ckan/templates/group/history.html:3 ckan/templates/group/history.html:6 #: ckan/templates/package/history.html:3 ckan/templates/package/history.html:6 msgid "History" -msgstr "" +msgstr "Tarihçe" #: ckan/templates/group/index.html:13 #: ckan/templates/user/dashboard_groups.html:7 msgid "Add Group" -msgstr "" +msgstr "Grup Ekle" #: ckan/templates/group/index.html:20 msgid "Search groups..." -msgstr "" +msgstr "Grupları ara..." #: ckan/templates/group/index.html:29 msgid "There are currently no groups for this site" -msgstr "" +msgstr "Bu site için şu an tanımlı grup bulunmamaktadır" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" -msgstr "" +msgstr "Yaratmak ister misiniz?" #: ckan/templates/group/member_new.html:8 #: ckan/templates/organization/member_new.html:10 @@ -2943,7 +3044,7 @@ msgstr "" #: ckan/templates/organization/member_new.html:7 #: ckan/templates/organization/member_new.html:12 msgid "Edit Member" -msgstr "" +msgstr "Üyeyi Düzenle" #: ckan/templates/group/member_new.html:10 #: ckan/templates/group/member_new.html:64 ckan/templates/group/members.html:6 @@ -2952,12 +3053,12 @@ msgstr "" #: ckan/templates/organization/member_new.html:65 #: ckan/templates/organization/members.html:8 msgid "Add Member" -msgstr "" +msgstr "Üye Ekle" #: ckan/templates/group/member_new.html:18 #: ckan/templates/organization/member_new.html:20 msgid "Existing User" -msgstr "" +msgstr "Mevcut Kullanıcı" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 @@ -2967,31 +3068,34 @@ msgstr "" #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 msgid "or" -msgstr "" +msgstr "veya" #: ckan/templates/group/member_new.html:42 #: ckan/templates/organization/member_new.html:44 msgid "New User" -msgstr "" +msgstr "Yeni Kullanıcı" #: ckan/templates/group/member_new.html:45 #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" -msgstr "" +msgstr "Bu üyeyi silmek istediğinize emin misiniz?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3003,7 +3107,7 @@ msgstr "" #: ckan/templates/revision/read.html:24 #: ckan/templates/user/edit_user_form.html:45 msgid "Delete" -msgstr "" +msgstr "Sil" #: ckan/templates/group/member_new.html:77 #: ckan/templates/organization/member_new.html:78 @@ -3012,23 +3116,23 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 msgid "Create a Group" -msgstr "" +msgstr "Grup Yarat" #: ckan/templates/group/new_group_form.html:17 msgid "Update Group" -msgstr "" +msgstr "Grubu Güncelle" #: ckan/templates/group/new_group_form.html:19 msgid "Create Group" -msgstr "" +msgstr "Grup Yarat" #: ckan/templates/group/read.html:21 ckan/templates/organization/read.html:25 #: ckan/templates/snippets/search_form.html:3 @@ -3037,7 +3141,7 @@ msgstr "" #: ckan/templates/group/snippets/feeds.html:3 msgid "Datasets in group: {group}" -msgstr "" +msgstr "{group} grubundaki veri setleri:" #: ckan/templates/group/snippets/feeds.html:4 #: ckan/templates/organization/snippets/feeds.html:4 @@ -3048,7 +3152,7 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 #: ckan/templates/package/snippets/resource_form.html:28 msgid "Name" -msgstr "" +msgstr "İsim" #: ckan/templates/group/snippets/group_form.html:10 msgid "My Group" @@ -3068,7 +3172,7 @@ msgstr "" #: ckan/templates/group/snippets/group_form.html:63 msgid "Save Group" -msgstr "" +msgstr "Grubu Kaydet" #: ckan/templates/group/snippets/group_item.html:38 #: ckan/templates/group/snippets/group_item.html:39 @@ -3085,16 +3189,16 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 msgid "Compare" -msgstr "" +msgstr "Karşılaştır" #: ckan/templates/group/snippets/info.html:16 #: ckan/templates/organization/bulk_process.html:72 @@ -3103,7 +3207,7 @@ msgstr "" #: ckan/templates/snippets/organization.html:37 #: ckan/templates/snippets/package_item.html:42 msgid "Deleted" -msgstr "" +msgstr "Silindi" #: ckan/templates/group/snippets/info.html:24 #: ckan/templates/package/snippets/package_context.html:7 @@ -3117,7 +3221,7 @@ msgstr "" #: ckan/templates/revision/read.html:39 #: ckan/templates/revision/snippets/revisions_list.html:4 msgid "Revision" -msgstr "" +msgstr "Revizyon" #: ckan/templates/group/snippets/revisions_table.html:8 #: ckan/templates/package/snippets/revisions_table.html:8 @@ -3145,21 +3249,20 @@ msgstr "" #: ckan/templates/home/index.html:4 msgid "Welcome" -msgstr "" +msgstr "Hoşgeldiniz" #: ckan/templates/home/snippets/about_text.html:1 msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3172,12 +3275,12 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:8 msgid "Welcome to CKAN" -msgstr "" +msgstr "CKAN'a hoşgeldiniz" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3190,7 +3293,7 @@ msgstr "" #: ckan/templates/home/snippets/search.html:6 msgid "Search data" -msgstr "" +msgstr "Veri ara" #: ckan/templates/home/snippets/search.html:16 msgid "Popular tags" @@ -3202,19 +3305,19 @@ msgstr "" #: ckan/templates/home/snippets/stats.html:11 msgid "dataset" -msgstr "" +msgstr "veri seti" #: ckan/templates/home/snippets/stats.html:11 msgid "datasets" -msgstr "" +msgstr "veri setleri" #: ckan/templates/home/snippets/stats.html:17 msgid "organizations" -msgstr "" +msgstr "organizasyonlar" #: ckan/templates/home/snippets/stats.html:23 msgid "groups" -msgstr "" +msgstr "gruplar" #: ckan/templates/macros/autoform.html:62 msgid "Site logo" @@ -3223,14 +3326,17 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" +"Burada Markdown formatlama kullanabilirsiniz" #: ckan/templates/macros/form.html:265 msgid "This field is required" -msgstr "" +msgstr "Bu alan zorunludur" #: ckan/templates/macros/form.html:265 msgid "Custom" @@ -3242,11 +3348,11 @@ msgstr "" #: ckan/templates/macros/form.html:395 msgid "Required field" -msgstr "" +msgstr "Zorunlu alan" #: ckan/templates/macros/form.html:410 msgid "http://example.com/my-image.jpg" -msgstr "" +msgstr "http://example.com/my-image.jpg" #: ckan/templates/macros/form.html:411 msgid "Image URL" @@ -3295,8 +3401,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3312,16 +3418,16 @@ msgstr "" #: ckan/templates/organization/snippets/info.html:13 #: ckan/templates/organization/snippets/info.html:16 msgid "Edit Organization" -msgstr "" +msgstr "Organizasyonu Düzenle" #: ckan/templates/organization/index.html:13 #: ckan/templates/user/dashboard_organizations.html:7 msgid "Add Organization" -msgstr "" +msgstr "Organizasyon Ekle" #: ckan/templates/organization/index.html:20 msgid "Search organizations..." -msgstr "" +msgstr "Organizasyonları ara..." #: ckan/templates/organization/index.html:29 msgid "There are currently no organizations for this site" @@ -3350,8 +3456,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3392,19 +3498,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3421,9 +3527,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3446,9 +3551,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3530,9 +3635,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3543,9 +3648,8 @@ msgstr "" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3615,9 +3719,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3685,8 +3789,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3826,12 +3930,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4167,8 +4270,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4315,8 +4418,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4542,8 +4644,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4570,4 +4672,3 @@ msgstr "Kullanıcı arama" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/uk/LC_MESSAGES/ckan.po b/ckan/i18n/uk/LC_MESSAGES/ckan.po index 81de2f15ff6..bd4e423def1 100644 --- a/ckan/i18n/uk/LC_MESSAGES/ckan.po +++ b/ckan/i18n/uk/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Ukrainian translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,17 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: uk\n" -"Language-Team: Ukrainian (https://www.transifex.com/okfn/teams/11162/uk/)" -"\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 !=" -" 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n " -"% 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9)" -" || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3)\n" +"Language-Team: Ukrainian (https://www.transifex.com/okfn/teams/11162/uk/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: uk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -119,14 +116,14 @@ msgstr "" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -151,8 +148,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -161,8 +157,8 @@ msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -271,8 +267,7 @@ msgstr "" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -1788,8 +1783,8 @@ msgstr "" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2546,8 +2541,8 @@ msgstr "" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2829,22 +2824,21 @@ msgstr "" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" #: ckan/templates/admin/confirm_reset.html:3 @@ -2860,9 +2854,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -3026,8 +3019,9 @@ msgstr "" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "" @@ -3059,7 +3053,8 @@ msgstr "" msgid "There are currently no groups for this site" msgstr "" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "" @@ -3108,19 +3103,22 @@ msgstr "" msgid "If you wish to invite a new user, enter their email address." msgstr "" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3141,8 +3139,8 @@ msgstr "" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" @@ -3214,10 +3212,10 @@ msgstr "" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3281,14 +3279,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3305,8 +3302,8 @@ msgstr "" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" #: ckan/templates/home/snippets/promoted.html:19 @@ -3352,8 +3349,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3424,8 +3421,8 @@ msgstr "" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "" @@ -3479,8 +3476,8 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" #: ckan/templates/organization/members.html:14 @@ -3523,19 +3520,19 @@ msgstr "" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3552,9 +3549,8 @@ msgstr "" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3577,9 +3573,9 @@ msgstr "" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" #: ckan/templates/package/confirm_delete.html:12 @@ -3661,9 +3657,9 @@ msgstr "" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3674,9 +3670,8 @@ msgstr "" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" #: ckan/templates/package/resource_edit_base.html:17 @@ -3746,9 +3741,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3816,8 +3811,8 @@ msgstr "" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" #: ckan/templates/package/search.html:52 @@ -3957,12 +3952,11 @@ msgstr "" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4298,8 +4292,8 @@ msgstr "" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4458,8 +4452,7 @@ msgstr "" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" #: ckan/templates/user/edit_user_form.html:7 @@ -4683,8 +4676,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4711,4 +4704,3 @@ msgstr "" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/uk_UA/LC_MESSAGES/ckan.po b/ckan/i18n/uk_UA/LC_MESSAGES/ckan.po index 3bca88bd6de..7f03dcd1589 100644 --- a/ckan/i18n/uk_UA/LC_MESSAGES/ckan.po +++ b/ckan/i18n/uk_UA/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Ukrainian (Ukraine) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,17 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: uk_UA\n" -"Language-Team: Ukrainian (Ukraine) " -"(https://www.transifex.com/okfn/teams/11162/uk_UA/)\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 !=" -" 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n " -"% 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9)" -" || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3)\n" +"Language-Team: Ukrainian (Ukraine) (https://www.transifex.com/okfn/teams/11162/uk_UA/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: uk_UA\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -119,17 +116,17 @@ msgstr "Ресурс DataStore не знайдено" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" -"Дані були недійсними (наприклад, числове значення завелике або вставлене " -"у текстове поле)" +"Дані були недійсними (наприклад, числове значення завелике або вставлене у " +"текстове поле)" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 #: ckanext/datastore/logic/action.py:348 ckanext/datastore/logic/action.py:459 @@ -153,8 +150,7 @@ msgstr "Доступ до даних ресурсу через веб API із msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Більше інформаціі в main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "Більше інформаціі в update your profile and add your email address. " msgstr "" -"Будь ласка, оновіть Ваш профайл і вкажіть свою " -"електронну пошту." +"Будь ласка, оновіть Ваш профайл і вкажіть свою електронну" +" пошту." #: ckan/controllers/home.py:75 #, python-format @@ -1100,8 +1092,7 @@ msgstr "Неправильний формат перевірки: %r" #: ckan/controllers/package.py:396 msgid "Viewing datasets of type \"{package_type}\" is not supported ({file_!r})." msgstr "" -"Перегляд наборів даних типу \"{package_type}\" не підтримується " -"({file_!r})." +"Перегляд наборів даних типу \"{package_type}\" не підтримується ({file_!r})." #: ckan/controllers/package.py:435 ckan/controllers/package.py:817 #: ckan/controllers/package.py:918 ckan/controllers/package.py:966 @@ -1255,8 +1246,7 @@ msgstr "Недостатньо прав для створення користу #: ckan/controllers/user.py:210 msgid "Unauthorized to delete user with id \"{user_id}\"." msgstr "" -"Недостатньо прав для видалення користувача з ідентифікатором " -"\"{user_id}\"." +"Недостатньо прав для видалення користувача з ідентифікатором \"{user_id}\"." #: ckan/controllers/user.py:224 ckan/controllers/user.py:287 msgid "No user specified" @@ -1294,8 +1284,8 @@ msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" msgstr "" -"Користувач \"%s\" тепер зареєстрований, але ви все ще перебуваєте в сесії" -" як користувач \"%s\"" +"Користувач \"%s\" тепер зареєстрований, але ви все ще перебуваєте в сесії як" +" користувач \"%s\"" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1339,8 +1329,8 @@ msgstr "Користувача %s немає " #: ckan/controllers/user.py:499 msgid "Please check your inbox for a reset code." msgstr "" -"Будь ласка перевірте вашу електронну пошту – на неї має прийти лист з " -"кодом відновлення." +"Будь ласка перевірте вашу електронну пошту – на неї має прийти лист з кодом " +"відновлення." #: ckan/controllers/user.py:503 #, python-format @@ -1820,8 +1810,8 @@ msgstr "Ім'я має мати не більше %i символів" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" "може містити лише символи нижнього регістру (ascii), а також символи - " "(дефіс) та _ (підкреслення)" @@ -1868,8 +1858,8 @@ msgstr "Тег \"%s\" довший за максимальне значення #, python-format msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_." msgstr "" -"Тег \"%s\" може містити лише числа, літери, а також символи - (дефіс) та " -"_ (підкреслення)." +"Тег \"%s\" може містити лише числа, літери, а також символи - (дефіс) та _ " +"(підкреслення)." #: ckan/logic/validators.py:436 #, python-format @@ -2027,8 +2017,8 @@ msgstr "Значення рейтингу має бути між %i та %i." #: ckan/logic/action/create.py:1064 msgid "Error sending the invite email, the user was not created: {0}" msgstr "" -"Помилка під час надсилання листа-запрошення, користувача не було " -"створено: {0}" +"Помилка під час надсилання листа-запрошення, користувача не було створено: " +"{0}" #: ckan/logic/action/create.py:1277 ckan/logic/action/create.py:1284 msgid "You must be logged in to follow users" @@ -2163,15 +2153,13 @@ msgstr "Не надано id ресурсу, неможливо підтверд #: ckan/logic/auth/get.py:137 ckan/logic/auth/update.py:63 msgid "No package found for this resource, cannot check auth." msgstr "" -"Не знайдено пакетів для цього ресурсу. Неможливо підтвердити " -"достовірність." +"Не знайдено пакетів для цього ресурсу. Неможливо підтвердити достовірність." #: ckan/logic/auth/create.py:76 #, python-format msgid "User %s not authorized to create resources on dataset %s" msgstr "" -"Користувач %s не має достатньо прав для створення ресурсів у наборі даних" -" %s" +"Користувач %s не має достатньо прав для створення ресурсів у наборі даних %s" #: ckan/logic/auth/create.py:108 #, python-format @@ -2191,8 +2179,7 @@ msgstr "Користувач %s не має достатньо прав для #: ckan/logic/auth/create.py:145 msgid "User {user} not authorized to create users via the API" msgstr "" -"Користувач {user} не має достатньо прав для створення користувачів через " -"API" +"Користувач {user} не має достатньо прав для створення користувачів через API" #: ckan/logic/auth/create.py:148 msgid "Not authorized to create users" @@ -2227,7 +2214,8 @@ msgstr "Користувач %s не має достатньо прав для #: ckan/logic/auth/delete.py:56 msgid "Resource view not found, cannot check auth." -msgstr "Представлення ресурсу не знайдено, неможливо підтвердити достовірність." +msgstr "" +"Представлення ресурсу не знайдено, неможливо підтвердити достовірність." #: ckan/logic/auth/delete.py:73 #, python-format @@ -2338,12 +2326,14 @@ msgstr "Користувач %s не має достатньо прав для #: ckan/logic/auth/update.py:226 #, python-format msgid "User %s not authorized to update task_status table" -msgstr "Користувач %s не має достатньо прав для оновлення таблиці task_status " +msgstr "" +"Користувач %s не має достатньо прав для оновлення таблиці task_status " #: ckan/logic/auth/update.py:240 #, python-format msgid "User %s not authorized to update term_translation table" -msgstr "Користувач %s не має достатньо прав для оновлення таблиці term_translation" +msgstr "" +"Користувач %s не має достатньо прав для оновлення таблиці term_translation" #: ckan/logic/auth/update.py:272 msgid "Valid API key needed to edit a group" @@ -2594,8 +2584,8 @@ msgstr "Не вдалось отримати дані з вивантажено #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "" "Ви вкладаєте файл. Ви впевнені, що хочете перейти на іншу сторінку і " "припинити вкладення?" @@ -2881,39 +2871,24 @@ msgstr "Опції налаштувань CKAN" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Назва сайту: Це назва цього примірника CKAN.

" -"

Стиль: Виберіть зі списку простих варіацій головної " -"кольорової схеми, щоб швидко отримати працюючу тему.

" -"

Логотип сайту: Це логотип, що відображається у " -"заголовку усіх шаблонів примірника CKAN.

Про нас:" -" Цей текст буде відображатись на сторінці з " -"інформацією про сайт цього примірника CKAN.

Вступний " -"текст: \n" -"Цей текст буде відображатись на головній " -"сторінці цього примірника CKAN як привітання для відвідувачів.

" -"

Користувацький CSS: Це блок CSS, що з’явиться у " -"<head> тегу кожної сторінки. Якщо ви хочете змінити " -"шаблон більше, ми рекомендуємо читати документацію.

Головна " -"сторінка: Тут можна вибрати наперед визначене розташування " -"модулів, що будуть відображатись на головній сторінці.

" +"

Назва сайту: Це назва цього примірника CKAN.

Стиль: Виберіть зі списку простих варіацій головної кольорової схеми, щоб швидко отримати працюючу тему.

Логотип сайту: Це логотип, що відображається у заголовку усіх шаблонів примірника CKAN.

Про нас: Цей текст буде відображатись на сторінці з інформацією про сайт цього примірника CKAN.

Вступний текст: \n" +"Цей текст буде відображатись на головній сторінці цього примірника CKAN як привітання для відвідувачів.

Користувацький CSS: Це блок CSS, що з’явиться у <head> тегу кожної сторінки. Якщо ви хочете змінити шаблон більше, ми рекомендуємо читати документацію.

Головна сторінка: Тут можна вибрати наперед визначене розташування модулів, що будуть відображатись на головній сторінці.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2928,15 +2903,11 @@ msgstr "Адмініструвати CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" -"

Як користувач з правами системного адміністратора ви маєте повний " -"контроль над цим примірником CKAN. \n" -"Працюйте обережно!

Для детальніших пояснень роботи з " -"функціональністю CKAN, дивіться документацію для сисадмінів.

" +"

Як користувач з правами системного адміністратора ви маєте повний контроль над цим примірником CKAN. \n" +"Працюйте обережно!

Для детальніших пояснень роботи з функціональністю CKAN, дивіться документацію для сисадмінів.

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -3099,8 +3070,9 @@ msgstr "Ви впевнені, що хочете видалити учасник #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Управління" @@ -3132,7 +3104,8 @@ msgstr "Пошук груп..." msgid "There are currently no groups for this site" msgstr "На даний момент немає груп для цього сайту" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Не хочете створити?" @@ -3164,7 +3137,8 @@ msgstr "Існуючий користувач" #: ckan/templates/group/member_new.html:21 #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." -msgstr "Якщо ви хочете додати існуючого користувача, знайдіть його ім’я внизу." +msgstr "" +"Якщо ви хочете додати існуючого користувача, знайдіть його ім’я внизу." #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -3180,22 +3154,25 @@ msgstr "Новий користувач" #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." msgstr "" -"Якщо ви хочете запровити нового користувача, введіть їхню адресу " -"електронної пошти тут." +"Якщо ви хочете запровити нового користувача, введіть їхню адресу електронної" +" пошти тут." -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Роль" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Ви впевнені, що хочете видалити цього учасника?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3216,13 +3193,13 @@ msgstr "Що таке роль?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Адміністратор: Може редагувати інформацію про групи, " -"а також управляти членами організації.

Член: Може" -" додавати/видаляти набори даних з груп.

" +"

Адміністратор: Може редагувати інформацію про групи, а " +"також управляти членами організації.

Член: Може " +"додавати/видаляти набори даних з груп.

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3292,16 +3269,15 @@ msgstr "Що таке група?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Ви можете використовувати групи CKAN для створення та управління наборами" -" даних. Використовуйте їх для каталогізування наборів даних для " -"конкретного проекту чи команди, на певну тему або як найпростіший спосіб " -"допомогти людям шукати та знаходити ваші власні опубліковані набори " -"даних." +"Ви можете використовувати групи CKAN для створення та управління наборами " +"даних. Використовуйте їх для каталогізування наборів даних для конкретного " +"проекту чи команди, на певну тему або як найпростіший спосіб допомогти людям" +" шукати та знаходити ваші власні опубліковані набори даних." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3364,14 +3340,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3381,22 +3356,21 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN є провідною платформою інформаційних порталів з відкритим " -"кодом.

CKAN це повністю завершене програмне рішення, що дозволяє " -"доступ та використання даних за допомогою інструментів для швидкої " -"публікації, поширення, пошуку та будь-якої іншої роботи з даними (включно" -" зі зберіганням даних та забезпечення потужних API). CKAN корисний тим, " -"хто займається публікацєю даних (національні та регіональні уряди, " -"компанії та організації) та хоче зробити ці дані відкритими та " -"доступними.

CKAN використовується урядами та користувацькими " -"групами по всьому світу та є основою різноманітних офіційних та " -"громадських порталів, включаючи портали для місцевих, національних та " -"міжнародних урядів, таких як британський CKAN є провідною платформою інформаційних порталів з відкритим кодом.

" +"

CKAN це повністю завершене програмне рішення, що дозволяє доступ та " +"використання даних за допомогою інструментів для швидкої публікації, " +"поширення, пошуку та будь-якої іншої роботи з даними (включно зі зберіганням" +" даних та забезпечення потужних API). CKAN корисний тим, хто займається " +"публікацєю даних (національні та регіональні уряди, компанії та організації)" +" та хоче зробити ці дані відкритими та доступними.

CKAN " +"використовується урядами та користувацькими групами по всьому світу та є " +"основою різноманітних офіційних та громадських порталів, включаючи портали " +"для місцевих, національних та міжнародних урядів, таких як британський data.gov.uk та publicdata.eu ЄС, бразильський dados.gov.br, голандський та " -"нідерландський урядові портали, а також міські та муніципальні сайти в " -"США, Великобританії, Аргентині, Фінляндії та ін.

CKAN:

CKAN: http://ckan.org/
CKAN тур: http://ckan.org/tour/
Огляд " "можливостей: Markdown formatting here" msgstr "" -"Тут ви можете використовувати Markdown " -"форматування " +"Тут ви можете використовувати Markdown форматування " #: ckan/templates/macros/form.html:265 msgid "This field is required" @@ -3531,8 +3504,8 @@ msgstr "Чернетка" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Приватний" @@ -3586,14 +3559,14 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" "

Адміністратор: Може додавати/редагувати та видаляти " "набори даних, а також управляти членами організації.

" -"

Редактор: Може додавати та редагувати набори даних, " -"але не може управляти членами організації.

Член: " -"Може переглядати приватні набори даних організації, але не може додавати " +"

Редактор: Може додавати та редагувати набори даних, але " +"не може управляти членами організації.

Член: Може " +"переглядати приватні набори даних організації, але не може додавати " "нові.

" #: ckan/templates/organization/members.html:14 @@ -3636,31 +3609,29 @@ msgstr "Що таке організація?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

Організації діють як видавничі відділи для наборів даних (наприклад, " "Міністерство охорони здоров'я). Це означає, що набори даних можуть бути " "опубліковані і належати відділу, а не окремому користувачеві.

В " "організаціях адміністратори можуть призначати ролі і надавати права її " "членам, даючи окремим користувачам право публікувати даних від імені " -"конкретної організації (наприклад, Управління національної " -"статистики).

" +"конкретної організації (наприклад, Управління національної статистики).

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" -"Організації в CKAN використовуються для створення, управління і " -"публікації колекцій наборів даних. Користувачі можуть мати різні ролі в " -"рамках організації, залежно від рівня їх прав на створення, зміну та " -"публікацію." +"Організації в CKAN використовуються для створення, управління і публікації " +"колекцій наборів даних. Користувачі можуть мати різні ролі в рамках " +"організації, залежно від рівня їх прав на створення, зміну та публікацію." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3676,9 +3647,8 @@ msgstr "Коротко про мою організацію..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Ви впевнені, що хочете видалити цю Організацію? Це призведе до видалення " "всіх публічних і приватних наборів даних, що належать до цієї організації." @@ -3703,14 +3673,13 @@ msgstr "Що таке набір даних?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Набір даних CKAN це колекція інформаційних ресурсів (таких як файли), " -"разом з описом та іншою інформацією, що доступні за фіксованою " -"URL-адресою. Набори даних - це те, що користувачі бачать при пошуку " -"даних." +"Набір даних CKAN це колекція інформаційних ресурсів (таких як файли), разом " +"з описом та іншою інформацією, що доступні за фіксованою URL-адресою. Набори" +" даних - це те, що користувачі бачать при пошуку даних." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3791,16 +3760,15 @@ msgstr "Додати представлення" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" -"Представлення провідника даних можуть бути повільними і ненадійними, якщо" -" розширення DataStore не включене. Для отримання більш детальної " -"інформації, будь ласка, читайте документацію " -"провідника даних." +"Представлення провідника даних можуть бути повільними і ненадійними, якщо " +"розширення DataStore не включене. Для отримання більш детальної інформації, " +"будь ласка, читайте документацію провідника даних." #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3810,9 +3778,8 @@ msgstr "Додати" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" "Це стара версія набору даних, датована %(timestamp)s. Вона може значно " "відрізнятись від поточної версії." @@ -3884,13 +3851,13 @@ msgstr "Адміністратори сайту можливо не увімкн #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" -"Якщо представлення вимагає DataStore, можливо плагін DataStore не " -"включений, або дані не переміщені в DataStore, або DataStore ще не встиг " -"завершити обробку даних." +"Якщо представлення вимагає DataStore, можливо плагін DataStore не включений," +" або дані не переміщені в DataStore, або DataStore ще не встиг завершити " +"обробку даних." #: ckan/templates/package/resource_read.html:144 msgid "Additional Information" @@ -3957,8 +3924,8 @@ msgstr "Додати новий ресурс" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Цей набір даних пустий, чому б не " "додати даних?

" @@ -3981,8 +3948,8 @@ msgid "" " You can also access this registry using the %(api_link)s (see " "%(api_doc_link)s) or download a %(dump_link)s. " msgstr "" -" Ви також можете отримати доступ до цього реєстру через %(api_link)s (see" -" %(api_doc_link)s) або завантажити %(dump_link)s. " +" Ви також можете отримати доступ до цього реєстру через %(api_link)s (see " +"%(api_doc_link)s) або завантажити %(dump_link)s. " #: ckan/templates/package/search.html:60 #, python-format @@ -4108,19 +4075,18 @@ msgstr "Активний" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" -"Ліцензія даних, яку ви вибрали вище стосується лише змісту " -"будь-яких файлів ресурсів, які ви додаєте до цього набору даних. " -"Відправляючи цю форму, ви погоджуєтеся випускати значення " -"метаданих, які ви вводите у форму під ліцензією відкритої бази " -"даних (Open " -"Database License)." +"Ліцензія даних, яку ви вибрали вище стосується лише змісту будь-яких " +"файлів ресурсів, які ви додаєте до цього набору даних. Відправляючи цю " +"форму, ви погоджуєтеся випускати значення метаданих, які ви вводите у" +" форму під ліцензією відкритої бази даних (Open Database " +"License)." #: ckan/templates/package/snippets/package_form.html:39 msgid "Are you sure you want to delete this dataset?" @@ -4231,8 +4197,8 @@ msgstr "Що таке ресурс?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." msgstr "" -"Ресурсом може бути будь-який файл або посилання на файл, що містить " -"корисні дані." +"Ресурсом може бути будь-який файл або посилання на файл, що містить корисні " +"дані." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4259,8 +4225,8 @@ msgid "" "You can copy and paste the embed code into a CMS or blog software that " "supports raw HTML" msgstr "" -"Ви можете скопіювати і вставити embed код в CMS або програмне " -"забезпечення для блогу, що підтримує чистий HTML" +"Ви можете скопіювати і вставити embed код в CMS або програмне забезпечення " +"для блогу, що підтримує чистий HTML" #: ckan/templates/package/snippets/resource_view.html:69 msgid "Width" @@ -4459,8 +4425,8 @@ msgstr "

Попробуйте пошукати ще.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" "

Виникла помилка під час " "пошуку.Спробуйте ще раз.

" @@ -4621,11 +4587,10 @@ msgstr "Інформація про акаунт" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Ваш профіль дозволяє іншим користувачам CKAN дізнатись про те, хто ви і " -"чим займаєтесь." +"Ваш профіль дозволяє іншим користувачам CKAN дізнатись про те, хто ви і чим " +"займаєтесь." #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4716,7 +4681,8 @@ msgstr "Забули свій пароль?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." -msgstr "Жодної проблеми. Скористайтеся відновленням пароля для його поновлення. " +msgstr "" +"Жодної проблеми. Скористайтеся відновленням пароля для його поновлення. " #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4770,8 +4736,8 @@ msgstr "Навіщо реєструватись?" #: ckan/templates/user/new.html:28 msgid "Create datasets, groups and other exciting things" msgstr "" -"Щоб мати можливість створювати набори даних, групи та робити інші " -"захоплюючі речі" +"Щоб мати можливість створювати набори даних, групи та робити інші захоплюючі" +" речі" #: ckan/templates/user/new_user_form.html:5 msgid "username" @@ -4850,8 +4816,8 @@ msgstr "Подати запит на скидання" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Введіть ім'я користувача в поле і ми надішлемо вам лист з посиланням для " "введення нового пароля." @@ -4880,4 +4846,3 @@ msgstr "Шукати користувача" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/vi/LC_MESSAGES/ckan.po b/ckan/i18n/vi/LC_MESSAGES/ckan.po index b9aa57dae1e..16a371417d1 100644 --- a/ckan/i18n/vi/LC_MESSAGES/ckan.po +++ b/ckan/i18n/vi/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Vietnamese translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: vi\n" -"Language-Team: Vietnamese " -"(https://www.transifex.com/okfn/teams/11162/vi/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Vietnamese (https://www.transifex.com/okfn/teams/11162/vi/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "Không tìm thấy nguồn kho dữ liệu" #: ckanext/datastore/controller.py:101 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -143,15 +143,13 @@ msgstr "Giao diện người sử dụng dữ liệu CKAN " #: ckanext/datastore/templates/ajax_snippets/api_info.html:23 msgid "Access resource data via a web API with powerful query support" msgstr "" -"Truy cập vào tài nguyên dữ liệu qua một web API với đây đủ hỗ trợ truy " -"vấn." +"Truy cập vào tài nguyên dữ liệu qua một web API với đây đủ hỗ trợ truy vấn." #: ckanext/datastore/templates/ajax_snippets/api_info.html:24 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -160,11 +158,11 @@ msgstr "Điểm kết thúc" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" -"Giao diện người sử dụng dữ liệu có thể truy cập thông qua hoạt động theo " -"dõi giao diện người sử dụng CKAN" +"Giao diện người sử dụng dữ liệu có thể truy cập thông qua hoạt động theo dõi" +" giao diện người sử dụng CKAN" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 msgid "Create" @@ -272,8 +270,7 @@ msgstr "Dữ liệu API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -750,8 +747,8 @@ msgid "" "Cannot purge package %s as associated revision %s includes non-deleted " "packages %s" msgstr "" -"Không thể xóa gói %s do mục đang xem lại %s bao gồm những gói không xóa " -"được %s" +"Không thể xóa gói %s do mục đang xem lại %s bao gồm những gói không xóa được" +" %s" #: ckan/controllers/admin.py:183 #, python-format @@ -1265,9 +1262,7 @@ msgstr "Hệ thống kiểm thử lỗi. Đề nghị thử lại." msgid "" "User \"%s\" is now registered but you are still logged in as \"%s\" from " "before" -msgstr "" -"Người dùng \"%s\" đã đăng ký nhưng hiện đang đăng nhập ở dạng \"%s\" từ " -"trước" +msgstr "Người dùng \"%s\" đã đăng ký nhưng hiện đang đăng nhập ở dạng \"%s\" từ trước" #: ckan/controllers/user.py:293 msgid "Unauthorized to edit a user." @@ -1766,8 +1761,8 @@ msgstr "Tên dài tối đa %i ký tự" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -1847,8 +1842,8 @@ msgid "" "Edit not allowed as it looks like spam. Please avoid links in your " "description." msgstr "" -"Không được phép hiệu chỉnh thư rác. Tránh các liên kết trong phần mô tả " -"của bạn" +"Không được phép hiệu chỉnh thư rác. Tránh các liên kết trong phần mô tả của " +"bạn" #: ckan/logic/validators.py:620 #, python-format @@ -1863,8 +1858,8 @@ msgstr "Từ vựng đã được sử dụng" #, python-format msgid "Cannot change value of key from %s to %s. This key is read-only" msgstr "" -"Không thể thay đổi giá trị của chỉ dẫn từ %s thành %s. Chỉ dẫn này ở chế " -"độ không chỉnh sửa" +"Không thể thay đổi giá trị của chỉ dẫn từ %s thành %s. Chỉ dẫn này ở chế độ " +"không chỉnh sửa" #: ckan/logic/validators.py:643 msgid "Tag vocabulary was not found." @@ -2230,7 +2225,8 @@ msgstr "Người dùng %s không được quyền sửa tài nguyên %s" #: ckan/logic/auth/update.py:100 #, python-format msgid "User %s not authorized to change state of package %s" -msgstr "Người dùng %s không được xác thực để thay đổi trạng thái của package %s" +msgstr "" +"Người dùng %s không được xác thực để thay đổi trạng thái của package %s" #: ckan/logic/auth/update.py:128 #, python-format @@ -2458,8 +2454,8 @@ msgstr "Liên kết" #: ckan/public/base/javascript/modules/image-upload.js:61 msgid "Link to a URL on the internet (you can also link to an API)" msgstr "" -"Liên kết đến một địa chỉ trên mạng ( Bạn cũng có thể liên kết với một " -"giao diện người sử dụng)" +"Liên kết đến một địa chỉ trên mạng ( Bạn cũng có thể liên kết với một giao " +"diện người sử dụng)" #: ckan/public/base/javascript/modules/image-upload.js:68 msgid "Upload" @@ -2527,8 +2523,8 @@ msgstr "Không thể lấy dữ liệu từ tệp đã tải" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "Bạn đang tải tệp. Bạn muốn chuyển hướng và ngừng tải tệp?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2583,8 +2579,8 @@ msgid "" "Powered by CKAN" msgstr "" -"Được phát triển bởi CKAN" +"Được phát triển bởi CKAN" #: ckan/templates/header.html:12 msgid "Sysadmin settings" @@ -2704,38 +2700,37 @@ msgstr "các lựa chọn cấu hình CKAN " #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

Tiêu đề: Đây là tiều đề của CKAN, Nó xuất hiện trong " -"những vị trí khác nhau trong CKAN.

Kiểu: Chọn từ " -"một danh sách của các biến đơn giản của bộ màu sắc chính để nhanh chóng " -"thấy được việc thay đổi chủ đề.

Site Tag Logo: " -"Đây là logo nó xuất hiện trong phần đâu của tất cả các mẩu của CKAN.

" -"

About: Văn bản này sẽ xuất hiện trên thể hiện của " -"CKAN này.Trang này.

Văn bản " -"giới thiệu: Văn bản này sẽ xuất hiện trên thể hiện của CKAN này " -"Trang chủ chào mừng đến những vị khách.

" -"

Thay đổi CSS: Đây là một khối của CSS nó xuất hiện " -"trong <phần đầu> của mọi trang. Nếu bạn muốn được tùy " -"chỉnh các mẫu một cách đầy đủ hơn chúng tôi đề nghị bạn đọc tài liệu.

" -"

Trang chủ: Đây là lựa chọn đã được xếp đặt trước cho " -"những modules xuất hiện trên trang chủ của bạn.

" +"những vị trí khác nhau trong CKAN.

Kiểu: Chọn từ một" +" danh sách của các biến đơn giản của bộ màu sắc chính để nhanh chóng thấy " +"được việc thay đổi chủ đề.

Site Tag Logo: Đây là " +"logo nó xuất hiện trong phần đâu của tất cả các mẩu của CKAN.

" +"

About: Văn bản này sẽ xuất hiện trên thể hiện của CKAN " +"này.Trang này.

Văn bản giới " +"thiệu: Văn bản này sẽ xuất hiện trên thể hiện của CKAN này Trang chủ chào mừng đến những vị khách.

" +"

Thay đổi CSS: Đây là một khối của CSS nó xuất hiện trong" +" <phần đầu> của mọi trang. Nếu bạn muốn được tùy chỉnh " +"các mẫu một cách đầy đủ hơn chúng tôi đề nghị bạn đọc tài liệu.

Trang chủ: " +"Đây là lựa chọn đã được xếp đặt trước cho những modules xuất hiện trên trang" +" chủ của bạn.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2750,9 +2745,8 @@ msgstr "" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" #: ckan/templates/admin/trash.html:20 @@ -2916,8 +2910,9 @@ msgstr "Bạn có muốn xóa tên thành viên nhóm không - {name}?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "Quản lí" @@ -2949,7 +2944,8 @@ msgstr "Tìm nhóm" msgid "There are currently no groups for this site" msgstr "Hiện tại không có nhóm nào tại trang này" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "Bạn có muốn tạo nhóm?" @@ -2982,8 +2978,8 @@ msgstr "Người sử dụng hiện tại" #: ckan/templates/organization/member_new.html:23 msgid "If you wish to add an existing user, search for their username below." msgstr "" -"Nếu bạn muốn thêm một người sử dụng hiện có, hãy tìm tên người sử dụng " -"bên dưới" +"Nếu bạn muốn thêm một người sử dụng hiện có, hãy tìm tên người sử dụng bên " +"dưới" #: ckan/templates/group/member_new.html:38 #: ckan/templates/organization/member_new.html:40 @@ -2999,22 +2995,24 @@ msgstr "Người sử dụng mới" #: ckan/templates/organization/member_new.html:47 msgid "If you wish to invite a new user, enter their email address." msgstr "" -"Nếu bạn muốn mới một người sử dụng mới, hãy nhập địa chỉ email của người " -"đó" +"Nếu bạn muốn mới một người sử dụng mới, hãy nhập địa chỉ email của người đó" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "Vai trò" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "Bạn có muốn xóa thành viên này không?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3035,13 +3033,13 @@ msgstr "Vai trò là gì?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Quản trị viên: có thể sửa thông tin nhóm và quản lý " -"các thành viên tổ chức.

Thành viên: Có thể " -"thêm/bớt bộ dữ liệu của các nhóm

" +"

Quản trị viên: có thể sửa thông tin nhóm và quản lý các " +"thành viên tổ chức.

Thành viên: Có thể thêm/bớt bộ " +"dữ liệu của các nhóm

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 #: ckan/templates/group/new.html:7 @@ -3111,15 +3109,15 @@ msgstr "Nhóm là gì?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "" -"Bạn có thể dùng CKAN Groups để tạo và quản lý các bộ sưu tập của các tập " -"dữ liệu. Điều này có thể cho tập dữ liệu cho một dự án hoặc nhóm cụ thể, " -"hoặc trên một chủ để cụ thể, hoặc là rất đợn giản để giúp mọi người tìm " -"và tìm kiếm tập dữ liệu được phổ biến của chính họ." +"Bạn có thể dùng CKAN Groups để tạo và quản lý các bộ sưu tập của các tập dữ " +"liệu. Điều này có thể cho tập dữ liệu cho một dự án hoặc nhóm cụ thể, hoặc " +"trên một chủ để cụ thể, hoặc là rất đợn giản để giúp mọi người tìm và tìm " +"kiếm tập dữ liệu được phổ biến của chính họ." #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3182,14 +3180,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3199,24 +3196,23 @@ msgid "" "overview: http://ckan.org/features/

" msgstr "" -"

CKAN là nền tản cổng thông tin dữ liệu mã nguồn mở hàng đầu thế " -"giới.

CKAN là một giải pháp phần mềm hoàn chỉnh về truy cập và sử " -"dụng dữ liệu - bằng cách cung cấp công cụ để xuất bản, chia sẻ, tìm kiếm " -"và sử dụng dữ liệu (bao gồm lưu trữ dữ liệu và cung cấp các thư viện dữ " -"liệu APIs mạnh mẽ). CKAN nhằm mục đích xuất bản dữ liệu (các chính phủ " -"quốc gia và khu vực, công ty và tổ chức) muốn làm cho dữ liệu của họ mở " -"và sẵn sàng.

CKAN được dùng bởi các chính phủ và các nhóm người sử" -" dụng trên toàn thế giới và và quyền hạn một loạt các cổng thông tin dữ " -"liệu chính thức và cộng đồng bao gồm cổng thông cho chính quyền địa " -"phương, quốc gia và quốc tế, chẳng hạn như của Vương quốc Anh data.gov.uk và cộng đồng châu Âu publicdata.eu, Brazin dados.gov.br, Hà Lan và Cổng thông tin " -"chính phủ Hà Lan, cũng như nhiều website ở Mỹ, Anh Argentina, Phần Lan và" -" nhiều nước khác.

CKAN: CKAN là nền tản cổng thông tin dữ liệu mã nguồn mở hàng đầu thế giới.

" +"

CKAN là một giải pháp phần mềm hoàn chỉnh về truy cập và sử dụng dữ liệu" +" - bằng cách cung cấp công cụ để xuất bản, chia sẻ, tìm kiếm và sử dụng dữ " +"liệu (bao gồm lưu trữ dữ liệu và cung cấp các thư viện dữ liệu APIs mạnh " +"mẽ). CKAN nhằm mục đích xuất bản dữ liệu (các chính phủ quốc gia và khu vực," +" công ty và tổ chức) muốn làm cho dữ liệu của họ mở và sẵn sàng.

CKAN" +" được dùng bởi các chính phủ và các nhóm người sử dụng trên toàn thế giới và" +" và quyền hạn một loạt các cổng thông tin dữ liệu chính thức và cộng đồng " +"bao gồm cổng thông cho chính quyền địa phương, quốc gia và quốc tế, chẳng " +"hạn như của Vương quốc Anh data.gov.uk và" +" cộng đồng châu Âu publicdata.eu, " +"Brazin dados.gov.br, Hà Lan và Cổng " +"thông tin chính phủ Hà Lan, cũng như nhiều website ở Mỹ, Anh Argentina, Phần" +" Lan và nhiều nước khác.

CKAN: http://ckan.org/
CKAN tour: http://ckan.org/tour/
Tính năng:" -" http://ckan.org/features/

" +"href=\"http://ckan.org/tour/\">http://ckan.org/tour/
Tính năng: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 msgid "Welcome to CKAN" @@ -3224,11 +3220,11 @@ msgstr "Chào mừng gia nhập CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "" -"Đây là đoạn giới thiệu hay về CKAN hoặc tổng quát site. Chúng toi không " -"có mọi bản sao ở đây nhưng chúng tôi sẽ sớm hoàn thành nó" +"Đây là đoạn giới thiệu hay về CKAN hoặc tổng quát site. Chúng toi không có " +"mọi bản sao ở đây nhưng chúng tôi sẽ sớm hoàn thành nó" #: ckan/templates/home/snippets/promoted.html:19 msgid "This is a featured section" @@ -3273,8 +3269,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" @@ -3345,8 +3341,8 @@ msgstr "Nháp" #: ckan/templates/package/read.html:11 #: ckan/templates/package/snippets/package_basic_fields.html:92 #: ckan/templates/snippets/package_item.html:31 -#: ckan/templates/snippets/private.html:2 ckan/templates/user/read_base.html:82 -#: ckan/templates/user/read_base.html:96 +#: ckan/templates/snippets/private.html:2 +#: ckan/templates/user/read_base.html:82 ckan/templates/user/read_base.html:96 msgid "Private" msgstr "Riêng tư" @@ -3400,11 +3396,11 @@ msgid "" "

Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

Quản trị viên: Có thể thêm/chỉnh sửa và xóa bộ dữ " -"liệu, cũng như quản lý các thành viên tổ chức.

Biên tập " +"

Quản trị viên: Có thể thêm/chỉnh sửa và xóa bộ dữ liệu, " +"cũng như quản lý các thành viên tổ chức.

Biên tập " "viên: Có thể thêm và chỉnh sửa bộ dữ liệu, nhưng khong quản lý " "thành viên tổ chức.

Thành viên: Có thể xem bộ dữ " "liệu cá nhân của tổ chức nhưng không thể thêm dữ liệu mới.

" @@ -3446,23 +3442,23 @@ msgstr "Tổ chức là gì?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "" "Các tổ chức CKAN được dùng để lập ra, quản lý và công bố các bộ dữ liệu. " -"Người dùng có thể có nhiều vai trò trong một Tổ chức, tùy thuộc vào cấp " -"độ quyền của họ trong việc tạo ra, chỉnh sửa và đưa tin." +"Người dùng có thể có nhiều vai trò trong một Tổ chức, tùy thuộc vào cấp độ " +"quyền của họ trong việc tạo ra, chỉnh sửa và đưa tin." #: ckan/templates/organization/snippets/organization_form.html:10 msgid "My Organization" @@ -3478,9 +3474,8 @@ msgstr "Một vài thông tin về tổ chức của tôi..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" "Bạn có chắc muốn xóa Tổ chức này không? Tất cả những bộ dữ liệu công khai và" " cá nhân thuộc về tổ chức này cũng sẽ bị xóa." @@ -3505,13 +3500,13 @@ msgstr "Bộ dữ liệu là gì?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"Bộ dữ liệu CKAN là một tập hợp các dữ liệu nguồn (như các tập tin), với " -"mô tả và các thông tin khác, tại một địa chỉ cố định. Bộ dữ liệu là những" -" gì người dùng thấy khi tìm kiếm dữ liệu." +"Bộ dữ liệu CKAN là một tập hợp các dữ liệu nguồn (như các tập tin), với mô " +"tả và các thông tin khác, tại một địa chỉ cố định. Bộ dữ liệu là những gì " +"người dùng thấy khi tìm kiếm dữ liệu." #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3592,9 +3587,9 @@ msgstr "Thêm chức năng xem" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3605,12 +3600,11 @@ msgstr "Thêm" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "" -"Đây là bản hiệu đính cũ của bộ dữ liệu, được chỉnh sửa lúc %(timestamp)s." -" Nó có thể khác nhiều so với phiên bản hiện tại." +"Đây là bản hiệu đính cũ của bộ dữ liệu, được chỉnh sửa lúc %(timestamp)s. Nó" +" có thể khác nhiều so với phiên bản hiện tại." #: ckan/templates/package/resource_edit_base.html:17 msgid "All resources" @@ -3679,9 +3673,9 @@ msgstr "" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3749,8 +3743,8 @@ msgstr "Thêm nguồn mới" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" "

Bộ dữ liệu này trống, bạn có muốn " "thêm vào không?

" @@ -3898,12 +3892,11 @@ msgstr "Hoạt động" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4014,7 +4007,8 @@ msgstr "Nguồn là gì?" #: ckan/templates/package/snippets/resource_help.html:4 msgid "A resource can be any file or link to a file containing useful data." -msgstr "Nguồn có thể là bất kỳ tệp hoặc đường dẫn nào đến tệp chứa dữ liệu có ích." +msgstr "" +"Nguồn có thể là bất kỳ tệp hoặc đường dẫn nào đến tệp chứa dữ liệu có ích." #: ckan/templates/package/snippets/resource_item.html:23 msgid "Explore" @@ -4239,8 +4233,8 @@ msgstr "

Thử tìm kiếm khác

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4381,11 +4375,10 @@ msgstr "Thông tin tài khoản" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "" -"Lí lịch của bạn cho phép những người sử dụng CKAN khác biết bạn là ai và " -"làm nghề gì" +"Lí lịch của bạn cho phép những người sử dụng CKAN khác biết bạn là ai và làm" +" nghề gì" #: ckan/templates/user/edit_user_form.html:7 msgid "Change details" @@ -4477,8 +4470,7 @@ msgstr "Quên mật khẩu?" #: ckan/templates/user/login.html:44 msgid "No problem, use our password recovery form to reset it." msgstr "" -"Không vấn đề, sử dụng hình thức khôi phục mật khẩu của chúng tôi để cài " -"đặt" +"Không vấn đề, sử dụng hình thức khôi phục mật khẩu của chúng tôi để cài đặt" #: ckan/templates/user/login.html:47 msgid "Forgot your password?" @@ -4610,8 +4602,8 @@ msgstr "" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "" "Nhập tên sử dụng của bạn vào hộp thư và chúng tôi sẽ gửi một liên kết để " "nhập mật khẩu mới" @@ -4640,4 +4632,3 @@ msgstr "Tìm kiếm người sử dụng" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/zh_CN/LC_MESSAGES/ckan.po b/ckan/i18n/zh_CN/LC_MESSAGES/ckan.po index 2a873f5661b..9e221e3ac66 100644 --- a/ckan/i18n/zh_CN/LC_MESSAGES/ckan.po +++ b/ckan/i18n/zh_CN/LC_MESSAGES/ckan.po @@ -1,10 +1,11 @@ -# Chinese (Simplified, China) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 +# #, fuzzy msgid "" msgstr "" @@ -13,14 +14,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: Adrià Mercader , 2018\n" -"Language: zh_Hans_CN\n" -"Language-Team: Chinese (China) " -"(https://www.transifex.com/okfn/teams/11162/zh_CN/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Chinese (China) (https://www.transifex.com/okfn/teams/11162/zh_CN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -116,14 +116,14 @@ msgstr "" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "数据不合法(比如: 数值越界或数值插入字符字段)" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -148,8 +148,7 @@ msgstr "通过 API 来访问与查询数据" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -158,11 +157,11 @@ msgstr "终端" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 msgid "Create" @@ -270,8 +269,7 @@ msgstr "数据 API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" #: ckanext/datatablesview/plugin.py:47 ckanext/reclineview/plugin.py:128 @@ -1760,8 +1758,8 @@ msgstr "名称最大长度为 %i 字符" #: ckan/logic/validators.py:343 msgid "" -"Must be purely lowercase alphanumeric (ascii) characters and these " -"symbols: -_" +"Must be purely lowercase alphanumeric (ascii) characters and these symbols: " +"-_" msgstr "" #: ckan/logic/validators.py:361 @@ -2515,8 +2513,8 @@ msgstr "无法取得上传文档的数据" #: ckan/public/base/javascript/modules/resource-upload-field.js:272 msgid "" -"You are uploading a file. Are you sure you want to navigate away and stop" -" this upload?" +"You are uploading a file. Are you sure you want to navigate away and stop " +"this upload?" msgstr "你正在上传文件。你是否确定要放弃上传而浏览别处?" #: ckan/public/base/javascript/modules/resource-view-filters.js:9 @@ -2692,39 +2690,37 @@ msgstr "CKAN 配置选项" #: ckan/templates/admin/config.html:33 #, python-format msgid "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" -"

Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" #: ckan/templates/admin/confirm_reset.html:3 #: ckan/templates/admin/confirm_reset.html:10 @@ -2739,13 +2735,11 @@ msgstr "管理 CKAN" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

作为系统管理员,您对该CKAN实例具有完全控制权。请谨慎操作!

\n" -"

该链接可以引导您使用系统管理员特性 系统管理员引导

" +"

该链接可以引导您使用系统管理员特性 系统管理员引导

" #: ckan/templates/admin/trash.html:20 msgid "Purge" @@ -2908,8 +2902,9 @@ msgstr "确定要删除成员:{name}吗?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "管理" @@ -2941,7 +2936,8 @@ msgstr "搜索群组..." msgid "There are currently no groups for this site" msgstr "此网站上目前沒有任何群组" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "建立一个群組如何?" @@ -2990,19 +2986,22 @@ msgstr "新用户" msgid "If you wish to invite a new user, enter their email address." msgstr "如果你想邀请一个新用户,请输入他的邮件地址。" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "角色" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "你确定要删除此成员吗?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3023,12 +3022,12 @@ msgstr "什么是角色?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" #: ckan/templates/group/new.html:3 ckan/templates/group/new.html:5 @@ -3099,11 +3098,12 @@ msgstr "什么是群组?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " -msgstr "你可以使用 CKAN 提供的群组功能来创建和管理数据集的集合。这可以用来整理同一个项目或者团队的数据集,或者仅是方便其他人搜索到你发布的数据集。" +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " +msgstr "" +"你可以使用 CKAN 提供的群组功能来创建和管理数据集的集合。这可以用来整理同一个项目或者团队的数据集,或者仅是方便其他人搜索到你发布的数据集。" #: ckan/templates/group/snippets/history_revisions.html:10 #: ckan/templates/package/snippets/history_revisions.html:10 @@ -3166,14 +3166,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3186,14 +3185,13 @@ msgstr "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3209,8 +3207,8 @@ msgstr "欢迎來到CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "这是一个关于CKAN或网站的简单介绍资讯。目前沒有文案,但很快就会有" #: ckan/templates/home/snippets/promoted.html:19 @@ -3256,8 +3254,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "在这里你可以使用Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

管理者:可以新增/编辑和删除数据集,以及管理组织成员。< /p> " -"

编辑: 可以新增和编辑资料集,但无法管理组织成员。

" -"

一般成员: 可以浏览组织的私有的数据集,但无法新增数据集。

" +"

管理者:可以新增/编辑和删除数据集,以及管理组织成员。< /p>

编辑:" +" 可以新增和编辑资料集,但无法管理组织成员。

一般成员: " +"可以浏览组织的私有的数据集,但无法新增数据集。

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3430,19 +3428,19 @@ msgstr "组织是什么?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "CKAN 组织使用来创建,管理,发布数据集集合的。用户可以在组织中扮演不同的角色,并被赋予不同级别的权限来创建,编辑和发布数据。" #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3459,9 +3457,8 @@ msgstr "关于我的组织的一些资讯" #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3484,12 +3481,11 @@ msgstr "什么是数据集?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " msgstr "" -"一个 CKAN 数据集是指数据资源的集合,并包含其相应的简介和相关信息。它拥有一个固定的 URL " -"地址。当用户搜索数据时,他们得到的结果均以数据集呈现。" +"一个 CKAN 数据集是指数据资源的集合,并包含其相应的简介和相关信息。它拥有一个固定的 URL 地址。当用户搜索数据时,他们得到的结果均以数据集呈现。" #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3570,9 +3566,9 @@ msgstr "增加视图" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" #: ckan/templates/package/new_view.html:29 @@ -3583,9 +3579,8 @@ msgstr "新增" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "着是次数据集在%(timestamp)s时发布的较旧的版本。可能会与目前版本有所不同" #: ckan/templates/package/resource_edit_base.html:17 @@ -3655,9 +3650,9 @@ msgstr "该站点管理员并没有开启相应的视图插件" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" #: ckan/templates/package/resource_read.html:144 @@ -3725,11 +3720,11 @@ msgstr "添加新资源" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" #: ckan/templates/package/search.html:52 msgid "API" @@ -3870,12 +3865,11 @@ msgstr "动态" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" #: ckan/templates/package/snippets/package_form.html:39 @@ -4211,8 +4205,8 @@ msgstr "

请重新搜索.

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "" #: ckan/templates/snippets/search_result_text.html:15 @@ -4353,8 +4347,7 @@ msgstr "账户信息" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "你的个人档案可以让其他 CKAN 用户了解你是谁以及你是做什么的。" #: ckan/templates/user/edit_user_form.html:7 @@ -4578,8 +4571,8 @@ msgstr "请求重置" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "将您的用户名输入文本框,我们将给您发包含链接的送电子邮件以输入新密码。" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4606,4 +4599,3 @@ msgstr "搜索用户" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "" - diff --git a/ckan/i18n/zh_TW/LC_MESSAGES/ckan.po b/ckan/i18n/zh_TW/LC_MESSAGES/ckan.po index 1d9fb62c7dc..bbea826b976 100644 --- a/ckan/i18n/zh_TW/LC_MESSAGES/ckan.po +++ b/ckan/i18n/zh_TW/LC_MESSAGES/ckan.po @@ -1,11 +1,12 @@ -# Chinese (Traditional, Taiwan) translations for ckan. +# Translations template for ckan. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the ckan project. # FIRST AUTHOR , 2018. -# +# # Translators: # Adrià Mercader , 2018 # wh pai , 2018 +# #, fuzzy msgid "" msgstr "" @@ -14,14 +15,13 @@ msgstr "" "POT-Creation-Date: 2018-03-27 16:10+0200\n" "PO-Revision-Date: 2018-03-27 14:15+0000\n" "Last-Translator: wh pai , 2018\n" -"Language: zh_Hant_TW\n" -"Language-Team: Chinese (Taiwan) " -"(https://www.transifex.com/okfn/teams/11162/zh_TW/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/okfn/teams/11162/zh_TW/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.3\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ckanext/datapusher/helpers.py:21 msgid "Complete" @@ -117,14 +117,14 @@ msgstr "資料儲存之資源不存在" #: ckanext/datastore/backend/postgres.py:1052 msgid "" -"Data Dictionary saved. Any type overrides will take effect when the " -"resource is next uploaded to DataStore" +"Data Dictionary saved. Any type overrides will take effect when the resource" +" is next uploaded to DataStore" msgstr "已儲存資料字典,下次將資源上載到DataStore時,任何類型覆蓋都將生效" #: ckanext/datastore/backend/postgres.py:1032 msgid "" -"The data was invalid (for example: a numeric value is out of range or was" -" inserted into a text field)." +"The data was invalid (for example: a numeric value is out of range or was " +"inserted into a text field)." msgstr "無效的資料(例如:填入超出範圍的數值,或將數值填入文字欄位中)。" #: ckanext/datastore/logic/action.py:262 ckanext/datastore/logic/action.py:290 @@ -149,8 +149,7 @@ msgstr "透過一擁有強大查詢功能支援的網路API來存取資源之資 msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr " 進一步的資訊位於 CKAN Data API 及 DataStore 文件.

" #: ckanext/datastore/templates/ajax_snippets/api_info.html:33 @@ -159,8 +158,8 @@ msgstr "終端點" #: ckanext/datastore/templates/ajax_snippets/api_info.html:37 msgid "" -"The Data API can be accessed via the following actions of the CKAN action" -" API." +"The Data API can be accessed via the following actions of the CKAN action " +"API." msgstr "可使用下列之CKAN action API所提供的功能來存取資料API。" #: ckanext/datastore/templates/ajax_snippets/api_info.html:42 @@ -275,8 +274,7 @@ msgstr "資料API" msgid "" " Further information in the main CKAN Data API and DataStore documentation.

" -" " +"target=\"_blank\">main CKAN Data API and DataStore documentation.

" msgstr "" "進一步的資訊位於 Site Title: This is the title of this CKAN instance " -"It appears in various places throughout CKAN.

" -"

Style: Choose from a list of simple variations of the" -" main colour scheme to get a very quick custom theme working.

" -"

Site Tag Logo: This is the logo that appears in the " -"header of all the CKAN instance templates.

About:" -" This text will appear on this CKAN instances about page.

Intro " +"

Site Title: This is the title of this CKAN instance It " +"appears in various places throughout CKAN.

Style: " +"Choose from a list of simple variations of the main colour scheme to get a " +"very quick custom theme working.

Site Tag Logo: This" +" is the logo that appears in the header of all the CKAN instance " +"templates.

About: This text will appear on this CKAN" +" instances about page.

Intro " "Text: This text will appear on this CKAN instances home page as a welcome to visitors.

" "

Custom CSS: This is a block of CSS that appears in " -"<head> tag of every page. If you wish to customize the" -" templates more fully we recommend <head> tag of every page. If you wish to customize the " +"templates more fully we recommend reading the documentation.

" -"

Homepage: This is for choosing a predefined layout " -"for the modules that appear on your homepage.

" +"

Homepage: This is for choosing a predefined layout for " +"the modules that appear on your homepage.

" msgstr "" "

網站標題: 這是 CKAN 網站標題的範例,將會出現在 CKAN 的許多地方

" "

樣式: 您可以從現有的配色方案清單中選擇,做些簡單的變化,快速的讓客製化主題運作。

" "

網站 LOGO:這是會出現在所有 CKAN 網站模板的 logo。

" "

關於:此段文字將出現在此 CKAN 網站的「關於」頁面 。

簡介文字:此段文字將作為此" -" CKAN 網站首頁的歡迎訊息。

客製化 " +"href=\"%(about_url)s\">「關於」頁面 。

簡介文字:此段文字將作為此 " +"CKAN 網站首頁的歡迎訊息。

客製化 " "CSS:這是一個 CSS 區塊,將會出現在有<head>標籤的每個頁面。 " -"若您需要更完整的客製化範例,建議您閱讀此文件

" +"若您需要更完整的客製化範例,建議您閱讀此文件

" "

首頁:您可以選擇顯示於首頁的模組佈局。

" #: ckan/templates/admin/confirm_reset.html:3 @@ -2845,9 +2841,8 @@ msgstr "CKAN 系統管理者" #, python-format msgid "" "

As a sysadmin user you have full control over this CKAN instance. " -"Proceed with care!

For guidance on using sysadmin features, see " -"the CKAN sysadmin " -"guide

" +"Proceed with care!

For guidance on using sysadmin features, see the " +"CKAN sysadmin guide

" msgstr "" "

身為系統管理者,您具有對此 CKAN 網站的所有控制權。請小心操作!

關於系統管理功能,請見 CKAN 系統管理者指南

" @@ -3013,8 +3008,9 @@ msgstr "確定要刪除成員:{name}嗎?" #: ckan/templates/organization/edit_base.html:11 #: ckan/templates/organization/read_base.html:12 #: ckan/templates/package/read_base.html:14 -#: ckan/templates/package/resource_read.html:31 ckan/templates/user/edit.html:8 -#: ckan/templates/user/edit_base.html:3 ckan/templates/user/read_base.html:14 +#: ckan/templates/package/resource_read.html:31 +#: ckan/templates/user/edit.html:8 ckan/templates/user/edit_base.html:3 +#: ckan/templates/user/read_base.html:14 msgid "Manage" msgstr "管理" @@ -3046,7 +3042,8 @@ msgstr "搜尋群組" msgid "There are currently no groups for this site" msgstr "此網站上目前沒有任何群組" -#: ckan/templates/group/index.html:31 ckan/templates/organization/index.html:31 +#: ckan/templates/group/index.html:31 +#: ckan/templates/organization/index.html:31 msgid "How about creating one?" msgstr "建立一個群組如何?" @@ -3095,19 +3092,22 @@ msgstr "新使用者" msgid "If you wish to invite a new user, enter their email address." msgstr "請在此輸入電子郵件位址,以邀請使用者加入" -#: ckan/templates/group/member_new.html:55 ckan/templates/group/members.html:15 +#: ckan/templates/group/member_new.html:55 +#: ckan/templates/group/members.html:15 #: ckan/templates/organization/member_new.html:54 #: ckan/templates/organization/members.html:20 msgid "Role" msgstr "角色" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/organization/member_new.html:57 #: ckan/templates/organization/members.html:36 msgid "Are you sure you want to delete this member?" msgstr "確定要刪除這個成員嗎?" -#: ckan/templates/group/member_new.html:58 ckan/templates/group/members.html:31 +#: ckan/templates/group/member_new.html:58 +#: ckan/templates/group/members.html:31 #: ckan/templates/group/snippets/group_form.html:38 #: ckan/templates/organization/bulk_process.html:47 #: ckan/templates/organization/member_new.html:59 @@ -3128,8 +3128,8 @@ msgstr "腳色是什麼?" #: ckan/templates/group/member_new.html:80 msgid "" -"

Admin: Can edit group information, as well as manage" -" organization members.

Member: Can add/remove " +"

Admin: Can edit group information, as well as manage " +"organization members.

Member: Can add/remove " "datasets from groups

" msgstr "" "

管理者: 可以編輯群組資訊,以及管理群組成員。

" @@ -3203,10 +3203,10 @@ msgstr "什麼是群組?" #: ckan/templates/group/snippets/helper.html:8 msgid "" -" You can use CKAN Groups to create and manage collections of datasets. " -"This could be to catalogue datasets for a particular project or team, or " -"on a particular theme, or as a very simple way to help people find and " -"search your own published datasets. " +" You can use CKAN Groups to create and manage collections of datasets. This " +"could be to catalogue datasets for a particular project or team, or on a " +"particular theme, or as a very simple way to help people find and search " +"your own published datasets. " msgstr "您可以使用 CKAN 群組建立並管理多個資料集。群組可以代表一個主題、專案或是小組,可以幫助使用者快速找尋資料集。 " #: ckan/templates/group/snippets/history_revisions.html:10 @@ -3270,14 +3270,13 @@ msgid "" "

CKAN is the world’s leading open-source data portal platform.

" "

CKAN is a complete out-of-the-box software solution that makes data " "accessible and usable – by providing tools to streamline publishing, " -"sharing, finding and using data (including storage of data and provision " -"of robust data APIs). CKAN is aimed at data publishers (national and " -"regional governments, companies and organizations) wanting to make their " -"data open and available.

CKAN is used by governments and user " -"groups worldwide and powers a variety of official and community data " -"portals including portals for local, national and international " -"government, such as the UK’s data.gov.uk and the European Union’s

CKAN is used by governments and user groups worldwide " +"and powers a variety of official and community data portals including " +"portals for local, national and international government, such as the UK’s " +"data.gov.uk and the European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and Netherland " "government portals, as well as city and municipal sites in the US, UK, " @@ -3293,9 +3292,8 @@ msgstr "" "href=\"http://data.gov.uk\">data.gov.uk以及歐盟的publicdata.eu、巴西的dados.gov.br、荷蘭政府入口網站以及美國、英國、阿根廷、芬蘭和許多其他國家的城市地方政府網站。

" -"

CKAN: http://ckan.org/
CKAN試用:" -" http://ckan.org/tour/
" -"其他相關資料: CKAN: http://ckan.org/
CKAN試用: http://ckan.org/tour/
其他相關資料: http://ckan.org/features/

" #: ckan/templates/home/snippets/promoted.html:8 @@ -3304,8 +3302,8 @@ msgstr "歡迎來到CKAN" #: ckan/templates/home/snippets/promoted.html:10 msgid "" -"This is a nice introductory paragraph about CKAN or the site in general. " -"We don't have any copy to go here yet but soon we will " +"This is a nice introductory paragraph about CKAN or the site in general. We " +"don't have any copy to go here yet but soon we will " msgstr "這裡是關於 CKAN 或本網站的簡介。目前沒有文案,但很快就會有" #: ckan/templates/home/snippets/promoted.html:19 @@ -3355,8 +3353,8 @@ msgstr "" #: ckan/templates/macros/form.html:126 #, python-format msgid "" -"You can use Markdown formatting here" msgstr "" "您可以在此使用 Admin: Can add/edit and delete datasets, as well as " "manage organization members.

Editor: Can add and " "edit datasets, but not manage organization members.

" -"

Member: Can view the organization's private datasets," -" but not add new datasets.

" +"

Member: Can view the organization's private datasets, " +"but not add new datasets.

" msgstr "" -"

管理者:可以新增/編輯和刪除資料集,以及管理組織成員。

" -"

編輯: 可以新增和編輯資料集,但無法管理組織成員。

" -"

一般成員: 可以瀏覽組織的私有資料集,但無法新增資料集。

" +"

管理者:可以新增/編輯和刪除資料集,以及管理組織成員。

編輯:" +" 可以新增和編輯資料集,但無法管理組織成員。

一般成員: " +"可以瀏覽組織的私有資料集,但無法新增資料集。

" #: ckan/templates/organization/members.html:14 msgid "{count} member" @@ -3529,21 +3527,21 @@ msgstr "組織是什麼?" #: ckan/templates/organization/snippets/help.html:7 msgid "" -"

Organizations act like publishing departments for datasets (for " -"example, the Department of Health). This means that datasets can be " -"published by and belong to a department instead of an individual " -"user.

Within organizations, admins can assign roles and authorise " -"its members, giving individual users the right to publish datasets from " -"that particular organisation (e.g. Office of National Statistics).

" +"

Organizations act like publishing departments for datasets (for example," +" the Department of Health). This means that datasets can be published by and" +" belong to a department instead of an individual user.

Within " +"organizations, admins can assign roles and authorise its members, giving " +"individual users the right to publish datasets from that particular " +"organisation (e.g. Office of National Statistics).

" msgstr "" "

組織扮演部門、單位發布資料集的角色(例如:衛生部門)。這意味著資料集是屬於一個部門,而不是屬於單一使用者。

" "

在組織中,管理員可以分配角色,並授權其成員,讓個人使用者有權從特定組織發布資料集(例如:國家檔案管理局)。

" #: ckan/templates/organization/snippets/helper.html:8 msgid "" -" CKAN Organizations are used to create, manage and publish collections of" -" datasets. Users can have different roles within an Organization, " -"depending on their level of authorisation to create, edit and publish. " +" CKAN Organizations are used to create, manage and publish collections of " +"datasets. Users can have different roles within an Organization, depending " +"on their level of authorisation to create, edit and publish. " msgstr "您可以使用 CKAN 組織來建立、管理與發佈多個資料集。在組織中,每位使用者可擁有不同角色,而得以建立、編輯與發佈資料集。 " #: ckan/templates/organization/snippets/organization_form.html:10 @@ -3560,9 +3558,8 @@ msgstr "一些關於我的組織的資訊..." #: ckan/templates/organization/snippets/organization_form.html:60 msgid "" -"Are you sure you want to delete this Organization? Note*: Deleting cannot" -" be performed while public or private datasets belong to this " -"organization." +"Are you sure you want to delete this Organization? Note*: Deleting cannot be" +" performed while public or private datasets belong to this organization." msgstr "你確定要刪除這個組織嗎?這樣會刪除屬於這個組織的所有公開和非公開之資料集。" #: ckan/templates/organization/snippets/organization_form.html:63 @@ -3585,10 +3582,11 @@ msgstr "資料集是什麼?" #: ckan/templates/package/base_form_page.html:25 msgid "" -" A CKAN Dataset is a collection of data resources (such as files), " -"together with a description and other information, at a fixed URL. " -"Datasets are what users see when searching for data. " -msgstr "CKAN 資料集是眾多資料(例如:檔案)的集合,通常伴隨著對該資料集的描述、其他資訊,以及一個固定網址。資料集亦是使用者進行搜尋時所回傳的結果單位。" +" A CKAN Dataset is a collection of data resources (such as files), together " +"with a description and other information, at a fixed URL. Datasets are what " +"users see when searching for data. " +msgstr "" +"CKAN 資料集是眾多資料(例如:檔案)的集合,通常伴隨著對該資料集的描述、其他資訊,以及一個固定網址。資料集亦是使用者進行搜尋時所回傳的結果單位。" #: ckan/templates/package/confirm_delete.html:12 msgid "Are you sure you want to delete dataset - {name}?" @@ -3669,13 +3667,13 @@ msgstr "新增檢視" msgid "" " Data Explorer views may be slow and unreliable unless the DataStore " "extension is enabled. For more information, please see the
Data Explorer" -" documentation. " +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>Data Explorer " +"documentation. " msgstr "" "若 DataStore 擴充套件未啟用,資料瀏覽檢視可能會較為緩慢且不穩定。進一步資訊請參考 資料瀏覽檢視說明。" +"href='http://docs.ckan.org/en/latest/maintaining/data-viewer.html#viewing-" +"structured-data-the-data-explorer' target='_blank'>資料瀏覽檢視說明。" #: ckan/templates/package/new_view.html:29 #: ckan/templates/package/snippets/resource_form.html:81 @@ -3685,9 +3683,8 @@ msgstr "新增" #: ckan/templates/package/read_base.html:32 #, python-format msgid "" -"This is an old revision of this dataset, as edited at %(timestamp)s. It " -"may differ significantly from the current " -"revision." +"This is an old revision of this dataset, as edited at %(timestamp)s. It may " +"differ significantly from the current revision." msgstr "這是此資料集在%(timestamp)s時發佈的較舊的版本。可能會與目前版本有所不同" #: ckan/templates/package/resource_edit_base.html:17 @@ -3757,9 +3754,9 @@ msgstr "系統管理者可能並未啟用相關的檢視擴充套件" #: ckan/templates/package/resource_read.html:122 msgid "" -"If a view requires the DataStore, the DataStore plugin may not be " -"enabled, or the data may not have been pushed to the DataStore, or the " -"DataStore hasn't finished processing the data yet" +"If a view requires the DataStore, the DataStore plugin may not be enabled, " +"or the data may not have been pushed to the DataStore, or the DataStore " +"hasn't finished processing the data yet" msgstr "" "若此檢視需要 DataStore 支援,則可能為 DataStore 擴充套件未啟用、資料並未上傳至 DataStore,或 DataStore " "上傳作業尚未完成" @@ -3829,8 +3826,8 @@ msgstr "加入新資源" #: ckan/templates/package/snippets/resources_list.html:26 #, python-format msgid "" -"

This dataset has no data, why not" -" add some?

" +"

This dataset has no data, why not " +"add some?

" msgstr "

此資料集中沒有資料,新增一些如何?

" #: ckan/templates/package/search.html:52 @@ -3972,12 +3969,11 @@ msgstr "啟動" #: ckan/templates/package/snippets/package_form.html:28 msgid "" -"The data license you select above only applies to the contents of " -"any resource files that you add to this dataset. By submitting this form," -" you agree to release the metadata values that you enter into the " -"form under the Open Database " -"License." +"The data license you select above only applies to the contents of any" +" resource files that you add to this dataset. By submitting this form, you " +"agree to release the metadata values that you enter into the form " +"under the Open " +"Database License." msgstr "" "您所選取的資料授權條款僅適用於您上傳至本資料集的所有資料(檔案)。當您送出此表單時,代表您已同意以 Open Database " @@ -4320,8 +4316,8 @@ msgstr "

請嘗試其他的搜尋關鍵字

" #: ckan/templates/snippets/search_form.html:86 msgid "" -"

There was an error while " -"searching. Please try again.

" +"

There was an error while searching." +" Please try again.

" msgstr "

搜尋時發生錯誤。 請再試一次。

" #: ckan/templates/snippets/search_result_text.html:15 @@ -4462,8 +4458,7 @@ msgstr "帳號資訊" #: ckan/templates/user/edit.html:19 msgid "" -" Your profile lets other CKAN users know about who you are and what you " -"do. " +" Your profile lets other CKAN users know about who you are and what you do. " msgstr "您的個人資料:讓其他CKAN使用者了解你是誰以及你從事什麼。" #: ckan/templates/user/edit_user_form.html:7 @@ -4691,8 +4686,8 @@ msgstr "請求重置" #: ckan/templates/user/request_reset.html:34 msgid "" -"Enter your username into the box and we will send you an email with a " -"link to enter a new password." +"Enter your username into the box and we will send you an email with a link " +"to enter a new password." msgstr "輸入您的使用者名稱,我們將會寄給您新的密碼至您的電子信箱。" #: ckan/templates/user/snippets/followee_dropdown.html:14 @@ -4719,4 +4714,3 @@ msgstr "搜尋使用者" #: ckan/views/user.py:588 msgid "Your password must be 8 characters or longer." msgstr "密碼長度至少要8個字元" - diff --git a/ckan/lib/base.py b/ckan/lib/base.py index 1831b699ea1..4201ae44d35 100644 --- a/ckan/lib/base.py +++ b/ckan/lib/base.py @@ -64,11 +64,13 @@ def abort(status_code=None, detail='', headers=None, comment=None): if detail and status_code != 503: h.flash_error(detail) + + if is_flask_request(): + flask_abort(status_code, detail) + # #1267 Convert detail to plain text, since WebOb 0.9.7.1 (which comes # with Lucid) causes an exception when unicode is received. detail = detail.encode('utf8') - if is_flask_request(): - flask_abort(status_code, detail) return _abort(status_code=status_code, detail=detail, diff --git a/ckan/lib/cli.py b/ckan/lib/cli.py index aecc40c2f2e..2218f46f6d1 100644 --- a/ckan/lib/cli.py +++ b/ckan/lib/cli.py @@ -23,6 +23,7 @@ from six.moves.urllib.request import urlopen import sqlalchemy as sa + import routes import paste.script from paste.registry import Registry @@ -36,7 +37,7 @@ import ckan.include.rcssmin as rcssmin import ckan.plugins as p from ckan.common import config - +from paste.deploy.converters import asbool # This is a test Flask request context to be used internally. # Do not use it! _cli_test_request_context = None @@ -110,6 +111,8 @@ def user_add(args): for arg in args[1:]: try: field, value = arg.split('=', 1) + if field == 'sysadmin': + value = asbool(value) data_dict[field] = value except ValueError: raise ValueError( @@ -351,7 +354,8 @@ class ManageDb(CkanCommand): def command(self): cmd = self.args[0] - self._load_config(cmd!='upgrade') + self._load_config(cmd != 'upgrade') + import ckan.model as model import ckan.lib.search as search @@ -375,10 +379,9 @@ def command(self): if self.verbose: print('Cleaning DB: SUCCESS') elif cmd == 'upgrade': - if len(self.args) > 1: - model.repo.upgrade_db(self.args[1]) - else: - model.repo.upgrade_db() + model.repo.upgrade_db(*self.args[1:]) + elif cmd == 'downgrade': + model.repo.downgrade_db(*self.args[1:]) elif cmd == 'version': self.version() elif cmd == 'create-from-model': @@ -545,7 +548,7 @@ def clear(self): def rebuild_fast(self): ### Get out config but without starting pylons environment #### - conf = self._get_config() + conf = _get_config() ### Get ids using own engine, otherwise multiprocess will balk db_url = conf['sqlalchemy.url'] diff --git a/ckan/lib/create_test_data.py b/ckan/lib/create_test_data.py index 97d031c6620..d7cd148ce55 100644 --- a/ckan/lib/create_test_data.py +++ b/ckan/lib/create_test_data.py @@ -512,9 +512,12 @@ def _create_user_without_commit(cls, name='', **user_dict): user_ref = name assert user_ref for k, v in user_dict.items(): - if v: - # avoid unicode warnings - user_dict[k] = text_type(v) + if v is not None: + if bool(v): + user_dict[k] = v + else: + # avoid unicode warnings + user_dict[k] = text_type(v) user = model.User(name=text_type(name), **user_dict) model.Session.add(user) cls.user_refs.append(user_ref) diff --git a/ckan/lib/extract.py b/ckan/lib/extract.py index 6a57ce664ac..6c67d1d067d 100644 --- a/ckan/lib/extract.py +++ b/ckan/lib/extract.py @@ -11,6 +11,7 @@ ckan.lib.jinja_extensions.CkanExtend, ckan.lib.jinja_extensions.LinkForExtension, ckan.lib.jinja_extensions.ResourceExtension, + ckan.lib.jinja_extensions.AssetExtension, ckan.lib.jinja_extensions.UrlForStaticExtension, ckan.lib.jinja_extensions.UrlForExtension ''' diff --git a/ckan/lib/helpers.py b/ckan/lib/helpers.py index e11dfdd9134..577d62232ac 100644 --- a/ckan/lib/helpers.py +++ b/ckan/lib/helpers.py @@ -49,6 +49,7 @@ import ckan from ckan.common import _, ungettext, c, g, request, session, json +from ckan.lib.webassets_tools import include_asset, render_assets from markupsafe import Markup, escape @@ -408,7 +409,9 @@ def _url_for_pylons(*args, **kw): # We need to provide protocol and host to get full URLs, get them from # ckan.site_url - if kw.get('qualified', False) or kw.get('_external', False): + if kw.pop('_external', None): + kw['qualified'] = True + if kw.get('qualified'): kw['protocol'], kw['host'] = get_site_protocol_and_host() # The Pylons API routes require a slask on the version number for some @@ -504,7 +507,7 @@ def _local_url(url_to_amend, **kw): default_locale = True root = '' - if kw.get('qualified', False): + if kw.get('qualified', False) or kw.get('_external', False): # if qualified is given we want the full url ie http://... protocol, host = get_site_protocol_and_host() root = _routes_default_url_for('/', @@ -933,8 +936,11 @@ def build_extra_admin_nav(): admin_tabs_dict = config.get('ckan.admin_tabs') output = '' if admin_tabs_dict: - for key in admin_tabs_dict: - output += build_nav_icon(key, admin_tabs_dict[key]) + for k, v in admin_tabs_dict.iteritems(): + if v['icon']: + output += build_nav_icon(k, v['label'], icon=v['icon']) + else: + output += build_nav(k, v['label']) return output @@ -1009,7 +1015,9 @@ def get_facet_items_dict( for facet_item in search_facets.get(facet)['items']: if not len(facet_item['name'].strip()): continue - if not (facet, facet_item['name']) in request.params.items(): + params_items = request.params.items(multi=True) \ + if is_flask_request() else request.params.items() + if not (facet, facet_item['name']) in params_items: facets.append(dict(active=False, **facet_item)) elif not exclude_active: facets.append(dict(active=True, **facet_item)) @@ -1045,7 +1053,9 @@ def has_more_facets(facet, search_facets, limit=None, exclude_active=False): for facet_item in search_facets.get(facet)['items']: if not len(facet_item['name'].strip()): continue - if not (facet, facet_item['name']) in request.params.items(): + params_items = request.params.items(multi=True) \ + if is_flask_request() else request.params.items() + if not (facet, facet_item['name']) in params_items: facets.append(dict(active=False, **facet_item)) elif not exclude_active: facets.append(dict(active=True, **facet_item)) @@ -1833,7 +1843,12 @@ def add_url_param(alternative_url=None, controller=None, action=None, instead. ''' - params_nopage = [(k, v) for k, v in request.params.items() if k != 'page'] + params_items = request.params.items(multi=True) \ + if is_flask_request() else request.params.items() + params_nopage = [ + (k, v) for k, v in params_items + if k != 'page' + ] params = set(params_nopage) if new_params: params |= set(new_params.items()) @@ -1868,7 +1883,12 @@ def remove_url_param(key, value=None, replace=None, controller=None, else: keys = key - params_nopage = [(k, v) for k, v in request.params.items() if k != 'page'] + params_items = request.params.items(multi=True) \ + if is_flask_request() else request.params.items() + params_nopage = [ + (k, v) for k, v in params_items + if k != 'page' + ] params = list(params_nopage) if value: params.remove((keys[0], value)) @@ -2645,6 +2665,8 @@ def clean_html(html): core_helper(converters.asbool) # Useful additions from the stdlib. core_helper(urlencode) +core_helper(include_asset) +core_helper(render_assets) def load_plugin_helpers(): diff --git a/ckan/lib/jinja_extensions.py b/ckan/lib/jinja_extensions.py index 8520e7bd862..7221dbe1ae5 100644 --- a/ckan/lib/jinja_extensions.py +++ b/ckan/lib/jinja_extensions.py @@ -34,7 +34,8 @@ def get_jinja_env_options(): LinkForExtension, ResourceExtension, UrlForStaticExtension, - UrlForExtension], + UrlForExtension, + AssetExtension], ) @@ -312,7 +313,7 @@ def _call(cls, args, kwargs): return h.nav_link(*args, **kwargs) class ResourceExtension(BaseExtension): - ''' Custom include_resource tag + ''' Deprecated. Custom include_resource tag. {% resource %} @@ -329,6 +330,23 @@ def _call(cls, args, kwargs): return '' +class AssetExtension(BaseExtension): + ''' Custom include_asset tag. + + {% asset %} + + see lib.webassets_tools.include_asset() for more details. + ''' + + tags = set(['asset']) + + @classmethod + def _call(cls, args, kwargs): + assert len(args) == 1 + assert len(kwargs) == 0 + h.include_asset(args[0]) + return '' + ''' The following function is based on jinja2 code diff --git a/ckan/lib/webassets_tools.py b/ckan/lib/webassets_tools.py new file mode 100644 index 00000000000..d5a611cd2cf --- /dev/null +++ b/ckan/lib/webassets_tools.py @@ -0,0 +1,165 @@ +# encoding: utf-8 + +import logging +import os +import tempfile + +from markupsafe import Markup +from webassets import Environment +from webassets.loaders import YAMLLoader + +from ckan.common import config, g + + +logger = logging.getLogger(__name__) +env = None + + +def create_library(name, path): + """Create WebAssets library(set of Bundles). + """ + config_path = os.path.join(path, u'webassets.yml') + if not os.path.exists(config_path): + return + + library = YAMLLoader(config_path).load_bundles() + bundles = { + u'/'.join([name, key]): bundle + for key, bundle + in library.items() + } + + # Unfortunately, you'll get an error attempting to register bundle + # with the same name twice. For now, let's just pop existing + # bundle and avoid name-conflicts + # TODO: make PR into webassets with preferable solution + # Issue: https://github.com/miracle2k/webassets/issues/519 + for name, bundle in bundles.items(): + env._named_bundles.pop(name, None) + env.register(name, bundle) + + env.append_path(path) + + +def webassets_init(): + global env + + static_path = get_webassets_path() + + public = config.get(u'ckan.base_public_folder') + + public_folder = os.path.abspath(os.path.join( + os.path.dirname(__file__), u'..', public)) + + base_path = os.path.join(public_folder, u'base') + + env = Environment() + env.directory = static_path + env.debug = config.get(u'debug', False) + env.url = u'/webassets/' + + add_public_path(base_path, u'/base/') + + logger.debug(u'Base path {0}'.format(base_path)) + create_library(u'vendor', os.path.join( + base_path, u'vendor')) + + create_library(u'base', os.path.join(base_path, u'javascript')) + + create_library(u'datapreview', os.path.join(base_path, u'datapreview')) + + create_library(u'css', os.path.join(base_path, u'css')) + + +def _make_asset_collection(): + return {u'style': [], u'script': [], u'included': set()} + + +def include_asset(name): + from ckan.lib.helpers import url_for_static_or_external + try: + if not g.webassets: + raise AttributeError(u'WebAssets not initialized yet') + except AttributeError: + g.webassets = _make_asset_collection() + if name in g.webassets[u'included']: + return + + try: + bundle = env[name] + except KeyError: + logger.error(u'Trying to include unknown asset: <{}>'.format(name)) + return + + deps = bundle.extra.get(u'preload', []) + + # Using DFS may lead to infinite recursion(unlikely, because + # extensions rarely depends on each other), so there is a sense to + # memoize visited routes. + + # TODO: consider infinite loop prevention for assets that depends + # on each other + for dep in deps: + include_asset(dep) + + # Add `site_root` if configured + urls = [url_for_static_or_external(url) for url in bundle.urls()] + type_ = None + for url in urls: + link = url.split(u'?')[0] + if link.endswith(u'.css'): + type_ = u'style' + break + elif link.endswith(u'.js'): + type_ = u'script' + break + else: + logger.warn(u'Undefined asset type: {}'.format(urls)) + return + g.webassets[type_].extend(urls) + g.webassets[u'included'].add(name) + + +def _to_tag(url, type_): + if type_ == u'style': + return u''.format(url) + elif type_ == u'script': + return u''.format(url) + return u'' + + +def render_assets(type_): + try: + assets = g.webassets + except AttributeError: + return u'' + + if not assets: + return u'' + collection = assets[type_] + tags = u'\n'.join([_to_tag(asset, type_) for asset in assets[type_]]) + collection[:] = [] + return Markup(tags) + + +def get_webassets_path(): + webassets_path = config.get(u'ckan.webassets.path') + + if not webassets_path: + storage_path = config.get( + u'ckan.storage_path' + ) or tempfile.gettempdir() + + if storage_path: + webassets_path = os.path.join(storage_path, u'webassets') + + if not webassets_path: + raise RuntimeError( + u'Either `ckan.webassets.path` or `ckan.storage_path` ' + u'must be specified' + ) + return webassets_path + + +def add_public_path(path, url): + env.append_path(path, url) diff --git a/ckan/logic/__init__.py b/ckan/logic/__init__.py index c5b3b90b4a9..a7b77c10844 100644 --- a/ckan/logic/__init__.py +++ b/ckan/logic/__init__.py @@ -413,9 +413,9 @@ def get_action(action): fetched_actions = {} chained_actions = defaultdict(list) for plugin in p.PluginImplementations(p.IActions): - for name, auth_function in plugin.get_actions().items(): - if _is_chained_action(auth_function): - chained_actions[name].append(auth_function) + for name, action_function in plugin.get_actions().items(): + if _is_chained_action(action_function): + chained_actions[name].append(action_function) elif name in resolved_action_plugins: raise NameConflict( 'The action %r is already implemented in %r' % ( @@ -427,8 +427,8 @@ def get_action(action): resolved_action_plugins[name] = plugin.name # Extensions are exempted from the auth audit for now # This needs to be resolved later - auth_function.auth_audit_exempt = True - fetched_actions[name] = auth_function + action_function.auth_audit_exempt = True + fetched_actions[name] = action_function for name, func_list in chained_actions.iteritems(): if name not in fetched_actions and name not in _actions: # nothing to override from plugins or core diff --git a/ckan/logic/action/create.py b/ckan/logic/action/create.py index 37f96ad826b..690cdc1f787 100644 --- a/ckan/logic/action/create.py +++ b/ckan/logic/action/create.py @@ -604,7 +604,15 @@ def member_create(context, data_dict=None): filter(model.Member.table_id == obj.id).\ filter(model.Member.group_id == group.id).\ filter(model.Member.state == 'active').first() - if not member: + if member: + user_obj = model.User.get(user) + if member.table_name == u'user' and \ + member.table_id == user_obj.id and \ + member.capacity == u'admin' and \ + capacity != u'admin': + raise logic.NotAuthorized("Administrators cannot revoke their " + "own admin status") + else: member = model.Member(table_name=obj_type, table_id=obj.id, group_id=group.id, diff --git a/ckan/logic/action/get.py b/ckan/logic/action/get.py index 8a5ca8acdb6..4d10e6150c3 100644 --- a/ckan/logic/action/get.py +++ b/ckan/logic/action/get.py @@ -10,6 +10,7 @@ from ckan.common import config import sqlalchemy +from sqlalchemy import text from paste.deploy.converters import asbool from six import string_types, text_type @@ -1596,7 +1597,7 @@ def format_autocomplete(context, data_dict): )) .filter(model.Resource.format.ilike(like_q)) .group_by(model.Resource.format) - .order_by('total DESC') + .order_by(text('total DESC')) .limit(limit)) return [resource.format.lower() for resource in query] @@ -1623,9 +1624,14 @@ def user_autocomplete(context, data_dict): q = data_dict['q'] limit = data_dict.get('limit', 20) + ignore_self = data_dict.get('ignore_self', False) query = model.User.search(q) query = query.filter(model.User.state != model.State.DELETED) + + if ignore_self: + query = query.filter(model.User.name != user) + query = query.limit(limit) user_list = [] diff --git a/ckan/logic/auth/get.py b/ckan/logic/auth/get.py index 4561e6547ab..03d6baf2130 100644 --- a/ckan/logic/auth/get.py +++ b/ckan/logic/auth/get.py @@ -163,7 +163,15 @@ def resource_show(context, data_dict): def resource_view_show(context, data_dict): - return authz.is_authorized('resource_show', context, data_dict) + + model = context['model'] + + resource_view = model.ResourceView.get(data_dict['id']) + if not resource_view: + raise logic.NotFound(_('Resource view not found, cannot check auth.')) + resource = model.Resource.get(resource_view.resource_id) + + return authz.is_authorized('resource_show', context, {'id': resource.id}) def resource_view_list(context, data_dict): diff --git a/ckan/logic/schema.py b/ckan/logic/schema.py index 8ba032dc899..8d4c8f6c2dc 100644 --- a/ckan/logic/schema.py +++ b/ckan/logic/schema.py @@ -394,7 +394,7 @@ def default_user_schema( ignore_missing, unicode_safe, name_validator, user_name_validator, user_password_validator, user_password_not_empty, ignore_not_sysadmin, not_empty, email_validator, - user_about_validator, ignore): + user_about_validator, ignore, boolean_validator): return { 'id': [ignore_missing, unicode_safe], 'name': [ @@ -409,7 +409,8 @@ def default_user_schema( 'sysadmin': [ignore_missing, ignore_not_sysadmin], 'apikey': [ignore], 'reset_key': [ignore], - 'activity_streams_email_notifications': [ignore_missing], + 'activity_streams_email_notifications': [ignore_missing, + boolean_validator], 'state': [ignore_missing], } @@ -633,6 +634,7 @@ def default_autocomplete_schema( not_missing, unicode_safe, ignore_missing, natural_number_validator): return { 'q': [not_missing, unicode_safe], + 'ignore_self': [ignore_missing], 'limit': [ignore_missing, natural_number_validator] } diff --git a/ckan/migration/README b/ckan/migration/README index 6218f8cac42..98e4f9c44ef 100644 --- a/ckan/migration/README +++ b/ckan/migration/README @@ -1,4 +1 @@ -This is a database migration repository. - -More information at -http://code.google.com/p/sqlalchemy-migrate/ +Generic single-database configuration. \ No newline at end of file diff --git a/ckan/migration/__init__.py b/ckan/migration/__init__.py index e69de29bb2d..6684dc32332 100644 --- a/ckan/migration/__init__.py +++ b/ckan/migration/__init__.py @@ -0,0 +1,22 @@ +# encoding: utf-8 + + +def skip_based_on_legacy_engine_version(op, filename): + u'''Safe way to update instances sqlalchemy-migrate migrations applied. + + CKAN `db upgrade/init` command is trying to obtain current version + of sqlalchemy-migrate migrations from database. In that case, we + are going to compare existing version from DB with alembic + migration script's prefix in filename which defines corresponding + version of sqlalchemy-migrate script. We need this, because + alembic uses string ids instead of incremental numbers for + identifying current migration version. If alembic script's version + is less than version of currently applied sqlalchemy migration, + than it just marked as applied, but no SQL queries will be + actually executed. Thus there are no difference between updating + existing portals and initializing new ones. + ''' + conf = op.get_context().config + version = conf.get_main_option(u'sqlalchemy_migrate_version') + if version: + return int(version) >= int(filename.split(u'_', 1)[0]) diff --git a/ckan/migration/alembic.ini b/ckan/migration/alembic.ini new file mode 100644 index 00000000000..23cd14af58e --- /dev/null +++ b/ckan/migration/alembic.ini @@ -0,0 +1,82 @@ +# A generic, single database configuration. + +[alembic] +# path to migration scripts +script_location = . + +# template used to generate migration files +# file_template = %%(rev)s_%%(slug)s + +# timezone to use when rendering the date +# within the migration file as well as the filename. +# string value is passed to dateutil.tz.gettz() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the +# "slug" field +#truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; this defaults +# to ckan/migration/alembic/versions. When using multiple version +# directories, initial revisions must be specified with --version-path +# version_locations = %(here)s/bar %(here)s/bat ckan/migration/alembic/versions + +# the output encoding used when revision files +# are written from script.py.mako +# output_encoding = utf-8 + +# This value does not affects CKAN commands, but developers are able +# to execute alembic commands(i.e. `alembic heads`, `alembic +# revision`) directly from this folder with line bellow. If it +# configured to correct values, migrations can even be applied(but it +# strongly discouraged - use CKAN's upgrade command instead). This +# functionality is considered as internal, so don't rely on it, +# because it may be removed in future. Use official CKAN commands +# rather than direct interactions with alembic +sqlalchemy.url = postgresql://ckan_default:pass@localhost/ckan_default + + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/ckan/migration/env.py b/ckan/migration/env.py new file mode 100644 index 00000000000..fe181a6908c --- /dev/null +++ b/ckan/migration/env.py @@ -0,0 +1,75 @@ +# encoding: utf-8 + +from __future__ import with_statement +from alembic import context +from sqlalchemy import engine_from_config, pool +# from logging.config import fileConfig +from ckan.model import init_model +from ckan.model.meta import metadata + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +# fileConfig(config.config_file_name) + +# add your model's MetaData object here +# for 'autogenerate' support +# from myapp import mymodel +# target_metadata = mymodel.Base.metadata +target_metadata = metadata + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline(): + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + url = config.get_main_option(u"sqlalchemy.url") + context.configure( + url=url, target_metadata=target_metadata, literal_binds=True + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online(): + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix=u'sqlalchemy.', + poolclass=pool.NullPool + ) + connection = connectable.connect() + init_model(connection) + + context.configure(connection=connection, target_metadata=target_metadata) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/ckan/migration/manage.py b/ckan/migration/manage.py deleted file mode 100644 index 85da87c325b..00000000000 --- a/ckan/migration/manage.py +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -from migrate.versioning.shell import main - -main(repository='ckan/migration') diff --git a/ckan/migration/migrate.cfg b/ckan/migration/migrate.cfg deleted file mode 100644 index bb7c61566b9..00000000000 --- a/ckan/migration/migrate.cfg +++ /dev/null @@ -1,20 +0,0 @@ -[db_settings] -# Used to identify which repository this database is versioned under. -# You can use the name of your project. -repository_id=Ckan - -# The name of the database table used to track the schema version. -# This name shouldn't already be used by your project. -# If this is changed once a database is under version control, you'll need to -# change the table name in each database too. -version_table=migrate_version - -# When committing a change script, Migrate will attempt to generate the -# sql for all supported databases; normally, if one of them fails - probably -# because you don't have that database installed - it is ignored and the -# commit continues, perhaps ending successfully. -# Databases in this list MUST compile successfully during a commit, or the -# entire commit will fail. List the databases your application will actually -# be using to ensure your updates to that database work properly. -# This must be a list; example: ['postgres','sqlite'] -required_dbs=[] diff --git a/ckan/migration/revision_legacy_code.py b/ckan/migration/revision_legacy_code.py index 47dc4c0fc24..2e2a9c8c414 100644 --- a/ckan/migration/revision_legacy_code.py +++ b/ckan/migration/revision_legacy_code.py @@ -399,8 +399,8 @@ def make_revision(instances): model.Session.execute( revision_table.update().where( and_(revision_table.c.id == instance.id, - revision_table.c.current == u'1') - ).values(current=u'0') + revision_table.c.current is True) + ).values(current=False) ) q = model.Session.query(revision_cls) diff --git a/ckan/migration/script.py.mako b/ckan/migration/script.py.mako new file mode 100644 index 00000000000..2c0156303a8 --- /dev/null +++ b/ckan/migration/script.py.mako @@ -0,0 +1,24 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/ckan/migration/versions/001_103676e0a497_create_existing_tables.py b/ckan/migration/versions/001_103676e0a497_create_existing_tables.py new file mode 100644 index 00000000000..4e1b2552d2d --- /dev/null +++ b/ckan/migration/versions/001_103676e0a497_create_existing_tables.py @@ -0,0 +1,157 @@ +# encoding: utf-8 +"""Create existing tables + +Revision ID: 103676e0a497 +Revises: +Create Date: 2018-09-04 16:57:42.622504 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '103676e0a497' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'state', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.Unicode(100)), + ) + + op.create_table( + 'revision', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('timestamp', sa.DateTime(timezone=False)), + sa.Column('author', sa.Unicode(200)), + sa.Column('message', sa.UnicodeText()), + sa.Column('state_id', sa.Integer), + ) + + op.create_table( + 'apikey', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.UnicodeText()), + sa.Column('key', sa.UnicodeText()), + ) + + op.create_table( + 'license', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.Unicode(100)), sa.Column('state_id', sa.Integer) + ) + + op.create_table( + 'package', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.Unicode(100), nullable=False, unique=True), + sa.Column('title', sa.UnicodeText()), + sa.Column('version', sa.Unicode(100)), + sa.Column('url', sa.UnicodeText()), + sa.Column('download_url', sa.UnicodeText()), + sa.Column('notes', sa.UnicodeText()), + sa.Column('license_id', sa.Integer, sa.ForeignKey('license.id')), + sa.Column('state_id', sa.Integer, sa.ForeignKey('state.id')), + sa.Column('revision_id', sa.Integer, sa.ForeignKey('revision.id')), + ) + + op.create_table( + 'package_revision', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.Unicode(100), nullable=False), + sa.Column('title', sa.UnicodeText()), + sa.Column('version', sa.Unicode(100)), + sa.Column('url', sa.UnicodeText()), + sa.Column('download_url', sa.UnicodeText()), + sa.Column('notes', sa.UnicodeText()), + sa.Column('license_id', sa.Integer, sa.ForeignKey('license.id')), + sa.Column('state_id', sa.Integer, sa.ForeignKey('state.id')), + sa.Column( + 'revision_id', + sa.Integer, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column('continuity_id', sa.Integer, sa.ForeignKey('package.id')), + ) + + op.create_table( + 'tag', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.Unicode(100), nullable=False, unique=True), + ) + + op.create_table( + 'package_tag', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('tag_id', sa.Integer, sa.ForeignKey('tag.id')), + sa.Column('state_id', sa.Integer, sa.ForeignKey('state.id')), + sa.Column('revision_id', sa.Integer, sa.ForeignKey('revision.id')), + ) + + op.create_table( + 'package_tag_revision', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('tag_id', sa.Integer, sa.ForeignKey('tag.id')), + sa.Column('state_id', sa.Integer, sa.ForeignKey('state.id')), + sa.Column( + 'revision_id', + sa.Integer, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.Integer, sa.ForeignKey('package_tag.id') + ), + ) + + op.create_table( + 'package_extra', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('key', sa.UnicodeText()), + sa.Column('value', sa.UnicodeText()), + sa.Column('state_id', sa.Integer, sa.ForeignKey('state.id')), + sa.Column('revision_id', sa.Integer, sa.ForeignKey('revision.id')), + ) + + op.create_table( + 'package_extra_revision', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('key', sa.UnicodeText()), + sa.Column('value', sa.UnicodeText()), + sa.Column('state_id', sa.Integer, sa.ForeignKey('state.id')), + sa.Column( + 'revision_id', + sa.Integer, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.Integer, sa.ForeignKey('package_extra.id') + ), + ) + + +def downgrade(): + op.drop_table('package_extra_revision') + op.drop_table('package_extra') + op.drop_table('package_tag_revision') + op.drop_table('package_tag') + op.drop_table('tag') + op.drop_table('package_revision') + op.drop_table('package') + op.drop_table('license') + op.drop_table('apikey') + op.drop_table('revision') + op.drop_table('state') diff --git a/ckan/migration/versions/001_add_existing_tables.py b/ckan/migration/versions/001_add_existing_tables.py deleted file mode 100644 index c346a889b45..00000000000 --- a/ckan/migration/versions/001_add_existing_tables.py +++ /dev/null @@ -1,115 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -from ckan.common import config as ckan_config - - -def upgrade(migrate_engine): - schema = ckan_config.get(u'ckan.migrations.target_schema') or 'public' - # we specify the schema here because of a clash with another 'state' table - # in the mdillon/postgis container. You only need to change the value in the - # config if you've altered the default schema from 'public' in your - # postgresql.conf. Because this is such a rarely needed option, it is - # otherwise undocumented. - meta = MetaData(schema=schema) - - state = Table('state', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('name', Unicode(100)), - ) - - revision = Table('revision', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('timestamp', DateTime(timezone=False) ), - Column('author', Unicode(200)), - Column('message', UnicodeText()), - Column('state_id', Integer() ), - ) - - apikey = Table('apikey', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('name', UnicodeText()), - Column('key', UnicodeText()), - ) - - license = Table('license', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('name', Unicode(100)), - # Column('state_id', Integer(), ForeignKey('state.id')), - Column('state_id', Integer()) - ) - - package = Table('package', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('name', Unicode(100) , nullable=False, unique=True), - Column('title', UnicodeText()), - Column('version', Unicode(100)), - Column('url', UnicodeText()), - Column('download_url', UnicodeText()), - Column('notes', UnicodeText()), - Column('license_id', Integer(), ForeignKey('license.id') ), - Column('state_id', Integer(), ForeignKey('state.id') ), - Column('revision_id', Integer(), ForeignKey('revision.id') ), - ) - - package_revision = Table('package_revision', meta, - Column('id', Integer(), primary_key=True, nullable=False), - Column('name', Unicode(100), nullable=False), - Column('title', UnicodeText()), - Column('version', Unicode(100)), - Column('url', UnicodeText()), - Column('download_url', UnicodeText()), - Column('notes', UnicodeText()), - Column('license_id', Integer(), ForeignKey('license.id') ), - Column('state_id', Integer(), ForeignKey('state.id') ), - Column('revision_id', Integer() , ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', Integer(), ForeignKey('package.id') ), - ) - - tag = Table('tag', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('name', Unicode(100), nullable=False, unique=True), - ) - - package_tag = Table('package_tag', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('package_id', Integer(), ForeignKey('package.id') ), - Column('tag_id', Integer(), ForeignKey('tag.id') ), - Column('state_id', Integer(), ForeignKey('state.id') ), - Column('revision_id', Integer(), ForeignKey('revision.id') ), - ) - - package_tag_revision = Table('package_tag_revision', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('package_id', Integer(), ForeignKey('package.id') ), - Column('tag_id', Integer(), ForeignKey('tag.id') ), - Column('state_id', Integer(), ForeignKey('state.id') ), - Column('revision_id', Integer() , ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', Integer(), ForeignKey('package_tag.id') ), - ) - - package_extra = Table('package_extra', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('package_id', Integer(), ForeignKey('package.id') ), - Column('key', UnicodeText()), - Column('value', UnicodeText()), - Column('state_id', Integer(), ForeignKey('state.id') ), - Column('revision_id', Integer(), ForeignKey('revision.id') ), - ) - - package_extra_revision = Table('package_extra_revision', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('package_id', Integer(), ForeignKey('package.id') ), - Column('key', UnicodeText()), - Column('value', UnicodeText()), - Column('state_id', Integer(), ForeignKey('state.id') ), - Column('revision_id', Integer(), ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', Integer(), ForeignKey('package_extra.id') ), - ) - - meta.bind = migrate_engine - meta.create_all() - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/002_86fdd8c54775_add_author_and_maintainer.py b/ckan/migration/versions/002_86fdd8c54775_add_author_and_maintainer.py new file mode 100644 index 00000000000..0bc66fc52fd --- /dev/null +++ b/ckan/migration/versions/002_86fdd8c54775_add_author_and_maintainer.py @@ -0,0 +1,38 @@ +# encoding: utf-8 +"""Add author and maintainer + +Revision ID: 86fdd8c54775 +Revises: 103676e0a497 +Create Date: 2018-09-04 17:11:59.181744 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '86fdd8c54775' +down_revision = '103676e0a497' +branch_labels = None +depends_on = None + +_columns = ( + 'author', + 'author_email', + 'maintainer', + 'maintainer_email', +) + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + for column in _columns: + op.add_column('package', sa.Column(column, sa.UnicodeText)) + op.add_column('package_revision', sa.Column(column, sa.UnicodeText)) + + +def downgrade(): + for column in reversed(_columns): + op.drop_column('package_revision', column) + op.drop_column('package', column) diff --git a/ckan/migration/versions/002_add_author_and_maintainer.py b/ckan/migration/versions/002_add_author_and_maintainer.py deleted file mode 100644 index 4178e24ff6e..00000000000 --- a/ckan/migration/versions/002_add_author_and_maintainer.py +++ /dev/null @@ -1,34 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - # Upgrade operations go here. Don't create your own engine; use the engine - # named 'migrate_engine' imported from migrate. - package = Table('package', metadata, autoload=True) - package_revision = Table('package_revision', metadata, autoload=True) - - columns = [Column('author', UnicodeText), - Column('author_email', UnicodeText), - Column('maintainer', UnicodeText), - Column('maintainer_email', UnicodeText), - ] - columns2 = [Column('author', UnicodeText), - Column('author_email', UnicodeText), - Column('maintainer', UnicodeText), - Column('maintainer_email', UnicodeText), - ] - - for col in columns: - col.create(package) - for col in columns2: - col.create(package_revision) - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/003_add_user_object.py b/ckan/migration/versions/003_add_user_object.py deleted file mode 100644 index f81529dd631..00000000000 --- a/ckan/migration/versions/003_add_user_object.py +++ /dev/null @@ -1,27 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import uuid - - -def make_uuid(): - return unicode(uuid.uuid4()) - - -def upgrade(migrate_engine): - metadata = MetaData() - user_table = Table('user', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('name', UnicodeText), - Column('apikey', UnicodeText, default=make_uuid) - ) - metadata.bind = migrate_engine - apikey_table = Table('apikey', metadata, autoload=True) - - user_table.create() - apikey_table.drop() - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/003_f22b4f5241a5_add_user_object.py b/ckan/migration/versions/003_f22b4f5241a5_add_user_object.py new file mode 100644 index 00000000000..f95670b19b9 --- /dev/null +++ b/ckan/migration/versions/003_f22b4f5241a5_add_user_object.py @@ -0,0 +1,38 @@ +# encoding: utf-8 +"""Add user object + +Revision ID: f22b4f5241a5 +Revises: 86fdd8c54775 +Create Date: 2018-09-04 17:19:32.836747 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'f22b4f5241a5' +down_revision = '86fdd8c54775' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'user', sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('name', sa.UnicodeText), sa.Column('apikey', sa.UnicodeText) + ) + + op.drop_table('apikey') + + +def downgrade(): + op.create_table( + 'apikey', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.UnicodeText()), + sa.Column('key', sa.UnicodeText()), + ) + op.drop_table('user') diff --git a/ckan/migration/versions/004_add_group_object.py b/ckan/migration/versions/004_add_group_object.py deleted file mode 100644 index 5d1c3d414d1..00000000000 --- a/ckan/migration/versions/004_add_group_object.py +++ /dev/null @@ -1,38 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import uuid - - -def make_uuid(): - return unicode(uuid.uuid4()) - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - # you need to load this for foreign keys to work in package_group_table - package_table = Table('package', metadata, autoload=True) - - group_table = Table('group', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('name', UnicodeText, unique=True, nullable=False), - Column('title', UnicodeText), - Column('description', UnicodeText), - ) - - package_group_table = Table('package_group', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('package_id', Integer, ForeignKey('package.id')), - Column('group_id', UnicodeText, ForeignKey('group.id')), - ) - - - group_table.create() - package_group_table.create() - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/004_f92ee205e46d_add_group_object.py b/ckan/migration/versions/004_f92ee205e46d_add_group_object.py new file mode 100644 index 00000000000..606edd70da5 --- /dev/null +++ b/ckan/migration/versions/004_f92ee205e46d_add_group_object.py @@ -0,0 +1,41 @@ +# encoding: utf-8 +"""Add group object + +Revision ID: f92ee205e46d +Revises: f22b4f5241a5 +Create Date: 2018-09-04 17:22:50.675045 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'f92ee205e46d' +down_revision = 'f22b4f5241a5' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'group', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('name', sa.UnicodeText, unique=True, nullable=False), + sa.Column('title', sa.UnicodeText), + sa.Column('description', sa.UnicodeText), + ) + + op.create_table( + 'package_group', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('group_id', sa.UnicodeText, sa.ForeignKey('group.id')), + ) + + +def downgrade(): + op.drop_table('package_group') + op.drop_table('group') diff --git a/ckan/migration/versions/005_12c2232c15f5_add_authorization_tables.py b/ckan/migration/versions/005_12c2232c15f5_add_authorization_tables.py new file mode 100644 index 00000000000..0ad3179aede --- /dev/null +++ b/ckan/migration/versions/005_12c2232c15f5_add_authorization_tables.py @@ -0,0 +1,65 @@ +# encoding: utf-8 +"""005 Add authorization tables + +Revision ID: 12c2232c15f5 +Revises: f92ee205e46d +Create Date: 2018-09-04 17:34:59.667587 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '12c2232c15f5' +down_revision = 'f92ee205e46d' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'role_action', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('role', sa.UnicodeText), + sa.Column('context', sa.UnicodeText, nullable=False), + sa.Column('action', sa.UnicodeText), + ) + + op.create_table( + 'user_object_role', sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('user_id', sa.UnicodeText, sa.ForeignKey('user.id')), + sa.Column('context', sa.UnicodeText, nullable=False), + sa.Column('role', sa.UnicodeText) + ) + + op.create_table( + 'package_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + ) + + op.create_table( + 'group_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + sa.Column('group_id', sa.UnicodeText, sa.ForeignKey('group.id')), + ) + + +def downgrade(): + op.drop_table('group_role') + op.drop_table('package_role') + op.drop_table('user_object_role') + op.drop_table('role_action') diff --git a/ckan/migration/versions/005_add_authorization_tables.py b/ckan/migration/versions/005_add_authorization_tables.py deleted file mode 100644 index e73b72f88d4..00000000000 --- a/ckan/migration/versions/005_add_authorization_tables.py +++ /dev/null @@ -1,57 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import uuid - - -def make_uuid(): - return unicode(uuid.uuid4()) - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - # you need to load these two for foreign keys to work - package_table = Table('package', metadata, autoload=True) - group_table = Table('group', metadata, autoload=True) - user_table = Table('user', metadata, autoload=True) - - # authorization tables - role_action_table = Table('role_action', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('role', UnicodeText), - Column('context', UnicodeText, nullable=False), - Column('action', UnicodeText), - ) - - user_object_role_table = Table('user_object_role', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('user_id', UnicodeText, ForeignKey('user.id')), - Column('context', UnicodeText, nullable=False), - Column('role', UnicodeText) - ) - - package_role_table = Table('package_role', metadata, - Column('user_object_role_id', UnicodeText, ForeignKey('user_object_role.id'), primary_key=True), - Column('package_id', Integer, ForeignKey('package.id')), - ) - - group_role_table = Table('group_role', metadata, - Column('user_object_role_id', UnicodeText, ForeignKey('user_object_role.id'), primary_key=True), - Column('group_id', UnicodeText, ForeignKey('group.id')), - ) - - role_action_table.create() - user_object_role_table.create() - package_role_table.create() - group_role_table.create() - - # Not Good to use model here. TODO: refactor this. - # import ckan.model as model - # model.repo.init_db() - # call this explicitly elsewhere - # model.give_all_packages_default_user_roles() - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/006_add_ratings.py b/ckan/migration/versions/006_add_ratings.py deleted file mode 100644 index 4af295f6577..00000000000 --- a/ckan/migration/versions/006_add_ratings.py +++ /dev/null @@ -1,30 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import uuid - - -def make_uuid(): - return unicode(uuid.uuid4()) - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - # you need to load these two for foreign keys to work - package_table = Table('package', metadata, autoload=True) - user_table = Table('user', metadata, autoload=True) - - rating_table = Table('rating', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('user_id', UnicodeText, ForeignKey('user.id')), - Column('user_ip_address', UnicodeText), # alternative to user_id if not logged in - Column('package_id', Integer, ForeignKey('package.id')), - Column('rating', Float) - ) - - rating_table.create() - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/006_c83955e7acb6_add_ratings.py b/ckan/migration/versions/006_c83955e7acb6_add_ratings.py new file mode 100644 index 00000000000..f97d13b112c --- /dev/null +++ b/ckan/migration/versions/006_c83955e7acb6_add_ratings.py @@ -0,0 +1,35 @@ +# encoding: utf-8 +"""006 Add ratings + +Revision ID: c83955e7acb6 +Revises: 12c2232c15f5 +Create Date: 2018-09-04 17:39:11.520922 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'c83955e7acb6' +down_revision = '12c2232c15f5' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'rating', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('user_id', sa.UnicodeText, sa.ForeignKey('user.id')), + sa.Column('user_ip_address', + sa.UnicodeText), # alternative to user_id if not logged in + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('rating', sa.Float) + ) + + +def downgrade(): + op.drop_table('rating') diff --git a/ckan/migration/versions/007_1928d4af1cda_add_system_roles.py b/ckan/migration/versions/007_1928d4af1cda_add_system_roles.py new file mode 100644 index 00000000000..f59e3b85629 --- /dev/null +++ b/ckan/migration/versions/007_1928d4af1cda_add_system_roles.py @@ -0,0 +1,34 @@ +# encoding: utf-8 +"""007 Add system roles + +Revision ID: 1928d4af1cda +Revises: c83955e7acb6 +Create Date: 2018-09-04 17:42:00.367475 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '1928d4af1cda' +down_revision = 'c83955e7acb6' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'system_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + ) + + +def downgrade(): + op.drop_table('system_role') diff --git a/ckan/migration/versions/007_add_system_roles.py b/ckan/migration/versions/007_add_system_roles.py deleted file mode 100644 index d7fe8094be8..00000000000 --- a/ckan/migration/versions/007_add_system_roles.py +++ /dev/null @@ -1,27 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import uuid - - - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - user_object_role_table = Table('user_object_role', metadata, autoload=True) - - # authorization tables - system_role_table = Table('system_role', metadata, - Column('user_object_role_id', UnicodeText, ForeignKey('user_object_role.id'), primary_key=True), - ) - - system_role_table.create() - - # you can now add system administrators - # e.g. paster create-sysadmin http://bgates.openid.com/ - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/008_e8283ffb257e_update_vdm_ids.py b/ckan/migration/versions/008_e8283ffb257e_update_vdm_ids.py new file mode 100644 index 00000000000..dcfa4d1bd8d --- /dev/null +++ b/ckan/migration/versions/008_e8283ffb257e_update_vdm_ids.py @@ -0,0 +1,58 @@ +# encoding: utf-8 +"""008 Update vdm ids + +Revision ID: e8283ffb257e +Revises: 1928d4af1cda +Create Date: 2018-09-04 17:43:27.042436 + +Originally this revision was altering id columns +to UnicodeText +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'e8283ffb257e' +down_revision = '1928d4af1cda' +branch_labels = None +depends_on = None + +foreign_tables = ( + 'package', 'package_tag', 'package_revision', 'package_tag_revision', + 'package_extra', 'package_extra_revision' +) + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + for table in foreign_tables: + op.drop_column(table, 'revision_id') + op.alter_column( + 'revision', 'id', type_=sa.UnicodeText, server_default=None + ) + for table in foreign_tables: + op.add_column( + table, + sa.Column( + 'revision_id', sa.UnicodeText, sa.ForeignKey('revision.id') + ) + ) + + +def downgrade(): + for table in foreign_tables: + op.drop_column(table, 'revision_id') + op.drop_column('revision', 'id') + op.add_column( + 'revision', + sa.Column( + 'id', sa.Integer, primary_key=True, nullable=False, unique=True + ) + ) + + for table in foreign_tables: + op.add_column( + table, + sa.Column('revision_id', sa.Integer, sa.ForeignKey('revision.id')) + ) diff --git a/ckan/migration/versions/008_update_vdm_ids.py b/ckan/migration/versions/008_update_vdm_ids.py deleted file mode 100644 index f6a2c74b0bb..00000000000 --- a/ckan/migration/versions/008_update_vdm_ids.py +++ /dev/null @@ -1,91 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -import sqlalchemy.schema -import uuid - -from migrate import * -import migrate.changeset -from migrate.changeset.constraint import ForeignKeyConstraint, PrimaryKeyConstraint - -metadata = None - -def make_uuid(): - return unicode(uuid.uuid4()) - -# 1 drop all foreign key constraints -# 2 alter type of revision id and foreign keys -# 3 create foreign key constraints (using cascade!) -# 4 create uuids for revisions (auto cascades elsewhere!) -def upgrade(migrate_engine): - global metadata - metadata = MetaData() - metadata.bind = migrate_engine - dropped_fk_constraints = drop_constraints_and_alter_types() - upgrade2(migrate_engine, dropped_fk_constraints) - -def drop_constraints_and_alter_types(): - # 1 drop all foreign key constraints - dropped_fk_constraints = [] - revision_table = Table('revision', metadata, autoload=True) - foreign_tables = ['package', 'package_tag', 'package_revision', 'package_tag_revision', 'package_extra', 'package_extra_revision', ] - for table_name in foreign_tables: - table = Table(table_name, metadata, autoload=True) - for constraint in table.constraints.copy(): - if isinstance(constraint, sqlalchemy.schema.ForeignKeyConstraint): - foreign_key_cols = [key.column for key in constraint.elements] - fk_col = foreign_key_cols[0] - if fk_col.table == revision_table: - orig_fk = ForeignKeyConstraint(constraint.columns, foreign_key_cols, name=constraint.name, table=table) - orig_fk.drop() - dropped_fk_constraints.append((constraint.columns, foreign_key_cols, constraint.name, table.name)) - - # 2 alter type of revision id and foreign keys - # Sanity check - if len(constraint.columns.keys()) != 1: - raise ValueError() - id_col = constraint.table.columns[constraint.columns.keys()[0]] - id_col.alter(type=UnicodeText) - - revision_table = Table('revision', metadata, autoload=True) - id_col = revision_table.c['id'] - id_col.alter(type=UnicodeText, - ) - - return dropped_fk_constraints - -def upgrade2(migrate_engine, dropped_fk_constraints): - # have changed type of cols so recreate metadata - metadata = MetaData(migrate_engine) - - # 3 create foreign key constraints - for fk_constraint in dropped_fk_constraints: - # cascade doesn't work - # see http://code.google.com/p/sqlalchemy-migrate/issues/detail?id=48 - # new_fk = ForeignKeyConstraint(*fk_constraint, onupdate='CASCADE') - # new_fk = ForeignKeyConstraint(*fk_constraint) - # new_fk.create() - - # So we create via hand ... - constraint_columns, foreign_key_cols, constraint_name, table_name = fk_constraint - # Sanity check - if len(constraint_columns.keys()) != 1: - raise ValueError() - - oursql = '''ALTER TABLE %(table)s - ADD CONSTRAINT %(fkeyname)s - FOREIGN KEY (%(col_name)s) - REFERENCES revision (id) - ''' % {'table':table_name, 'fkeyname':constraint_name, - 'col_name':constraint_columns.keys()[0] } - migrate_engine.execute(oursql) - - # 4 create uuids for revisions and in related tables - revision_table = Table('revision', metadata, autoload=True) - from sqlalchemy.sql import select - for row in migrate_engine.execute(select([revision_table])): - update = revision_table.update().where(revision_table.c.id==row.id).values(id=make_uuid()) - migrate_engine.execute(update) - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/009_add_creation_timestamps.py b/ckan/migration/versions/009_add_creation_timestamps.py deleted file mode 100644 index beb83d23bad..00000000000 --- a/ckan/migration/versions/009_add_creation_timestamps.py +++ /dev/null @@ -1,27 +0,0 @@ -# encoding: utf-8 - -from datetime import datetime - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -domain_obj_names = ['rating', 'group', 'user'] - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - # Use sql instead of migrate.changeset because user and group are sql - # reserved words and migrate doesn't quote them. - for domain_obj_name in domain_obj_names: - sql = 'ALTER TABLE "%s" ADD created TIMESTAMP WITHOUT TIME ZONE' % domain_obj_name - migrate_engine.execute(sql) - - now = datetime.now() - for domain_obj_name in domain_obj_names[::-1]: - table = Table(domain_obj_name, metadata, autoload=True) - migrate_engine.execute(table.update(values={table.c.created:now})) - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/009_b739a48de5c4_add_creation_timestamps.py b/ckan/migration/versions/009_b739a48de5c4_add_creation_timestamps.py new file mode 100644 index 00000000000..0158a482145 --- /dev/null +++ b/ckan/migration/versions/009_b739a48de5c4_add_creation_timestamps.py @@ -0,0 +1,30 @@ +# encoding: utf-8 +"""009 Add creation timestamps + +Revision ID: b739a48de5c4 +Revises: e8283ffb257e +Create Date: 2018-09-04 18:41:15.442929 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'b739a48de5c4' +down_revision = 'e8283ffb257e' +branch_labels = None +depends_on = None + +domain_obj_names = ['rating', 'group', 'user'] + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + for table in domain_obj_names: + op.add_column(table, sa.Column('created', sa.TIMESTAMP)) + + +def downgrade(): + for table in domain_obj_names: + op.drop_column(table, 'created') diff --git a/ckan/migration/versions/010_a6f13bf14d0c_add_user_about.py b/ckan/migration/versions/010_a6f13bf14d0c_add_user_about.py new file mode 100644 index 00000000000..589d3112fb4 --- /dev/null +++ b/ckan/migration/versions/010_a6f13bf14d0c_add_user_about.py @@ -0,0 +1,26 @@ +# encoding: utf-8 +"""010 Add user about + +Revision ID: a6f13bf14d0c +Revises: b739a48de5c4 +Create Date: 2018-09-04 18:44:53.313230 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'a6f13bf14d0c' +down_revision = 'b739a48de5c4' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('user', sa.Column('about', sa.Text)) + + +def downgrade(): + op.drop_column('user', 'about') diff --git a/ckan/migration/versions/010_add_user_about.py b/ckan/migration/versions/010_add_user_about.py deleted file mode 100644 index c4f3c10dfac..00000000000 --- a/ckan/migration/versions/010_add_user_about.py +++ /dev/null @@ -1,16 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - # Using sql because migrate doesn't quote reserved word 'user' - user_sql = 'ALTER TABLE "user" ADD about TEXT' - migrate_engine.execute(user_sql) - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/011_866f6370b4ac_add_package_search_vector.py b/ckan/migration/versions/011_866f6370b4ac_add_package_search_vector.py new file mode 100644 index 00000000000..3b6f60efaff --- /dev/null +++ b/ckan/migration/versions/011_866f6370b4ac_add_package_search_vector.py @@ -0,0 +1,34 @@ +# encoding: utf-8 +"""011 Add package search vector + +Revision ID: 866f6370b4ac +Revises: 746205dde53d +Create Date: 2018-09-04 18:48:51.971937 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '866f6370b4ac' +down_revision = 'a6f13bf14d0c' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'package_search', + sa.Column( + 'package_id', + sa.Integer, + sa.ForeignKey('package.id'), + primary_key=True + ), sa.Column('search_vector', sa.dialects.postgresql.TSVECTOR) + ) + + +def downgrade(): + op.drop_table('package_search') diff --git a/ckan/migration/versions/011_add_package_search_vector.py b/ckan/migration/versions/011_add_package_search_vector.py deleted file mode 100644 index ff9eea3e5c3..00000000000 --- a/ckan/migration/versions/011_add_package_search_vector.py +++ /dev/null @@ -1,25 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - package_table = Table('package', metadata, autoload=True) - package_search_table = Table('package_search', metadata, - Column('package_id', Integer, ForeignKey('package.id'), primary_key=True), - ) - - package_search_table.create() - sql = 'ALTER TABLE package_search ADD COLUMN search_vector tsvector' - migrate_engine.execute(sql) - - # This is not so important now and annoying to read when testing - #print 'IMPORTANT! Now run:\n paster create-search-index' - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/012_add_resources.py b/ckan/migration/versions/012_add_resources.py deleted file mode 100644 index 2ebf11b21ed..00000000000 --- a/ckan/migration/versions/012_add_resources.py +++ /dev/null @@ -1,80 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset -import vdm.sqlalchemy - - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - package_table = Table('package', metadata, autoload=True) - package_revision_table = Table('package_revision', metadata, autoload=True) - package_resource_table = Table('package_resource', metadata, - Column('id', Integer, primary_key=True), - Column('package_id', Integer, ForeignKey('package.id')), - Column('url', UnicodeText, nullable=False), - Column('format', UnicodeText), - Column('description', UnicodeText), - Column('position', Integer), - Column('state_id', Integer), - Column('revision_id', UnicodeText, ForeignKey('revision.id')) - ) - - package_resource_revision_table = Table('package_resource_revision', metadata, - Column('id', Integer, primary_key=True), - Column('package_id', Integer, ForeignKey('package.id')), - Column('url', UnicodeText, nullable=False), - Column('format', UnicodeText), - Column('description', UnicodeText), - Column('position', Integer), - Column('state_id', Integer), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', Integer, ForeignKey('package_resource.id')) - ) - - - package_resource_table.create() - package_resource_revision_table.create() - - # Move download_urls across to resources - # NB: strictly we should check each package_revision to check whether - # download_url changed (and if only change) and then create - # package_resource_revision for each such revision (and delete every - # package_revision where only change is download_url) - # However, we adopt a cruder approach in which we just create - engine = migrate_engine - select_sql = select([package_table]) - for pkg in engine.execute(select_sql): - download_url = pkg['download_url'] - if download_url: - # what about revision_id? - res_values = {'package_id':pkg.id, - 'url':download_url, - 'format':u'', - 'description':u'', - 'position':0, - 'state_id':1, - 'revision_id': pkg.revision_id, - } - insert_sql = package_resource_table.insert(values=res_values) - engine.execute(insert_sql) - # get id of just inserted resource - getid_sql = select([package_resource_table]).where( - package_resource_table.c.package_id==pkg.id) - resource_id = getid_sql.execute().fetchone().id - # now we need to update revision table ... - res_rev_values = dict(res_values) - res_rev_values['continuity_id'] = resource_id - res_rev_values['id'] = resource_id - insert_sql = package_resource_revision_table.insert(values=res_rev_values) - engine.execute(insert_sql) - - package_table.c.download_url.drop() - package_revision_table.c.download_url.drop() - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/012_e5ca33a5d445_add_resources.py b/ckan/migration/versions/012_e5ca33a5d445_add_resources.py new file mode 100644 index 00000000000..e75b5150d38 --- /dev/null +++ b/ckan/migration/versions/012_e5ca33a5d445_add_resources.py @@ -0,0 +1,66 @@ +# encoding: utf-8 +"""012 Add resources + +Revision ID: e5ca33a5d445 +Revises: 866f6370b4ac +Create Date: 2018-09-04 18:48:52.303211 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'e5ca33a5d445' +down_revision = '866f6370b4ac' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'package_resource', sa.Column('id', sa.Integer, primary_key=True), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('url', sa.UnicodeText, nullable=False), + sa.Column('format', sa.UnicodeText), + sa.Column('description', sa.UnicodeText), + sa.Column('position', sa.Integer), sa.Column('state_id', sa.Integer), + sa.Column('revision_id', sa.UnicodeText, sa.ForeignKey('revision.id')) + ) + + op.create_table( + 'package_resource_revision', + sa.Column('id', sa.Integer, primary_key=True), + sa.Column('package_id', sa.Integer, sa.ForeignKey('package.id')), + sa.Column('url', sa.UnicodeText, nullable=False), + sa.Column('format', sa.UnicodeText), + sa.Column('description', sa.UnicodeText), + sa.Column('position', sa.Integer), sa.Column('state_id', sa.Integer), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.Integer, sa.ForeignKey('package_resource.id') + ) + ) + + op.drop_column('package', 'download_url') + op.drop_column('package_revision', 'download_url') + + +def downgrade(): + op.drop_table('package_resource_revision') + op.drop_table('package_resource') + op.add_column( + 'package', + sa.Column('download_url', sa.UnicodeText()), + ) + op.add_column( + 'package_revision', + sa.Column('download_url', sa.UnicodeText()), + ) diff --git a/ckan/migration/versions/013_8a3a5af39797_add_hash.py b/ckan/migration/versions/013_8a3a5af39797_add_hash.py new file mode 100644 index 00000000000..86ee631cde5 --- /dev/null +++ b/ckan/migration/versions/013_8a3a5af39797_add_hash.py @@ -0,0 +1,26 @@ +# encoding: utf-8 +"""013 Add hash + +Revision ID: 8a3a5af39797 +Revises: e5ca33a5d445 +Create Date: 2018-09-04 18:48:52.640250 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '8a3a5af39797' +down_revision = 'e5ca33a5d445' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('package_resource', sa.Column('hash', sa.UnicodeText)) + + +def downgrade(): + op.drop_column('package_resource', 'hash') diff --git a/ckan/migration/versions/013_add_hash.py b/ckan/migration/versions/013_add_hash.py deleted file mode 100644 index 68bb54184fe..00000000000 --- a/ckan/migration/versions/013_add_hash.py +++ /dev/null @@ -1,17 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - package_resource = Table('package_resource', metadata, autoload=True) - column = Column('hash', UnicodeText) - column.create(package_resource) - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/014_93519b684820_hash_2.py b/ckan/migration/versions/014_93519b684820_hash_2.py new file mode 100644 index 00000000000..b6c82620041 --- /dev/null +++ b/ckan/migration/versions/014_93519b684820_hash_2.py @@ -0,0 +1,28 @@ +# encoding: utf-8 +"""014 Hash 2 + +Revision ID: 93519b684820 +Revises: 8a3a5af39797 +Create Date: 2018-09-04 18:48:52.968191 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '93519b684820' +down_revision = '8a3a5af39797' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'package_resource_revision', sa.Column('hash', sa.UnicodeText) + ) + + +def downgrade(): + op.drop_column('package_resource_revision', 'hash') diff --git a/ckan/migration/versions/014_hash_2.py b/ckan/migration/versions/014_hash_2.py deleted file mode 100644 index 8a1e320248c..00000000000 --- a/ckan/migration/versions/014_hash_2.py +++ /dev/null @@ -1,19 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - # When adding a column to a revisioned object, need to add it to it's - # counterpart revision object too. Here is the counter-part for that in - # 013_add_hash.py - package_resource_revision = Table('package_resource_revision', metadata, autoload=True) - column = Column('hash', UnicodeText) - column.create(package_resource_revision) - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/015_6d8ffebcaf54_remove_state_object.py b/ckan/migration/versions/015_6d8ffebcaf54_remove_state_object.py new file mode 100644 index 00000000000..8f3cadddb89 --- /dev/null +++ b/ckan/migration/versions/015_6d8ffebcaf54_remove_state_object.py @@ -0,0 +1,44 @@ +# encoding: utf-8 +"""015 Remove state_object + +Revision ID: 6d8ffebcaf54 +Revises: 93519b684820 +Create Date: 2018-09-04 18:48:53.302758 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '6d8ffebcaf54' +down_revision = '93519b684820' +branch_labels = None +depends_on = None + +stateful_tables = [ + 'license', 'package', 'package_revision', 'package_tag', + 'package_tag_revision', 'package_extra', 'package_extra_revision', + 'package_resource', 'package_resource_revision', 'revision' +] + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + for table_name in stateful_tables: + op.add_column(table_name, sa.Column('state', sa.UnicodeText)) + op.drop_column(table_name, 'state_id') + + op.drop_table('state') + + +def downgrade(): + op.create_table( + 'state', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.Unicode(100)), + ) + + for table_name in stateful_tables: + op.drop_column(table_name, 'state') + op.add_column(table_name, sa.Column('state_id', sa.Integer)) diff --git a/ckan/migration/versions/015_remove_state_object.py b/ckan/migration/versions/015_remove_state_object.py deleted file mode 100644 index 0c0eda373b7..00000000000 --- a/ckan/migration/versions/015_remove_state_object.py +++ /dev/null @@ -1,35 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -import sqlalchemy.sql as sql - -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - stateful_tables = [ - 'license', - 'package', 'package_revision', - 'package_tag', 'package_tag_revision', - 'package_extra', 'package_extra_revision', - 'package_resource', 'package_resource_revision', - 'revision' - ] - for table_name in stateful_tables: - # print '***** Processing table: %s' % table_name - table = Table(table_name, metadata, autoload=True) - column = Column('state', UnicodeText) - column.create(table) - for (name,id) in [ ('active',1), ('deleted',2), ('pending',3) ]: - sqlcmd = '''UPDATE %s SET state = '%s' WHERE state_id = %s''' % (table.name, name, id) - migrate_engine.execute(sqlcmd) - stateid = table.c['state_id'] - stateid.drop() - table = Table('state', metadata, autoload=True) - table.drop() - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/016_37ada738328e_uuids_everywhere.py b/ckan/migration/versions/016_37ada738328e_uuids_everywhere.py new file mode 100644 index 00000000000..7ccc609fe4b --- /dev/null +++ b/ckan/migration/versions/016_37ada738328e_uuids_everywhere.py @@ -0,0 +1,130 @@ +# encoding: utf-8 +"""016 Uuids everywhere + +Revision ID: 37ada738328e +Revises: 6d8ffebcaf54 +Create Date: 2018-09-04 18:48:53.632517 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '37ada738328e' +down_revision = '6d8ffebcaf54' +branch_labels = None +depends_on = None + +foreign_keys = [ + ('package_tag', 'package_id'), + ('package_tag', 'tag_id'), + ('package_extra', 'package_id'), + ('package_resource', 'package_id'), + ('package_tag_revision', 'package_id'), + ('package_tag_revision', 'tag_id'), + ('package_extra_revision', 'package_id'), + ('package_resource_revision', 'package_id'), + ('rating', 'package_id'), + ('package_search', 'package_id'), + ('package_role', 'package_id'), + ('package_group', 'package_id'), +] +ids = [ + 'package', 'package_tag', 'package_extra', 'package_resource', + 'package_revision', 'package_tag_revision', 'package_extra_revision', + 'package_resource_revision', 'tag' +] + +continuity = [ + 'package_revision', 'package_tag_revision', 'package_extra_revision', + 'package_resource_revision' +] + +sequences = [ + 'package_id_seq', 'package_extra_id_seq', 'package_resource_id_seq', + 'package_tag_id_seq', 'tag_id_seq' +] + +combined_primary_keys = [ + 'package_extra_revision', 'package_revision', 'package_tag_revision' +] + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + for table, column in foreign_keys: + op.drop_column(table, column) + for table in continuity: + op.drop_column(table, 'continuity_id') + for table in ids: + op.alter_column(table, 'id', type_=sa.UnicodeText, server_default=None) + + for table, column in foreign_keys: + op.add_column( + table, + sa.Column( + column, sa.UnicodeText, + sa.ForeignKey(column.replace('_', '.')) + ) + ) + for table in continuity: + op.add_column( + table, + sa.Column( + 'continuity_id', sa.UnicodeText, + sa.ForeignKey(table.replace('_revision', '.id')) + ) + ) + for table in combined_primary_keys: + op.create_primary_key(table + '_pkey', table, ['id', 'revision_id']) + + op.execute( + sa.schema.DropSequence(sa.schema.Sequence('package_extra_id_seq')) + ) + op.execute(sa.schema.DropSequence(sa.schema.Sequence('package_id_seq'))) + op.execute( + sa.schema.DropSequence(sa.schema.Sequence('package_tag_id_seq')) + ) + op.execute( + sa.schema.DropSequence(sa.schema.Sequence('package_resource_id_seq')) + ) + op.execute(sa.schema.DropSequence(sa.schema.Sequence('tag_id_seq'))) + op.execute(sa.schema.DropSequence(sa.schema.Sequence('revision_id_seq'))) + + +def downgrade(): + for table, column in foreign_keys: + op.drop_column(table, column) + for table in continuity: + op.drop_column(table, 'continuity_id') + + for table in ids: + op.drop_column(table, 'id') + op.add_column( + table, + sa.Column( + 'id', + sa.Integer, + primary_key=True, + autoincrement=True, + nullable=False, + unique=True + ) + ) + + for table, column in foreign_keys: + op.add_column( + table, + sa.Column( + column, sa.Integer, sa.ForeignKey(column.replace('_', '.')) + ) + ) + for table in continuity: + op.add_column( + table, + sa.Column( + 'continuity_id', sa.Integer, + sa.ForeignKey(table.replace('_revision', '.id')) + ) + ) diff --git a/ckan/migration/versions/016_uuids_everywhere.py b/ckan/migration/versions/016_uuids_everywhere.py deleted file mode 100644 index d661268fd6c..00000000000 --- a/ckan/migration/versions/016_uuids_everywhere.py +++ /dev/null @@ -1,196 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -import sqlalchemy.schema -import uuid -from sqlalchemy.sql import select - -from migrate import * -import migrate.changeset -from migrate.changeset.constraint import ForeignKeyConstraint, PrimaryKeyConstraint - -metadata = MetaData() - -def make_uuid(): - return unicode(uuid.uuid4()) - -## Tables and columns changed in the model -## Versioned: -## ('package', 'id'), -## ('package_tag', ('id', 'package_id', 'tag_id')), -## ('package_extra', ('id', 'package_id')), -## ('package_resource', ('id', 'package_id')), -## Versions: -## ('package_revision', 'id'), -## ('package_tag_revision', ('id', 'package_id', 'tag_id')), -## ('package_extra_revision', ('id', 'package_id')), -## ('package_resource_revision', ('id', 'package_id')), -## Non-versioned: -## ('tag', 'id'), -## ('rating', 'package_id'), -## ('package_search', 'package_id'), -## ('package_role', 'package_id'), -## ('package_group', 'package_id'), - -def upgrade(migrate_engine): - global metadata - metadata = MetaData() - metadata.bind = migrate_engine - primary_table_name = 'package' - foreign_tables = ['package_revision', - 'package_tag', 'package_tag_revision', - 'package_extra', 'package_extra_revision', - 'package_resource', 'package_resource_revision', - 'rating', 'package_search', - 'package_role', 'package_group'] - revision_table_name = 'package_revision' - convert_to_uuids(migrate_engine, primary_table_name, foreign_tables, revision_table_name) - - primary_table_name = 'package_resource' - foreign_tables = ['package_resource_revision'] - revision_table_name = 'package_resource_revision' - convert_to_uuids(migrate_engine, primary_table_name, foreign_tables, revision_table_name) - - primary_table_name = 'package_tag' - foreign_tables = ['package_tag_revision'] - revision_table_name = 'package_tag_revision' - convert_to_uuids(migrate_engine, primary_table_name, foreign_tables, revision_table_name) - - primary_table_name = 'package_extra' - foreign_tables = ['package_extra_revision'] - revision_table_name = 'package_extra_revision' - convert_to_uuids(migrate_engine, primary_table_name, foreign_tables, revision_table_name) - - primary_table_name = 'tag' - foreign_tables = ['package_tag', 'package_tag_revision'] - revision_table_name = None - convert_to_uuids(migrate_engine, primary_table_name, foreign_tables, revision_table_name) - - drop_sequencies(migrate_engine) - -def convert_to_uuids(migrate_engine, primary_table_name, foreign_tables, revision_table_name=None): - '''Convert an id column in Primary Table to string type UUIDs. - How it works: - 1 drop all foreign key constraints - 2 alter type of revision id and foreign keys - 3 create foreign key constraints (using cascade!) - 4 create uuids for revisions (auto cascades elsewhere!) - - @param primary_table_name - table containing the primary key id column - @param foreign_tables - names of tables which have this same key as a - foreign key constraint - @param revision_table_name - if primary_table is versioned, supply the name - of its related revision table, so that it can be updated at the same - time. - ''' - #print('** Processing %s' % primary_table_name) - #print('*** Dropping fk constraints') - dropped_fk_constraints = drop_constraints_and_alter_types(primary_table_name, foreign_tables, revision_table_name) - #print('*** Adding fk constraints (with cascade)') - add_fk_constraints(migrate_engine, dropped_fk_constraints, primary_table_name) - #print('*** Creating UUIDs') - create_uuids(migrate_engine, primary_table_name, revision_table_name) - -def drop_constraints_and_alter_types(primary_table_name, foreign_tables, revision_table_name): - # 1 drop all foreign key constraints - dropped_fk_constraints = [] - primary_table = Table(primary_table_name, metadata, autoload=True) - for table_name in foreign_tables: - table = Table(table_name, metadata, autoload=True) - for constraint in table.constraints.copy(): - if isinstance(constraint, sqlalchemy.schema.ForeignKeyConstraint): - foreign_key_cols = [key.column for key in constraint.elements] - fk_col = foreign_key_cols[0] - if fk_col.table == primary_table: - orig_fk = ForeignKeyConstraint(constraint.columns, foreign_key_cols, name=constraint.name, table=table) - orig_fk.drop() - dropped_fk_constraints.append((constraint.columns, foreign_key_cols, constraint.name, table.name)) - #print 'CON', dropped_fk_constraints[-1] - - # 2 alter type of primary table id and foreign keys - if len(constraint.columns.keys()) != 1: - raise ValueError() - id_col = constraint.table.columns[constraint.columns.keys()[0]] - id_col.alter(type=UnicodeText) - - primary_table = Table(primary_table_name, metadata, autoload=True) - id_col = primary_table.c['id'] - id_col.alter(type=UnicodeText) - - if revision_table_name: - # Revision table id column type changed as well - revision_table = Table(revision_table_name, metadata, autoload=True) - id_col = revision_table.c['id'] - id_col.alter(type=UnicodeText) - - return dropped_fk_constraints - -def add_fk_constraints(migrate_engine, dropped_fk_constraints, primary_table_name): - # 3 create foreign key constraints - for fk_constraint in dropped_fk_constraints: - # cascade doesn't work - # see http://code.google.com/p/sqlalchemy-migrate/issues/detail?id=48 - # new_fk = ForeignKeyConstraint(*fk_constraint, onupdate='CASCADE') - # new_fk = ForeignKeyConstraint(*fk_constraint) - # new_fk.create() - - # So we create via hand ... - constraint_columns, foreign_key_cols, constraint_name, table_name = fk_constraint - # Sanity check - if len(constraint_columns.keys()) != 1: - raise ValueError() - - oursql = '''ALTER TABLE %(table)s - ADD CONSTRAINT %(fkeyname)s - FOREIGN KEY (%(col_name)s) - REFERENCES %(primary_table_name)s (id) - ''' % {'table':table_name, 'fkeyname':constraint_name, - 'col_name':constraint_columns.keys()[0], - 'primary_table_name':primary_table_name} - migrate_engine.execute(oursql) - -def create_uuids(migrate_engine, primary_table_name, revision_table_name): - # have changed type of cols so recreate metadata - metadata = MetaData(migrate_engine) - - # 4 create uuids for primary entities and in related tables - primary_table = Table(primary_table_name, metadata, autoload=True) - if revision_table_name: - revision_table = Table(revision_table_name, metadata, autoload=True) - # fetchall wouldn't be optimal with really large sets of data but here <20k - ids = [ res[0] for res in - migrate_engine.execute(select([primary_table.c.id])).fetchall() ] - for count,id in enumerate(ids): - # if count % 100 == 0: print(count, id) - myuuid = make_uuid() - update = primary_table.update().where(primary_table.c.id==id).values(id=myuuid) - migrate_engine.execute(update) - if revision_table_name: - # ensure each id in revision table match its continuity id. - q = revision_table.update().values(id=revision_table.c.continuity_id) - migrate_engine.execute(q) - - -def drop_sequencies(migrate_engine): - - sequences = ['package_extra', 'package_extra_revision', 'package', - 'package_resource', 'package_resource_revision', - 'package_revision', ' package_tag', 'package_tag_revision', - 'revision', 'tag'] - - for sequence in sequences: - migrate_engine.execute('ALTER TABLE %s ALTER COLUMN id DROP DEFAULT;' % sequence) - - for sequence in sequences: - try: - migrate_engine.execute('drop sequence %s_id_seq;' % sequence) - except sqlalchemy.exc.ProgrammingError as e: - if 'sequence "{}_id_seq" does not exist'.format(sequence) in str(e): - pass - else: - raise - - - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/017_1250b2ff3e36_add_pkg_relationships.py b/ckan/migration/versions/017_1250b2ff3e36_add_pkg_relationships.py new file mode 100644 index 00000000000..9d606d7a6dc --- /dev/null +++ b/ckan/migration/versions/017_1250b2ff3e36_add_pkg_relationships.py @@ -0,0 +1,61 @@ +# encoding: utf-8 +"""017 Add pkg_relationships + +Revision ID: 1250b2ff3e36 +Revises: 37ada738328e +Create Date: 2018-09-04 18:48:53.963557 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '1250b2ff3e36' +down_revision = '37ada738328e' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'package_relationship', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column( + 'subject_package_id', sa.UnicodeText, sa.ForeignKey('package.id') + ), + sa.Column( + 'object_package_id', sa.UnicodeText, sa.ForeignKey('package.id') + ), sa.Column('type', sa.UnicodeText), + sa.Column('comment', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText, sa.ForeignKey('revision.id')) + ) + + op.create_table( + 'package_relationship_revision', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column( + 'subject_package_id', sa.UnicodeText, sa.ForeignKey('package.id') + ), + sa.Column( + 'object_package_id', sa.UnicodeText, sa.ForeignKey('package.id') + ), sa.Column('type', sa.UnicodeText), + sa.Column('comment', sa.UnicodeText), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.UnicodeText, + sa.ForeignKey('package_relationship.id') + ) + ) + + +def downgrade(): + op.drop_table('package_relationship_revision') + op.drop_table('package_relationship') diff --git a/ckan/migration/versions/017_add_pkg_relationships.py b/ckan/migration/versions/017_add_pkg_relationships.py deleted file mode 100644 index f833f40dfae..00000000000 --- a/ckan/migration/versions/017_add_pkg_relationships.py +++ /dev/null @@ -1,41 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import uuid - - -def make_uuid(): - return unicode(uuid.uuid4()) - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - package_table = Table('package', metadata, autoload=True) - - package_relationship_table = Table('package_relationship', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('subject_package_id', UnicodeText, ForeignKey('package.id')), - Column('object_package_id', UnicodeText, ForeignKey('package.id')), - Column('type', UnicodeText), - Column('comment', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id')) - ) - - package_relationship_revision_table = Table('package_relationship_revision', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('subject_package_id', UnicodeText, ForeignKey('package.id')), - Column('object_package_id', UnicodeText, ForeignKey('package.id')), - Column('type', UnicodeText), - Column('comment', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', UnicodeText, ForeignKey('package_relationship.id')) - ) - - package_relationship_table.create() - package_relationship_revision_table.create() - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/018_05a0778051ca_adjust_licenses.py b/ckan/migration/versions/018_05a0778051ca_adjust_licenses.py new file mode 100644 index 00000000000..5f52be55a30 --- /dev/null +++ b/ckan/migration/versions/018_05a0778051ca_adjust_licenses.py @@ -0,0 +1,42 @@ +# encoding: utf-8 +"""018 Adjust licenses + +Revision ID: 05a0778051ca +Revises: 1250b2ff3e36 +Create Date: 2018-09-04 18:48:54.288030 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '05a0778051ca' +down_revision = '1250b2ff3e36' +branch_labels = None +depends_on = None + +tables = ['package', 'package_revision'] + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + for table in tables: + op.drop_column(table, 'license_id') + op.add_column(table, sa.Column('license_id', sa.UnicodeText)) + op.drop_table('license') + + +def downgrade(): + + op.create_table( + 'license', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('name', sa.Unicode(100)), sa.Column('state', sa.UnicodeText) + ) + for table in tables: + op.drop_column(table, 'license_id') + op.add_column( + table, + sa.Column('license_id', sa.Integer, sa.ForeignKey('license.id')) + ) diff --git a/ckan/migration/versions/018_adjust_licenses.py b/ckan/migration/versions/018_adjust_licenses.py deleted file mode 100644 index 4b7c1d6e245..00000000000 --- a/ckan/migration/versions/018_adjust_licenses.py +++ /dev/null @@ -1,180 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import uuid - - -map = { - u'OSI Approved::Mozilla Public License 1.1 (MPL)': 'mozilla1.1', - u'OKD Compliant::Creative Commons Attribution-ShareAlike': 'cc-by-sa', - u'OSI Approved::Nokia Open Source License': 'nokia', - u'OSI Approved::Computer Associates Trusted Open Source License 1.1': 'ca-tosl1.1', - u'OKD Compliant::Higher Education Statistics Agency Copyright with data.gov.uk rights': 'hesa-withrights', - u'OSI Approved::Lucent Public License Version 1.02': 'lucent1.02', - u'OSI Approved::Open Software License': 'osl-3.0', - u'OSI Approved::Motosoto License': 'motosoto', - u'OSI Approved::MIT license': 'mit-license', - u'OSI Approved::Mozilla Public License 1.0 (MPL)': 'mozilla', - u'OSI Approved::GNU General Public License v3 (GPLv3)': 'gpl-3.0', - u'OKD Compliant::UK Click Use PSI': 'ukclickusepsi', - u'OSI Approved::Eiffel Forum License': 'eiffel', - u'OSI Approved::Jabber Open Source License': 'jabber-osl', - u'OSI Approved::Open Group Test Suite License': 'opengroup', - u'OSI Approved::Entessa Public License': 'entessa', - u'OKD Compliant::Other': 'other-open', - u'OSI Approved::EU DataGrid Software License': 'eudatagrid', - u'OSI Approved::Zope Public License': 'zpl', - u'OSI Approved::Naumen Public License': 'naumen', - u'OSI Approved::wxWindows Library License': 'wxwindows', - u'OKD Compliant::GNU Free Documentation License (GFDL)': 'gfdl', - u'Non-OKD Compliant::Non-Commercial Other': 'other-nc', - u'OKD Compliant::Open Data Commons Public Domain Dedication and License (PDDL)': 'odc-pddl', - u'OSI Approved::NASA Open Source Agreement 1.3': 'nasa1.3', - u'OSI Approved::X.Net License': 'xnet', - u'OSI Approved::W3C License': 'W3C', - u'OSI Approved::Academic Free License': 'afl-3.0', - u'Non-OKD Compliant::Crown Copyright': 'ukcrown', - u'OSI Approved::RealNetworks Public Source License V1.0': 'real', - u'OSI Approved::Common Development and Distribution License': 'cddl1', - u'OSI Approved::Intel Open Source License': 'intel-osl', - u'OSI Approved::GNU General Public License (GPL)': 'gpl-2.0', - u'Non-OKD Compliant::Creative Commons Non-Commercial (Any)': 'cc-nc', - u'Non-OKD Compliant::Other': 'other-closed', - u'Other::License Not Specified': 'notspecified', - u'OSI Approved::Sybase Open Watcom Public License 1.0': 'sybase', - u'OSI Approved::Educational Community License': 'ecl2', - u'OSI Approved::Sun Industry Standards Source License (SISSL)': 'sun-issl', - u'OKD Compliant::Other (Public Domain)': 'other-pd', - u'OKD Compliant::Public Domain': 'other-pd', - u'OKD Compliant::Creative Commons Attribution': 'cc-by', - u'OSI Approved::OCLC Research Public License 2.0': 'oclc2', - u'OSI Approved::Artistic license': 'artistic-license-2.0', - u'OKD Compliant::Other (Attribution)': 'other-at', - u'OSI Approved::Sleepycat License': 'sleepycat', - u'OSI Approved::PHP License': 'php', - u'OKD Compliant::Creative Commons CCZero': 'cc-zero', - u'OSI Approved::University of Illinois/NCSA Open Source License': 'UoI-NCSA', - u'OSI Approved::Adaptive Public License': 'apl1.0', - u'OSI Approved::Ricoh Source Code Public License': 'ricohpl', - u'OSI Approved::Eiffel Forum License V2.0': 'ver2_eiffel', - u'OSI Approved::Python license (CNRI Python License)': 'pythonpl', - u'OSI Approved::Frameworx License': 'frameworx', - u'OSI Approved::IBM Public License': 'ibmpl', - u'OSI Approved::Fair License': 'fair', - u'OSI Approved::Lucent Public License (Plan9)': 'lucent-plan9', - u'OSI Approved::Nethack General Public License': 'nethack', - u'OSI Approved::Common Public License 1.0': 'cpal_1.0', - u'OSI Approved::Attribution Assurance Licenses': 'attribution', - u'OSI Approved::Reciprocal Public License': 'rpl1.5', - u'OSI Approved::Eclipse Public License': 'eclipse-1.0', - u'OSI Approved::CUA Office Public License Version 1.0': 'cuaoffice', - u'OSI Approved::Vovida Software License v. 1.0': 'vovidapl', - u'OSI Approved::Apple Public Source License': 'apsl-2.0', - u'OKD Compliant::UK Crown Copyright with data.gov.uk rights': 'ukcrown-withrights', - u'OKD Compliant::Local Authority Copyright with data.gov.uk rights': 'localauth-withrights', - u'OKD Compliant::Open Data Commons Open Database License (ODbL)': 'odc-odbl', - u'OSI Approved::New BSD license': 'bsd-license', - u'OSI Approved::Qt Public License (QPL)': 'qtpl', - u'OSI Approved::GNU Library or "Lesser" General Public License (LGPL)': 'lgpl-2.1', - u'OSI Approved::MITRE Collaborative Virtual Workspace License (CVW License)': 'mitre', - u'OSI Approved::Apache License, 2.0': 'apache2.0', - u'OSI Approved::Apache Software License': 'apache', - u'OSI Approved::Python Software Foundation License': 'PythonSoftFoundation', - u'OSI Approved::Sun Public License': 'sunpublic', - u'OSI Approved::zlib/libpng license': 'zlib-license' -} - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - #print("Changing package license_ids to strings.") - - # Get licenses, package license ids, and package revision license ids. - old_license_titles = _get_old_license_titles(migrate_engine) - old_package_license_ids = _get_old_package_license_ids(migrate_engine) - old_package_revision_license_ids = _get_old_package_revision_license_ids(migrate_engine) - _check_map_has_old_license_titles(old_license_titles, map) - - # Upgrade database scheme. - drop_fk_constraint_on_package_table = "ALTER TABLE package DROP CONSTRAINT package_license_id_fkey;" - drop_fk_constraint_on_package_revision_table = "ALTER TABLE package_revision DROP CONSTRAINT package_revision_license_id_fkey;" - change_license_id_type_on_package_table = "ALTER TABLE package ALTER COLUMN license_id TYPE text;" - change_license_id_type_on_package_revision_table = "ALTER TABLE package_revision ALTER COLUMN license_id TYPE text;" - drop_licenses_table = "DROP TABLE license CASCADE;" - - migrate_engine.execute(drop_fk_constraint_on_package_table) - migrate_engine.execute(drop_fk_constraint_on_package_revision_table) - migrate_engine.execute(change_license_id_type_on_package_table) - migrate_engine.execute(change_license_id_type_on_package_revision_table) - migrate_engine.execute(drop_licenses_table) - - # Set package license ids, and package revision license ids. - new_package_license_ids = _switch_package_license_ids( - old_package_license_ids, old_license_titles, map) - new_package_revision_license_ids = _switch_package_license_ids( - old_package_revision_license_ids, old_license_titles, map) - _set_new_package_license_ids(migrate_engine, new_package_license_ids) - _set_new_package_revision_license_ids(migrate_engine, new_package_revision_license_ids) - -def downgrade(migrate_engine): - raise NotImplementedError() - -def _check_map_has_old_license_titles(old_license_titles, map): - for title in old_license_titles.values(): - if title not in map: - raise Exception("The old license title '%s' wasn't found in the upgrade map. Decide which new license id should be substituted for this license and add an entry to the map (in ckan/migration/versions/018_adjust_licenses.py)." % title) - -def _get_old_license_titles(migrate_engine): - "Returns a dict of old license titles, keyed by old license id." - titles = {} - select_licenses = "SELECT id, name FROM license;" - q = migrate_engine.execute(select_licenses) - for id, title in q: - titles[id] = title - return titles - -def _get_old_package_license_ids(migrate_engine): - "Returns a dict of old license ids, keyed by package id." - old_ids = {} - select_licenses = "SELECT id, license_id FROM package;" - q = migrate_engine.execute(select_licenses) - for id, license_id in q: - old_ids[id] = license_id - return old_ids - -def _get_old_package_revision_license_ids(migrate_engine): - "Returns a dict of old license ids, keyed by package_revision id." - old_ids = {} - select_licenses = "SELECT id, license_id FROM package_revision;" - q = migrate_engine.execute(select_licenses) - for id, license_id in q: - old_ids[id] = license_id - return old_ids - -def _switch_package_license_ids(old_ids, old_license_titles, map): - "Returns a dict of new license ids, keyed by package id." - new_ids = {} - for (package_id, old_license_id) in old_ids.items(): - if old_license_id != None: - old_license_title = old_license_titles[old_license_id] - new_license_id = map[old_license_title] - new_ids[package_id] = new_license_id - print("Switched license_id %s to %s" % (old_license_id, new_license_id)) - return new_ids - -def _set_new_package_license_ids(migrate_engine, new_ids): - for (package_id, license_id) in new_ids.items(): - _set_package_license_id(migrate_engine, package_id, license_id) - -def _set_package_license_id(migrate_engine, package_id, license_id): - set_package_license_id = """UPDATE package SET license_id ='%s' where id = '%s';""" % (license_id, package_id) - migrate_engine.execute(set_package_license_id) - -def _set_new_package_revision_license_ids(migrate_engine, new_ids): - for (package_id, license_id) in new_ids.items(): - _set_package_revision_license_id(migrate_engine, package_id, license_id) - -def _set_package_revision_license_id(migrate_engine, package_id, license_id): - set_package_license_id = """UPDATE package_revision SET license_id ='%s' where id = '%s';""" % (license_id, package_id) - migrate_engine.execute(set_package_license_id) diff --git a/ckan/migration/versions/019_b2eb6f34a638_pkg_relationships_state.py b/ckan/migration/versions/019_b2eb6f34a638_pkg_relationships_state.py new file mode 100644 index 00000000000..ad23e8c7e24 --- /dev/null +++ b/ckan/migration/versions/019_b2eb6f34a638_pkg_relationships_state.py @@ -0,0 +1,30 @@ +# encoding: utf-8 +"""019 Pkg relationships_state + +Revision ID: b2eb6f34a638 +Revises: 05a0778051ca +Create Date: 2018-09-04 18:48:54.620241 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'b2eb6f34a638' +down_revision = '05a0778051ca' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('package_relationship', sa.Column('state', sa.UnicodeText)) + op.add_column( + 'package_relationship_revision', sa.Column('state', sa.UnicodeText) + ) + + +def downgrade(): + op.drop_column('package_relationship', 'state') + op.drop_column('package_relationship_revision', 'state') diff --git a/ckan/migration/versions/019_pkg_relationships_state.py b/ckan/migration/versions/019_pkg_relationships_state.py deleted file mode 100644 index e70ad48a21c..00000000000 --- a/ckan/migration/versions/019_pkg_relationships_state.py +++ /dev/null @@ -1,26 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - package_relationship_table = Table('package_relationship', - metadata, autoload=True) - package_relationship_revision_table = Table('package_relationship_revision', - metadata, autoload=True) - - state_column = Column('state', UnicodeText) - state_column.create(package_relationship_table) - state_column = Column('state', UnicodeText) - state_column.create(package_relationship_revision_table) - # No package relationship objects exist to migrate, so no - # need to populate state column - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/020_69a0b0efc609_add_changeset.py b/ckan/migration/versions/020_69a0b0efc609_add_changeset.py new file mode 100644 index 00000000000..e8fc4db68f2 --- /dev/null +++ b/ckan/migration/versions/020_69a0b0efc609_add_changeset.py @@ -0,0 +1,71 @@ +# encoding: utf-8 +"""020 Add changeset + +Revision ID: 69a0b0efc609 +Revises: b2eb6f34a638 +Create Date: 2018-09-04 18:48:54.952113 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '69a0b0efc609' +down_revision = 'b2eb6f34a638' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'changeset', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('closes_id', sa.UnicodeText, nullable=True), + sa.Column('follows_id', sa.UnicodeText, nullable=True), + sa.Column('meta', sa.UnicodeText, nullable=True), + sa.Column('branch', sa.UnicodeText, nullable=True), + sa.Column( + 'timestamp', + sa.DateTime, + server_default=sa.func.current_timestamp() + ), + sa.Column('is_working', sa.Boolean, default=False), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + nullable=True + ), + sa.Column( + 'added_here', + sa.DateTime, + server_default=sa.func.current_timestamp() + ), + ) + + op.create_table( + 'change', + sa.Column('ref', sa.UnicodeText, nullable=True), + sa.Column('diff', sa.UnicodeText, nullable=True), + sa.Column( + 'changeset_id', sa.UnicodeText, sa.ForeignKey('changeset.id') + ), + ) + + op.create_table( + 'changemask', + sa.Column('ref', sa.UnicodeText, primary_key=True), + sa.Column( + 'timestamp', + sa.DateTime, + server_default=sa.func.current_timestamp() + ), + ) + + +def downgrade(): + op.drop_table('changeset') + op.drop_table('change') + op.drop_table('changemask') diff --git a/ckan/migration/versions/020_add_changeset.py b/ckan/migration/versions/020_add_changeset.py deleted file mode 100644 index 4c41a6c1d33..00000000000 --- a/ckan/migration/versions/020_add_changeset.py +++ /dev/null @@ -1,47 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import datetime -from migrate.changeset.constraint import PrimaryKeyConstraint - - - -def upgrade(migrate_engine): - metadata = MetaData() - - revision_table = Table('revision', metadata, - Column('id', UnicodeText, primary_key=True), - ) - - changeset_table = Table('changeset', metadata, - Column('id', UnicodeText, primary_key=True), - Column('closes_id', UnicodeText, nullable=True), - Column('follows_id', UnicodeText, nullable=True), - Column('meta', UnicodeText, nullable=True), - Column('branch', UnicodeText, nullable=True), - Column('timestamp', DateTime, default=datetime.datetime.utcnow), - Column('is_working', Boolean, default=False), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), nullable=True), - Column('added_here', DateTime, default=datetime.datetime.utcnow), - ) - - change_table = Table('change', metadata, - Column('ref', UnicodeText, nullable=True), - Column('diff', UnicodeText, nullable=True), - Column('changeset_id', UnicodeText, ForeignKey('changeset.id')), - ) - - changemask_table = Table('changemask', metadata, - Column('ref', UnicodeText, primary_key=True), - Column('timestamp', DateTime, default=datetime.datetime.utcnow), - ) - metadata.bind = migrate_engine - changeset_table.create() - change_table.create() - changemask_table.create() - -def downgrade(migrate_engine): - change_table.drop() - changeset_table.drop() - diff --git a/ckan/migration/versions/021_765143af2ba3_postgresql_upgrade_sql.py b/ckan/migration/versions/021_765143af2ba3_postgresql_upgrade_sql.py new file mode 100644 index 00000000000..babdd7c8199 --- /dev/null +++ b/ckan/migration/versions/021_765143af2ba3_postgresql_upgrade_sql.py @@ -0,0 +1,105 @@ +# encoding: utf-8 +"""021 Postgresql upgrade.sql + +Revision ID: 765143af2ba3 +Revises: 4a8577e55a02 +Create Date: 2018-09-04 18:48:55.958481 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '765143af2ba3' +down_revision = '69a0b0efc609' +branch_labels = None +depends_on = None + +indexes = ( + ('idx_extra_pkg_id', 'package_extra', ['package_id']), + ('idx_extra_id_pkg_id', 'package_extra', ['id', 'package_id']), + ('idx_group_pkg_id', 'package_group', ['package_id']), + ('idx_extra_grp_id_pkg_id', 'package_group', ['group_id', 'package_id']), + ('idx_pkg_id', 'package', ['id']), + ('idx_pkg_name', 'package', ['name']), + ('idx_pkg_title', 'package', ['title']), + ('idx_pkg_lname', 'package', [sa.text('lower(name)')]), + ('idx_pkg_uname', 'package', [sa.text('upper(name)')]), + ('idx_pkg_rev_id', 'package', ['revision_id']), + ('idx_pkg_sid', 'package', ['id', 'state']), + ('idx_pkg_sname', 'package', ['name', 'state']), + ('idx_pkg_stitle', 'package', ['title', 'state']), + ('idx_pkg_slname', 'package', [sa.text('lower(name)'), 'state']), + ('idx_pkg_suname', 'package', [sa.text('upper(name)'), 'state']), + ('idx_pkg_srev_id', 'package', ['revision_id', 'state']), + ('idx_pkg_revision_id', 'package_revision', ['id']), + ('idx_pkg_revision_name', 'package_revision', ['name']), + ('idx_pkg_revision_rev_id', 'package_revision', ['revision_id']), + ('idx_rev_state', 'revision', ['state']), + ('idx_tag_id', 'tag', ['id']), + ('idx_tag_name', 'tag', ['name']), + ('idx_package_tag_id', 'package_tag', ['id']), + ('idx_package_tag_tag_id', 'package_tag', ['tag_id']), + ('idx_package_tag_pkg_id', 'package_tag', ['package_id']), + ('idx_package_tag_pkg_id_tag_id', 'package_tag', ['tag_id', 'package_id']), + ('idx_package_tag_revision_id', 'package_tag_revision', ['id']), + ('idx_package_tag_revision_tag_id', 'package_tag_revision', ['tag_id']), + ( + 'idx_package_tag_revision_rev_id', 'package_tag_revision', + ['revision_id'] + ), + ( + 'idx_package_tag_revision_pkg_id', 'package_tag_revision', + ['package_id'] + ), + ( + 'idx_package_tag_revision_pkg_id_tag_id', 'package_tag_revision', + ['tag_id', 'package_id'] + ), + ('idx_rating_id', 'rating', ['id']), + ('idx_rating_user_id', 'rating', ['user_id']), + ('idx_rating_package_id', 'rating', ['package_id']), + ('idx_user_id', 'user', ['id']), + ('idx_user_name', 'user', ['name']), + # ('idx_uor_id', 'user_object_role', ['id']), + # ('idx_uor_user_id', 'user_object_role', ['user_id']), + ('idx_uor_context', 'user_object_role', ['context']), + ('idx_uor_role', 'user_object_role', ['role']), + ('idx_uor_user_id_role', 'user_object_role', ['user_id', 'role']), + ('idx_ra_role', 'role_action', ['role']), + ('idx_ra_action', 'role_action', ['action']), + ('idx_ra_role_action', 'role_action', ['action', 'role']), + ('idx_group_id', 'group', ['id']), + ('idx_group_name', 'group', ['name']), + ('idx_package_group_id', 'package_group', ['id']), + ('idx_package_group_group_id', 'package_group', ['group_id']), + ('idx_package_group_pkg_id', 'package_group', ['package_id']), + ( + 'idx_package_group_pkg_id_group_id', 'package_group', + ['group_id', 'package_id'] + ), + ('idx_package_resource_id', 'package_resource', ['id']), + ('idx_package_resource_url', 'package_resource', ['url']), + ('idx_package_resource_pkg_id', 'package_resource', ['package_id']), + ( + 'idx_package_resource_pkg_id_resource_id', 'package_resource', + ['package_id', 'id'] + ), + ( + 'idx_package_resource_rev_id', 'package_resource_revision', + ['revision_id'] + ), + ('idx_package_extra_rev_id', 'package_extra_revision', ['revision_id']), +) + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + for name, table, columns in indexes: + op.create_index(name, table, columns) + + +def downgrade(): + for name, table, _ in indexes: + op.drop_index(name, table) diff --git a/ckan/migration/versions/021_postgres_downgrade.sql b/ckan/migration/versions/021_postgres_downgrade.sql deleted file mode 100644 index 332126148a4..00000000000 --- a/ckan/migration/versions/021_postgres_downgrade.sql +++ /dev/null @@ -1 +0,0 @@ -# NOP \ No newline at end of file diff --git a/ckan/migration/versions/021_postgres_upgrade.sql b/ckan/migration/versions/021_postgres_upgrade.sql deleted file mode 100644 index af97af7e462..00000000000 --- a/ckan/migration/versions/021_postgres_upgrade.sql +++ /dev/null @@ -1,73 +0,0 @@ -CREATE INDEX idx_extra_pkg_id ON package_extra (package_id); -CREATE INDEX idx_extra_id_pkg_id ON package_extra (id, package_id); - -CREATE INDEX idx_group_pkg_id ON package_group (package_id); -CREATE INDEX idx_extra_grp_id_pkg_id ON package_group (group_id, package_id); - -CREATE INDEX idx_pkg_id ON package (id); -CREATE INDEX idx_pkg_name ON package (name); -CREATE INDEX idx_pkg_title ON package (title); -CREATE INDEX idx_pkg_lname ON package (lower(name)); -CREATE INDEX idx_pkg_uname ON package (upper(name)); -CREATE INDEX idx_pkg_rev_id ON package (revision_id); - -CREATE INDEX idx_pkg_sid ON package (id,state); -CREATE INDEX idx_pkg_sname ON package (name,state); -CREATE INDEX idx_pkg_stitle ON package (title,state); -CREATE INDEX idx_pkg_slname ON package (lower(name),state); -CREATE INDEX idx_pkg_suname ON package (upper(name),state); -CREATE INDEX idx_pkg_srev_id ON package (revision_id,state); - -CREATE INDEX idx_pkg_revision_id ON package_revision (id); -CREATE INDEX idx_pkg_revision_name ON package_revision (name); -CREATE INDEX idx_pkg_revision_rev_id ON package_revision (revision_id); - -CREATE INDEX idx_rev_state ON revision (state); - -CREATE INDEX idx_tag_id ON tag (id); -CREATE INDEX idx_tag_name ON tag (name); - -CREATE INDEX idx_package_tag_id ON package_tag (id); -CREATE INDEX idx_package_tag_tag_id ON package_tag (tag_id); -CREATE INDEX idx_package_tag_pkg_id ON package_tag (package_id); -CREATE INDEX idx_package_tag_pkg_id_tag_id ON package_tag (tag_id, package_id); - -CREATE INDEX idx_package_tag_revision_id ON package_tag_revision (id); -CREATE INDEX idx_package_tag_revision_tag_id ON package_tag_revision (tag_id); -CREATE INDEX idx_package_tag_revision_rev_id ON package_tag_revision (revision_id); -CREATE INDEX idx_package_tag_revision_pkg_id ON package_tag_revision (package_id); -CREATE INDEX idx_package_tag_revision_pkg_id_tag_id ON package_tag_revision (tag_id, package_id); - -CREATE INDEX idx_rating_id ON rating (id); -CREATE INDEX idx_rating_user_id ON rating (user_id); -CREATE INDEX idx_rating_package_id ON rating (package_id); - -CREATE INDEX idx_user_id ON "user" (id); -CREATE INDEX idx_user_name ON "user" (name); - -CREATE INDEX idx_uor_id ON user_object_role (id); -CREATE INDEX idx_uor_user_id ON user_object_role (user_id); -CREATE INDEX idx_uor_context ON user_object_role (context); -CREATE INDEX idx_uor_role ON user_object_role (role); - -CREATE INDEX idx_uor_user_id_role ON user_object_role (user_id,role); -CREATE INDEX idx_ra_role ON role_action (role); -CREATE INDEX idx_ra_action ON role_action (action); -CREATE INDEX idx_ra_role_action ON role_action (action,role); - -CREATE INDEX idx_group_id ON "group" (id); -CREATE INDEX idx_group_name ON "group" (name); - -CREATE INDEX idx_package_group_id ON package_group (id); -CREATE INDEX idx_package_group_group_id ON package_group (group_id); -CREATE INDEX idx_package_group_pkg_id ON package_group (package_id); -CREATE INDEX idx_package_group_pkg_id_group_id ON package_group (group_id, package_id); - -CREATE INDEX idx_package_resource_id ON package_resource (id); -CREATE INDEX idx_package_resource_url ON package_resource (url); -CREATE INDEX idx_package_resource_pkg_id ON package_resource (package_id); -CREATE INDEX idx_package_resource_pkg_id_resource_id ON package_resource (package_id, id); - -CREATE INDEX idx_package_resource_rev_id ON package_resource_revision (revision_id); -CREATE INDEX idx_package_extra_rev_id ON package_extra_revision (revision_id); - diff --git a/ckan/migration/versions/021_postgresql_downgrade.sql b/ckan/migration/versions/021_postgresql_downgrade.sql deleted file mode 100644 index 332126148a4..00000000000 --- a/ckan/migration/versions/021_postgresql_downgrade.sql +++ /dev/null @@ -1 +0,0 @@ -# NOP \ No newline at end of file diff --git a/ckan/migration/versions/021_postgresql_upgrade.sql b/ckan/migration/versions/021_postgresql_upgrade.sql deleted file mode 100644 index af97af7e462..00000000000 --- a/ckan/migration/versions/021_postgresql_upgrade.sql +++ /dev/null @@ -1,73 +0,0 @@ -CREATE INDEX idx_extra_pkg_id ON package_extra (package_id); -CREATE INDEX idx_extra_id_pkg_id ON package_extra (id, package_id); - -CREATE INDEX idx_group_pkg_id ON package_group (package_id); -CREATE INDEX idx_extra_grp_id_pkg_id ON package_group (group_id, package_id); - -CREATE INDEX idx_pkg_id ON package (id); -CREATE INDEX idx_pkg_name ON package (name); -CREATE INDEX idx_pkg_title ON package (title); -CREATE INDEX idx_pkg_lname ON package (lower(name)); -CREATE INDEX idx_pkg_uname ON package (upper(name)); -CREATE INDEX idx_pkg_rev_id ON package (revision_id); - -CREATE INDEX idx_pkg_sid ON package (id,state); -CREATE INDEX idx_pkg_sname ON package (name,state); -CREATE INDEX idx_pkg_stitle ON package (title,state); -CREATE INDEX idx_pkg_slname ON package (lower(name),state); -CREATE INDEX idx_pkg_suname ON package (upper(name),state); -CREATE INDEX idx_pkg_srev_id ON package (revision_id,state); - -CREATE INDEX idx_pkg_revision_id ON package_revision (id); -CREATE INDEX idx_pkg_revision_name ON package_revision (name); -CREATE INDEX idx_pkg_revision_rev_id ON package_revision (revision_id); - -CREATE INDEX idx_rev_state ON revision (state); - -CREATE INDEX idx_tag_id ON tag (id); -CREATE INDEX idx_tag_name ON tag (name); - -CREATE INDEX idx_package_tag_id ON package_tag (id); -CREATE INDEX idx_package_tag_tag_id ON package_tag (tag_id); -CREATE INDEX idx_package_tag_pkg_id ON package_tag (package_id); -CREATE INDEX idx_package_tag_pkg_id_tag_id ON package_tag (tag_id, package_id); - -CREATE INDEX idx_package_tag_revision_id ON package_tag_revision (id); -CREATE INDEX idx_package_tag_revision_tag_id ON package_tag_revision (tag_id); -CREATE INDEX idx_package_tag_revision_rev_id ON package_tag_revision (revision_id); -CREATE INDEX idx_package_tag_revision_pkg_id ON package_tag_revision (package_id); -CREATE INDEX idx_package_tag_revision_pkg_id_tag_id ON package_tag_revision (tag_id, package_id); - -CREATE INDEX idx_rating_id ON rating (id); -CREATE INDEX idx_rating_user_id ON rating (user_id); -CREATE INDEX idx_rating_package_id ON rating (package_id); - -CREATE INDEX idx_user_id ON "user" (id); -CREATE INDEX idx_user_name ON "user" (name); - -CREATE INDEX idx_uor_id ON user_object_role (id); -CREATE INDEX idx_uor_user_id ON user_object_role (user_id); -CREATE INDEX idx_uor_context ON user_object_role (context); -CREATE INDEX idx_uor_role ON user_object_role (role); - -CREATE INDEX idx_uor_user_id_role ON user_object_role (user_id,role); -CREATE INDEX idx_ra_role ON role_action (role); -CREATE INDEX idx_ra_action ON role_action (action); -CREATE INDEX idx_ra_role_action ON role_action (action,role); - -CREATE INDEX idx_group_id ON "group" (id); -CREATE INDEX idx_group_name ON "group" (name); - -CREATE INDEX idx_package_group_id ON package_group (id); -CREATE INDEX idx_package_group_group_id ON package_group (group_id); -CREATE INDEX idx_package_group_pkg_id ON package_group (package_id); -CREATE INDEX idx_package_group_pkg_id_group_id ON package_group (group_id, package_id); - -CREATE INDEX idx_package_resource_id ON package_resource (id); -CREATE INDEX idx_package_resource_url ON package_resource (url); -CREATE INDEX idx_package_resource_pkg_id ON package_resource (package_id); -CREATE INDEX idx_package_resource_pkg_id_resource_id ON package_resource (package_id, id); - -CREATE INDEX idx_package_resource_rev_id ON package_resource_revision (revision_id); -CREATE INDEX idx_package_extra_rev_id ON package_extra_revision (revision_id); - diff --git a/ckan/migration/versions/022_7b324ca6c0dc_add_group_extras.py b/ckan/migration/versions/022_7b324ca6c0dc_add_group_extras.py new file mode 100644 index 00000000000..ec46bf5a4ce --- /dev/null +++ b/ckan/migration/versions/022_7b324ca6c0dc_add_group_extras.py @@ -0,0 +1,32 @@ +# encoding: utf-8 +"""022 Add group_extras + +Revision ID: 7b324ca6c0dc +Revises: c7743043ed99 +Create Date: 2018-09-04 18:48:56.635671 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '7b324ca6c0dc' +down_revision = '765143af2ba3' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'group_extra', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('group_id', sa.UnicodeText, sa.ForeignKey('group.id')), + sa.Column('key', sa.UnicodeText), + sa.Column('value', sa.UnicodeText), + ) + + +def downgrade(): + op.drop_table('group_extra') diff --git a/ckan/migration/versions/022_add_group_extras.py b/ckan/migration/versions/022_add_group_extras.py deleted file mode 100644 index 06db6479a8a..00000000000 --- a/ckan/migration/versions/022_add_group_extras.py +++ /dev/null @@ -1,53 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset -import vdm.sqlalchemy -import uuid -from sqlalchemy import types - -from ckan.common import json - -class JsonType(types.TypeDecorator): - '''Store data as JSON serializing on save and unserializing on use. - ''' - impl = types.UnicodeText - - def process_bind_param(self, value, engine): - if value is None or value == {}: # ensure we stores nulls in db not json "null" - return None - else: - # ensure_ascii=False => allow unicode but still need to convert - return unicode(json.dumps(value, ensure_ascii=False)) - - def process_result_value(self, value, engine): - if value is None: - return None - else: - return json.loads(value) - - def copy(self): - return JsonType(self.impl.length) - -def make_uuid(): - return unicode(uuid.uuid4()) - - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - group_table = Table('group', metadata, autoload=True) - group_extra_table = Table('group_extra', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('group_id', UnicodeText, ForeignKey('group.id')), - Column('key', UnicodeText), - Column('value', JsonType), - ) - - group_extra_table.create() - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/023_87fdd05f0744_add_harvesting.py b/ckan/migration/versions/023_87fdd05f0744_add_harvesting.py new file mode 100644 index 00000000000..6b5889a70a3 --- /dev/null +++ b/ckan/migration/versions/023_87fdd05f0744_add_harvesting.py @@ -0,0 +1,52 @@ +# encoding: utf-8 +"""023 Add harvesting + +Revision ID: 87fdd05f0744 +Revises: 7b324ca6c0dc +Create Date: 2018-09-04 18:48:56.975156 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '87fdd05f0744' +down_revision = '7b324ca6c0dc' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'harvest_source', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('status', sa.UnicodeText, server_default=u'New'), + sa.Column('url', sa.UnicodeText, unique=True, nullable=False), + sa.Column('description', sa.UnicodeText, default=u''), + sa.Column('user_ref', sa.UnicodeText, default=u''), + sa.Column('publisher_ref', sa.UnicodeText, default=u''), + sa.Column( + 'created', sa.DateTime, server_default=sa.func.current_timestamp() + ), + ) + + op.create_table( + 'harvesting_job', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('status', sa.UnicodeText, default=u'', nullable=False), + sa.Column( + 'created', sa.DateTime, server_default=sa.func.current_timestamp() + ), + sa.Column('user_ref', sa.UnicodeText, nullable=False), + sa.Column('report', sa.UnicodeText, default=u''), + sa.Column( + 'source_id', sa.UnicodeText, sa.ForeignKey('harvest_source.id') + ), + ) + + +def downgrade(): + op.drop_table('harvesting_job') + op.drop_table('harvest_source') diff --git a/ckan/migration/versions/023_add_harvesting.py b/ckan/migration/versions/023_add_harvesting.py deleted file mode 100644 index b110285cfcc..00000000000 --- a/ckan/migration/versions/023_add_harvesting.py +++ /dev/null @@ -1,42 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import datetime -import uuid -from migrate.changeset.constraint import PrimaryKeyConstraint - - -def make_uuid(): - return unicode(uuid.uuid4()) - -def upgrade(migrate_engine): - metadata = MetaData() - harvest_source_table = Table('harvest_source', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('status', UnicodeText, default=u'New'), - Column('url', UnicodeText, unique=True, nullable=False), - Column('description', UnicodeText, default=u''), - Column('user_ref', UnicodeText, default=u''), - Column('publisher_ref', UnicodeText, default=u''), - Column('created', DateTime, default=datetime.datetime.utcnow), - ) - - harvesting_job_table = Table('harvesting_job', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('status', UnicodeText, default=u'', nullable=False), - Column('created', DateTime, default=datetime.datetime.utcnow), - Column('user_ref', UnicodeText, nullable=False), - Column('report', UnicodeText, default=u''), - Column('source_id', UnicodeText, ForeignKey('harvest_source.id')), - ) - - metadata.bind = migrate_engine - harvest_source_table.create(checkfirst=True) - harvesting_job_table.create(checkfirst=True) - -def downgrade(migrate_engine): - metadata.bind = migrate_engine - harvesting_job_table.drop() - harvest_source_table.drop() - diff --git a/ckan/migration/versions/024_12981fe12484_add_harvested_document.py b/ckan/migration/versions/024_12981fe12484_add_harvested_document.py new file mode 100644 index 00000000000..7ea7a11c578 --- /dev/null +++ b/ckan/migration/versions/024_12981fe12484_add_harvested_document.py @@ -0,0 +1,32 @@ +# encoding: utf-8 +"""024 Add harvested_document + +Revision ID: 12981fe12484 +Revises: 87fdd05f0744 +Create Date: 2018-09-04 18:48:57.309349 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '12981fe12484' +down_revision = '87fdd05f0744' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'harvested_document', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('created', sa.DateTime), + sa.Column('url', sa.UnicodeText, nullable=False), + sa.Column('content', sa.UnicodeText, nullable=False), + ) + + +def downgrade(): + op.drop_table('harvested_document') diff --git a/ckan/migration/versions/024_add_harvested_document.py b/ckan/migration/versions/024_add_harvested_document.py deleted file mode 100644 index 558e98cb6df..00000000000 --- a/ckan/migration/versions/024_add_harvested_document.py +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import datetime - - -def upgrade(migrate_engine): - metadata = MetaData() - harvested_document_table = Table('harvested_document', metadata, - Column('id', UnicodeText, primary_key=True), - Column('created', DateTime), - Column('url', UnicodeText, nullable=False), - Column('content', UnicodeText, nullable=False), - ) - metadata.bind = migrate_engine - harvested_document_table.create() - -def downgrade(migrate_engine): - metadata.bind = migrate_engine - harvested_document_table.drop() - diff --git a/ckan/migration/versions/025_add_authorization_groups.py b/ckan/migration/versions/025_add_authorization_groups.py deleted file mode 100644 index 75c74e672e8..00000000000 --- a/ckan/migration/versions/025_add_authorization_groups.py +++ /dev/null @@ -1,58 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -from datetime import datetime -import migrate.changeset -import vdm.sqlalchemy -import uuid -from sqlalchemy import types - -def make_uuid(): - return unicode(uuid.uuid4()) - - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - user_table = Table('user', metadata, autoload=True) - - authorization_group_table = Table('authorization_group', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('name', UnicodeText), - Column('created', DateTime, default=datetime.now), - ) - - authorization_group_user_table = Table('authorization_group_user', metadata, - Column('authorization_group_id', UnicodeText, ForeignKey('authorization_group.id'), nullable=False), - Column('user_id', UnicodeText, ForeignKey('user.id'), nullable=False) - ) - - # make user nullable: - user_object_role_table = Table('user_object_role', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('user_id', UnicodeText, ForeignKey('user.id'), nullable=True), - Column('context', UnicodeText, nullable=False), - Column('role', UnicodeText) - ) - - authorization_group_role_table = Table('authorization_group_role', metadata, - Column('user_object_role_id', UnicodeText, ForeignKey('user_object_role.id'), primary_key=True), - Column('authorization_group_id', UnicodeText, ForeignKey('authorization_group.id')), - ) - - authorization_group_table.create() - authorization_group_user_table.create() - authorization_group_role_table.create() - authorization_group_id = Column('authorized_group_id', UnicodeText, - ForeignKey('authorization_group.id'), nullable=True) - authorization_group_id.create(user_object_role_table) - -def downgrade(migrate_engine): - raise NotImplementedError() - - - - diff --git a/ckan/migration/versions/025_b581622ad327_add_authorization_groups.py b/ckan/migration/versions/025_b581622ad327_add_authorization_groups.py new file mode 100644 index 00000000000..fe4b1e9eed5 --- /dev/null +++ b/ckan/migration/versions/025_b581622ad327_add_authorization_groups.py @@ -0,0 +1,79 @@ +# encoding: utf-8 +"""025 Add authorization groups + +Revision ID: b581622ad327 +Revises: 12981fe12484 +Create Date: 2018-09-04 18:48:57.649187 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'b581622ad327' +down_revision = '12981fe12484' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'authorization_group', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('name', sa.UnicodeText), + sa.Column( + 'created', sa.DateTime, server_default=sa.func.current_timestamp() + ), + ) + + op.create_table( + 'authorization_group_user', + sa.Column( + 'authorization_group_id', + sa.UnicodeText, + sa.ForeignKey('authorization_group.id'), + nullable=False + ), + sa.Column( + 'user_id', + sa.UnicodeText, + sa.ForeignKey('user.id'), + nullable=False + ) + ) + # make user nullable: + op.alter_column('user_object_role', 'user_id', nullable=True) + + op.create_table( + 'authorization_group_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + sa.Column( + 'authorization_group_id', sa.UnicodeText, + sa.ForeignKey('authorization_group.id') + ), + ) + + op.add_column( + 'user_object_role', + sa.Column( + 'authorized_group_id', + sa.UnicodeText, + sa.ForeignKey('authorization_group.id'), + nullable=True + ) + ) + + +def downgrade(): + op.drop_column('user_object_role', 'authorized_group_id') + op.drop_table('authorization_group_role') + op.alter_column('user_object_role', 'user_id', nullable=False) + op.drop_table('authorization_group_user') + op.drop_table('authorization_group') diff --git a/ckan/migration/versions/026_3615b25af443_authorization_group_user_pk.py b/ckan/migration/versions/026_3615b25af443_authorization_group_user_pk.py new file mode 100644 index 00000000000..7af7c45da37 --- /dev/null +++ b/ckan/migration/versions/026_3615b25af443_authorization_group_user_pk.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""026 Authorization group user pk + +Revision ID: 3615b25af443 +Revises: b581622ad327 +Create Date: 2018-09-04 18:48:57.988110 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '3615b25af443' +down_revision = 'b581622ad327' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/026_authorization_group_user_pk.py b/ckan/migration/versions/026_authorization_group_user_pk.py deleted file mode 100644 index 8e788a27c7f..00000000000 --- a/ckan/migration/versions/026_authorization_group_user_pk.py +++ /dev/null @@ -1,37 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -from datetime import datetime -import migrate.changeset -import vdm.sqlalchemy -import uuid -from sqlalchemy import types - -def make_uuid(): - return unicode(uuid.uuid4()) - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - user_table = Table('user', metadata, autoload=True) - - authorization_group_table = Table('authorization_group', metadata, autoload=True) - - authorization_group_role_table = Table('authorization_group_role', metadata, - Column('user_object_role_id', UnicodeText, ForeignKey('user_object_role.id'), primary_key=True), - Column('authorization_group_id', UnicodeText, ForeignKey('authorization_group.id')), - ) -## id = Column('id', UnicodeText, primary_key=True, default=make_uuid) -## id.create(table=authorization_group_role_table, -## primary_key_name='blum' -### unique_name='id' -## ) - -def downgrade(migrate_engine): - raise NotImplementedError() - - - - diff --git a/ckan/migration/versions/027_11e5745c6fc9_adjust_harvester.py b/ckan/migration/versions/027_11e5745c6fc9_adjust_harvester.py new file mode 100644 index 00000000000..c1b76833eba --- /dev/null +++ b/ckan/migration/versions/027_11e5745c6fc9_adjust_harvester.py @@ -0,0 +1,42 @@ +# encoding: utf-8 +"""027 Adjust harvester + +Revision ID: 11e5745c6fc9 +Revises: 3615b25af443 +Create Date: 2018-09-04 18:48:58.333396 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '11e5745c6fc9' +down_revision = '3615b25af443' +branch_labels = None +depends_on = None + +table = 'harvested_document' + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column(table, sa.Column('guid', sa.UnicodeText, server_default=u'')) + op.add_column( + table, + sa.Column( + 'source_id', sa.UnicodeText, sa.ForeignKey('harvest_source.id') + ) + ) + op.add_column( + table, + sa.Column('package_id', sa.UnicodeText, sa.ForeignKey('package.id')) + ) + op.drop_column(table, 'url') + + +def downgrade(): + op.drop_column(table, 'package_id') + op.drop_column(table, 'source_id') + op.drop_column(table, 'guid') + op.add_column(table, sa.Column('url', sa.UnicodeText, nullable=False)) diff --git a/ckan/migration/versions/027_adjust_harvester.py b/ckan/migration/versions/027_adjust_harvester.py deleted file mode 100644 index 4b4a6be39eb..00000000000 --- a/ckan/migration/versions/027_adjust_harvester.py +++ /dev/null @@ -1,34 +0,0 @@ -# encoding: utf-8 - -import warnings - -from sqlalchemy import exc as sa_exc -from sqlalchemy import * -from migrate import * -import migrate.changeset - -def upgrade(migrate_engine): - # ignore reflection warnings - with warnings.catch_warnings(): - warnings.simplefilter("ignore", category=sa_exc.SAWarning) - metadata = MetaData() - metadata.bind = migrate_engine - - harvest_source_table = Table('harvest_source', metadata, autoload=True) - package_table = Table('package', metadata, autoload=True) - - harvested_document_table = Table('harvested_document', metadata, - Column('url', UnicodeText, nullable=False), - Column('guid', UnicodeText, default=u''), - Column('source_id', UnicodeText, ForeignKey('harvest_source.id')), - Column('package_id', UnicodeText, ForeignKey('package.id')), - ) - - harvested_document_table.c.url.drop() - harvested_document_table.c.guid.create(harvested_document_table) - harvested_document_table.c.source_id.create(harvested_document_table) - harvested_document_table.c.package_id.create(harvested_document_table) - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/028_cdd68fe9ba21_drop_harvest_source_status.py b/ckan/migration/versions/028_cdd68fe9ba21_drop_harvest_source_status.py new file mode 100644 index 00000000000..e11eea43d17 --- /dev/null +++ b/ckan/migration/versions/028_cdd68fe9ba21_drop_harvest_source_status.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""028 Drop harvest_source_status + +Revision ID: cdd68fe9ba21 +Revises: 11e5745c6fc9 +Create Date: 2018-09-04 18:48:58.674039 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'cdd68fe9ba21' +down_revision = '11e5745c6fc9' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.alter_column('harvest_source', 'status', nullable=False) + + +def downgrade(): + op.alter_column('harvest_source', 'status', nullable=True) diff --git a/ckan/migration/versions/028_drop_harvest_source_status.py b/ckan/migration/versions/028_drop_harvest_source_status.py deleted file mode 100644 index 0f906a92b27..00000000000 --- a/ckan/migration/versions/028_drop_harvest_source_status.py +++ /dev/null @@ -1,18 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - - -def upgrade(migrate_engine): - metadata = MetaData() - harvested_source_table = Table('harvest_source', metadata, - Column('status', UnicodeText, nullable=False), - ) - metadata.bind = migrate_engine - harvested_source_table.c.status.drop() - -def downgrade(): - raise NotImplementedError() - diff --git a/ckan/migration/versions/029_1bfdf4240915_version_groups.py b/ckan/migration/versions/029_1bfdf4240915_version_groups.py new file mode 100644 index 00000000000..b62ec6ddcf7 --- /dev/null +++ b/ckan/migration/versions/029_1bfdf4240915_version_groups.py @@ -0,0 +1,109 @@ +# encoding: utf-8 +"""029 Version groups + +Revision ID: 1bfdf4240915 +Revises: cdd68fe9ba21 +Create Date: 2018-09-04 18:48:59.007126 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '1bfdf4240915' +down_revision = 'cdd68fe9ba21' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'group_revision', sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('name', sa.UnicodeText, nullable=False), + sa.Column('title', sa.UnicodeText), + sa.Column('description', sa.UnicodeText), + sa.Column( + 'created', sa.DateTime, server_default=sa.func.current_timestamp() + ), sa.Column('state', sa.UnicodeText), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column('continuity_id', sa.UnicodeText, sa.ForeignKey('group.id')) + ) + + op.create_table( + 'package_group_revision', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('package_id', sa.UnicodeText, sa.ForeignKey('package.id')), + sa.Column('group_id', sa.UnicodeText, sa.ForeignKey('group.id')), + sa.Column('state', sa.UnicodeText), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.UnicodeText, sa.ForeignKey('package_group.id') + ) + ) + + op.create_table( + 'group_extra_revision', + sa.Column( + 'id', + sa.UnicodeText, + primary_key=True, + ), sa.Column('group_id', sa.UnicodeText, sa.ForeignKey('group.id')), + sa.Column('key', sa.UnicodeText), sa.Column('value', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.UnicodeText, sa.ForeignKey('group_extra.id') + ) + ) + + op.add_column('group', sa.Column('state', sa.UnicodeText)) + op.add_column('group', sa.Column('revision_id', sa.UnicodeText)) + op.create_foreign_key( + 'group_revision_id_fkey', 'group', 'revision', ['revision_id'], ['id'] + ) + + op.add_column('package_group', sa.Column('state', sa.UnicodeText)) + op.add_column('package_group', sa.Column('revision_id', sa.UnicodeText)) + op.create_foreign_key( + 'package_group_revision_id_fkey', 'package_group', 'revision', + ['revision_id'], ['id'] + ) + + op.add_column('group_extra', sa.Column('state', sa.UnicodeText)) + op.add_column('group_extra', sa.Column('revision_id', sa.UnicodeText)) + op.create_foreign_key( + 'group_extra_revision_id_fkey', 'group_extra', 'revision', + ['revision_id'], ['id'] + ) + + +def downgrade(): + op.drop_column('group_extra', 'revision_id') + op.drop_column('group_extra', 'state') + + op.drop_column('package_group', 'revision_id') + op.drop_column('package_group', 'state') + + op.drop_column('group', 'revision_id') + op.drop_column('group', 'state') + + op.drop_table('group_extra_revision') + op.drop_table('package_group_revision') + op.drop_table('group_revision') diff --git a/ckan/migration/versions/029_version_groups.py b/ckan/migration/versions/029_version_groups.py deleted file mode 100644 index 4c930aa97f6..00000000000 --- a/ckan/migration/versions/029_version_groups.py +++ /dev/null @@ -1,174 +0,0 @@ -# encoding: utf-8 - -import uuid - -from sqlalchemy import * -from sqlalchemy import types -from migrate import * -from datetime import datetime -import migrate.changeset -from migrate.changeset.constraint import ForeignKeyConstraint - -from ckan.common import json - -class JsonType(types.TypeDecorator): - '''Store data as JSON serializing on save and unserializing on use. - ''' - impl = types.UnicodeText - - def process_bind_param(self, value, engine): - if value is None or value == {}: # ensure we stores nulls in db not json "null" - return None - else: - # ensure_ascii=False => allow unicode but still need to convert - return unicode(json.dumps(value, ensure_ascii=False)) - - def process_result_value(self, value, engine): - if value is None: - return None - else: - return json.loads(value) - - def copy(self): - return JsonType(self.impl.length) - -def make_uuid(): - return unicode(uuid.uuid4()) - - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - - group_table = Table('group', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('name', UnicodeText, unique=True, nullable=False), - Column('title', UnicodeText), - Column('description', UnicodeText), - Column('created', DateTime, default=datetime.now), - ) - - group_revision_table = Table('group_revision', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('name', UnicodeText, nullable=False), - Column('title', UnicodeText), - Column('description', UnicodeText), - Column('created', DateTime, default=datetime.now), - Column('state', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', UnicodeText, ForeignKey('group.id')) - ) - - package_group_table = Table('package_group', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('package_id', UnicodeText, ForeignKey('package.id')), - Column('group_id', UnicodeText, ForeignKey('group.id')), - ) - - package_group_revision_table = Table('package_group_revision', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('package_id', UnicodeText, ForeignKey('package.id')), - Column('group_id', UnicodeText, ForeignKey('group.id')), - Column('state', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', UnicodeText, ForeignKey('package_group.id')) - ) - - group_extra_table = Table('group_extra', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('group_id', UnicodeText, ForeignKey('group.id')), - Column('key', UnicodeText), - Column('value', JsonType), - ) - - group_extra_revision_table = Table('group_extra_revision', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('group_id', UnicodeText, ForeignKey('group.id')), - Column('key', UnicodeText), - Column('value', JsonType), - Column('state', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', UnicodeText, ForeignKey('group_extra.id')) - ) - - revision_table = Table('revision', metadata, autoload=True) - package_table = Table('package', metadata, autoload=True) - - rev_id = make_uuid() - q = revision_table.insert(values={'id': rev_id, - 'author': u'system', - 'message': u"Add versioning to groups, group_extras and package_groups", - 'timestamp': datetime.utcnow(), - 'state': u'active'}) - r = migrate_engine.execute(q) - - # handle groups: - - # BUG in sqlalchemy-migrate 0.4/0.5.4: "group" isn't escaped properly when sent to - # postgres. - # cf http://code.google.com/p/sqlalchemy-migrate/issues/detail?id=32 - - #state = Column('state', UnicodeText) - #revision_id = Column('revision_id', UnicodeText) - #state.create(group_table) - #revision_id.create(group_table) - migrate_engine.execute('ALTER TABLE "group" ADD COLUMN state TEXT') - migrate_engine.execute('ALTER TABLE "group" ADD COLUMN revision_id TEXT') - #q = group_table.update(values={'state': 'active', - # 'revision_id': rev_id}) - #migrate_engine.execute(q) - migrate_engine.execute('UPDATE "group" SET revision_id = \'%s\', state=\'active\'' % rev_id) - #fk = ForeignKeyConstraint(['revision_id'], [revision_table.c.id], table=group_table) - #fk.create(migrate_engine) - migrate_engine.execute('ALTER TABLE "group" ADD CONSTRAINT "group_revision_id_fkey" ' + \ - 'FOREIGN KEY (revision_id) REFERENCES revision(id)') - - group_revision_table.create() - for row in migrate_engine.execute(group_table.select()): - group_rev = dict(row.items()) - group_rev['continuity_id'] = group_rev['id'] - - # otherwise, this doesn't get mapped due to the bug above: - group_rev['state'] = u'active' - group_rev['revision_id'] = rev_id - - q = group_revision_table.insert(values=group_rev) - migrate_engine.execute(q) - - - state = Column('state', UnicodeText) - revision_id = Column('revision_id', UnicodeText) - state.create(package_group_table) - revision_id.create(package_group_table) - q = package_group_table.update(values={'state': u'active', - 'revision_id': rev_id}) - migrate_engine.execute(q) - fk = ForeignKeyConstraint(['revision_id'], [revision_table.c.id], table=package_group_table, name = 'package_group_revision_id_fkey') - fk.create(migrate_engine) - package_group_revision_table.create() - for row in migrate_engine.execute(package_group_table.select()): - pkg_group_rev = dict(row.items()) - pkg_group_rev['continuity_id'] = pkg_group_rev['id'] - q = package_group_revision_table.insert(values=pkg_group_rev) - migrate_engine.execute(q) - - state = Column('state', UnicodeText) - revision_id = Column('revision_id', UnicodeText) - state.create(group_extra_table) - revision_id.create(group_extra_table) - q = group_extra_table.update(values={'state': u'active', - 'revision_id': rev_id}) - migrate_engine.execute(q) - fk = ForeignKeyConstraint(['revision_id'], [revision_table.c.id], table=group_extra_table, name='group_extra_revision_id_fkey') - fk.create(migrate_engine) - group_extra_revision_table.create() - for row in migrate_engine.execute(group_extra_table.select()): - group_extra_rev = dict(row.items()) - group_extra_rev['continuity_id'] = group_rev['id'] - q = group_extra_revision_table.insert(values=group_extra_rev) - migrate_engine.execute(q) - - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/030_additional_user_attributes.py b/ckan/migration/versions/030_additional_user_attributes.py deleted file mode 100644 index 84808afbbae..00000000000 --- a/ckan/migration/versions/030_additional_user_attributes.py +++ /dev/null @@ -1,24 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from sqlalchemy import types -from migrate import * -from datetime import datetime -import migrate.changeset -import uuid - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - user_sql = 'ALTER TABLE "user" ADD openid TEXT' - migrate_engine.execute(user_sql) - user_sql = 'ALTER TABLE "user" ADD password TEXT' - migrate_engine.execute(user_sql) - user_sql = 'ALTER TABLE "user" ADD fullname TEXT' - migrate_engine.execute(user_sql) - user_sql = 'ALTER TABLE "user" ADD email TEXT' - migrate_engine.execute(user_sql) - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/030_b16cbf164c8a_additional_user_attributes.py b/ckan/migration/versions/030_b16cbf164c8a_additional_user_attributes.py new file mode 100644 index 00000000000..8999eb2d509 --- /dev/null +++ b/ckan/migration/versions/030_b16cbf164c8a_additional_user_attributes.py @@ -0,0 +1,32 @@ +# encoding: utf-8 +"""030 Additional user_attributes + +Revision ID: b16cbf164c8a +Revises: 1bfdf4240915 +Create Date: 2018-09-04 18:48:59.340276 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'b16cbf164c8a' +down_revision = '1bfdf4240915' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('user', sa.Column('openid', sa.UnicodeText)) + op.add_column('user', sa.Column('password', sa.UnicodeText)) + op.add_column('user', sa.Column('fullname', sa.UnicodeText)) + op.add_column('user', sa.Column('email', sa.UnicodeText)) + + +def downgrade(): + op.drop_column('user', 'openid') + op.drop_column('user', 'password') + op.drop_column('user', 'fullname') + op.drop_column('user', 'email') diff --git a/ckan/migration/versions/031_1b05245167d6_move_openid_to_new_field.py b/ckan/migration/versions/031_1b05245167d6_move_openid_to_new_field.py new file mode 100644 index 00000000000..d301563c6fc --- /dev/null +++ b/ckan/migration/versions/031_1b05245167d6_move_openid_to_new_field.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""031 Move openid to new_field + +Revision ID: 1b05245167d6 +Revises: b16cbf164c8a +Create Date: 2018-09-04 18:48:59.666938 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '1b05245167d6' +down_revision = 'b16cbf164c8a' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/031_move_openid_to_new_field.py b/ckan/migration/versions/031_move_openid_to_new_field.py deleted file mode 100644 index 9a45cc51241..00000000000 --- a/ckan/migration/versions/031_move_openid_to_new_field.py +++ /dev/null @@ -1,39 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from sqlalchemy import types -from migrate import * -from datetime import datetime -import migrate.changeset -import uuid - - -def make_uuid(): - return unicode(uuid.uuid4()) - - -def upgrade(migrate_engine): - metadata = MetaData() - user_table = Table('user', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('name', UnicodeText), - Column('openid', UnicodeText), - Column('password', UnicodeText), - Column('fullname', UnicodeText), - Column('email', UnicodeText), - Column('apikey', UnicodeText, default=make_uuid), - Column('created', DateTime, default=datetime.now), - Column('about', UnicodeText), - ) - metadata.bind = migrate_engine - for row in migrate_engine.execute(user_table.select()): - user = dict(row.items()) - name = user.get('name').lower().strip() - if name.startswith('http://') or name.startswith('https://'): - user['openid'] = name - q = user_table.update(user_table.c.id==user.get('id'), - values=user) - migrate_engine.execute(q) - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/032_add_extra_info_field_to_resources.py b/ckan/migration/versions/032_add_extra_info_field_to_resources.py deleted file mode 100644 index 46ab4b98ff7..00000000000 --- a/ckan/migration/versions/032_add_extra_info_field_to_resources.py +++ /dev/null @@ -1,20 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from sqlalchemy import types -from migrate import * -from datetime import datetime -import migrate.changeset -import uuid - - -def upgrade(migrate_engine): - metadata = MetaData(migrate_engine) - user_sql = 'ALTER TABLE package_resource ADD COLUMN extras text' - migrate_engine.execute(user_sql) - user_sql = 'ALTER TABLE package_resource_revision ADD COLUMN extras text' - migrate_engine.execute(user_sql) - -def downgrade(): - raise NotImplementedError() - diff --git a/ckan/migration/versions/032_d89e0731422d_add_extra_info_field_to_resources.py b/ckan/migration/versions/032_d89e0731422d_add_extra_info_field_to_resources.py new file mode 100644 index 00000000000..0daae5d617d --- /dev/null +++ b/ckan/migration/versions/032_d89e0731422d_add_extra_info_field_to_resources.py @@ -0,0 +1,30 @@ +# encoding: utf-8 +"""032 Add extra info field_to_resources + +Revision ID: d89e0731422d +Revises: 1b05245167d6 +Create Date: 2018-09-04 18:49:00.003141 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'd89e0731422d' +down_revision = '1b05245167d6' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('package_resource', sa.Column('extras', sa.UnicodeText)) + op.add_column( + 'package_resource_revision', sa.Column('extras', sa.UnicodeText) + ) + + +def downgrade(): + op.drop_column('package_resource', 'extras') + op.drop_column('package_resource_revision', 'extras') diff --git a/ckan/migration/versions/033_6da92ef2df15_auth_group_user_id_add_conditional.py b/ckan/migration/versions/033_6da92ef2df15_auth_group_user_id_add_conditional.py new file mode 100644 index 00000000000..a9e53fdc45a --- /dev/null +++ b/ckan/migration/versions/033_6da92ef2df15_auth_group_user_id_add_conditional.py @@ -0,0 +1,29 @@ +# encoding: utf-8 +"""033 Auth group user id_add_conditional + +Revision ID: 6da92ef2df15 +Revises: d89e0731422d +Create Date: 2018-09-04 18:49:00.347621 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '6da92ef2df15' +down_revision = 'd89e0731422d' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('authorization_group_user', sa.Column('id', sa.UnicodeText)) + op.create_primary_key( + 'authorization_group_user_pkey', 'authorization_group_user', ['id'] + ) + + +def downgrade(): + op.drop_column('authorization_group_user', 'id') diff --git a/ckan/migration/versions/033_auth_group_user_id_add_conditional.py b/ckan/migration/versions/033_auth_group_user_id_add_conditional.py deleted file mode 100644 index dbe5fa6e1e6..00000000000 --- a/ckan/migration/versions/033_auth_group_user_id_add_conditional.py +++ /dev/null @@ -1,32 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import datetime -import uuid -from migrate.changeset.constraint import PrimaryKeyConstraint - - -def make_uuid(): - return unicode(uuid.uuid4()) - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - authorization_group_user_table = Table('authorization_group_user', - metadata, autoload=True) - - try: - ##check if id column already exists - authorization_group_user_table.c["id"] - return - except KeyError: - pass - - - id_col = Column('id', UnicodeText, primary_key=True, default=make_uuid) - id_col.create(authorization_group_user_table, - primary_key_name='authorization_group_user_pkey') - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/034_6c600693af5b_resource_group_table.py b/ckan/migration/versions/034_6c600693af5b_resource_group_table.py new file mode 100644 index 00000000000..c79a1240aa2 --- /dev/null +++ b/ckan/migration/versions/034_6c600693af5b_resource_group_table.py @@ -0,0 +1,163 @@ +# encoding: utf-8 +"""034 Resource group table + +Revision ID: 6c600693af5b +Revises: 6da92ef2df15 +Create Date: 2018-09-04 18:49:00.683101 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '6c600693af5b' +down_revision = '6da92ef2df15' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'resource_group', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('package_id', sa.UnicodeText, sa.ForeignKey('package.id')), + sa.Column('label', sa.UnicodeText), + sa.Column('sort_order', sa.UnicodeText), + sa.Column('extras', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText, sa.ForeignKey('revision.id')), + ) + + op.create_table( + 'resource_group_revision', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('package_id', sa.UnicodeText, sa.ForeignKey('package.id')), + sa.Column('label', sa.UnicodeText), + sa.Column('sort_order', sa.UnicodeText), + sa.Column('extras', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.UnicodeText, + sa.ForeignKey('resource_group.id') + ) + ) + op.alter_column( + 'package_resource', 'package_id', new_column_name='resource_group_id' + ) + op.alter_column( + 'package_resource_revision', + 'package_id', + new_column_name='resource_group_id' + ) + + op.rename_table('package_resource', 'resource') + op.rename_table('package_resource_revision', 'resource_revision') + op.execute('ALTER INDEX package_resource_pkey RENAME TO resource_pkey') + op.execute( + 'ALTER INDEX package_resource_revision_pkey ' + 'RENAME TO resource_revision_pkey' + ) + + op.drop_constraint( + 'package_resource_revision_continuity_id_fkey', 'resource_revision' + ) + op.drop_constraint( + 'package_resource_revision_package_id_fkey', 'resource_revision' + ) + op.drop_constraint( + 'package_resource_revision_revision_id_fkey', 'resource_revision' + ) + op.drop_constraint('package_resource_revision_id_fkey', 'resource') + op.drop_constraint('package_resource_package_id_fkey', 'resource') + + op.create_foreign_key( + 'resource_resource_group_id_fkey', 'resource', 'resource_group', + ['resource_group_id'], ['id'] + ) + op.create_foreign_key( + 'resource_revision_id_fkey', 'resource', 'revision', ['revision_id'], + ['id'] + ) + op.create_foreign_key( + 'resource_revision_continuity_id_fkey', 'resource_revision', + 'resource', ['continuity_id'], ['id'] + ) + op.create_foreign_key( + 'resource_revision_resource_group_id_fkey', 'resource_revision', + 'resource_group', ['resource_group_id'], ['id'] + ) + op.create_foreign_key( + 'resource_revision_revision_id_fkey', 'resource_revision', 'revision', + ['revision_id'], ['id'] + ) + + +def downgrade(): + op.drop_constraint('resource_resource_group_id_fkey', 'resource') + op.drop_constraint('resource_revision_id_fkey', 'resource') + op.drop_constraint( + 'resource_revision_continuity_id_fkey', 'resource_revision' + ) + op.drop_constraint( + 'resource_revision_resource_group_id_fkey', 'resource_revision' + ) + op.drop_constraint( + 'resource_revision_revision_id_fkey', 'resource_revision' + ) + + op.rename_table('resource_revision', 'package_resource_revision') + op.rename_table('resource', 'package_resource') + op.execute('ALTER INDEX resource_pkey RENAME TO package_resource_pkey') + op.execute( + 'ALTER INDEX resource_revision_pkey ' + 'RENAME TO package_resource_revision_pkey' + ) + + op.alter_column( + 'package_resource_revision', + 'resource_group_id', + new_column_name='package_id' + ) + op.alter_column( + 'package_resource', 'resource_group_id', new_column_name='package_id' + ) + + op.create_foreign_key( + 'package_resource_package_id_fkey', 'package_resource', 'package', + ['package_id'], ['id'] + ) + op.create_foreign_key( + 'package_resource_revision_id_fkey', 'package_resource', 'revision', + ['revision_id'], ['id'] + ) + op.create_foreign_key( + 'package_resource_revision_revision_id_fkey', + 'package_resource_revision', 'revision', ['revision_id'], ['id'] + ) + op.create_foreign_key( + 'package_resource_revision_package_id_fkey', + 'package_resource_revision', 'package', ['package_id'], ['id'] + ) + op.create_foreign_key( + 'package_resource_revision_continuity_id_fkey', + 'package_resource_revision', 'package_resource', ['continuity_id'], + ['id'] + ) + op.create_index( + 'idx_package_resource_pkg_id', 'package_resource', ['package_id'] + ) + op.create_index( + 'idx_package_resource_pkg_id_resource_id', 'package_resource', + ['package_id', 'id'] + ) + + op.drop_table('resource_group_revision') + op.drop_table('resource_group') diff --git a/ckan/migration/versions/034_resource_group_table.py b/ckan/migration/versions/034_resource_group_table.py deleted file mode 100644 index 5e38e5db641..00000000000 --- a/ckan/migration/versions/034_resource_group_table.py +++ /dev/null @@ -1,209 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import datetime -import uuid -import migrate.changeset -from migrate.changeset.constraint import PrimaryKeyConstraint -from ckan.model.types import JsonDictType - -def make_uuid(): - return unicode(uuid.uuid4()) - -def upgrade(migrate_engine): - - metadata = MetaData(migrate_engine) - - package = Table('package', metadata, autoload=True) - - resource = Table( - 'package_resource', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('package_id', UnicodeText, ForeignKey('package.id')), - Column('url', UnicodeText, nullable=False), - Column('format', UnicodeText), - Column('description', UnicodeText), - Column('hash', UnicodeText), - Column('position', Integer), - Column('extras', JsonDictType), - Column('state', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - ) - - resource_revision = Table( - 'package_resource_revision', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('package_id', UnicodeText), - Column('url', UnicodeText, nullable=False), - Column('format', UnicodeText), - Column('description', UnicodeText), - Column('hash', UnicodeText), - Column('position', Integer), - Column('extras', JsonDictType), - Column('state', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', UnicodeText, ForeignKey('package_resource.id')) - ) - - resource_group = Table( - 'resource_group', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('package_id', UnicodeText, ForeignKey('package.id')), - Column('label', UnicodeText), - Column('sort_order', UnicodeText), - Column('extras', JsonDictType), - Column('state', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id')), - ) - - resource_group_revision = Table( - 'resource_group_revision', metadata, - Column('id', UnicodeText, primary_key=True, default=make_uuid), - Column('package_id', UnicodeText, ForeignKey('package.id')), - Column('label', UnicodeText), - Column('sort_order', UnicodeText), - Column('extras', JsonDictType), - Column('state', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', UnicodeText, ForeignKey('resource_group.id')) - ) - - resource_count = migrate_engine.execute('''select count(*) from package_resource''').first()[0] - package_count = migrate_engine.execute('''select count(*) from package''').first()[0] - - - # change field names - resource.c.package_id.alter(name = 'resource_group_id') - resource_revision.c.package_id.alter(name = 'resource_group_id') - - # rename tables - resource.rename('resource') - resource_revision.rename('resource_revision') - - # make new tables - metadata.create_all(migrate_engine) - - # drop all constaints - migrate_engine.execute(''' -ALTER TABLE resource_revision - DROP CONSTRAINT package_resource_revision_pkey; - -ALTER TABLE resource - DROP CONSTRAINT package_resource_revision_id_fkey; - -ALTER TABLE resource_revision - DROP CONSTRAINT package_resource_revision_continuity_id_fkey; - -ALTER TABLE resource_revision - DROP CONSTRAINT package_resource_revision_package_id_fkey; - -ALTER TABLE resource_revision - DROP CONSTRAINT package_resource_revision_revision_id_fkey; - -ALTER TABLE resource - DROP CONSTRAINT package_resource_pkey; - -ALTER TABLE resource - DROP CONSTRAINT package_resource_package_id_fkey; -''') - - - # do data transfer - # give resource group a hashed version of package uuid - # so that we can use the same hash calculation on - # the resource and resource revision table - migrate_engine.execute(''' -insert into resource_group - select - %s, id, 'default', null, null, state, revision_id - from - package; -''' % make_new_uuid("id") -) - - migrate_engine.execute(''' -insert into resource_group_revision - select - id, package_id, 'default', null, null, state, revision_id, id - from - resource_group; -''' -) - - ## update resource table with new ids generated from the - migrate_engine.execute('update resource set resource_group_id = %s' - % make_new_uuid('resource_group_id')) - - migrate_engine.execute('update resource_revision set resource_group_id = %s' - % make_new_uuid('resource_group_id')) - -##add back contraints - - migrate_engine.execute(''' -ALTER TABLE resource - ADD CONSTRAINT resource_pkey PRIMARY KEY (id); - -ALTER TABLE resource_revision - ADD CONSTRAINT resource_revision_pkey PRIMARY KEY (id, revision_id); - -ALTER TABLE resource - ADD CONSTRAINT resource_resource_group_id_fkey FOREIGN KEY (resource_group_id) REFERENCES resource_group(id); - -ALTER TABLE resource - ADD CONSTRAINT resource_revision_id_fkey FOREIGN KEY (revision_id) REFERENCES revision(id); - -ALTER TABLE resource_revision - ADD CONSTRAINT resource_revision_continuity_id_fkey FOREIGN KEY (continuity_id) REFERENCES resource(id); - -ALTER TABLE resource_revision - ADD CONSTRAINT resource_revision_resource_group_id_fkey FOREIGN KEY (resource_group_id) REFERENCES resource_group(id); - -ALTER TABLE resource_revision - ADD CONSTRAINT resource_revision_revision_id_fkey FOREIGN KEY (revision_id) REFERENCES revision(id); -''') - - resource_count_after = migrate_engine.execute('''select count(*) from resource''').first()[0] - resource_group_after = migrate_engine.execute('''select count(*) from resource_group''').first()[0] - package_count_after = migrate_engine.execute('''select count(*) from package''').first()[0] - - all_joined = migrate_engine.execute('''select count(*) from package p - join resource_group rg on rg.package_id = p.id - join resource r on r.resource_group_id = rg.id - ''').first()[0] - - all_uuids = migrate_engine.execute(''' - select count(*) from - (select id from resource union - select id from resource_group union - select id from package) sub - ''').first()[0] - - assert resource_count_after == resource_count - assert resource_group_after == package_count - assert package_count_after == package_count - - ## this makes sure all uuids are unique (union dedupes) - assert all_uuids == resource_count + package_count * 2 - - ## this makes sure all uuids are unique (union dedupes) - assert all_joined == resource_count - - - -def make_new_uuid(column_name): - - out = '''substring(md5(%s), 1, 8) || '-' || - substring(md5(%s), 9, 4) || '-' || - substring(md5(%s), 13, 4) || '-' || - substring(md5(%s), 17, 4) || '-' || - substring(md5(%s), 21, 12)''' - - return out % tuple([column_name] * 5) - - - - - -def downgrade(migrate_engine): - raise NotImplementedError() diff --git a/ckan/migration/versions/035_81148ccebd6c_harvesting_doc_versioning.py b/ckan/migration/versions/035_81148ccebd6c_harvesting_doc_versioning.py new file mode 100644 index 00000000000..a2b76d0348f --- /dev/null +++ b/ckan/migration/versions/035_81148ccebd6c_harvesting_doc_versioning.py @@ -0,0 +1,94 @@ +# encoding: utf-8 +"""035 Harvesting doc versioning + +Revision ID: 81148ccebd6c +Revises: 6c600693af5b +Create Date: 2018-09-04 18:49:01.017635 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '81148ccebd6c' +down_revision = '6c600693af5b' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'harvested_document_revision', + sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('guid', sa.UnicodeText), sa.Column('created', sa.TIMESTAMP), + sa.Column('content', sa.UnicodeText, nullable=False), + sa.Column('source_id', sa.UnicodeText), + sa.Column('package_id', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText, nullable=False), + sa.Column('continuity_id', sa.UnicodeText) + ) + + op.add_column('harvested_document', sa.Column('state', sa.UnicodeText)) + op.add_column( + 'harvested_document', sa.Column('revision_id', sa.UnicodeText) + ) + + op.create_primary_key( + 'harvested_document_revision_pkey', 'harvested_document_revision', + ['id', 'revision_id'] + ) + op.create_foreign_key( + 'harvested_document_revision_id_fkey', 'harvested_document', + 'revision', ['revision_id'], ['id'] + ) + op.create_foreign_key( + 'harvested_document_revision_continuity_id_fkey', + 'harvested_document_revision', 'harvested_document', ['continuity_id'], + ['id'] + ) + op.create_foreign_key( + 'harvested_document_revision_package_id_fkey', + 'harvested_document_revision', 'package', ['package_id'], ['id'] + ) + + op.create_foreign_key( + 'harvested_document_revision_revision_id_fkey', + 'harvested_document_revision', 'revision', ['revision_id'], ['id'] + ) + op.create_foreign_key( + 'harvested_document_revision_source_id_fkey', + 'harvested_document_revision', 'harvest_source', ['source_id'], ['id'] + ) + + +def downgrade(): + op.drop_constraint( + 'harvested_document_revision_source_id_fkey', + 'harvested_document_revision' + ) + op.drop_constraint( + 'harvested_document_revision_revision_id_fkey', + 'harvested_document_revision' + ) + op.drop_constraint( + 'harvested_document_revision_package_id_fkey', + 'harvested_document_revision' + ) + op.drop_constraint( + 'harvested_document_revision_continuity_id_fkey', + 'harvested_document_revision' + ) + op.drop_constraint( + 'harvested_document_revision_id_fkey', 'harvested_document' + ) + op.drop_constraint( + 'harvested_document_revision_pkey', 'harvested_document_revision' + ) + + op.drop_column('harvested_document', 'state') + op.drop_column('harvested_document', 'revision_id') + + op.drop_table('harvested_document_revision') diff --git a/ckan/migration/versions/035_harvesting_doc_versioning.py b/ckan/migration/versions/035_harvesting_doc_versioning.py deleted file mode 100644 index bbdcae8e9dd..00000000000 --- a/ckan/migration/versions/035_harvesting_doc_versioning.py +++ /dev/null @@ -1,50 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import datetime -import uuid -import migrate.changeset -from migrate.changeset.constraint import PrimaryKeyConstraint -from ckan.model.types import JsonDictType - -def upgrade(migrate_engine): - metadata = MetaData(migrate_engine) - - migrate_engine.execute(''' - - CREATE TABLE harvested_document_revision ( - id text NOT NULL, - guid text, - created timestamp without time zone, - content text NOT NULL, - source_id text, - package_id text, - state text, - revision_id text NOT NULL, - continuity_id text - ); - - ALTER TABLE harvested_document - ADD COLUMN state text, - ADD COLUMN revision_id text; - - ALTER TABLE harvested_document_revision - ADD CONSTRAINT harvested_document_revision_pkey PRIMARY KEY (id, revision_id); - - ALTER TABLE harvested_document - ADD CONSTRAINT harvested_document_revision_id_fkey FOREIGN KEY (revision_id) REFERENCES revision(id); - - ALTER TABLE harvested_document_revision - ADD CONSTRAINT harvested_document_revision_continuity_id_fkey FOREIGN KEY (continuity_id) REFERENCES harvested_document(id); - - ALTER TABLE harvested_document_revision - ADD CONSTRAINT harvested_document_revision_package_id_fkey FOREIGN KEY (package_id) REFERENCES package(id); - - ALTER TABLE harvested_document_revision - ADD CONSTRAINT harvested_document_revision_revision_id_fkey FOREIGN KEY (revision_id) REFERENCES revision(id); - - ALTER TABLE harvested_document_revision - ADD CONSTRAINT harvested_document_revision_source_id_fkey FOREIGN KEY (source_id) REFERENCES harvest_source(id); - ''' - ) diff --git a/ckan/migration/versions/036_ecaa8b38782f_lockdown_roles.py b/ckan/migration/versions/036_ecaa8b38782f_lockdown_roles.py new file mode 100644 index 00000000000..9210267f4e8 --- /dev/null +++ b/ckan/migration/versions/036_ecaa8b38782f_lockdown_roles.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""036 Lockdown roles + +Revision ID: ecaa8b38782f +Revises: 81148ccebd6c +Create Date: 2018-09-04 18:49:01.359019 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'ecaa8b38782f' +down_revision = '81148ccebd6c' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/036_lockdown_roles.py b/ckan/migration/versions/036_lockdown_roles.py deleted file mode 100644 index fce82bf659f..00000000000 --- a/ckan/migration/versions/036_lockdown_roles.py +++ /dev/null @@ -1,37 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import datetime -import uuid -from migrate.changeset.constraint import PrimaryKeyConstraint - -def make_uuid(): - return unicode(uuid.uuid4()) - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - role_action = Table('role_action', metadata, autoload=True) - q = role_action.insert(values={'id': make_uuid(), 'role': 'editor', - 'action': 'read-site', 'context': ''}) - migrate_engine.execute(q) - q = role_action.insert(values={'id': make_uuid(), 'role': 'editor', - 'action': 'read-user', 'context': ''}) - migrate_engine.execute(q) - q = role_action.insert(values={'id': make_uuid(), 'role': 'editor', - 'action': 'create-user', 'context': ''}) - migrate_engine.execute(q) - q = role_action.insert(values={'id': make_uuid(), 'role': 'reader', - 'action': 'read-site', 'context': ''}) - migrate_engine.execute(q) - q = role_action.insert(values={'id': make_uuid(), 'role': 'reader', - 'action': 'read-user', 'context': ''}) - migrate_engine.execute(q) - q = role_action.insert(values={'id': make_uuid(), 'role': 'reader', - 'action': 'create-user', 'context': ''}) - migrate_engine.execute(q) - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/037_edcf3b8c3c1b_role_anon_editor.py b/ckan/migration/versions/037_edcf3b8c3c1b_role_anon_editor.py new file mode 100644 index 00000000000..6be9677d1fe --- /dev/null +++ b/ckan/migration/versions/037_edcf3b8c3c1b_role_anon_editor.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""037 Role anon_editor + +Revision ID: edcf3b8c3c1b +Revises: ecaa8b38782f +Create Date: 2018-09-04 18:49:01.692660 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'edcf3b8c3c1b' +down_revision = 'ecaa8b38782f' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/037_role_anon_editor.py b/ckan/migration/versions/037_role_anon_editor.py deleted file mode 100644 index e0af0557b00..00000000000 --- a/ckan/migration/versions/037_role_anon_editor.py +++ /dev/null @@ -1,50 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from sqlalchemy.sql import select, and_ -from migrate import * -import logging - -log = logging.getLogger(__name__) - -def upgrade(migrate_engine): - '''#1066 Change Visitor role on System from "reader" to "anon_editor".''' - metadata = MetaData(migrate_engine) - - # get visitor ID - user = Table('user', metadata, autoload=True) - s = select([user.c.id, user.c.name], - user.c.name == u'visitor') - results = migrate_engine.execute(s).fetchall() - if len(results) == 0: - log.debug('No visitor on the system - obviously init hasn\'t been run yet' \ - 'and that will init visitor to an anon_editor') - return - - visitor_id, visitor_name = results[0] - - # find visitor role as reader on system - uor = Table('user_object_role', metadata, autoload=True) - visitor_system_condition = and_(uor.c.context == u'System', - uor.c.user_id == visitor_id) - s = select([uor.c.context, uor.c.user_id, uor.c.role], - visitor_system_condition) - results = migrate_engine.execute(s).fetchall() - if len(results) != 1: - log.warn('Could not find a Right for a Visitor on the System') - return - context, user_id, role = results[0] - if role != 'reader': - log.info('Visitor right for the System is not "reader", so not upgrading it to anon_editor.') - return - - # change visitor role to anon_editor - log.info('Visitor is a "reader" on the System, so upgrading it to "anon_editor".') - sql = uor.update().where(visitor_system_condition).\ - values(role=u'anon_editor') - migrate_engine.execute(sql) - - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/038_delete_migration_tables.py b/ckan/migration/versions/038_delete_migration_tables.py deleted file mode 100644 index 72c90b24100..00000000000 --- a/ckan/migration/versions/038_delete_migration_tables.py +++ /dev/null @@ -1,12 +0,0 @@ -# encoding: utf-8 - -from migrate import * - -def upgrade(migrate_engine): - - migrate_engine.execute(''' -DROP TABLE harvested_document_revision, harvested_document, harvesting_job, harvest_source; -''') - - - diff --git a/ckan/migration/versions/038_fd6622e3d964_delete_migration_tables.py b/ckan/migration/versions/038_fd6622e3d964_delete_migration_tables.py new file mode 100644 index 00000000000..8127d17b74d --- /dev/null +++ b/ckan/migration/versions/038_fd6622e3d964_delete_migration_tables.py @@ -0,0 +1,105 @@ +# encoding: utf-8 +"""038 Delete migration tables + +Revision ID: fd6622e3d964 +Revises: edcf3b8c3c1b +Create Date: 2018-09-04 18:49:02.023123 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'fd6622e3d964' +down_revision = 'edcf3b8c3c1b' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_table('harvested_document_revision') + op.drop_table('harvested_document') + op.drop_table('harvesting_job') + op.drop_table('harvest_source') + + +def downgrade(): + op.create_table( + 'harvest_source', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('status', sa.UnicodeText, server_default=u'New'), + sa.Column('url', sa.UnicodeText, unique=True, nullable=False), + sa.Column('description', sa.UnicodeText, default=u''), + sa.Column('user_ref', sa.UnicodeText, default=u''), + sa.Column('publisher_ref', sa.UnicodeText, default=u''), + sa.Column( + 'created', sa.DateTime, server_default=sa.func.current_timestamp() + ), + ) + + op.create_table( + 'harvesting_job', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('status', sa.UnicodeText, default=u'', nullable=False), + sa.Column( + 'created', sa.DateTime, server_default=sa.func.current_timestamp() + ), + sa.Column('user_ref', sa.UnicodeText, nullable=False), + sa.Column('report', sa.UnicodeText, default=u''), + sa.Column( + 'source_id', sa.UnicodeText, sa.ForeignKey('harvest_source.id') + ), + ) + + op.create_table( + 'harvested_document', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('created', sa.DateTime), + sa.Column('content', sa.UnicodeText, nullable=False), + sa.Column('source_id', sa.UnicodeText), + sa.Column('package_id', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText, nullable=False), + sa.Column('guid', sa.UnicodeText), + sa.Column('created', sa.TIMESTAMP), + ) + + op.create_table( + 'harvested_document_revision', + sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('guid', sa.UnicodeText), sa.Column('created', sa.TIMESTAMP), + sa.Column('content', sa.UnicodeText, nullable=False), + sa.Column('source_id', sa.UnicodeText), + sa.Column('package_id', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText, nullable=False), + sa.Column('continuity_id', sa.UnicodeText) + ) + op.create_primary_key( + 'harvested_document_revision_pkey', 'harvested_document_revision', + ['id', 'revision_id'] + ) + op.create_foreign_key( + 'harvested_document_revision_id_fkey', 'harvested_document', + 'revision', ['revision_id'], ['id'] + ) + op.create_foreign_key( + 'harvested_document_revision_continuity_id_fkey', + 'harvested_document_revision', 'harvested_document', ['continuity_id'], + ['id'] + ) + op.create_foreign_key( + 'harvested_document_revision_package_id_fkey', + 'harvested_document_revision', 'package', ['package_id'], ['id'] + ) + + op.create_foreign_key( + 'harvested_document_revision_revision_id_fkey', + 'harvested_document_revision', 'revision', ['revision_id'], ['id'] + ) + op.create_foreign_key( + 'harvested_document_revision_source_id_fkey', + 'harvested_document_revision', 'harvest_source', ['source_id'], ['id'] + ) diff --git a/ckan/migration/versions/039_add_expired_id_and_dates.py b/ckan/migration/versions/039_add_expired_id_and_dates.py deleted file mode 100644 index c10f5f17c7a..00000000000 --- a/ckan/migration/versions/039_add_expired_id_and_dates.py +++ /dev/null @@ -1,221 +0,0 @@ -# encoding: utf-8 - -from migrate import * -import uuid -import datetime - -def upgrade(migrate_engine): - - id = uuid.uuid4() - - make_missing_revisions = ''' - --- make sure all tables have an entry in the revision_table - -insert into revision values ('%(id)s' , '%(timestamp)s', 'admin', 'Admin: make sure every object has a row in a revision table', 'active'); - -insert into package_tag_revision (id,package_id,tag_id,revision_id,state,continuity_id) select id,package_id,tag_id, '%(id)s' ,state, id from package_tag where package_tag.id not in (select id from package_tag_revision); - -insert into resource_revision (id,resource_group_id,url,format,description,position,revision_id,hash,state,extras,continuity_id) select id,resource_group_id,url,format,description,position, '%(id)s' ,hash,state,extras, id from resource where resource.id not in (select id from resource_revision); - -insert into group_extra_revision (id,group_id,key,value,state,revision_id,continuity_id) select id,group_id,key,value,state, '%(id)s' , id from group_extra where group_extra.id not in (select id from group_extra_revision); - -insert into resource_group_revision (id,package_id,label,sort_order,extras,state,revision_id,continuity_id) select id,package_id,label,sort_order,extras,state, '%(id)s', id from resource_group where resource_group.id not in (select id from resource_group_revision); - -insert into package_extra_revision (id,package_id,key,value,revision_id,state,continuity_id) select id,package_id,key,value, '%(id)s',state, id from package_extra where package_extra.id not in (select id from package_extra_revision); - -insert into package_relationship_revision (id,subject_package_id,object_package_id,type,comment,revision_id,state,continuity_id) select id,subject_package_id,object_package_id,type,comment, '%(id)s',state, id from package_relationship where package_relationship.id not in (select id from package_relationship_revision); - -insert into group_revision (id,name,title,description,created,state,revision_id,continuity_id) select id,name,title,description,created,state, '%(id)s', id from "group" where "group".id not in (select id from group_revision); - -insert into package_revision (id,name,title,url,notes,license_id,revision_id,version,author,author_email,maintainer,maintainer_email,state,continuity_id) select id,name,title,url,notes,license_id, '%(id)s',version,author,author_email,maintainer,maintainer_email,state, id from package where package.id not in (select id from package_revision); - -''' % dict(id=id, timestamp=datetime.datetime.utcnow().isoformat()) - - - update_schema = ''' -ALTER TABLE package_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE package_extra_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE group_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE group_extra_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - - -ALTER TABLE package_group_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE package_tag_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE resource_group_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE resource_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE package_relationship_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - -ALTER TABLE revision - ADD COLUMN approved_timestamp timestamp without time zone; - -create table tmp_expired_id(id text, revision_id text, revision_timestamp timestamp, expired_timestamp timestamp, expired_id text); -create index id_exp on tmp_expired_id(id, revision_id); - ---package revision -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from package_revision pr join revision r on pr.revision_id = r.id; -update package_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update package_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_package_period on package_revision(revision_timestamp, expired_timestamp, id); -create index idx_package_current on package_revision(current); - ---package extra revision -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from package_extra_revision pr join revision r on pr.revision_id = r.id; -update package_extra_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update package_extra_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_package_extra_period on package_extra_revision(revision_timestamp, expired_timestamp, id); -create index idx_package_extra_period_package on package_extra_revision(revision_timestamp, expired_timestamp, package_id); -create index idx_package_extra_current on package_extra_revision(current); - ---package group revision -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from package_group_revision pr join revision r on pr.revision_id = r.id; -update package_group_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update package_group_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_package_group_period_package_group on package_group_revision(revision_timestamp, expired_timestamp, package_id, group_id); -create index idx_package_group_current on package_group_revision(current); - - --- package_tags -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from package_tag_revision pr join revision r on pr.revision_id = r.id; -update package_tag_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update package_tag_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_period_package_tag on package_tag_revision(revision_timestamp, expired_timestamp, package_id, tag_id); -create index idx_package_tag_current on package_tag_revision(current); - --- package relationship -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from package_relationship_revision pr join revision r on pr.revision_id = r.id; -update package_relationship_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update package_relationship_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_period_package_relationship on package_relationship_revision(revision_timestamp, expired_timestamp, object_package_id, subject_package_id); -create index idx_package_relationship_current on package_relationship_revision(current); - --- resource revision -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from resource_revision pr join revision r on pr.revision_id = r.id; -update resource_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update resource_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_resource_period on resource_revision(revision_timestamp, expired_timestamp, id); -create index idx_resource_period_resource_group on resource_revision(revision_timestamp, expired_timestamp, resource_group_id); -create index idx_resource_current on resource_revision(current); - --- resource group revision; -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from resource_group_revision pr join revision r on pr.revision_id = r.id; -update resource_group_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update resource_group_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_resource_group_period on resource_group_revision(revision_timestamp, expired_timestamp, id); -create index idx_resource_group_period_package on resource_group_revision(revision_timestamp, expired_timestamp, package_id); -create index idx_resource_group_current on resource_group_revision(current); - ---group revision; -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from group_revision pr join revision r on pr.revision_id = r.id; -update group_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update group_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_group_period on group_revision(revision_timestamp, expired_timestamp, id); -create index idx_group_current on group_revision(current); - ---group extra revision -truncate tmp_expired_id; -insert into tmp_expired_id select pr.id, revision_id, timestamp, lead(timestamp, 1, '9999-12-31') over (partition by pr.id order by timestamp), lead(pr.revision_id) over (partition by pr.id order by timestamp) from group_extra_revision pr join revision r on pr.revision_id = r.id; -update group_extra_revision pr set revision_timestamp = (select revision_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_timestamp = (select expired_timestamp from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id), - expired_id = (select expired_id from tmp_expired_id tmp where tmp.revision_id = pr.revision_id and tmp.id = pr.id); -update group_extra_revision set current = '1' where expired_timestamp = '9999-12-31'; - -create index idx_group_extra_period on group_extra_revision(revision_timestamp, expired_timestamp, id); -create index idx_group_extra_period_group on group_extra_revision(revision_timestamp, expired_timestamp, group_id); -create index idx_group_extra_current on group_extra_revision(current); - -drop table tmp_expired_id; - --- change state of revision tables - -update revision set approved_timestamp = timestamp; -''' - - migrate_engine.execute('begin; ' + make_missing_revisions + update_schema + ' commit;') - - for table in ['package', 'resource', 'resource_group', 'package_extra', - 'package_tag', 'package_relationship', 'group', 'group_extra']: - count = migrate_engine.execute('''select count(*) from "%s"''' % table).first()[0] - revision_expired_id_count = migrate_engine.execute('''select count(*) from %s_revision where %s_revision.expired_id is null''' % (table, table)).first()[0] - revision_expired_data_count = migrate_engine.execute('''select count(*) from %s_revision where %s_revision.expired_timestamp = '9999-12-31' ''' % (table, table)).first()[0] - revision_current = migrate_engine.execute('''select count(*) from %s_revision where %s_revision.current = '1' ''' % (table, table)).first()[0] - assert count == revision_expired_id_count - assert count == revision_expired_data_count - assert count == revision_current - - diff --git a/ckan/migration/versions/039_cca459c76d45_add_expired_id_and_dates.py b/ckan/migration/versions/039_cca459c76d45_add_expired_id_and_dates.py new file mode 100644 index 00000000000..a2594f40aa1 --- /dev/null +++ b/ckan/migration/versions/039_cca459c76d45_add_expired_id_and_dates.py @@ -0,0 +1,159 @@ +# encoding: utf-8 +"""039 Add expired id and_dates + +Revision ID: cca459c76d45 +Revises: fd6622e3d964 +Create Date: 2018-09-04 18:49:02.364964 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'cca459c76d45' +down_revision = 'fd6622e3d964' +branch_labels = None +depends_on = None + +tables = [ + 'package_revision', 'package_extra_revision', 'group_revision', + 'group_extra_revision', 'package_group_revision', 'package_tag_revision', + 'resource_group_revision', 'resource_revision', + 'package_relationship_revision' +] +indexes = ( + ( + 'package_revision', ( + ( + 'idx_package_period', + ('revision_timestamp', 'expired_timestamp', 'id') + ), + ('idx_package_current', ('current', )), + ) + ), + ( + 'package_extra_revision', ( + ( + 'idx_package_extra_period', + ('revision_timestamp', 'expired_timestamp', 'id') + ), + ( + 'idx_package_extra_period_package', + ('revision_timestamp', 'expired_timestamp', 'package_id') + ), + ('idx_package_extra_current', ('current', )), + ) + ), + ( + 'package_group_revision', ( + ( + 'idx_package_group_period_package_group', ( + 'revision_timestamp', 'expired_timestamp', 'package_id', + 'group_id' + ) + ), + ('idx_package_group_current', ('current', )), + ) + ), + ( + 'package_tag_revision', ( + ( + 'idx_period_package_tag', ( + 'revision_timestamp', 'expired_timestamp', 'package_id', + 'tag_id' + ) + ), + ('idx_package_tag_current', ('current', )), + ) + ), + ( + 'package_relationship_revision', ( + ( + 'idx_period_package_relationship', ( + 'revision_timestamp', 'expired_timestamp', + 'object_package_id', 'subject_package_id' + ) + ), + ('idx_package_relationship_current', ('current', )), + ) + ), + ( + 'resource_revision', ( + ( + 'idx_resource_period', + ('revision_timestamp', 'expired_timestamp', 'id') + ), + ( + 'idx_resource_period_resource_group', ( + 'revision_timestamp', 'expired_timestamp', + 'resource_group_id' + ) + ), + ('idx_resource_current', ('current', )), + ) + ), + ( + 'resource_group_revision', ( + ( + 'idx_resource_group_period', + ('revision_timestamp', 'expired_timestamp', 'id') + ), + ( + 'idx_resource_group_period_package', + ('revision_timestamp', 'expired_timestamp', 'package_id') + ), + ('idx_resource_group_current', ('current', )), + ) + ), + ( + 'group_revision', ( + ( + 'idx_group_period', + ('revision_timestamp', 'expired_timestamp', 'id') + ), + ('idx_group_current', ('current', )), + ) + ), + ( + 'group_extra_revision', ( + ( + 'idx_group_extra_period', + ('revision_timestamp', 'expired_timestamp', 'id') + ), + ( + 'idx_group_extra_period_group', + ('revision_timestamp', 'expired_timestamp', 'group_id') + ), + ('idx_group_extra_current', ('current', )), + ) + ), +) + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + for table in tables: + op.add_column(table, sa.Column('expired_id', sa.UnicodeText)) + op.add_column(table, sa.Column('revision_timestamp', sa.TIMESTAMP)) + op.add_column(table, sa.Column('expired_timestamp', sa.TIMESTAMP)) + op.add_column(table, sa.Column('current', sa.Boolean)) + op.add_column('revision', sa.Column('approved_timestamp', sa.TIMESTAMP)) + + for table, items in indexes: + for index, columns in items: + op.create_index(index, table, list(columns)) + + +def downgrade(): + for table, items in reversed(indexes): + for index, _ in items: + op.drop_index(index, table) + + op.drop_column('revision', 'approved_timestamp') + for table in reversed(tables): + op.drop_column(table, 'expired_id') + op.drop_column(table, 'revision_timestamp') + op.drop_column(table, 'expired_timestamp') + op.drop_column(table, 'current') diff --git a/ckan/migration/versions/040_500a08f4818e_reset_key_on_user.py b/ckan/migration/versions/040_500a08f4818e_reset_key_on_user.py new file mode 100644 index 00000000000..e46191498fa --- /dev/null +++ b/ckan/migration/versions/040_500a08f4818e_reset_key_on_user.py @@ -0,0 +1,26 @@ +# encoding: utf-8 +"""040 Reset key on user + +Revision ID: 500a08f4818e +Revises: cca459c76d45 +Create Date: 2018-09-04 18:49:02.701370 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '500a08f4818e' +down_revision = 'cca459c76d45' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('user', sa.Column('reset_key', sa.UnicodeText)) + + +def downgrade(): + op.drop_column('user', 'reset_key') diff --git a/ckan/migration/versions/040_reset_key_on_user.py b/ckan/migration/versions/040_reset_key_on_user.py deleted file mode 100644 index 4acdaa2f3b4..00000000000 --- a/ckan/migration/versions/040_reset_key_on_user.py +++ /dev/null @@ -1,15 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - user_table = Table('user', metadata, autoload=True) - reset_key_col = Column('reset_key', UnicodeText) - reset_key_col.create(user_table) - -def downgrade(migrate_engine): - raise NotImplementedError() - diff --git a/ckan/migration/versions/041_6817d4e3bdc3_resource_new_fields.py b/ckan/migration/versions/041_6817d4e3bdc3_resource_new_fields.py new file mode 100644 index 00000000000..699a0e1dc57 --- /dev/null +++ b/ckan/migration/versions/041_6817d4e3bdc3_resource_new_fields.py @@ -0,0 +1,46 @@ +# encoding: utf-8 +"""041 Resource new fields + +Revision ID: 6817d4e3bdc3 +Revises: 500a08f4818e +Create Date: 2018-09-04 18:49:03.042528 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '6817d4e3bdc3' +down_revision = '500a08f4818e' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + for table in ('resource', 'resource_revision'): + op.add_column(table, sa.Column('name', sa.UnicodeText)) + op.add_column(table, sa.Column('resource_type', sa.UnicodeText)) + op.add_column(table, sa.Column('mimetype', sa.UnicodeText)) + op.add_column(table, sa.Column('mimetype_inner', sa.UnicodeText)) + op.add_column(table, sa.Column('size', sa.BigInteger)) + op.add_column(table, sa.Column('last_modified', sa.TIMESTAMP)) + op.add_column(table, sa.Column('cache_url', sa.UnicodeText)) + op.add_column(table, sa.Column('cache_last_updated', sa.TIMESTAMP)) + op.add_column(table, sa.Column('webstore_url', sa.UnicodeText)) + op.add_column(table, sa.Column('webstore_last_updated', sa.TIMESTAMP)) + + +def downgrade(): + for table in ('resource', 'resource_revision'): + op.drop_column(table, 'name') + op.drop_column(table, 'resource_type') + op.drop_column(table, 'mimetype') + op.drop_column(table, 'mimetype_inner') + op.drop_column(table, 'size') + op.drop_column(table, 'last_modified') + op.drop_column(table, 'cache_url') + op.drop_column(table, 'cache_last_updated') + op.drop_column(table, 'webstore_url') + op.drop_column(table, 'webstore_last_updated') diff --git a/ckan/migration/versions/041_resource_new_fields.py b/ckan/migration/versions/041_resource_new_fields.py deleted file mode 100644 index 1acd6a51dce..00000000000 --- a/ckan/migration/versions/041_resource_new_fields.py +++ /dev/null @@ -1,34 +0,0 @@ -# encoding: utf-8 - -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - begin; - ALTER TABLE resource - ADD COLUMN name text, - ADD COLUMN resource_type text, - ADD COLUMN mimetype text, - ADD COLUMN mimetype_inner text, - ADD COLUMN "size" bigint, - ADD COLUMN last_modified timestamp without time zone, - ADD COLUMN cache_url text, - ADD COLUMN cache_last_updated timestamp without time zone, - ADD COLUMN webstore_url text, - ADD COLUMN webstore_last_updated timestamp without time zone; - - ALTER TABLE resource_revision - ADD COLUMN name text, - ADD COLUMN resource_type text, - ADD COLUMN mimetype text, - ADD COLUMN mimetype_inner text, - ADD COLUMN "size" bigint, - ADD COLUMN last_modified timestamp without time zone, - ADD COLUMN cache_url text, - ADD COLUMN cache_last_updated timestamp without time zone, - ADD COLUMN webstore_url text, - ADD COLUMN webstore_last_updated timestamp without time zone; - commit; - ''' - ) diff --git a/ckan/migration/versions/042_da65e2877034_user_revision_indexes.py b/ckan/migration/versions/042_da65e2877034_user_revision_indexes.py new file mode 100644 index 00000000000..6870ee9b80a --- /dev/null +++ b/ckan/migration/versions/042_da65e2877034_user_revision_indexes.py @@ -0,0 +1,38 @@ +# encoding: utf-8 +"""042 User revision indexes + +Revision ID: da65e2877034 +Revises: 6817d4e3bdc3 +Create Date: 2018-09-04 18:49:03.380103 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'da65e2877034' +down_revision = '6817d4e3bdc3' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_index('idx_revision_author', 'revision', ['author']) + op.create_index('idx_openid', 'user', ['openid']) + op.create_index( + 'idx_user_name_index', 'user', [ + sa.text( + '(CASE WHEN ' + '("user".fullname IS NULL OR "user".fullname = \'\') ' + 'THEN "user".name ELSE "user".fullname END)' + ) + ] + ) + + +def downgrade(): + op.drop_index('idx_user_name_index', 'user') + op.drop_index('idx_openid', 'user') + op.drop_index('idx_revision_author', 'revision') diff --git a/ckan/migration/versions/042_user_revision_indexes.py b/ckan/migration/versions/042_user_revision_indexes.py deleted file mode 100644 index 0be68b3885a..00000000000 --- a/ckan/migration/versions/042_user_revision_indexes.py +++ /dev/null @@ -1,15 +0,0 @@ -# encoding: utf-8 - -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' - BEGIN; - CREATE INDEX idx_revision_author ON "revision" (author); - CREATE INDEX idx_openid ON "user" (openid); - CREATE INDEX "idx_user_name_index" on "user"((CASE WHEN ("user".fullname IS NULL OR "user".fullname = '') THEN "user".name ELSE "user".fullname END)); - COMMIT; - ''' - ) - - diff --git a/ckan/migration/versions/043_bd38cd6502b2_drop_postgres_search.py b/ckan/migration/versions/043_bd38cd6502b2_drop_postgres_search.py new file mode 100644 index 00000000000..252b47d522b --- /dev/null +++ b/ckan/migration/versions/043_bd38cd6502b2_drop_postgres_search.py @@ -0,0 +1,34 @@ +# encoding: utf-8 +"""043 Drop postgres search + +Revision ID: bd38cd6502b2 +Revises: da65e2877034 +Create Date: 2018-09-04 18:49:03.717678 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'bd38cd6502b2' +down_revision = 'da65e2877034' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_table('package_search') + + +def downgrade(): + op.create_table( + 'package_search', + sa.Column( + 'package_id', + sa.UnicodeText, + sa.ForeignKey('package.id'), + primary_key=True + ), sa.Column('search_vector', sa.dialects.postgresql.TSVECTOR) + ) diff --git a/ckan/migration/versions/043_drop_postgres_search.py b/ckan/migration/versions/043_drop_postgres_search.py deleted file mode 100644 index b44089a9f36..00000000000 --- a/ckan/migration/versions/043_drop_postgres_search.py +++ /dev/null @@ -1,14 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - package_search_table = Table('package_search', metadata, autoload=True) - package_search_table.drop() -## migrate_engine.execute(''' -##DROP TABLE package_search; -##''') diff --git a/ckan/migration/versions/044_4190eeeb8d73_add_task_status.py b/ckan/migration/versions/044_4190eeeb8d73_add_task_status.py new file mode 100644 index 00000000000..9eafced4d73 --- /dev/null +++ b/ckan/migration/versions/044_4190eeeb8d73_add_task_status.py @@ -0,0 +1,44 @@ +# encoding: utf-8 +"""044 Add task status + +Revision ID: 4190eeeb8d73 +Revises: bd38cd6502b2 +Create Date: 2018-09-04 18:49:04.084036 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '4190eeeb8d73' +down_revision = 'bd38cd6502b2' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'task_status', sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('entity_id', sa.UnicodeText, nullable=False), + sa.Column('entity_type', sa.UnicodeText, nullable=False), + sa.Column('task_type', sa.UnicodeText, nullable=False), + sa.Column('key', sa.UnicodeText, nullable=False), + sa.Column('value', sa.UnicodeText, nullable=False), + sa.Column('state', sa.UnicodeText), sa.Column('error', sa.UnicodeText), + sa.Column('last_updated', sa.TIMESTAMP) + ) + op.create_primary_key('task_status_pkey', 'task_status', ['id']) + op.create_unique_constraint( + 'task_status_entity_id_task_type_key_key', 'task_status', + ['entity_id', 'task_type', 'key'] + ) + + +def downgrade(): + op.drop_constraint('task_status_pkey', 'task_status') + op.drop_constraint( + 'task_status_entity_id_task_type_key_key', 'task_status' + ) + op.drop_table('task_status') diff --git a/ckan/migration/versions/044_add_task_status.py b/ckan/migration/versions/044_add_task_status.py deleted file mode 100644 index c9a950e1a6d..00000000000 --- a/ckan/migration/versions/044_add_task_status.py +++ /dev/null @@ -1,26 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' - CREATE TABLE task_status ( - id text NOT NULL, - entity_id text NOT NULL, - entity_type text NOT NULL, - task_type text NOT NULL, - "key" text NOT NULL, - "value" text NOT NULL, - "state" text, - "error" text, - last_updated timestamp without time zone - ); - - ALTER TABLE task_status - ADD CONSTRAINT task_status_pkey PRIMARY KEY (id); - - ALTER TABLE task_status - ADD CONSTRAINT task_status_entity_id_task_type_key_key UNIQUE (entity_id, task_type, key); - ''' - ) diff --git a/ckan/migration/versions/045_54e3f155d945_user_name_unique.py b/ckan/migration/versions/045_54e3f155d945_user_name_unique.py new file mode 100644 index 00000000000..cdaf3671edf --- /dev/null +++ b/ckan/migration/versions/045_54e3f155d945_user_name_unique.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""045 User name unique + +Revision ID: 54e3f155d945 +Revises: 4190eeeb8d73 +Create Date: 2018-09-04 18:49:04.437304 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '54e3f155d945' +down_revision = '4190eeeb8d73' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_unique_constraint('user_name_key', 'user', ['name']) + + +def downgrade(): + op.drop_constraint('user_name_key', 'user') diff --git a/ckan/migration/versions/045_user_name_unique.py b/ckan/migration/versions/045_user_name_unique.py deleted file mode 100644 index c8873182b35..00000000000 --- a/ckan/migration/versions/045_user_name_unique.py +++ /dev/null @@ -1,19 +0,0 @@ -# encoding: utf-8 - -import warnings - -from sqlalchemy import exc as sa_exc -from sqlalchemy import * -from migrate import * -from migrate.changeset.constraint import UniqueConstraint - -def upgrade(migrate_engine): - # ignore reflection warnings - with warnings.catch_warnings(): - warnings.simplefilter("ignore", category=sa_exc.SAWarning) - metadata = MetaData() - metadata.bind = migrate_engine - user_table = Table('user', metadata, autoload=True) - # name_column = user_table.c.name - unique_name_constraint = UniqueConstraint('name', table=user_table) - unique_name_constraint.create() diff --git a/ckan/migration/versions/046_b69e9b80396f_drop_changesets.py b/ckan/migration/versions/046_b69e9b80396f_drop_changesets.py new file mode 100644 index 00000000000..aa71661240a --- /dev/null +++ b/ckan/migration/versions/046_b69e9b80396f_drop_changesets.py @@ -0,0 +1,71 @@ +# encoding: utf-8 +"""046 Drop changesets + +Revision ID: b69e9b80396f +Revises: 54e3f155d945 +Create Date: 2018-09-04 18:49:04.791120 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'b69e9b80396f' +down_revision = '54e3f155d945' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_table('change') + op.drop_table('changemask') + op.drop_table('changeset') + + +def downgrade(): + op.create_table( + 'changeset', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('closes_id', sa.UnicodeText, nullable=True), + sa.Column('follows_id', sa.UnicodeText, nullable=True), + sa.Column('meta', sa.UnicodeText, nullable=True), + sa.Column('branch', sa.UnicodeText, nullable=True), + sa.Column( + 'timestamp', + sa.DateTime, + server_default=sa.func.current_timestamp() + ), + sa.Column('is_working', sa.Boolean, default=False), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + nullable=True + ), + sa.Column( + 'added_here', + sa.DateTime, + server_default=sa.func.current_timestamp() + ), + ) + + op.create_table( + 'change', + sa.Column('ref', sa.UnicodeText, nullable=True), + sa.Column('diff', sa.UnicodeText, nullable=True), + sa.Column( + 'changeset_id', sa.UnicodeText, sa.ForeignKey('changeset.id') + ), + ) + + op.create_table( + 'changemask', + sa.Column('ref', sa.UnicodeText, primary_key=True), + sa.Column( + 'timestamp', + sa.DateTime, + server_default=sa.func.current_timestamp() + ), + ) diff --git a/ckan/migration/versions/046_drop_changesets.py b/ckan/migration/versions/046_drop_changesets.py deleted file mode 100644 index 2715b32265c..00000000000 --- a/ckan/migration/versions/046_drop_changesets.py +++ /dev/null @@ -1,12 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * -import migrate.changeset - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - for table_name in ['change', 'changemask', 'changeset']: - table = Table(table_name, metadata, autoload=True) - table.drop() diff --git a/ckan/migration/versions/047_883a7c406926_rename_package_group_member.py b/ckan/migration/versions/047_883a7c406926_rename_package_group_member.py new file mode 100644 index 00000000000..28a74e478a1 --- /dev/null +++ b/ckan/migration/versions/047_883a7c406926_rename_package_group_member.py @@ -0,0 +1,171 @@ +# encoding: utf-8 +"""047 Rename package_group_member + +Revision ID: 883a7c406926 +Revises: b69e9b80396f +Create Date: 2018-09-04 18:49:05.130215 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '883a7c406926' +down_revision = 'b69e9b80396f' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.rename_table('package_group', 'member') + op.rename_table('package_group_revision', 'member_revision') + + op.alter_column( + 'member', 'package_id', new_column_name='table_id', nullable=False + ) + op.alter_column( + 'member_revision', + 'package_id', + new_column_name='table_id', + nullable=False + ) + + op.drop_constraint('package_group_revision_pkey', 'member_revision') + op.drop_constraint( + 'package_group_revision_continuity_id_fkey', 'member_revision' + ) + op.drop_constraint( + 'package_group_revision_group_id_fkey', 'member_revision' + ) + op.drop_constraint( + 'package_group_revision_package_id_fkey', 'member_revision' + ) + op.drop_constraint( + 'package_group_revision_revision_id_fkey', 'member_revision' + ) + + op.drop_constraint('package_group_pkey', 'member') + op.drop_constraint('package_group_group_id_fkey', 'member') + op.drop_constraint('package_group_package_id_fkey', 'member') + op.drop_constraint('package_group_revision_id_fkey', 'member') + + op.add_column( + 'member', sa.Column('table_name', sa.UnicodeText, nullable=False) + ) + op.add_column( + 'member', sa.Column('capacity', sa.UnicodeText, nullable=False) + ) + op.add_column( + 'member_revision', + sa.Column('table_name', sa.UnicodeText, nullable=False) + ) + op.add_column( + 'member_revision', + sa.Column('capacity', sa.UnicodeText, nullable=False) + ) + + op.create_primary_key('member_pkey', 'member', ['id']) + op.create_primary_key( + 'member_revision_pkey', 'member_revision', ['id', 'revision_id'] + ) + + op.create_foreign_key( + 'member_group_id_fkey', 'member', 'group', ['group_id'], ['id'] + ) + op.create_foreign_key( + 'member_revision_id_fkey', 'member', 'revision', ['revision_id'], + ['id'] + ) + op.create_foreign_key( + 'member_revision_continuity_id_fkey', 'member_revision', 'member', + ['continuity_id'], ['id'] + ) + op.create_foreign_key( + 'member_revision_group_id_fkey', 'member_revision', 'group', + ['group_id'], ['id'] + ) + op.create_foreign_key( + 'member_revision_revision_id_fkey', 'member_revision', 'revision', + ['revision_id'], ['id'] + ) + + op.add_column('group', sa.Column('type', sa.UnicodeText, nullable=False)) + op.add_column( + 'group_revision', sa.Column('type', sa.UnicodeText, nullable=False) + ) + + op.add_column('package', sa.Column('type', sa.UnicodeText)) + op.add_column('package_revision', sa.Column('type', sa.UnicodeText)) + + +def downgrade(): + op.drop_column('package', 'type') + op.drop_column('package_revision', 'type') + + op.drop_column('group', 'type') + op.drop_column('group_revision', 'type') + + op.drop_constraint('member_revision_continuity_id_fkey', 'member_revision') + op.drop_constraint('member_revision_group_id_fkey', 'member_revision') + op.drop_constraint('member_revision_revision_id_fkey', 'member_revision') + op.drop_constraint('member_group_id_fkey', 'member') + op.drop_constraint('member_revision_id_fkey', 'member') + + op.drop_constraint('member_revision_pkey', 'member_revision') + op.drop_constraint('member_pkey', 'member') + + op.drop_column('member_revision', 'table_name') + op.drop_column('member_revision', 'capacity') + + op.drop_column('member', 'table_name') + op.drop_column('member', 'capacity') + + op.alter_column( + 'member_revision', + 'table_id', + new_column_name='package_id', + nullable=True + ) + op.alter_column( + 'member', 'table_id', new_column_name='package_id', nullable=True + ) + + op.create_primary_key('package_group_pkey', 'member', ['id']) + op.create_primary_key( + 'package_group_revision_pkey', 'member_revision', + ['id', 'revision_id'] + ) + + op.create_foreign_key( + 'package_group_group_id_fkey', 'member', 'group', ['group_id'], ['id'] + ) + op.create_foreign_key( + 'package_group_package_id_fkey', 'member', 'package', ['package_id'], + ['id'] + ) + op.create_foreign_key( + 'package_group_revision_id_fkey', 'member', 'revision', + ['revision_id'], ['id'] + ) + + op.create_foreign_key( + 'package_group_revision_continuity_id_fkey', 'member_revision', + 'member', ['continuity_id'], ['id'] + ) + op.create_foreign_key( + 'package_group_revision_group_id_fkey', 'member_revision', 'group', + ['group_id'], ['id'] + ) + op.create_foreign_key( + 'package_group_revision_package_id_fkey', 'member_revision', 'package', + ['package_id'], ['id'] + ) + op.create_foreign_key( + 'package_group_revision_revision_id_fkey', 'member_revision', + 'revision', ['revision_id'], ['id'] + ) + + op.rename_table('member_revision', 'package_group_revision') + op.rename_table('member', 'package_group') diff --git a/ckan/migration/versions/047_rename_package_group_member.py b/ckan/migration/versions/047_rename_package_group_member.py deleted file mode 100644 index 1d377739e9c..00000000000 --- a/ckan/migration/versions/047_rename_package_group_member.py +++ /dev/null @@ -1,110 +0,0 @@ -# encoding: utf-8 - -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' -BEGIN; -alter table package_group RENAME to member; -alter table package_group_revision RENAME to member_revision; -alter table member RENAME column package_id to table_id; -alter table member_revision RENAME column package_id to table_id; - -alter table member ALTER column table_id set NOT NULL; -alter table member_revision ALTER column table_id set NOT NULL; - -ALTER TABLE member_revision - DROP CONSTRAINT package_group_revision_pkey; - -ALTER TABLE member_revision - DROP CONSTRAINT package_group_revision_continuity_id_fkey; - -ALTER TABLE member_revision - DROP CONSTRAINT package_group_revision_group_id_fkey; - -ALTER TABLE member_revision - DROP CONSTRAINT package_group_revision_package_id_fkey; - -ALTER TABLE member_revision - DROP CONSTRAINT package_group_revision_revision_id_fkey; - -ALTER TABLE "member" - DROP CONSTRAINT package_group_pkey; - -ALTER TABLE "member" - DROP CONSTRAINT package_group_group_id_fkey; - -ALTER TABLE "member" - DROP CONSTRAINT package_group_package_id_fkey; - -ALTER TABLE "member" - DROP CONSTRAINT package_group_revision_id_fkey; - - -ALTER TABLE "member" - ADD COLUMN table_name text; -ALTER TABLE "member" - ADD COLUMN capacity text; - -ALTER TABLE "member_revision" - ADD COLUMN table_name text; -ALTER TABLE "member_revision" - ADD COLUMN capacity text; - -ALTER TABLE "member" - ADD CONSTRAINT member_pkey PRIMARY KEY (id); - -ALTER TABLE member_revision - ADD CONSTRAINT member_revision_pkey PRIMARY KEY (id, revision_id); - -ALTER TABLE "member" - ADD CONSTRAINT member_group_id_fkey FOREIGN KEY (group_id) REFERENCES "group"(id); - -ALTER TABLE "member" - ADD CONSTRAINT member_revision_id_fkey FOREIGN KEY (revision_id) REFERENCES revision(id); - -ALTER TABLE member_revision - ADD CONSTRAINT member_revision_continuity_id_fkey FOREIGN KEY (continuity_id) REFERENCES member(id); - -ALTER TABLE member_revision - ADD CONSTRAINT member_revision_group_id_fkey FOREIGN KEY (group_id) REFERENCES "group"(id); - -ALTER TABLE member_revision - ADD CONSTRAINT member_revision_revision_id_fkey FOREIGN KEY (revision_id) REFERENCES revision(id); - -ALTER TABLE "group" - ADD COLUMN "type" text; -ALTER TABLE "group_revision" - ADD COLUMN "type" text; - -update member set table_name = 'package', capacity = 'public'; -update member_revision set table_name = 'package', capacity = 'public'; - -update "group" set type = 'group'; -update group_revision set type = 'group'; - - -ALTER TABLE "member" - ALTER COLUMN table_name set not null; -ALTER TABLE "member" - ALTER COLUMN capacity set not null; - -ALTER TABLE member_revision - ALTER COLUMN table_name set not null; -ALTER TABLE "member_revision" - ALTER COLUMN capacity set not null; - -ALTER TABLE "group" - ALTER COLUMN "type" set not null; -ALTER TABLE "group_revision" - ALTER COLUMN "type" set not null; - -ALTER TABLE "package" - ADD COLUMN "type" text; -ALTER TABLE "package_revision" - ADD COLUMN "type" text; - - -COMMIT; - ''' - ) diff --git a/ckan/migration/versions/048_4a7011172b3f_add_activity_streams_tables.py b/ckan/migration/versions/048_4a7011172b3f_add_activity_streams_tables.py new file mode 100644 index 00000000000..f618addd1b9 --- /dev/null +++ b/ckan/migration/versions/048_4a7011172b3f_add_activity_streams_tables.py @@ -0,0 +1,53 @@ +# encoding: utf-8 +"""048 Add activity streams tables + +Revision ID: 4a7011172b3f +Revises: 883a7c406926 +Create Date: 2018-09-04 18:49:05.463765 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '4a7011172b3f' +down_revision = '883a7c406926' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'activity', + sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('timestamp', sa.TIMESTAMP), + sa.Column('user_id', sa.UnicodeText), + sa.Column('object_id', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText), + sa.Column('activity_type', sa.UnicodeText), + sa.Column('data', sa.UnicodeText), + ) + + op.create_table( + 'activity_detail', + sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('activity_id', sa.UnicodeText, nullable=False), + sa.Column('object_id', sa.UnicodeText), + sa.Column('object_type', sa.UnicodeText), + sa.Column('activity_type', sa.UnicodeText), + sa.Column('data', sa.UnicodeText), + ) + + op.create_primary_key('activity_pkey', 'activity', ['id']) + op.create_primary_key('activity_detail_pkey', 'activity_detail', ['id']) + op.create_foreign_key( + 'activity_detail_activity_id_fkey', 'activity_detail', 'activity', + ['activity_id'], ['id'] + ) + + +def downgrade(): + op.drop_table('activity_detail') + op.drop_table('activity') diff --git a/ckan/migration/versions/048_add_activity_streams_tables.py b/ckan/migration/versions/048_add_activity_streams_tables.py deleted file mode 100644 index 079cc6fc3fa..00000000000 --- a/ckan/migration/versions/048_add_activity_streams_tables.py +++ /dev/null @@ -1,37 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -CREATE TABLE activity ( - id text NOT NULL, - timestamp timestamp without time zone, - user_id text, - object_id text, - revision_id text, - activity_type text, - data text -); - -CREATE TABLE activity_detail ( - id text NOT NULL, - activity_id text NOT NULL, - object_id text, - object_type text, - activity_type text, - data text -); - -ALTER TABLE activity - ADD CONSTRAINT activity_pkey PRIMARY KEY (id); - -ALTER TABLE activity_detail - ADD CONSTRAINT activity_detail_pkey PRIMARY KEY (id); - -ALTER TABLE activity_detail - ADD CONSTRAINT activity_detail_activity_id_fkey FOREIGN KEY (activity_id) REFERENCES activity(id); - ''') diff --git a/ckan/migration/versions/049_add_group_approval_status.py b/ckan/migration/versions/049_add_group_approval_status.py deleted file mode 100644 index a327bf2bf03..00000000000 --- a/ckan/migration/versions/049_add_group_approval_status.py +++ /dev/null @@ -1,19 +0,0 @@ -# encoding: utf-8 - -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' -BEGIN; -ALTER TABLE "group" - ADD COLUMN approval_status text; - -ALTER TABLE group_revision - ADD COLUMN approval_status text; - -update "group" set approval_status = 'approved'; -update group_revision set approval_status = 'approved'; - -COMMIT; - ''' - ) diff --git a/ckan/migration/versions/049_e0c06c2177b5_add_group_approval_status.py b/ckan/migration/versions/049_e0c06c2177b5_add_group_approval_status.py new file mode 100644 index 00000000000..0198878dbd9 --- /dev/null +++ b/ckan/migration/versions/049_e0c06c2177b5_add_group_approval_status.py @@ -0,0 +1,30 @@ +# encoding: utf-8 +"""049 Add group approval status + +Revision ID: e0c06c2177b5 +Revises: 4a7011172b3f +Create Date: 2018-09-04 18:49:05.797861 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'e0c06c2177b5' +down_revision = '4a7011172b3f' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('group', sa.Column('approval_status', sa.UnicodeText)) + op.add_column( + 'group_revision', sa.Column('approval_status', sa.UnicodeText) + ) + + +def downgrade(): + op.drop_column('group', 'approval_status') + op.drop_column('group_revision', 'approval_status') diff --git a/ckan/migration/versions/050_01a6b058cb7f_term_translation_table.py b/ckan/migration/versions/050_01a6b058cb7f_term_translation_table.py new file mode 100644 index 00000000000..9f070c90d02 --- /dev/null +++ b/ckan/migration/versions/050_01a6b058cb7f_term_translation_table.py @@ -0,0 +1,32 @@ +# encoding: utf-8 +"""050 Term translation table + +Revision ID: 01a6b058cb7f +Revises: e0c06c2177b5 +Create Date: 2018-09-04 18:49:06.143050 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '01a6b058cb7f' +down_revision = 'e0c06c2177b5' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'term_translation', sa.Column('term', sa.UnicodeText, nullable=False), + sa.Column('term_translation', sa.UnicodeText, nullable=False), + sa.Column('lang_code', sa.UnicodeText, nullable=False) + ) + op.create_index('term_lang', 'term_translation', ['term', 'lang_code']) + op.create_index('term', 'term_translation', ['term']) + + +def downgrade(): + op.drop_table('term_translation') diff --git a/ckan/migration/versions/050_term_translation_table.py b/ckan/migration/versions/050_term_translation_table.py deleted file mode 100644 index f87608c08c2..00000000000 --- a/ckan/migration/versions/050_term_translation_table.py +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' - CREATE TABLE term_translation ( - term text NOT NULL, - term_translation text NOT NULL, - lang_code text NOT NULL - ); - - create index term_lang on term_translation(term, lang_code); - create index term on term_translation(term); - ''' - ) - - - - - diff --git a/ckan/migration/versions/051_a4fb0d85ced6_add_tag_vocabulary.py b/ckan/migration/versions/051_a4fb0d85ced6_add_tag_vocabulary.py new file mode 100644 index 00000000000..c99ad4a4b75 --- /dev/null +++ b/ckan/migration/versions/051_a4fb0d85ced6_add_tag_vocabulary.py @@ -0,0 +1,46 @@ +# encoding: utf-8 +"""051 Add tag vocabulary + +Revision ID: a4fb0d85ced6 +Revises: 01a6b058cb7f +Create Date: 2018-09-04 18:49:06.480087 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'a4fb0d85ced6' +down_revision = '01a6b058cb7f' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_constraint('tag_name_key', 'tag') + op.create_table( + 'vocabulary', sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('name', sa.String(100), nullable=False) + ) + + op.add_column('tag', sa.Column('vocabulary_id', sa.String(100))) + op.create_primary_key('vocabulary_pkey', 'vocabulary', ['id']) + op.create_unique_constraint( + 'tag_name_vocabulary_id_key', 'tag', ['name', 'vocabulary_id'] + ) + op.create_foreign_key( + 'tag_vocabulary_id_fkey', 'tag', 'vocabulary', ['vocabulary_id'], + ['id'] + ) + op.create_unique_constraint('vocabulary_name_key', 'vocabulary', ['name']) + + +def downgrade(): + op.drop_constraint('tag_name_vocabulary_id_key', 'tag') + op.drop_constraint('tag_vocabulary_id_fkey', 'tag') + + op.drop_column('tag', 'vocabulary_id') + op.drop_table('vocabulary') + op.create_unique_constraint('tag_name_key', 'tag', ['name']) diff --git a/ckan/migration/versions/051_add_tag_vocabulary.py b/ckan/migration/versions/051_add_tag_vocabulary.py deleted file mode 100644 index 746eff4fd3c..00000000000 --- a/ckan/migration/versions/051_add_tag_vocabulary.py +++ /dev/null @@ -1,31 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' - ALTER TABLE tag - DROP CONSTRAINT tag_name_key; - - CREATE TABLE vocabulary ( - id text NOT NULL, - name character varying(100) NOT NULL - ); - - ALTER TABLE tag - ADD COLUMN vocabulary_id character varying(100); - - ALTER TABLE vocabulary - ADD CONSTRAINT vocabulary_pkey PRIMARY KEY (id); - - ALTER TABLE tag - ADD CONSTRAINT tag_name_vocabulary_id_key UNIQUE (name, vocabulary_id); - - ALTER TABLE tag - ADD CONSTRAINT tag_vocabulary_id_fkey FOREIGN KEY (vocabulary_id) REFERENCES vocabulary(id); - - ALTER TABLE vocabulary - ADD CONSTRAINT vocabulary_name_key UNIQUE (name); - ''' - ) diff --git a/ckan/migration/versions/052_ba693d64c6d7_update_member_capacities.py b/ckan/migration/versions/052_ba693d64c6d7_update_member_capacities.py new file mode 100644 index 00000000000..a5fd64565c2 --- /dev/null +++ b/ckan/migration/versions/052_ba693d64c6d7_update_member_capacities.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""052 Update member capacities + +Revision ID: ba693d64c6d7 +Revises: a4fb0d85ced6 +Create Date: 2018-09-04 18:49:06.885179 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'ba693d64c6d7' +down_revision = 'a4fb0d85ced6' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/052_update_member_capacities.py b/ckan/migration/versions/052_update_member_capacities.py deleted file mode 100644 index 971b50ecb2d..00000000000 --- a/ckan/migration/versions/052_update_member_capacities.py +++ /dev/null @@ -1,14 +0,0 @@ -# encoding: utf-8 - -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(""" - BEGIN; - UPDATE member SET capacity='public' WHERE capacity='member' - AND table_name='package'; - UPDATE member_revision SET capacity='public' WHERE capacity='member' - AND table_name='package'; - COMMIT; - """ - ) diff --git a/ckan/migration/versions/053_9d051a099097_add_group_logo.py b/ckan/migration/versions/053_9d051a099097_add_group_logo.py new file mode 100644 index 00000000000..ba83d1af583 --- /dev/null +++ b/ckan/migration/versions/053_9d051a099097_add_group_logo.py @@ -0,0 +1,28 @@ +# encoding: utf-8 +"""053 Add group logo + +Revision ID: 9d051a099097 +Revises: ba693d64c6d7 +Create Date: 2018-09-04 18:49:07.217429 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '9d051a099097' +down_revision = 'ba693d64c6d7' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column('group', sa.Column('image_url', sa.UnicodeText)) + op.add_column('group_revision', sa.Column('image_url', sa.UnicodeText)) + + +def downgrade(): + op.drop_column('group', 'image_url') + op.drop_column('group_revision', 'image_url') diff --git a/ckan/migration/versions/053_add_group_logo.py b/ckan/migration/versions/053_add_group_logo.py deleted file mode 100644 index fc1fe3bdbf9..00000000000 --- a/ckan/migration/versions/053_add_group_logo.py +++ /dev/null @@ -1,14 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' - ALTER TABLE "group" - ADD COLUMN image_url text; - - ALTER TABLE group_revision - ADD COLUMN image_url text; - ''' - ) diff --git a/ckan/migration/versions/054_add_resource_created_date.py b/ckan/migration/versions/054_add_resource_created_date.py deleted file mode 100644 index 2f6a0cd993d..00000000000 --- a/ckan/migration/versions/054_add_resource_created_date.py +++ /dev/null @@ -1,11 +0,0 @@ -# encoding: utf-8 - -def upgrade(migrate_engine): - migrate_engine.execute(''' - ALTER TABLE resource - ADD COLUMN created timestamp without time zone; - - ALTER TABLE resource_revision - ADD COLUMN created timestamp without time zone; - ''' - ) diff --git a/ckan/migration/versions/054_da21b38da4db_add_resource_created_date.py b/ckan/migration/versions/054_da21b38da4db_add_resource_created_date.py new file mode 100644 index 00000000000..50ceb698617 --- /dev/null +++ b/ckan/migration/versions/054_da21b38da4db_add_resource_created_date.py @@ -0,0 +1,29 @@ +# encoding: utf-8 +"""054 Add resource created date + +Revision ID: da21b38da4db +Revises: 9d051a099097 +Create Date: 2018-09-04 18:49:07.555419 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'da21b38da4db' +down_revision = '9d051a099097' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.add_column('resource', sa.Column('created', sa.TIMESTAMP)) + op.add_column('resource_revision', sa.Column('created', sa.TIMESTAMP)) + + +def downgrade(): + op.drop_column('resource', 'created') + op.drop_column('resource_revision', 'created') diff --git a/ckan/migration/versions/055_048f7db947bf_update_user_and_activity_detail.py b/ckan/migration/versions/055_048f7db947bf_update_user_and_activity_detail.py new file mode 100644 index 00000000000..92ed5850245 --- /dev/null +++ b/ckan/migration/versions/055_048f7db947bf_update_user_and_activity_detail.py @@ -0,0 +1,27 @@ +# encoding: utf-8 +"""055 Update user and activity_detail + +Revision ID: 048f7db947bf +Revises: da21b38da4db +Create Date: 2018-09-04 18:49:07.896968 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '048f7db947bf' +down_revision = 'da21b38da4db' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.alter_column('activity_detail', 'activity_id', nullable=True) + op.alter_column('user', 'name', nullable=False) + + +def downgrade(): + op.alter_column('activity_detail', 'activity_id', nullable=False) + op.alter_column('user', 'name', nullable=True) diff --git a/ckan/migration/versions/055_update_user_and_activity_detail.py b/ckan/migration/versions/055_update_user_and_activity_detail.py deleted file mode 100644 index 7e91c2038ee..00000000000 --- a/ckan/migration/versions/055_update_user_and_activity_detail.py +++ /dev/null @@ -1,11 +0,0 @@ -# encoding: utf-8 - -def upgrade(migrate_engine): - migrate_engine.execute(''' - ALTER TABLE activity_detail - ALTER COLUMN activity_id DROP NOT NULL; - - ALTER TABLE "user" - ALTER COLUMN name SET NOT NULL; - ''' - ) diff --git a/ckan/migration/versions/056_11af3215ae89_add_related_table.py b/ckan/migration/versions/056_11af3215ae89_add_related_table.py new file mode 100644 index 00000000000..b9f92ffab60 --- /dev/null +++ b/ckan/migration/versions/056_11af3215ae89_add_related_table.py @@ -0,0 +1,52 @@ +# encoding: utf-8 +"""056 Add related table + +Revision ID: 11af3215ae89 +Revises: 048f7db947bf +Create Date: 2018-09-04 18:49:08.239860 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '11af3215ae89' +down_revision = '048f7db947bf' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'related', sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('type', sa.UnicodeText, nullable=False), + sa.Column('title', sa.UnicodeText), + sa.Column('description', sa.UnicodeText), + sa.Column('image_url', sa.UnicodeText), + sa.Column('url', sa.UnicodeText), sa.Column('created', sa.TIMESTAMP), + sa.Column('owner_id', sa.UnicodeText) + ) + op.create_table( + 'related_dataset', sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('dataset_id', sa.UnicodeText, nullable=False), + sa.Column('related_id', sa.UnicodeText, nullable=False), + sa.Column('status', sa.UnicodeText) + ) + op.create_primary_key('related_pkey', 'related', ['id']) + op.create_primary_key('related_dataset_pkey', 'related_dataset', ['id']) + + op.create_foreign_key( + 'related_dataset_dataset_id_fkey', 'related_dataset', 'package', + ['dataset_id'], ['id'] + ) + op.create_foreign_key( + 'related_dataset_related_id_fkey', 'related_dataset', 'related', + ['related_id'], ['id'] + ) + + +def downgrade(): + op.drop_table('related_dataset') + op.drop_table('related') diff --git a/ckan/migration/versions/056_add_related_table.py b/ckan/migration/versions/056_add_related_table.py deleted file mode 100644 index f525d38cadd..00000000000 --- a/ckan/migration/versions/056_add_related_table.py +++ /dev/null @@ -1,42 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -BEGIN; -CREATE TABLE related ( - id text NOT NULL, - type text NOT NULL, - title text, - description text, - image_url text, - url text, - created timestamp without time zone, - owner_id text -); - -CREATE TABLE related_dataset ( - id text NOT NULL, - dataset_id text NOT NULL, - related_id text NOT NULL, - status text -); - -ALTER TABLE related - ADD CONSTRAINT related_pkey PRIMARY KEY (id); - -ALTER TABLE related_dataset - ADD CONSTRAINT related_dataset_pkey PRIMARY KEY (id); - -ALTER TABLE related_dataset - ADD CONSTRAINT related_dataset_dataset_id_fkey FOREIGN KEY (dataset_id) REFERENCES package(id); - -ALTER TABLE related_dataset - ADD CONSTRAINT related_dataset_related_id_fkey FOREIGN KEY (related_id) REFERENCES related(id); -COMMIT; - ''' - ) diff --git a/ckan/migration/versions/057_660a5aae527e_tracking.py b/ckan/migration/versions/057_660a5aae527e_tracking.py new file mode 100644 index 00000000000..c3c7a09cd2c --- /dev/null +++ b/ckan/migration/versions/057_660a5aae527e_tracking.py @@ -0,0 +1,62 @@ +# encoding: utf-8 +"""057 Tracking + +Revision ID: 660a5aae527e +Revises: 11af3215ae89 +Create Date: 2018-09-04 18:49:08.573692 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '660a5aae527e' +down_revision = '11af3215ae89' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'tracking_raw', sa.Column('user_key', sa.String(100), nullable=False), + sa.Column('url', sa.UnicodeText, nullable=False), + sa.Column('tracking_type', sa.String(10), nullable=False), + sa.Column( + 'access_timestamp', + sa.TIMESTAMP, + server_default=sa.func.current_timestamp() + ) + ) + op.create_index('tracking_raw_url', 'tracking_raw', ['url']) + op.create_index('tracking_raw_user_key', 'tracking_raw', ['user_key']) + op.create_index( + 'tracking_raw_access_timestamp', 'tracking_raw', ['access_timestamp'] + ) + + op.create_table( + 'tracking_summary', sa.Column('url', sa.UnicodeText, nullable=False), + sa.Column('package_id', sa.UnicodeText), + sa.Column('tracking_type', sa.String(10), nullable=False), + sa.Column('count', sa.Integer, nullable=False), + sa.Column( + 'running_total', sa.Integer, nullable=False, server_default='0' + ), + sa.Column( + 'recent_views', sa.Integer, nullable=False, server_default='0' + ), sa.Column('tracking_date', sa.Date) + ) + + op.create_index('tracking_summary_url', 'tracking_summary', ['url']) + op.create_index( + 'tracking_summary_package_id', 'tracking_summary', ['package_id'] + ) + op.create_index( + 'tracking_summary_date', 'tracking_summary', ['tracking_date'] + ) + + +def downgrade(): + op.drop_table('tracking_summary') + op.drop_table('tracking_raw') diff --git a/ckan/migration/versions/057_tracking.py b/ckan/migration/versions/057_tracking.py deleted file mode 100644 index 9c151a177be..00000000000 --- a/ckan/migration/versions/057_tracking.py +++ /dev/null @@ -1,35 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' - BEGIN; - CREATE TABLE tracking_raw ( - user_key character varying(100) NOT NULL, - url text NOT NULL, - tracking_type character varying(10) NOT NULL, - access_timestamp timestamp without time zone DEFAULT current_timestamp - ); - CREATE INDEX tracking_raw_url ON tracking_raw(url); - CREATE INDEX tracking_raw_user_key ON tracking_raw(user_key); - CREATE INDEX tracking_raw_access_timestamp ON tracking_raw(access_timestamp); - - CREATE TABLE tracking_summary( - url text NOT NULL, - package_id text, - tracking_type character varying(10) NOT NULL, - count int NOT NULL, - running_total int NOT NULL DEFAULT 0, - recent_views int NOT NULL DEFAULT 0, - tracking_date date - ); - - CREATE INDEX tracking_summary_url ON tracking_summary(url); - CREATE INDEX tracking_summary_package_id ON tracking_summary(package_id); - CREATE INDEX tracking_summary_date ON tracking_summary(tracking_date); - - COMMIT; - ''' - ) diff --git a/ckan/migration/versions/058_add_follower_tables.py b/ckan/migration/versions/058_add_follower_tables.py deleted file mode 100644 index 4ed829cc697..00000000000 --- a/ckan/migration/versions/058_add_follower_tables.py +++ /dev/null @@ -1,39 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -CREATE TABLE user_following_dataset ( - follower_id text NOT NULL, - object_id text NOT NULL, - datetime timestamp without time zone NOT NULL -); - -CREATE TABLE user_following_user ( - follower_id text NOT NULL, - object_id text NOT NULL, - datetime timestamp without time zone NOT NULL -); - -ALTER TABLE user_following_dataset - ADD CONSTRAINT user_following_dataset_pkey PRIMARY KEY (follower_id, object_id); - -ALTER TABLE user_following_user - ADD CONSTRAINT user_following_user_pkey PRIMARY KEY (follower_id, object_id); - -ALTER TABLE user_following_dataset - ADD CONSTRAINT user_following_dataset_follower_id_fkey FOREIGN KEY (follower_id) REFERENCES "user"(id) ON UPDATE CASCADE ON DELETE CASCADE; - -ALTER TABLE user_following_dataset - ADD CONSTRAINT user_following_dataset_object_id_fkey FOREIGN KEY (object_id) REFERENCES package(id) ON UPDATE CASCADE ON DELETE CASCADE; - -ALTER TABLE user_following_user - ADD CONSTRAINT user_following_user_follower_id_fkey FOREIGN KEY (follower_id) REFERENCES "user"(id) ON UPDATE CASCADE ON DELETE CASCADE; - -ALTER TABLE user_following_user - ADD CONSTRAINT user_following_user_object_id_fkey FOREIGN KEY (object_id) REFERENCES "user"(id) ON UPDATE CASCADE ON DELETE CASCADE; - ''') diff --git a/ckan/migration/versions/058_bd36d1826a5d_add_follower_tables.py b/ckan/migration/versions/058_bd36d1826a5d_add_follower_tables.py new file mode 100644 index 00000000000..78cef1d6fec --- /dev/null +++ b/ckan/migration/versions/058_bd36d1826a5d_add_follower_tables.py @@ -0,0 +1,76 @@ +# encoding: utf-8 +"""058 Add follower tables + +Revision ID: bd36d1826a5d +Revises: 660a5aae527e +Create Date: 2018-09-04 18:49:08.908624 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'bd36d1826a5d' +down_revision = '660a5aae527e' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'user_following_dataset', + sa.Column('follower_id', sa.UnicodeText, nullable=False), + sa.Column('object_id', sa.UnicodeText, nullable=False), + sa.Column('datetime', sa.TIMESTAMP, nullable=False) + ) + op.create_table( + 'user_following_user', + sa.Column('follower_id', sa.UnicodeText, nullable=False), + sa.Column('object_id', sa.UnicodeText, nullable=False), + sa.Column('datetime', sa.TIMESTAMP, nullable=False) + ) + + op.create_primary_key( + 'user_following_dataset_pkey', 'user_following_dataset', + ['follower_id', 'object_id'] + ) + op.create_primary_key( + 'user_following_user_pkey', 'user_following_user', + ['follower_id', 'object_id'] + ) + + op.create_foreign_key( + 'user_following_dataset_follower_id_fkey', + 'user_following_dataset', + 'user', ['follower_id'], ['id'], + onupdate='CASCADE', + ondelete='CASCADE' + ) + op.create_foreign_key( + 'user_following_dataset_object_id_fkey', + 'user_following_dataset', + 'package', ['object_id'], ['id'], + onupdate='CASCADE', + ondelete='CASCADE' + ) + op.create_foreign_key( + 'user_following_user_follower_id_fkey', + 'user_following_user', + 'user', ['follower_id'], ['id'], + onupdate='CASCADE', + ondelete='CASCADE' + ) + op.create_foreign_key( + 'user_following_user_object_id_fkey', + 'user_following_user', + 'user', ['object_id'], ['id'], + onupdate='CASCADE', + ondelete='CASCADE' + ) + + +def downgrade(): + op.drop_table('user_following_dataset') + op.drop_table('user_following_user') diff --git a/ckan/migration/versions/059_9291bb46f352_add_related_count_and_flag.py b/ckan/migration/versions/059_9291bb46f352_add_related_count_and_flag.py new file mode 100644 index 00000000000..b75fb1b6061 --- /dev/null +++ b/ckan/migration/versions/059_9291bb46f352_add_related_count_and_flag.py @@ -0,0 +1,36 @@ +# encoding: utf-8 +"""059 Add related count and_flag + +Revision ID: 9291bb46f352 +Revises: bd36d1826a5d +Create Date: 2018-09-04 18:49:09.243738 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '9291bb46f352' +down_revision = 'bd36d1826a5d' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'related', + sa.Column( + 'view_count', sa.Integer, nullable=False, server_default='0' + ) + ) + op.add_column( + 'related', + sa.Column('featured', sa.Integer, nullable=False, server_default='0') + ) + + +def downgrade(): + op.drop_column('related', 'view_count') + op.drop_column('related', 'featured') diff --git a/ckan/migration/versions/059_add_related_count_and_flag.py b/ckan/migration/versions/059_add_related_count_and_flag.py deleted file mode 100644 index 294e5c45a12..00000000000 --- a/ckan/migration/versions/059_add_related_count_and_flag.py +++ /dev/null @@ -1,16 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - migrate_engine.execute(''' - ALTER TABLE "related" - ADD COLUMN view_count INT NOT NULL DEFAULT 0; - - ALTER TABLE "related" - ADD COLUMN featured INT NOT NULL DEFAULT 0; - - UPDATE related SET view_count=0, featured=0 WHERE view_count IS NULL; - ''' - ) diff --git a/ckan/migration/versions/060_31ad11c518fc_add_system_info_table.py b/ckan/migration/versions/060_31ad11c518fc_add_system_info_table.py new file mode 100644 index 00000000000..ba3d7a57217 --- /dev/null +++ b/ckan/migration/versions/060_31ad11c518fc_add_system_info_table.py @@ -0,0 +1,50 @@ +# encoding: utf-8 +"""060 Add system info table + +Revision ID: 31ad11c518fc +Revises: 9291bb46f352 +Create Date: 2018-09-04 18:49:09.587220 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '31ad11c518fc' +down_revision = '9291bb46f352' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.create_table( + 'system_info', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('key', sa.Unicode(100), unique=True, nullable=False), + sa.Column('value', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText, sa.ForeignKey('revision.id')) + ) + + op.create_table( + 'system_info_revision', + sa.Column('id', sa.Integer, primary_key=True, nullable=False), + sa.Column('key', sa.Unicode(100), unique=True, nullable=False), + sa.Column('value', sa.UnicodeText), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.Integer, sa.ForeignKey('system_info.id') + ), + ) + + +def downgrade(): + op.drop_table('system_info_revision') + op.drop_table('system_info') diff --git a/ckan/migration/versions/060_add_system_info_table.py b/ckan/migration/versions/060_add_system_info_table.py deleted file mode 100644 index ceeb821036e..00000000000 --- a/ckan/migration/versions/060_add_system_info_table.py +++ /dev/null @@ -1,29 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - meta = MetaData() - - - system_info_table = Table('system_info', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('key', Unicode(100), unique=True, nullable=False), - Column('value', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id')) - ) - - system_info_revision_table = Table('system_info_revision', meta, - Column('id', Integer() , primary_key=True, nullable=False), - Column('key', Unicode(100), unique=True, nullable=False), - Column('value', UnicodeText), - Column('revision_id', UnicodeText, ForeignKey('revision.id'), primary_key=True), - Column('continuity_id', Integer(), ForeignKey('system_info.id') ), - ) - - - meta.bind = migrate_engine - revision_table = Table('revision', meta, autoload=True) - - meta.create_all() diff --git a/ckan/migration/versions/061_338d460bc460_add_follower_group_table.py b/ckan/migration/versions/061_338d460bc460_add_follower_group_table.py new file mode 100644 index 00000000000..624d17243b6 --- /dev/null +++ b/ckan/migration/versions/061_338d460bc460_add_follower_group_table.py @@ -0,0 +1,50 @@ +# encoding: utf-8 +"""061 Add follower group_table + +Revision ID: 338d460bc460 +Revises: 31ad11c518fc +Create Date: 2018-09-04 18:49:09.925977 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '338d460bc460' +down_revision = '31ad11c518fc' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'user_following_group', + sa.Column('follower_id', sa.UnicodeText, nullable=False), + sa.Column('object_id', sa.UnicodeText, nullable=False), + sa.Column('datetime', sa.TIMESTAMP, nullable=False) + ) + + op.create_primary_key( + 'user_following_group_pkey', 'user_following_group', + ['follower_id', 'object_id'] + ) + op.create_foreign_key( + 'user_following_group_user_id_fkey', + 'user_following_group', + 'user', ['follower_id'], ['id'], + onupdate='CASCADE', + ondelete='CASCADE' + ) + op.create_foreign_key( + 'user_following_group_group_id_fkey', + 'user_following_group', + 'group', ['object_id'], ['id'], + onupdate='CASCADE', + ondelete='CASCADE' + ) + + +def downgrade(): + op.drop_table('user_following_group') diff --git a/ckan/migration/versions/061_add_follower__group_table.py b/ckan/migration/versions/061_add_follower__group_table.py deleted file mode 100644 index 5fe27e2fc9e..00000000000 --- a/ckan/migration/versions/061_add_follower__group_table.py +++ /dev/null @@ -1,24 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -CREATE TABLE user_following_group ( - follower_id text NOT NULL, - object_id text NOT NULL, - datetime timestamp without time zone NOT NULL -); - -ALTER TABLE user_following_group - ADD CONSTRAINT user_following_group_pkey PRIMARY KEY (follower_id, object_id); - -ALTER TABLE user_following_group - ADD CONSTRAINT user_following_group_user_id_fkey FOREIGN KEY (follower_id) REFERENCES "user"(id) ON UPDATE CASCADE ON DELETE CASCADE; - -ALTER TABLE user_following_group - ADD CONSTRAINT user_following_group_group_id_fkey FOREIGN KEY (object_id) REFERENCES "group"(id) ON UPDATE CASCADE ON DELETE CASCADE; - ''') diff --git a/ckan/migration/versions/062_6deb2bbab394_add_dashboard_table.py b/ckan/migration/versions/062_6deb2bbab394_add_dashboard_table.py new file mode 100644 index 00000000000..86b77f20400 --- /dev/null +++ b/ckan/migration/versions/062_6deb2bbab394_add_dashboard_table.py @@ -0,0 +1,37 @@ +# encoding: utf-8 +"""062 Add dashboard table + +Revision ID: 6deb2bbab394 +Revises: 338d460bc460 +Create Date: 2018-09-04 18:49:10.266290 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '6deb2bbab394' +down_revision = '338d460bc460' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'dashboard', sa.Column('user_id', sa.UnicodeText, nullable=False), + sa.Column('activity_stream_last_viewed', sa.TIMESTAMP, nullable=False) + ) + op.create_primary_key('dashboard_pkey', 'dashboard', ['user_id']) + op.create_foreign_key( + 'dashboard_user_id_fkey', + 'dashboard', + 'user', ['user_id'], ['id'], + onupdate='CASCADE', + ondelete='CASCADE' + ) + + +def downgrade(): + op.drop_table('dashboard') diff --git a/ckan/migration/versions/062_add_dashboard_table.py b/ckan/migration/versions/062_add_dashboard_table.py deleted file mode 100644 index c820ba372d0..00000000000 --- a/ckan/migration/versions/062_add_dashboard_table.py +++ /dev/null @@ -1,18 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -CREATE TABLE dashboard ( - user_id text NOT NULL, - activity_stream_last_viewed timestamp without time zone NOT NULL -); -ALTER TABLE dashboard - ADD CONSTRAINT dashboard_pkey PRIMARY KEY (user_id); -ALTER TABLE dashboard - ADD CONSTRAINT dashboard_user_id_fkey FOREIGN KEY (user_id) REFERENCES "user"(id) ON UPDATE CASCADE ON DELETE CASCADE; - ''') diff --git a/ckan/migration/versions/063_8b633852cb7a_org_changes.py b/ckan/migration/versions/063_8b633852cb7a_org_changes.py new file mode 100644 index 00000000000..b02e08505e6 --- /dev/null +++ b/ckan/migration/versions/063_8b633852cb7a_org_changes.py @@ -0,0 +1,57 @@ +# encoding: utf-8 +"""063 Org changes + +Revision ID: 8b633852cb7a +Revises: 6deb2bbab394 +Create Date: 2018-09-04 18:49:10.608831 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '8b633852cb7a' +down_revision = '6deb2bbab394' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.add_column( + 'user', sa.Column('sysadmin', sa.Boolean, server_default='FALSE') + ) + op.add_column('package', sa.Column('owner_org', sa.UnicodeText)) + op.add_column( + 'package', sa.Column('private', sa.Boolean, server_default='FALSE') + ) + + op.add_column('package_revision', sa.Column('owner_org', sa.UnicodeText)) + op.add_column( + 'package_revision', + sa.Column('private', sa.Boolean, server_default='FALSE') + ) + + op.add_column( + 'group', + sa.Column('is_organization', sa.Boolean, server_default='FALSE') + ) + op.add_column( + 'group_revision', + sa.Column('is_organization', sa.Boolean, server_default='FALSE') + ) + + +def downgrade(): + + op.drop_column('user', 'sysadmin') + op.drop_column('package', 'owner_org') + op.drop_column('package', 'private') + + op.drop_column('package_revision', 'owner_org') + op.drop_column('package_revision', 'private') + + op.drop_column('group', 'is_organization') + op.drop_column('group_revision', 'is_organization') diff --git a/ckan/migration/versions/063_org_changes.py b/ckan/migration/versions/063_org_changes.py deleted file mode 100644 index d2ce6772ad5..00000000000 --- a/ckan/migration/versions/063_org_changes.py +++ /dev/null @@ -1,33 +0,0 @@ -# encoding: utf-8 - -from migrate import * - -def upgrade(migrate_engine): - - update_schema = ''' -BEGIN; - -ALTER TABLE "user" - ADD COLUMN sysadmin boolean DEFAULT FALSE; - -ALTER TABLE package - ADD COLUMN owner_org TEXT, - ADD COLUMN private boolean DEFAULT FALSE; - -ALTER TABLE package_revision - ADD COLUMN owner_org TEXT, - ADD COLUMN private boolean DEFAULT FALSE; - - -ALTER TABLE "group" - ADD COLUMN is_organization boolean DEFAULT FALSE; - -ALTER TABLE group_revision - ADD COLUMN is_organization boolean DEFAULT FALSE; - -UPDATE "user" SET sysadmin=true WHERE id in ( SELECT user_id FROM user_object_role WHERE role='admin' AND context='System'); - -COMMIT; - -''' - migrate_engine.execute(update_schema) diff --git a/ckan/migration/versions/064_4f8becd4919a_add_email_last_sent_column.py b/ckan/migration/versions/064_4f8becd4919a_add_email_last_sent_column.py new file mode 100644 index 00000000000..6f8f6c89fbe --- /dev/null +++ b/ckan/migration/versions/064_4f8becd4919a_add_email_last_sent_column.py @@ -0,0 +1,34 @@ +# encoding: utf-8 +"""064 Add email_last_sent_column + +Revision ID: 4f8becd4919a +Revises: 8b633852cb7a +Create Date: 2018-09-04 18:49:10.939639 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '4f8becd4919a' +down_revision = '8b633852cb7a' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'dashboard', + sa.Column( + 'email_last_sent', + sa.TIMESTAMP, + nullable=False, + server_default=sa.func.localtimestamp() + ) + ) + + +def downgrade(): + op.drop_column('dashboard', 'email_last_sent') diff --git a/ckan/migration/versions/064_add_email_last_sent_column.py b/ckan/migration/versions/064_add_email_last_sent_column.py deleted file mode 100644 index d47a74cf9f6..00000000000 --- a/ckan/migration/versions/064_add_email_last_sent_column.py +++ /dev/null @@ -1,12 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -ALTER TABLE dashboard - ADD COLUMN email_last_sent timestamp without time zone NOT NULL DEFAULT LOCALTIMESTAMP; - ''') diff --git a/ckan/migration/versions/065_1fab0bc6439e_add_email_notifications_preference.py b/ckan/migration/versions/065_1fab0bc6439e_add_email_notifications_preference.py new file mode 100644 index 00000000000..1fb44518cb8 --- /dev/null +++ b/ckan/migration/versions/065_1fab0bc6439e_add_email_notifications_preference.py @@ -0,0 +1,33 @@ +# encoding: utf-8 +"""065 Add email notifications preference + +Revision ID: 1fab0bc6439e +Revises: 4f8becd4919a +Create Date: 2018-09-04 18:49:11.283832 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '1fab0bc6439e' +down_revision = '4f8becd4919a' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'user', + sa.Column( + 'activity_streams_email_notifications', + sa.Boolean, + server_default='FALSE' + ) + ) + + +def downgrade(): + op.drop_column('user', 'activity_streams_email_notifications') diff --git a/ckan/migration/versions/065_add_email_notifications_preference.py b/ckan/migration/versions/065_add_email_notifications_preference.py deleted file mode 100644 index c6b7e3786e0..00000000000 --- a/ckan/migration/versions/065_add_email_notifications_preference.py +++ /dev/null @@ -1,12 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import * -from migrate import * - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -ALTER TABLE "user" - ADD COLUMN activity_streams_email_notifications BOOLEAN DEFAULT FALSE; - ''') diff --git a/ckan/migration/versions/066_ad16b3bd8cb6_default_package_type.py b/ckan/migration/versions/066_ad16b3bd8cb6_default_package_type.py new file mode 100644 index 00000000000..f6e319074d6 --- /dev/null +++ b/ckan/migration/versions/066_ad16b3bd8cb6_default_package_type.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""066 Default package type + +Revision ID: ad16b3bd8cb6 +Revises: 1fab0bc6439e +Create Date: 2018-09-04 18:49:11.624055 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'ad16b3bd8cb6' +down_revision = '1fab0bc6439e' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/066_default_package_type.py b/ckan/migration/versions/066_default_package_type.py deleted file mode 100644 index 48ccec0153d..00000000000 --- a/ckan/migration/versions/066_default_package_type.py +++ /dev/null @@ -1,14 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - - update_statement = ''' -BEGIN; - -UPDATE package SET type = 'dataset' WHERE type IS NULL; - -COMMIT; - -''' - migrate_engine.execute(update_statement) diff --git a/ckan/migration/versions/067_266c110eafec_turn_extras_to_strings.py b/ckan/migration/versions/067_266c110eafec_turn_extras_to_strings.py new file mode 100644 index 00000000000..153ab6fed78 --- /dev/null +++ b/ckan/migration/versions/067_266c110eafec_turn_extras_to_strings.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""067 Turn extras to strings + +Revision ID: 266c110eafec +Revises: ad16b3bd8cb6 +Create Date: 2018-09-04 18:49:11.961287 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '266c110eafec' +down_revision = 'ad16b3bd8cb6' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/067_turn_extras_to_strings.py b/ckan/migration/versions/067_turn_extras_to_strings.py deleted file mode 100644 index c69be512969..00000000000 --- a/ckan/migration/versions/067_turn_extras_to_strings.py +++ /dev/null @@ -1,30 +0,0 @@ -# encoding: utf-8 - -import json - -def upgrade(migrate_engine): - - with migrate_engine.begin() as connection: - tables = 'package_extra group_extra' - revision_tables = 'package_extra_revision group_extra_revision' - - for table in tables.split(): - sql = """select id, value from {table} where substr(value,1,1) = '"' """.format(table=table) - results = connection.execute(sql) - for result in results: - id, value = result - update_sql = 'update {table} set value = %s where id = %s' - connection.execute(update_sql.format(table=table), - json.loads(value), id) - - for table in revision_tables.split(): - sql = """select id, revision_id, value from {table} where substr(value,1,1) = '"' """.format(table=table) - - results = connection.execute(sql) - for result in results: - id, revision_id, value = result - update_sql = 'update {table} set value = %s where id = %s and revision_id = %s' - connection.execute(update_sql.format(table=table), - json.loads(value), id, revision_id) - - diff --git a/ckan/migration/versions/068_add_package_extras_index.py b/ckan/migration/versions/068_add_package_extras_index.py deleted file mode 100644 index 1aac25089e5..00000000000 --- a/ckan/migration/versions/068_add_package_extras_index.py +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - CREATE INDEX idx_package_extra_package_id ON package_extra_revision - USING BTREE (package_id, current); - ''' - ) diff --git a/ckan/migration/versions/068_e33a5f2b2a84_add_package_extras_index.py b/ckan/migration/versions/068_e33a5f2b2a84_add_package_extras_index.py new file mode 100644 index 00000000000..b27a4353e8f --- /dev/null +++ b/ckan/migration/versions/068_e33a5f2b2a84_add_package_extras_index.py @@ -0,0 +1,28 @@ +# encoding: utf-8 +"""068 Add package extras index + +Revision ID: e33a5f2b2a84 +Revises: 266c110eafec +Create Date: 2018-09-04 18:49:12.301432 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'e33a5f2b2a84' +down_revision = '266c110eafec' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_index( + 'idx_package_extra_package_id', 'package_extra_revision', + ['package_id', 'current'] + ) + + +def downgrade(): + op.drop_index('idx_package_extra_package_id', 'package_extra_revision') diff --git a/ckan/migration/versions/069_e7524c675cdb_resource_url_and_metadata_modified.py b/ckan/migration/versions/069_e7524c675cdb_resource_url_and_metadata_modified.py new file mode 100644 index 00000000000..42cc39528f7 --- /dev/null +++ b/ckan/migration/versions/069_e7524c675cdb_resource_url_and_metadata_modified.py @@ -0,0 +1,44 @@ +# encoding: utf-8 +"""069 Resource url and metadata_modified + +Revision ID: e7524c675cdb +Revises: e33a5f2b2a84 +Create Date: 2018-09-04 18:49:12.639912 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'e7524c675cdb' +down_revision = 'e33a5f2b2a84' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + + op.add_column('resource', sa.Column('url_type', sa.UnicodeText)) + op.add_column('resource_revision', sa.Column('url_type', sa.UnicodeText)) + + op.add_column('package', sa.Column('metadata_modified', sa.TIMESTAMP)) + op.add_column('package', sa.Column('creator_user_id', sa.UnicodeText)) + op.add_column( + 'package_revision', sa.Column('metadata_modified', sa.TIMESTAMP) + ) + op.add_column( + 'package_revision', sa.Column('creator_user_id', sa.UnicodeText) + ) + + +def downgrade(): + + op.drop_column('resource', 'url_type') + op.drop_column('resource_revision', 'url_type') + + op.drop_column('package', 'metadata_modified') + op.drop_column('package', 'creator_user_id') + op.drop_column('package_revision', 'metadata_modified') + op.drop_column('package_revision', 'creator_user_id') diff --git a/ckan/migration/versions/069_resource_url_and_metadata_modified.py b/ckan/migration/versions/069_resource_url_and_metadata_modified.py deleted file mode 100644 index 888d146f93c..00000000000 --- a/ckan/migration/versions/069_resource_url_and_metadata_modified.py +++ /dev/null @@ -1,76 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - - update_schema = ''' -BEGIN; - -ALTER TABLE resource - ADD COLUMN url_type TEXT; - -ALTER TABLE resource_revision - ADD COLUMN url_type TEXT; - -ALTER TABLE package - ADD COLUMN metadata_modified timestamp without time zone, - ADD COLUMN creator_user_id TEXT; - -ALTER TABLE package_revision - ADD COLUMN metadata_modified timestamp without time zone, - ADD COLUMN creator_user_id TEXT; - - --- package -update package -set metadata_modified = greatest(max_revision, metadata_modified) -from -( -select id package_id, max(revision_timestamp) max_revision -from package_revision group by id -) max_rev -where max_rev.package_id = package.id; - --- package tag -update package -set metadata_modified = greatest(max_revision, metadata_modified) -from (select package_id, max(revision_timestamp) max_revision -from package_tag_revision group by package_id) max_rev -where max_rev.package_id = package.id; - --- package extra -update package -set metadata_modified = greatest(max_revision, metadata_modified) -from (select package_id, max(revision_timestamp) max_revision -from package_extra_revision group by package_id) max_rev -where max_rev.package_id = package.id; - ---resource - -update package -set metadata_modified = greatest(max_revision, metadata_modified) -from (select package_id, max(revision_timestamp) max_revision - from resource_revision - join resource_group - on resource_revision.resource_group_id = resource_group.id - group by package_id) max_rev -where max_rev.package_id = package.id -; - --- add as many creators as we can find -update package set creator_user_id = user_id from -(select - package_revision.id as package_id, - "user".id as user_id, revision_timestamp, - row_number() over - (partition by package_revision.id order by revision_timestamp) num -from package_revision - join revision on package_revision.revision_id = revision.id join "user" - on (revision.author = "user".name - or revision.author = "user".openid)) first_rev - where package_id = id and num = 1; - -COMMIT; - -''' - migrate_engine.execute(update_schema) diff --git a/ckan/migration/versions/070_add_activity_and_resource_indexes.py b/ckan/migration/versions/070_add_activity_and_resource_indexes.py deleted file mode 100644 index 62c1a3802e0..00000000000 --- a/ckan/migration/versions/070_add_activity_and_resource_indexes.py +++ /dev/null @@ -1,16 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - CREATE INDEX idx_activity_user_id ON activity - (user_id, timestamp); - CREATE INDEX idx_activity_object_id ON activity - (object_id, timestamp); - CREATE INDEX idx_activity_detail_activity_id ON activity_detail - (activity_id); - CREATE INDEX idx_resource_resource_group_id ON resource_revision - (resource_group_id, current); - ''' - ) diff --git a/ckan/migration/versions/070_cfb544112fa7_add_activity_and_resource_indexes.py b/ckan/migration/versions/070_cfb544112fa7_add_activity_and_resource_indexes.py new file mode 100644 index 00000000000..745d2a39ed6 --- /dev/null +++ b/ckan/migration/versions/070_cfb544112fa7_add_activity_and_resource_indexes.py @@ -0,0 +1,41 @@ +# encoding: utf-8 +"""070 Add activity and resource_indexes + +Revision ID: cfb544112fa7 +Revises: e7524c675cdb +Create Date: 2018-09-04 18:49:13.010411 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version + +# revision identifiers, used by Alembic. +revision = 'cfb544112fa7' +down_revision = 'e7524c675cdb' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_index( + 'idx_activity_user_id', 'activity', ['user_id', 'timestamp'] + ) + op.create_index( + 'idx_activity_object_id', 'activity', ['object_id', 'timestamp'] + ) + op.create_index( + 'idx_activity_detail_activity_id', 'activity_detail', ['activity_id'] + ) + op.create_index( + 'idx_resource_resource_group_id', 'resource_revision', + ['resource_group_id', 'current'] + ) + + +def downgrade(): + op.drop_index('idx_activity_user_id', 'activity') + op.drop_index('idx_activity_object_id', 'activity') + op.drop_index('idx_activity_detail_activity_id', 'activity_detail') + op.drop_index('idx_resource_resource_group_id', 'resource_revision') diff --git a/ckan/migration/versions/071_add_state_column_to_user_table.py b/ckan/migration/versions/071_add_state_column_to_user_table.py deleted file mode 100644 index e890b5b05be..00000000000 --- a/ckan/migration/versions/071_add_state_column_to_user_table.py +++ /dev/null @@ -1,11 +0,0 @@ -# encoding: utf-8 - -import ckan.model - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - ALTER TABLE "user" ADD COLUMN "state" text NOT NULL DEFAULT '%s' - ''' % ckan.model.State.ACTIVE - ) diff --git a/ckan/migration/versions/071_c16f081ef73a_add_state_column_to_user_table.py b/ckan/migration/versions/071_c16f081ef73a_add_state_column_to_user_table.py new file mode 100644 index 00000000000..0f272f8a450 --- /dev/null +++ b/ckan/migration/versions/071_c16f081ef73a_add_state_column_to_user_table.py @@ -0,0 +1,31 @@ +# encoding: utf-8 +"""071 Add state column to_user_table + +Revision ID: c16f081ef73a +Revises: cfb544112fa7 +Create Date: 2018-09-04 18:49:13.351494 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'c16f081ef73a' +down_revision = 'cfb544112fa7' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'user', + sa.Column( + 'state', sa.UnicodeText, nullable=False, server_default='active' + ) + ) + + +def downgrade(): + op.drop_column('user', 'state') diff --git a/ckan/migration/versions/072_08dcb9233ad7_add_resource_view.py b/ckan/migration/versions/072_08dcb9233ad7_add_resource_view.py new file mode 100644 index 00000000000..fa722b2fd54 --- /dev/null +++ b/ckan/migration/versions/072_08dcb9233ad7_add_resource_view.py @@ -0,0 +1,41 @@ +# encoding: utf-8 +"""072 Add resource view + +Revision ID: 08dcb9233ad7 +Revises: c16f081ef73a +Create Date: 2018-09-04 18:49:13.697490 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '08dcb9233ad7' +down_revision = 'c16f081ef73a' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_table( + 'resource_view', + sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('resource_id', sa.UnicodeText), + sa.Column('title', sa.UnicodeText), + sa.Column('description', sa.UnicodeText), + sa.Column('view_type', sa.UnicodeText, nullable=False), + sa.Column('order', sa.Integer, nullable=False), + sa.Column('config', sa.UnicodeText), + ) + + op.create_primary_key('resource_view_pkey', 'resource_view', ['id']) + op.create_foreign_key( + 'resource_view_resource_id_fkey', 'resource_view', 'resource', + ['resource_id'], ['id'] + ) + + +def downgrade(): + op.drop_table('resource_view') diff --git a/ckan/migration/versions/072_add_resource_view.py b/ckan/migration/versions/072_add_resource_view.py deleted file mode 100644 index 57d22236a1c..00000000000 --- a/ckan/migration/versions/072_add_resource_view.py +++ /dev/null @@ -1,26 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute(''' - BEGIN; - - CREATE TABLE resource_view ( - id text NOT NULL, - resource_id text, - title text, - description text, - view_type text NOT NULL, - "order" integer NOT NULL, - config text - ); - - ALTER TABLE resource_view - ADD CONSTRAINT resource_view_pkey PRIMARY KEY (id); - - ALTER TABLE resource_view - ADD CONSTRAINT resource_view_resource_id_fkey - FOREIGN KEY (resource_id) REFERENCES resource(id); - - COMMIT; - ''') diff --git a/ckan/migration/versions/073_011f51208be3_update_resource_view_resource_id_.py b/ckan/migration/versions/073_011f51208be3_update_resource_view_resource_id_.py new file mode 100644 index 00000000000..fa288586d27 --- /dev/null +++ b/ckan/migration/versions/073_011f51208be3_update_resource_view_resource_id_.py @@ -0,0 +1,36 @@ +# encoding: utf-8 +"""073 Update resource view resource_id_constraint + +Revision ID: 011f51208be3 +Revises: 08dcb9233ad7 +Create Date: 2018-09-04 18:49:14.072410 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '011f51208be3' +down_revision = '08dcb9233ad7' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_constraint('resource_view_resource_id_fkey', 'resource_view') + op.create_foreign_key( + 'resource_view_resource_id_fkey', + 'resource_view', + 'resource', ['resource_id'], ['id'], + ondelete='CASCADE', + onupdate='CASCADE' + ) + + +def downgrade(): + op.drop_constraint('resource_view_resource_id_fkey', 'resource_view') + op.create_foreign_key( + 'resource_view_resource_id_fkey', 'resource_view', 'resource', + ['resource_id'], ['id'] + ) diff --git a/ckan/migration/versions/073_update_resource_view_resource_id_constraint.py b/ckan/migration/versions/073_update_resource_view_resource_id_constraint.py deleted file mode 100644 index 6a6d4e79cb7..00000000000 --- a/ckan/migration/versions/073_update_resource_view_resource_id_constraint.py +++ /dev/null @@ -1,17 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute(''' - BEGIN; - - ALTER TABLE resource_view - DROP CONSTRAINT resource_view_resource_id_fkey; - - ALTER TABLE resource_view - ADD CONSTRAINT resource_view_resource_id_fkey - FOREIGN KEY (resource_id) REFERENCES resource(id) - ON UPDATE CASCADE ON DELETE CASCADE; - - COMMIT; - ''') diff --git a/ckan/migration/versions/074_a4ca55f0f45e_remove_resource_groups.py b/ckan/migration/versions/074_a4ca55f0f45e_remove_resource_groups.py new file mode 100644 index 00000000000..0a4c5b1e6ad --- /dev/null +++ b/ckan/migration/versions/074_a4ca55f0f45e_remove_resource_groups.py @@ -0,0 +1,131 @@ +# encoding: utf-8 +"""074 Remove resource groups + +Revision ID: a4ca55f0f45e +Revises: 011f51208be3 +Create Date: 2018-09-04 18:49:14.423978 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'a4ca55f0f45e' +down_revision = '011f51208be3' +branch_labels = None +depends_on = None + +resource_indexes = (( + 'resource_revision', (( + 'idx_resource_period_resource_group', + ('revision_timestamp', 'expired_timestamp', 'resource_group_id') + ), ) +), ( + 'resource_group_revision', ( + ( + 'idx_resource_group_period', + ('revision_timestamp', 'expired_timestamp', 'id') + ), + ( + 'idx_resource_group_period_package', + ('revision_timestamp', 'expired_timestamp', 'package_id') + ), + ('idx_resource_group_current', ('current', )), + ) +)) + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'resource', + sa.Column( + 'package_id', sa.UnicodeText, nullable=False, server_default='' + ) + ) + op.drop_column('resource', 'resource_group_id') + op.add_column( + 'resource_revision', + sa.Column( + 'package_id', sa.UnicodeText, nullable=False, server_default='' + ) + ) + op.drop_column('resource_revision', 'resource_group_id') + + op.drop_table('resource_group_revision') + op.drop_table('resource_group') + + +def downgrade(): + op.create_table( + 'resource_group', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('package_id', sa.UnicodeText, sa.ForeignKey('package.id')), + sa.Column('label', sa.UnicodeText), + sa.Column('sort_order', sa.UnicodeText), + sa.Column('extras', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column('revision_id', sa.UnicodeText, sa.ForeignKey('revision.id')), + ) + + op.create_table( + 'resource_group_revision', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('package_id', sa.UnicodeText, sa.ForeignKey('package.id')), + sa.Column('label', sa.UnicodeText), + sa.Column('sort_order', sa.UnicodeText), + sa.Column('extras', sa.UnicodeText), + sa.Column('state', sa.UnicodeText), + sa.Column( + 'revision_id', + sa.UnicodeText, + sa.ForeignKey('revision.id'), + primary_key=True + ), + sa.Column( + 'continuity_id', sa.UnicodeText, + sa.ForeignKey('resource_group.id') + ), sa.Column('expired_id', sa.UnicodeText), + sa.Column('revision_timestamp', sa.TIMESTAMP), + sa.Column('expired_timestamp', sa.TIMESTAMP), + sa.Column('current', sa.Boolean) + ) + + op.drop_column('resource', 'package_id') + op.drop_column('resource_revision', 'package_id') + + op.add_column( + 'resource', + sa.Column( + 'resource_group_id', + sa.UnicodeText, + nullable=False, + server_default='' + ) + ) + op.add_column( + 'resource_revision', + sa.Column( + 'resource_group_id', + sa.UnicodeText, + nullable=False, + server_default='' + ) + ) + op.create_index( + 'idx_resource_resource_group_id', 'resource_revision', + ['resource_group_id', 'current'] + ) + + for table, indexes in resource_indexes: + for index, fields in indexes: + op.create_index(index, table, fields) + op.create_foreign_key( + 'resource_resource_group_id_fkey', 'resource', 'resource_group', + ['resource_group_id'], ['id'] + ) + op.create_foreign_key( + 'resource_revision_resource_group_id_fkey', 'resource_revision', + 'resource_group', ['resource_group_id'], ['id'] + ) diff --git a/ckan/migration/versions/074_remove_resource_groups.py b/ckan/migration/versions/074_remove_resource_groups.py deleted file mode 100644 index 9a55dd192ec..00000000000 --- a/ckan/migration/versions/074_remove_resource_groups.py +++ /dev/null @@ -1,31 +0,0 @@ -# encoding: utf-8 - -import ckan.model - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - ALTER TABLE "resource" - ADD COLUMN "package_id" text NOT NULL DEFAULT ''; - UPDATE "resource" AS R - SET package_id = G.package_id - FROM "resource_group" AS G - WHERE R.resource_group_id = G.id; - ALTER TABLE "resource" DROP COLUMN "resource_group_id"; - - ALTER TABLE "resource_revision" - ADD COLUMN "package_id" text NOT NULL DEFAULT ''; - UPDATE "resource_revision" AS R - SET package_id = G.package_id - FROM "resource_group_revision" AS G - WHERE R.resource_group_id = G.id; - ALTER TABLE "resource_revision" DROP COLUMN "resource_group_id"; - - ALTER TABLE resource_group_revision - DROP CONSTRAINT resource_group_revision_continuity_id_fkey; - - DROP TABLE "resource_group_revision"; - DROP TABLE "resource_group"; - ''' - ) diff --git a/ckan/migration/versions/075_9cdc88c8896a_rename_view_plugins.py b/ckan/migration/versions/075_9cdc88c8896a_rename_view_plugins.py new file mode 100644 index 00000000000..f26a92152c2 --- /dev/null +++ b/ckan/migration/versions/075_9cdc88c8896a_rename_view_plugins.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""075 Rename view plugins + +Revision ID: 9cdc88c8896a +Revises: a4ca55f0f45e +Create Date: 2018-09-04 18:49:14.766120 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '9cdc88c8896a' +down_revision = 'a4ca55f0f45e' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/075_rename_view_plugins.py b/ckan/migration/versions/075_rename_view_plugins.py deleted file mode 100644 index f23c4eb4d9b..00000000000 --- a/ckan/migration/versions/075_rename_view_plugins.py +++ /dev/null @@ -1,17 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - BEGIN; - - UPDATE resource_view - SET view_type = 'image_view' WHERE view_type = 'image'; - - UPDATE resource_view - SET view_type = 'webpage_view' WHERE view_type = 'webpage'; - - COMMIT; - ''' - ) diff --git a/ckan/migration/versions/076_59995aa965c0_rename_view_plugins_2.py b/ckan/migration/versions/076_59995aa965c0_rename_view_plugins_2.py new file mode 100644 index 00000000000..df891af17bd --- /dev/null +++ b/ckan/migration/versions/076_59995aa965c0_rename_view_plugins_2.py @@ -0,0 +1,25 @@ +# encoding: utf-8 +"""076 Rename view plugins 2 + +Revision ID: 59995aa965c0 +Revises: 9cdc88c8896a +Create Date: 2018-09-04 18:49:15.123438 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '59995aa965c0' +down_revision = '9cdc88c8896a' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/076_rename_view_plugins_2.py b/ckan/migration/versions/076_rename_view_plugins_2.py deleted file mode 100644 index 278879e14c3..00000000000 --- a/ckan/migration/versions/076_rename_view_plugins_2.py +++ /dev/null @@ -1,17 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - BEGIN; - - UPDATE resource_view - SET view_type = 'text_view' WHERE view_type = 'text'; - - UPDATE resource_view - SET view_type = 'pdf_view' WHERE view_type = 'pdf'; - - COMMIT; - ''' - ) diff --git a/ckan/migration/versions/077_51171a04d86d_add_revisions_to_system_info.py b/ckan/migration/versions/077_51171a04d86d_add_revisions_to_system_info.py new file mode 100644 index 00000000000..73157e417a5 --- /dev/null +++ b/ckan/migration/versions/077_51171a04d86d_add_revisions_to_system_info.py @@ -0,0 +1,60 @@ +# encoding: utf-8 +"""077 Add revisions to system_info + +Revision ID: 51171a04d86d +Revises: 59995aa965c0 +Create Date: 2018-09-04 18:49:15.478074 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '51171a04d86d' +down_revision = '59995aa965c0' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'system_info', + sa.Column( + 'state', sa.UnicodeText, nullable=False, server_default='active' + ) + ) + op.add_column( + 'system_info_revision', + sa.Column( + 'state', sa.UnicodeText, nullable=False, server_default='active' + ) + ) + + op.add_column( + 'system_info_revision', sa.Column('expired_id', sa.UnicodeText) + ) + op.add_column( + 'system_info_revision', sa.Column('revision_timestamp', sa.TIMESTAMP) + ) + op.add_column( + 'system_info_revision', sa.Column('expired_timestamp', sa.TIMESTAMP) + ) + op.add_column('system_info_revision', sa.Column('current', sa.Boolean)) + + op.drop_constraint('system_info_revision_key_key', 'system_info_revision') + + +def downgrade(): + op.create_unique_constraint( + 'system_info_revision_key_key', 'system_info_revision', ['key'] + ) + + op.drop_column('system_info', 'state') + op.drop_column('system_info_revision', 'state') + + op.drop_column('system_info_revision', 'expired_id') + op.drop_column('system_info_revision', 'revision_timestamp') + op.drop_column('system_info_revision', 'expired_timestamp') + op.drop_column('system_info_revision', 'current') diff --git a/ckan/migration/versions/077_add_revisions_to_system_info.py b/ckan/migration/versions/077_add_revisions_to_system_info.py deleted file mode 100644 index daa979164a2..00000000000 --- a/ckan/migration/versions/077_add_revisions_to_system_info.py +++ /dev/null @@ -1,25 +0,0 @@ -# encoding: utf-8 - -from ckan import model - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - ALTER TABLE "system_info" - ADD COLUMN "state" text NOT NULL DEFAULT '{state}'; - - ALTER TABLE "system_info_revision" - ADD COLUMN "state" text NOT NULL DEFAULT '{state}'; - - ALTER TABLE system_info_revision - ADD COLUMN expired_id text, - ADD COLUMN revision_timestamp timestamp without time zone, - ADD COLUMN expired_timestamp timestamp without time zone, - ADD COLUMN current boolean; - - ALTER TABLE system_info_revision - DROP CONSTRAINT "system_info_revision_key_key"; - - '''.format(state=model.State.ACTIVE) - ) diff --git a/ckan/migration/versions/078_ae821876532a_remove_old_authz_model.py b/ckan/migration/versions/078_ae821876532a_remove_old_authz_model.py new file mode 100644 index 00000000000..a3c79c4601f --- /dev/null +++ b/ckan/migration/versions/078_ae821876532a_remove_old_authz_model.py @@ -0,0 +1,113 @@ +# encoding: utf-8 +"""078 Remove old authz model + +Revision ID: ae821876532a +Revises: 51171a04d86d +Create Date: 2018-09-04 18:49:15.812926 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'ae821876532a' +down_revision = '51171a04d86d' +branch_labels = None +depends_on = None + +indexes = ( + ('idx_uor_id', 'user_object_role', ['id']), + ('idx_uor_user_id', 'user_object_role', ['user_id']), + ('idx_uor_context', 'user_object_role', ['context']), + ('idx_uor_role', 'user_object_role', ['role']), + ('idx_uor_user_id_role', 'user_object_role', ['user_id', 'role']), + ('idx_ra_role', 'role_action', ['role']), + ('idx_ra_action', 'role_action', ['action']), + ('idx_ra_role_action', 'role_action', ['action', 'role']), +) + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_table('role_action') + op.drop_table('package_role') + op.drop_table('group_role') + op.drop_table('system_role') + op.drop_table('authorization_group_role') + op.drop_table('user_object_role') + + +def downgrade(): + + op.create_table( + 'user_object_role', sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('user_id', sa.UnicodeText, sa.ForeignKey('user.id')), + sa.Column('context', sa.UnicodeText, nullable=False), + sa.Column('role', sa.UnicodeText) + ) + + op.create_table( + 'authorization_group_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + sa.Column( + 'authorization_group_id', sa.UnicodeText, + sa.ForeignKey('authorization_group.id') + ) + ) + + op.create_table( + 'system_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + ) + op.create_table( + 'group_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + sa.Column('group_id', sa.UnicodeText, sa.ForeignKey('group.id')), + ) + + op.create_table( + 'package_role', + sa.Column( + 'user_object_role_id', + sa.UnicodeText, + sa.ForeignKey('user_object_role.id'), + primary_key=True + ), + sa.Column('package_id', sa.UnicodeText, sa.ForeignKey('package.id')), + ) + + op.create_table( + 'role_action', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('role', sa.UnicodeText), + sa.Column('context', sa.UnicodeText, nullable=False), + sa.Column('action', sa.UnicodeText), + ) + + op.add_column( + 'user_object_role', + sa.Column( + 'authorized_group_id', + sa.UnicodeText, + sa.ForeignKey('authorization_group.id'), + nullable=True + ) + ) + for name, table, columns in indexes: + op.create_index(name, table, columns) diff --git a/ckan/migration/versions/078_remove_old_authz_model.py b/ckan/migration/versions/078_remove_old_authz_model.py deleted file mode 100644 index a67679c698d..00000000000 --- a/ckan/migration/versions/078_remove_old_authz_model.py +++ /dev/null @@ -1,16 +0,0 @@ -# encoding: utf-8 - -import ckan.model - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - DROP TABLE "role_action"; - DROP TABLE "package_role"; - DROP TABLE "group_role"; - DROP TABLE "system_role"; - DROP TABLE "authorization_group_role"; - DROP TABLE "user_object_role"; - ''' - ) diff --git a/ckan/migration/versions/079_e0177a15d2c9_resource_revision_index.py b/ckan/migration/versions/079_e0177a15d2c9_resource_revision_index.py new file mode 100644 index 00000000000..d1690c95469 --- /dev/null +++ b/ckan/migration/versions/079_e0177a15d2c9_resource_revision_index.py @@ -0,0 +1,27 @@ +# encoding: utf-8 +"""079 Resource revision index + +Revision ID: e0177a15d2c9 +Revises: ae821876532a +Create Date: 2018-09-04 18:49:16.198887 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'e0177a15d2c9' +down_revision = 'ae821876532a' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_index( + 'idx_resource_continuity_id', 'resource_revision', ['continuity_id'] + ) + + +def downgrade(): + op.drop_index('idx_resource_continuity_id', 'resource_revision') diff --git a/ckan/migration/versions/079_resource_revision_index.py b/ckan/migration/versions/079_resource_revision_index.py deleted file mode 100644 index aeabea8349e..00000000000 --- a/ckan/migration/versions/079_resource_revision_index.py +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - CREATE INDEX idx_resource_continuity_id - ON resource_revision (continuity_id); - ''' - ) diff --git a/ckan/migration/versions/080_8224d872c64f_continuity_id_indexes.py b/ckan/migration/versions/080_8224d872c64f_continuity_id_indexes.py new file mode 100644 index 00000000000..b70ed56ef93 --- /dev/null +++ b/ckan/migration/versions/080_8224d872c64f_continuity_id_indexes.py @@ -0,0 +1,41 @@ +# encoding: utf-8 +"""080 Continuity id indexes + +Revision ID: 8224d872c64f +Revises: e0177a15d2c9 +Create Date: 2018-09-04 18:49:16.546952 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '8224d872c64f' +down_revision = 'e0177a15d2c9' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_index( + 'idx_member_continuity_id', 'member_revision', ['continuity_id'] + ) + op.create_index( + 'idx_package_tag_continuity_id', 'package_tag_revision', + ['continuity_id'] + ) + op.create_index( + 'idx_package_continuity_id', 'package_revision', ['continuity_id'] + ) + op.create_index( + 'idx_package_extra_continuity_id', 'package_extra_revision', + ['continuity_id'] + ) + + +def downgrade(): + op.drop_index('idx_member_continuity_id', 'member_revision') + op.drop_index('idx_package_tag_continuity_id', 'package_tag_revision') + op.drop_index('idx_package_continuity_id', 'package_revision') + op.drop_index('idx_package_extra_continuity_id', 'package_extra_revision') diff --git a/ckan/migration/versions/080_continuity_id_indexes.py b/ckan/migration/versions/080_continuity_id_indexes.py deleted file mode 100644 index 81641957707..00000000000 --- a/ckan/migration/versions/080_continuity_id_indexes.py +++ /dev/null @@ -1,16 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - CREATE INDEX idx_member_continuity_id - ON member_revision (continuity_id); - CREATE INDEX idx_package_tag_continuity_id - ON package_tag_revision (continuity_id); - CREATE INDEX idx_package_continuity_id - ON package_revision (continuity_id); - CREATE INDEX idx_package_extra_continuity_id - ON package_extra_revision (continuity_id); - ''' - ) diff --git a/ckan/migration/versions/081_a64cf4a79182_set_datastore_active.py b/ckan/migration/versions/081_a64cf4a79182_set_datastore_active.py new file mode 100644 index 00000000000..b17b4b6fda1 --- /dev/null +++ b/ckan/migration/versions/081_a64cf4a79182_set_datastore_active.py @@ -0,0 +1,26 @@ +# encoding: utf-8 +"""081 Set datastore active + +Revision ID: a64cf4a79182 +Revises: 8224d872c64f +Create Date: 2018-09-04 18:49:16.896531 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version + +# revision identifiers, used by Alembic. +revision = 'a64cf4a79182' +down_revision = '8224d872c64f' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + pass + + +def downgrade(): + pass diff --git a/ckan/migration/versions/081_set_datastore_active.py b/ckan/migration/versions/081_set_datastore_active.py deleted file mode 100644 index 52bfdf994fd..00000000000 --- a/ckan/migration/versions/081_set_datastore_active.py +++ /dev/null @@ -1,66 +0,0 @@ -# encoding: utf-8 - -import json -from sqlalchemy import create_engine -from sqlalchemy.sql import text -from sqlalchemy.exc import SQLAlchemyError -from ckan.common import config - - -def upgrade(migrate_engine): - - datastore_connection_url = config.get( - 'ckan.datastore.read_url', config.get('ckan.datastore.write_url')) - - if not datastore_connection_url: - return - - try: - datastore_engine = create_engine(datastore_connection_url) - except SQLAlchemyError: - return - - try: - datastore_connection = datastore_engine.connect() - except SQLAlchemyError: - datastore_engine.dispose() - return - - try: - - resources_in_datastore = datastore_connection.execute(''' - SELECT table_name - FROM information_schema.tables - WHERE table_schema = 'public' - AND table_name != '_table_metadata' - ''') - - if resources_in_datastore.rowcount: - - resources = migrate_engine.execute(''' - SELECT id, extras - FROM resource - WHERE id IN ({0}) AND extras IS NOT NULL - '''.format( - ','.join(['\'{0}\''.format(_id[0]) - for _id - in resources_in_datastore]) - )) - if resources.rowcount: - params = [] - for resource in resources: - new_extras = json.loads(resource[1]) - new_extras.update({'datastore_active': True}) - params.append( - {'id': resource[0], - 'extras': json.dumps(new_extras)}) - - migrate_engine.execute( - text(''' - UPDATE resource - SET extras = :extras - WHERE id = :id'''), - params) - finally: - datastore_connection.close() - datastore_engine.dispose() diff --git a/ckan/migration/versions/082_8ea886d0ede4_create_index_creator_user_id.py b/ckan/migration/versions/082_8ea886d0ede4_create_index_creator_user_id.py new file mode 100644 index 00000000000..8fcf2777c3f --- /dev/null +++ b/ckan/migration/versions/082_8ea886d0ede4_create_index_creator_user_id.py @@ -0,0 +1,27 @@ +# encoding: utf-8 +"""082 Create index creator user_id + +Revision ID: 8ea886d0ede4 +Revises: a64cf4a79182 +Create Date: 2018-09-04 18:49:17.265729 + +""" +from alembic import op +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '8ea886d0ede4' +down_revision = 'a64cf4a79182' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.create_index( + 'idx_package_creator_user_id', 'package', ['creator_user_id'] + ) + + +def downgrade(): + op.drop_index('idx_package_creator_user_id', 'package') diff --git a/ckan/migration/versions/082_create_index_creator_user_id.py b/ckan/migration/versions/082_create_index_creator_user_id.py deleted file mode 100644 index 2229d902cbe..00000000000 --- a/ckan/migration/versions/082_create_index_creator_user_id.py +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - CREATE INDEX idx_package_creator_user_id ON package - USING BTREE (creator_user_id); - ''' - ) diff --git a/ckan/migration/versions/083_f98d8fa2a7f7_remove_related_items.py b/ckan/migration/versions/083_f98d8fa2a7f7_remove_related_items.py new file mode 100644 index 00000000000..8321f7943ab --- /dev/null +++ b/ckan/migration/versions/083_f98d8fa2a7f7_remove_related_items.py @@ -0,0 +1,75 @@ +# encoding: utf-8 +"""083 Remove related items + +Revision ID: f98d8fa2a7f7 +Revises: 8ea886d0ede4 +Create Date: 2018-09-04 18:49:17.615242 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'f98d8fa2a7f7' +down_revision = '8ea886d0ede4' +branch_labels = None +depends_on = None + +WARNING = """ + +WARNING: The 'related' tables were not deleted as they currently contain data. +Once you have archived the existing data or migrated the data to +ckanext-showcase, you can safely delete the 'related' and 'related_dataset' +tables using: + + psql ckan_default -c 'BEGIN; DROP TABLE related_dataset; \\ + DROP TABLE related; COMMIT;' + +""" + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + conn = op.get_bind() + existing = conn.execute("SELECT COUNT(*) FROM related;").fetchone() + if existing[0] > 0: + print(WARNING) + return + op.drop_table('related_dataset') + op.drop_table('related') + + +def downgrade(): + + op.create_table( + 'related', sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('type', sa.UnicodeText, nullable=False), + sa.Column('title', sa.UnicodeText), + sa.Column('description', sa.UnicodeText), + sa.Column('image_url', + sa.UnicodeText), sa.Column('url', sa.UnicodeText), + sa.Column('created', sa.TIMESTAMP), + sa.Column('owner_id', sa.UnicodeText), + sa.Column( + 'view_count', sa.Integer, nullable=False, server_default='0' + ), + sa.Column('featured', sa.Integer, nullable=False, server_default='0') + ) + op.create_table( + 'related_dataset', sa.Column('id', sa.UnicodeText, nullable=False), + sa.Column('dataset_id', sa.UnicodeText, nullable=False), + sa.Column('related_id', sa.UnicodeText, nullable=False), + sa.Column('status', sa.UnicodeText) + ) + op.create_primary_key('related_pkey', 'related', ['id']) + op.create_primary_key('related_dataset_pkey', 'related_dataset', ['id']) + + op.create_foreign_key( + 'related_dataset_dataset_id_fkey', 'related_dataset', 'package', + ['dataset_id'], ['id'] + ) + op.create_foreign_key( + 'related_dataset_related_id_fkey', 'related_dataset', 'related', + ['related_id'], ['id'] + ) diff --git a/ckan/migration/versions/083_remove_related_items.py b/ckan/migration/versions/083_remove_related_items.py deleted file mode 100644 index 0d1da775433..00000000000 --- a/ckan/migration/versions/083_remove_related_items.py +++ /dev/null @@ -1,28 +0,0 @@ -# encoding: utf-8 - -WARNING = """ - -WARNING: The 'related' tables were not deleted as they currently contain data. -Once you have archived the existing data or migrated the data to -ckanext-showcase, you can safely delete the 'related' and 'related_dataset' -tables using: - - psql ckan_default -c 'BEGIN; DROP TABLE related_dataset; \\ - DROP TABLE related; COMMIT;' - -""" - - -def upgrade(migrate_engine): - existing = migrate_engine.execute("SELECT COUNT(*) FROM related;")\ - .fetchone() - if existing[0] > 0: - print(WARNING) - return - - migrate_engine.execute(''' -BEGIN; -DROP TABLE related_dataset; -DROP TABLE related; -COMMIT; - ''') diff --git a/ckan/migration/versions/084_add_metadata_created.py b/ckan/migration/versions/084_add_metadata_created.py deleted file mode 100644 index 57347c54749..00000000000 --- a/ckan/migration/versions/084_add_metadata_created.py +++ /dev/null @@ -1,17 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute(''' - ALTER TABLE package_revision - ADD COLUMN metadata_created timestamp without time zone; - ALTER TABLE package - ADD COLUMN metadata_created timestamp without time zone; - - UPDATE package SET metadata_created= - (SELECT revision_timestamp - FROM package_revision - WHERE id=package.id - ORDER BY revision_timestamp ASC - LIMIT 1); - ''') diff --git a/ckan/migration/versions/084_d85ce5783688_add_metadata_created.py b/ckan/migration/versions/084_d85ce5783688_add_metadata_created.py new file mode 100644 index 00000000000..7e78c915f16 --- /dev/null +++ b/ckan/migration/versions/084_d85ce5783688_add_metadata_created.py @@ -0,0 +1,41 @@ +# encoding: utf-8 +"""084 Add metadata created + +Revision ID: d85ce5783688 +Revises: f98d8fa2a7f7 +Create Date: 2018-09-04 18:49:17.957865 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'd85ce5783688' +down_revision = 'f98d8fa2a7f7' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.add_column( + 'package_revision', sa.Column('metadata_created', sa.TIMESTAMP) + ) + op.add_column('package', sa.Column('metadata_created', sa.TIMESTAMP)) + conn = op.get_bind() + conn.execute( + ''' + UPDATE package SET metadata_created= + (SELECT revision_timestamp + FROM package_revision + WHERE id=package.id + ORDER BY revision_timestamp ASC + LIMIT 1); + ''' + ) + + +def downgrade(): + op.drop_column('package', 'metadata_created') + op.drop_column('package_revision', 'metadata_created') diff --git a/ckan/migration/versions/085_adjust_activity_timestamps.py b/ckan/migration/versions/085_adjust_activity_timestamps.py deleted file mode 100644 index ddcea2ece31..00000000000 --- a/ckan/migration/versions/085_adjust_activity_timestamps.py +++ /dev/null @@ -1,23 +0,0 @@ -# encoding: utf-8 - -import datetime - - -def upgrade(migrate_engine): - u""" - The script assumes that the current timestamp was - recorded with the server's current set timezone - """ - # choose a fixed date (within DST) so migration depends only on - # server time zone not the current daylight savings state - magic_timestamp = datetime.datetime(2016, 6, 20).toordinal() - - utc_date = datetime.datetime.utcfromtimestamp(magic_timestamp) - local_date = datetime.datetime.fromtimestamp(magic_timestamp) - - if utc_date == local_date: - return - - with migrate_engine.begin() as connection: - sql = u"update activity set timestamp = timestamp + (%s - %s);" - connection.execute(sql, utc_date, local_date) diff --git a/ckan/migration/versions/085_f9bf3d5c4b4d_adjust_activity_timestamps.py b/ckan/migration/versions/085_f9bf3d5c4b4d_adjust_activity_timestamps.py new file mode 100644 index 00000000000..3a7787b3409 --- /dev/null +++ b/ckan/migration/versions/085_f9bf3d5c4b4d_adjust_activity_timestamps.py @@ -0,0 +1,47 @@ +# encoding: utf-8 +"""085 Adjust activity timestamps + +Revision ID: f9bf3d5c4b4d +Revises: d85ce5783688 +Create Date: 2018-09-04 18:49:18.307804 + +""" +import datetime +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = 'f9bf3d5c4b4d' +down_revision = 'd85ce5783688' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + magic_timestamp = datetime.datetime(2016, 6, 20).toordinal() + + utc_date = datetime.datetime.utcfromtimestamp(magic_timestamp) + local_date = datetime.datetime.fromtimestamp(magic_timestamp) + + if utc_date == local_date: + return + + connection = op.get_bind() + sql = u"update activity set timestamp = timestamp + (%s - %s);" + connection.execute(sql, utc_date, local_date) + + +def downgrade(): + magic_timestamp = datetime.datetime(2016, 6, 20).toordinal() + + utc_date = datetime.datetime.utcfromtimestamp(magic_timestamp) + local_date = datetime.datetime.fromtimestamp(magic_timestamp) + + if utc_date == local_date: + return + + connection = op.get_bind() + sql = u"update activity set timestamp = timestamp - (%s - %s);" + connection.execute(sql, utc_date, local_date) diff --git a/ckan/migration/versions/086_19663581b3bb_drop_openid_column.py b/ckan/migration/versions/086_19663581b3bb_drop_openid_column.py new file mode 100644 index 00000000000..9106d9e322b --- /dev/null +++ b/ckan/migration/versions/086_19663581b3bb_drop_openid_column.py @@ -0,0 +1,27 @@ +# encoding: utf-8 +"""086 Drop openid column + +Revision ID: 19663581b3bb +Revises: f9bf3d5c4b4d +Create Date: 2018-09-04 18:49:18.650337 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version +# revision identifiers, used by Alembic. +revision = '19663581b3bb' +down_revision = 'f9bf3d5c4b4d' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_column('user', 'openid') + + +def downgrade(): + op.add_column('user', sa.Column('openid', sa.UnicodeText)) + op.create_index('idx_openid', 'user', ['openid']) diff --git a/ckan/migration/versions/086_drop_openid_column.py b/ckan/migration/versions/086_drop_openid_column.py deleted file mode 100644 index 39c71b928b8..00000000000 --- a/ckan/migration/versions/086_drop_openid_column.py +++ /dev/null @@ -1,12 +0,0 @@ -# encoding: utf-8 - -from sqlalchemy import MetaData - - -def upgrade(migrate_engine): - metadata = MetaData() - metadata.bind = migrate_engine - migrate_engine.execute(''' -ALTER TABLE "user" - DROP COLUMN openid; - ''') diff --git a/ckan/migration/versions/087_ff1b303cab77_remove_old_authorization_tables.py b/ckan/migration/versions/087_ff1b303cab77_remove_old_authorization_tables.py new file mode 100644 index 00000000000..055efa47b98 --- /dev/null +++ b/ckan/migration/versions/087_ff1b303cab77_remove_old_authorization_tables.py @@ -0,0 +1,50 @@ +# encoding: utf-8 +"""087 Remove old authorization tables + +Revision ID: ff1b303cab77 +Revises: 19663581b3bb +Create Date: 2018-09-04 18:49:18.998454 + +""" +from alembic import op +import sqlalchemy as sa +from ckan.migration import skip_based_on_legacy_engine_version + +# revision identifiers, used by Alembic. +revision = 'ff1b303cab77' +down_revision = '19663581b3bb' +branch_labels = None +depends_on = None + + +def upgrade(): + if skip_based_on_legacy_engine_version(op, __name__): + return + op.drop_table('authorization_group_user') + op.drop_table('authorization_group') + + +def downgrade(): + op.create_table( + 'authorization_group', + sa.Column('id', sa.UnicodeText, primary_key=True), + sa.Column('name', sa.UnicodeText), + sa.Column( + 'created', sa.DateTime, server_default=sa.func.current_timestamp() + ), + ) + op.create_table( + 'authorization_group_user', + sa.Column( + 'authorization_group_id', + sa.UnicodeText, + sa.ForeignKey('authorization_group.id'), + nullable=False + ), + sa.Column( + 'user_id', + sa.UnicodeText, + sa.ForeignKey('user.id'), + nullable=False + ), sa.Column('id', sa.UnicodeText, primary_key=True) + ) diff --git a/ckan/migration/versions/087_remove_old_authorization_tables.py b/ckan/migration/versions/087_remove_old_authorization_tables.py deleted file mode 100644 index 5dbdb992be4..00000000000 --- a/ckan/migration/versions/087_remove_old_authorization_tables.py +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' - DROP TABLE IF EXISTS "authorization_group_user"; - DROP TABLE IF EXISTS "authorization_group"; - ''' - ) diff --git a/ckan/migration/versions/088_3537d5420e0e_delete_extrase_which_are_deleted_state.py b/ckan/migration/versions/088_3537d5420e0e_delete_extrase_which_are_deleted_state.py new file mode 100644 index 00000000000..71a0c97ad83 --- /dev/null +++ b/ckan/migration/versions/088_3537d5420e0e_delete_extrase_which_are_deleted_state.py @@ -0,0 +1,40 @@ +# encoding: utf-8 +"""delete extrase which are deleted state + +Revision ID: 3537d5420e0e +Revises: ff1b303cab77 +Create Date: 2019-05-09 13:38:22.072361 + +""" +from alembic import op + +# revision identifiers, used by Alembic. +revision = u'3537d5420e0e' +down_revision = u'ff1b303cab77' +branch_labels = None +depends_on = None + + +def upgrade(): + op.drop_constraint( + u'package_extra_revision_continuity_id_fkey', u'package_extra_revision' + ) + op.drop_constraint( + u'group_extra_revision_continuity_id_fkey', u'group_extra_revision' + ) + + conn = op.get_bind() + conn.execute(u'''DELETE FROM "package_extra" WHERE state='deleted';''') + conn.execute(u'''DELETE FROM "group_extra" WHERE state='deleted';''') + + +def downgrade(): + op.create_foreign_key( + u'package_extra_revision_continuity_id_fkey', + u'package_extra_revision', u'package_extra', [u'continuity_id'], + [u'id'] + ) + op.create_foreign_key( + u'group_extra_revision_continuity_id_fkey', u'group_extra_revision', + u'group_extra', [u'group_id'], [u'id'] + ) diff --git a/ckan/migration/versions/088_delete_extras_which_are_deleted_state.py b/ckan/migration/versions/088_delete_extras_which_are_deleted_state.py deleted file mode 100644 index 7cf4a2c3752..00000000000 --- a/ckan/migration/versions/088_delete_extras_which_are_deleted_state.py +++ /dev/null @@ -1,14 +0,0 @@ -# encoding: utf-8 - - -def upgrade(migrate_engine): - migrate_engine.execute( - ''' -ALTER TABLE "package_extra_revision" - DROP CONSTRAINT IF EXISTS package_extra_revision_continuity_id_fkey; -ALTER TABLE "group_extra_revision" - DROP CONSTRAINT IF EXISTS group_extra_revision_continuity_id_fkey; -DELETE FROM "package_extra" WHERE state='deleted'; -DELETE FROM "group_extra" WHERE state='deleted'; - ''' - ) diff --git a/ckan/migration/versions/089_23c92480926e_package_activity_migration_check.py b/ckan/migration/versions/089_23c92480926e_package_activity_migration_check.py new file mode 100644 index 00000000000..9137d681dc1 --- /dev/null +++ b/ckan/migration/versions/089_23c92480926e_package_activity_migration_check.py @@ -0,0 +1,65 @@ +# encoding: utf-8 +"""package activity migration check + +Revision ID: 23c92480926e +Revises: 3537d5420e0e +Create Date: 2019-05-09 13:39:17.486611 + +""" +import sys + +from alembic import op + +from ckan.migration.migrate_package_activity import num_unmigrated + +# revision identifiers, used by Alembic. +revision = u'23c92480926e' +down_revision = u'3537d5420e0e' +branch_labels = None +depends_on = None + + +def upgrade(): + conn = op.get_bind() + num_unmigrated_dataset_activities = num_unmigrated(conn) + + if num_unmigrated_dataset_activities: + print( + u''' +NOTE: +You have {num_unmigrated} unmigrated package activities. + +Once your CKAN upgrade is complete and CKAN server is running again, you +should run the package activity migration, so that the Activity Stream can +display the detailed history of datasets: + + python ckan/migration/migrate_package_activity.py -c /etc/ckan/production.ini + +Once you've done that, the detailed history is visible in Activity Stream +to *admins only*. However you are encouraged to make it available to the +public, by setting this in production.ini: + + ckan.auth.public_activity_stream_detail = true + +More information about all of this is here: +https://github.com/ckan/ckan/wiki/Migrate-package-activity + '''.format( + num_unmigrated=num_unmigrated_dataset_activities + ) + ) + else: + # there are no unmigrated package activities + are_any_datasets = bool( + conn.execute(u'SELECT id FROM PACKAGE LIMIT 1').rowcount + ) + # no need to tell the user if there are no datasets - this could just + # be a fresh CKAN install + if are_any_datasets: + print( + u'You have no unmigrated package activities - you do not ' + 'need to run migrate_package_activity.py.' + ) + + +def downgrade(): + pass diff --git a/ckan/migration/versions/089_package_activity_migration_check.py b/ckan/migration/versions/089_package_activity_migration_check.py deleted file mode 100644 index aed0a797e61..00000000000 --- a/ckan/migration/versions/089_package_activity_migration_check.py +++ /dev/null @@ -1,38 +0,0 @@ -# encoding: utf-8 - -import sys - -from ckan.migration.migrate_package_activity import num_unmigrated - - -def upgrade(migrate_engine): - num_unmigrated_dataset_activities = num_unmigrated(migrate_engine) - if num_unmigrated_dataset_activities: - print(''' - NOTE: - You have {num_unmigrated} unmigrated package activities. - - Once your CKAN upgrade is complete and CKAN server is running again, you - should run the package activity migration, so that the Activity Stream can - display the detailed history of datasets: - - python migrate_package_activity.py -c /etc/ckan/production.ini - - Once you've done that, the detailed history is visible in Activity Stream - to *admins only*. However you are encouraged to make it available to the - public, by setting this in production.ini: - - ckan.auth.public_activity_stream_detail = true - - More information about all of this is here: - https://github.com/ckan/ckan/wiki/Migrate-package-activity - '''.format(num_unmigrated=num_unmigrated_dataset_activities)) - else: - # there are no unmigrated package activities - are_any_datasets = bool( - migrate_engine.execute(u'SELECT id FROM PACKAGE LIMIT 1').rowcount) - # no need to tell the user if there are no datasets - this could just - # be a fresh CKAN install - if are_any_datasets: - print(u'You have no unmigrated package activities - you do not ' - 'need to run migrate_package_activity.py.') diff --git a/ckan/migration/versions/090_980dcd44de4b_delete_migrate_version_table.py b/ckan/migration/versions/090_980dcd44de4b_delete_migrate_version_table.py new file mode 100644 index 00000000000..18a942d160f --- /dev/null +++ b/ckan/migration/versions/090_980dcd44de4b_delete_migrate_version_table.py @@ -0,0 +1,37 @@ +# encoding: utf-8 + +"""delete migrate version table + +Revision ID: 980dcd44de4b +Revises: 23c92480926e +Create Date: 2019-05-09 13:39:44.097930 + +""" +from alembic import op + +# revision identifiers, used by Alembic. +revision = u'980dcd44de4b' +down_revision = u'23c92480926e' +branch_labels = None +depends_on = None + + +def upgrade(): + u'''Drop version table, created by sqlalchemy-migrate. + + There is a chance, that we are initializing a new instance and + there is no `migrate_version` table, so DO NOT remove `IF EXISTS` + clause. + ''' + op.execute(u'DROP TABLE IF EXISTS migrate_version') + + +def downgrade(): + u'''We aren't going to recreate `migrate_version` here. + + There is a chance, that this table even never was created for + target database. This migration tries to seamlessly upgrade + existing instance from usage of sqlalchemy-migrate to alembic. And + we don't want to downgrade to sqlalchemy-migrate back again. + ''' + pass diff --git a/ckan/model/__init__.py b/ckan/model/__init__.py index 4d3aee7480f..3641b81bde2 100644 --- a/ckan/model/__init__.py +++ b/ckan/model/__init__.py @@ -5,12 +5,21 @@ import re from datetime import datetime from time import sleep +from os.path import splitext from six import text_type import vdm.sqlalchemy from vdm.sqlalchemy.base import SQLAlchemySession from sqlalchemy import MetaData, __version__ as sqav, Table from sqlalchemy.util import OrderedDict +from sqlalchemy.exc import ProgrammingError + +from alembic.command import ( + upgrade as alembic_upgrade, + downgrade as alembic_downgrade, + current as alembic_current +) +from alembic.config import Config as AlembicConfig import meta from meta import ( @@ -136,14 +145,11 @@ import ckan.migration -log = logging.getLogger(__name__) +log = logging.getLogger(__name__) DB_CONNECT_RETRIES = 10 -# set up in init_model after metadata is bound -version_table = None - def init_model(engine): '''Call me before using any of the tables or classes in the model''' @@ -156,8 +162,7 @@ def init_model(engine): import sqlalchemy.exc for i in reversed(range(DB_CONNECT_RETRIES)): try: - global version_table - version_table = Table('migrate_version', meta.metadata, autoload=True) + Table('alembic_version', meta.metadata, autoload=True) break except sqlalchemy.exc.NoSuchTableError: break @@ -169,7 +174,8 @@ def init_model(engine): class Repository(vdm.sqlalchemy.Repository): - migrate_repository = ckan.migration.__path__[0] + _repo_path, _dot_repo_name = splitext(ckan.migration.__name__) + migrate_repository = _repo_path + ':' + _dot_repo_name[1:] # note: tables_created value is not sustained between instantiations # so only useful for tests. The alternative is to use @@ -217,11 +223,6 @@ def create_db(self): self.metadata.create_all(bind=self.metadata.bind) log.info('Database tables created') - def latest_migration_version(self): - import migrate.versioning.api as mig - version = mig.version(self.migrate_repository) - return version - def rebuild_db(self): '''Clean and init the db''' if self.tables_created_and_initialised: @@ -245,44 +246,87 @@ def delete_all(self): else: tables = reversed(self.metadata.sorted_tables) for table in tables: - if table.name == 'migrate_version': + if table.name == 'alembic_version': continue connection.execute('delete from "%s"' % table.name) self.session.commit() log.info('Database table data deleted') - def setup_migration_version_control(self, version=None): - import migrate.exceptions - import migrate.versioning.api as mig - # set up db version control (if not already) + def reset_alembic_output(self): + self._alembic_output = [] + + def add_alembic_output(self, *args): + self._alembic_output.append(args) + + def take_alembic_output(self, with_reset=True): + output = self._alembic_output + self._alembic_config = [] + return output + + def setup_migration_version_control(self): + self.reset_alembic_output() + alembic_config = AlembicConfig() + alembic_config.set_main_option( + "script_location", self.migrate_repository + ) + alembic_config.set_main_option( + "sqlalchemy.url", str(self.metadata.bind.url) + ) + try: + sqlalchemy_migrate_version = self.metadata.bind.execute( + u'select version from migrate_version' + ).scalar() + except ProgrammingError: + sqlalchemy_migrate_version = 0 + + # this value is used for graceful upgrade from + # sqlalchemy-migrate to alembic + alembic_config.set_main_option( + "sqlalchemy_migrate_version", str(sqlalchemy_migrate_version) + ) + # This is an interceptor for alembic output. Otherwise, + # everything will be printed to stdout + alembic_config.print_stdout = self.add_alembic_output + + self.alembic_config = alembic_config + + def current_version(self): try: - mig.version_control(self.metadata.bind, - self.migrate_repository, version) - except migrate.exceptions.DatabaseAlreadyControlledError: - pass + alembic_current(self.alembic_config) + return self.take_alembic_output()[0][0] + except (TypeError, IndexError): + # alembic is not initialized yet + return 'base' - def upgrade_db(self, version=None): + def downgrade_db(self, version='base'): + self.setup_migration_version_control() + alembic_downgrade(self.alembic_config, version) + log.info(u'CKAN database version set to: %s', version) + + def upgrade_db(self, version='head'): '''Upgrade db using sqlalchemy migrations. @param version: version to upgrade to (if None upgrade to latest) ''' - assert meta.engine.name in ('postgres', 'postgresql'), \ - 'Database migration - only Postgresql engine supported (not %s).' \ - % meta.engine.name - import migrate.versioning.api as mig + _assert_engine_msg = ( + u'Database migration - only Postgresql engine supported (not %s).' + ) % meta.engine.name + assert meta.engine.name in ( + u'postgres', u'postgresql' + ), _assert_engine_msg self.setup_migration_version_control() - version_before = mig.db_version(self.metadata.bind, self.migrate_repository) - mig.upgrade(self.metadata.bind, self.migrate_repository, version=version) - version_after = mig.db_version(self.metadata.bind, self.migrate_repository) + version_before = self.current_version() + alembic_upgrade(self.alembic_config, version) + version_after = self.current_version() + if version_after != version_before: - log.info('CKAN database version upgraded: %s -> %s', version_before, version_after) + log.info( + u'CKAN database version upgraded: %s -> %s', + version_before, + version_after + ) else: - log.info('CKAN database version remains as: %s', version_after) - - ##this prints the diffs in a readable format - ##import pprint - ##from migrate.versioning.schemadiff import getDiffOfModelAgainstDatabase - ##pprint.pprint(getDiffOfModelAgainstDatabase(self.metadata, self.metadata.bind).colDiffs) + log.info(u'CKAN database version remains as: %s', version_after) def are_tables_created(self): meta.metadata = MetaData(self.metadata.bind) diff --git a/ckan/model/meta.py b/ckan/model/meta.py index 7d677a7d726..0b89c75e246 100644 --- a/ckan/model/meta.py +++ b/ckan/model/meta.py @@ -74,8 +74,8 @@ def before_commit(self, session): session.execute( revision_table.update().where( and_(revision_table.c.id == obj.id, - revision_table.c.current == '1') - ).values(current='0') + revision_table.c.current == True) + ).values(current=False) ) q = session.query(revision_cls) diff --git a/ckan/model/package.py b/ckan/model/package.py index 56997589436..8ef4fae9aa0 100644 --- a/ckan/model/package.py +++ b/ckan/model/package.py @@ -556,6 +556,19 @@ def set_rating(self, user_or_ip, rating): rating=rating) meta.Session.add(rating) + @property + @maintain.deprecated() + def extras_list(self): + '''DEPRECATED in 2.9 + + Returns a list of the dataset's extras, as PackageExtra object + NB includes deleted ones too (state='deleted') + ''' + from package_extra import PackageExtra + return meta.Session.query(PackageExtra) \ + .filter_by(package_id=self.id) \ + .all() + class RatingValueException(Exception): pass diff --git a/ckan/model/tag.py b/ckan/model/tag.py index 92f7bef8699..368cd2215ec 100644 --- a/ckan/model/tag.py +++ b/ckan/model/tag.py @@ -14,6 +14,7 @@ import activity import ckan # this import is needed import ckan.lib.dictization +import ckan.lib.maintain as maintain __all__ = ['tag_table', 'package_tag_table', 'Tag', 'PackageTag', 'package_tag_revision_table', @@ -140,8 +141,11 @@ def get(cls, tag_id_or_name, vocab_id_or_name=None): # Todo: Make sure tag names can't be changed to look like tag IDs? @classmethod + @maintain.deprecated() def search_by_name(cls, search_term, vocab_id_or_name=None): - '''Return all tags whose names contain a given string. + '''DEPRECATED + + Return all tags whose names contain a given string. By default only free tags (tags which do not belong to any vocabulary) are returned. If the optional argument ``vocab_id_or_name`` is given @@ -231,11 +235,13 @@ def __repr__(self): s = u'' % (self.package.name, self.tag.name) return s.encode('utf8') - @classmethod + @maintain.deprecated() def by_name(self, package_name, tag_name, vocab_id_or_name=None, autoflush=True): - '''Return the PackageTag for the given package and tag names, or None. + '''DEPRECATED (and broken - missing the join to Tag) + + Return the PackageTag for the given package and tag names, or None. By default only PackageTags for free tags (tags which do not belong to any vocabulary) are returned. If the optional argument diff --git a/ckan/pastertemplates/template/README.rst_tmpl b/ckan/pastertemplates/template/README.rst_tmpl index b7bb16a4bf2..a6783ba15dd 100644 --- a/ckan/pastertemplates/template/README.rst_tmpl +++ b/ckan/pastertemplates/template/README.rst_tmpl @@ -8,24 +8,20 @@ .. image:: https://coveralls.io/repos/{{ github_user_name }}/{{ project }}/badge.svg :target: https://coveralls.io/r/{{ github_user_name }}/{{ project }} -.. image:: https://pypip.in/download/{{ project }}/badge.svg - :target: https://pypi.python.org/pypi//{{ project }}/ - :alt: Downloads - -.. image:: https://pypip.in/version/{{ project }}/badge.svg - :target: https://pypi.python.org/pypi/{{ project }}/ +.. image:: https://img.shields.io/pypi/v/{{ project }}.svg + :target: https://pypi.org/project/{{ project }}/ :alt: Latest Version -.. image:: https://pypip.in/py_versions/{{ project }}/badge.svg - :target: https://pypi.python.org/pypi/{{ project }}/ +.. image:: https://img.shields.io/pypi/pyversions/{{ project }}.svg + :target: https://pypi.org/project/{{ project }}/ :alt: Supported Python versions -.. image:: https://pypip.in/status/{{ project }}/badge.svg - :target: https://pypi.python.org/pypi/{{ project }}/ +.. image:: https://img.shields.io/pypi/status/{{ project }}.svg + :target: https://pypi.org/project/{{ project }}/ :alt: Development Status -.. image:: https://pypip.in/license/{{ project }}/badge.svg - :target: https://pypi.python.org/pypi/{{ project }}/ +.. image:: https://img.shields.io/pypi/l/{{ project }}.svg + :target: https://pypi.org/project/{{ project }}/ :alt: License ============= @@ -73,19 +69,21 @@ To install {{ project }}: --------------- -Config Settings +Config settings --------------- -Document any optional config settings here. For example:: +None at present + +.. Document any optional config settings here. For example:: - # The minimum number of hours to wait before re-checking a resource - # (optional, default: 24). - ckanext.{{ project_shortname }}.some_setting = some_default_value +.. # The minimum number of hours to wait before re-checking a resource + # (optional, default: 24). + ckanext.{{ project_shortname }}.some_setting = some_default_value ------------------------- -Development Installation ------------------------- +---------------------- +Developer installation +---------------------- To install {{ project }} for development, activate your CKAN virtualenv and do:: @@ -96,9 +94,9 @@ do:: pip install -r dev-requirements.txt ------------------ -Running the Tests ------------------ +----- +Tests +----- To run the tests, do:: @@ -110,58 +108,38 @@ coverage installed in your virtualenv (``pip install coverage``) then run:: nosetests --nologcapture --with-pylons=test.ini --with-coverage --cover-package=ckanext.{{ project_shortname }} --cover-inclusive --cover-erase --cover-tests ---------------------------------- -Registering {{ project }} on PyPI ---------------------------------- - -{{ project }} should be availabe on PyPI as -https://pypi.python.org/pypi/{{ project }}. If that link doesn't work, then -you can register the project on PyPI for the first time by following these -steps: - -1. Create a source distribution of the project:: - - python setup.py sdist - -2. Register the project:: - - python setup.py register - -3. Upload the source distribution to PyPI:: - - python setup.py sdist upload - -4. Tag the first release of the project on GitHub with the version number from - the ``setup.py`` file. For example if the version number in ``setup.py`` is - 0.0.1 then do:: - - git tag 0.0.1 - git push --tags - - ---------------------------------------- -Releasing a New Version of {{ project }} +Releasing a new version of {{ project }} ---------------------------------------- -{{ project }} is availabe on PyPI as https://pypi.python.org/pypi/{{ project }}. +{{ project }} should be available on PyPI as https://pypi.org/project/{{ project }}. To publish a new version to PyPI follow these steps: 1. Update the version number in the ``setup.py`` file. See `PEP 440 `_ for how to choose version numbers. -2. Create a source distribution of the new version:: +2. Make sure you have the latest version of necessary packages:: + + pip install --upgrade setuptools wheel twine + +3. Create a source and binary distributions of the new version:: - python setup.py sdist + python setup.py sdist bdist_wheel && twine check dist/* -3. Upload the source distribution to PyPI:: + Fix any errors you get. - python setup.py sdist upload +4. Upload the source distribution to PyPI:: -4. Tag the new release of the project on GitHub with the version number from + twine upload dist/* + +5. Commit any outstanding changes:: + + git commit -a + +6. Tag the new release of the project on GitHub with the version number from the ``setup.py`` file. For example if the version number in ``setup.py`` is - 0.0.2 then do:: + 0.0.1 then do:: - git tag 0.0.2 + git tag 0.0.1 git push --tags - diff --git a/ckan/plugins/interfaces.py b/ckan/plugins/interfaces.py index b73ae48d20b..e58bf2b18ac 100644 --- a/ckan/plugins/interfaces.py +++ b/ckan/plugins/interfaces.py @@ -53,13 +53,14 @@ class Interface(_pca_Interface): @classmethod def provided_by(cls, instance): - u'''Check that object is an instance of class that implements interface. + u'''Check that the object is an instance of the class that implements + the interface. ''' return cls.implemented_by(instance.__class__) @classmethod def implemented_by(cls, other): - u'''Check wheter class implements current interface. + u'''Check whether the class implements the current interface. ''' if not isclass(other): raise TypeError(u'Class expected', other) @@ -70,7 +71,7 @@ def implemented_by(cls, other): class IMiddleware(Interface): - u'''Hook into CKAN middleware stack + u'''Hook into the CKAN middleware stack Note that methods on this interface will be called two times, one for the Pylons stack and one for the Flask stack (eventually @@ -150,7 +151,7 @@ class IMapper(Interface): .. _sqlalchemy MapperExtension:\ http://docs.sqlalchemy.org/en/rel_0_9/orm/deprecated.html#sqlalchemy.orm.interfaces.MapperExtension - ''' + ''' # noqa def before_insert(self, mapper, connection, instance): u''' @@ -195,32 +196,33 @@ class ISession(Interface): def after_begin(self, session, transaction, connection): u''' - Execute after a transaction is begun on a connection + Executed after a transaction is begun on a connection ''' def before_flush(self, session, flush_context, instances): u''' - Execute before flush process has started. + Executed before a flush process has started. ''' def after_flush(self, session, flush_context): u''' - Execute after flush has completed, but before commit has been called. + Executed after a flush has completed, but before commit has been + called. ''' def before_commit(self, session): u''' - Execute right before commit is called. + Executed right before commit is called. ''' def after_commit(self, session): u''' - Execute after a commit has occured. + Executed after a commit has occured. ''' def after_rollback(self, session): u''' - Execute after a rollback has occured. + Executed after a rollback has occured. ''' @@ -253,7 +255,7 @@ def notify_after_commit(self, entity, operation): class IFeed(Interface): """ - Allows extension of the default Atom feeds + For extending the default Atom feeds """ def get_feed_class(self): @@ -298,12 +300,12 @@ def get_item_additional_fields(self, dataset_dict): class IResourceUrlChange(Interface): u''' - Receives notification of changed urls. + Receives notification of changed URL on a resource. ''' def notify(self, resource): u''' - Give user a notify is resource url has changed. + Called when a resource url has changed. :param resource, instance of model.Resource ''' @@ -322,8 +324,8 @@ def info(self): :param name: name of the view type. This should match the name of the actual plugin (eg ``image_view`` or ``recline_view``). - :param title: title of the view type, will be displayed on the - frontend. This should be translatable (ie wrapped on + :param title: title of the view type. Will be displayed on the + frontend. This should be translatable (ie wrapped with ``toolkit._('Title')``). :param default_title: default title that will be used if the view is created automatically (optional, defaults to 'View'). @@ -487,7 +489,7 @@ def can_preview(self, data_dict): def setup_template_variables(self, context, data_dict): u''' Add variables to c just prior to the template being rendered. - The ``data_dict`` contains the resource and the package. + The ``data_dict`` contains the resource and the dataset. Change the url to a proxied domain if necessary. ''' @@ -496,30 +498,30 @@ def preview_template(self, context, data_dict): u''' Returns a string representing the location of the template to be rendered for the read page. - The ``data_dict`` contains the resource and the package. + The ``data_dict`` contains the resource and the dataset. ''' + class ITagController(Interface): u''' - Hook into the Tag controller. These will usually be called just before - committing or returning the respective object, i.e. all validation, + Hook into the Tag view. These will usually be called just before + committing or returning the respective object, i.e. when all validation, synchronization and authorization setup are complete. ''' def before_view(self, tag_dict): u''' - Extensions will recieve this before the tag gets displayed. The + Extensions will receive this before the tag gets displayed. The dictionary passed will be the one that gets sent to the template. - ''' return tag_dict class IGroupController(Interface): u''' - Hook into the Group controller. These will + Hook into the Group view. These methods will usually be called just before committing or returning the - respective object, i.e. all validation, synchronization + respective object i.e. when all validation, synchronization and authorization setup are complete. ''' @@ -529,12 +531,12 @@ def read(self, entity): pass def create(self, entity): - u'''Called after group had been created inside group_create. + u'''Called after group has been created inside group_create. ''' pass def edit(self, entity): - u'''Called after group had been updated inside group_update. + u'''Called after group has been updated inside group_update. ''' pass @@ -545,18 +547,18 @@ def delete(self, entity): def before_view(self, pkg_dict): u''' - Extensions will recieve this before the group gets - displayed. The dictionary passed will be the one that gets - sent to the template. + Extensions will receive this before the group gets + displayed. The dictionary passed will be the one that gets + sent to the template. ''' return pkg_dict class IOrganizationController(Interface): u''' - Hook into the Organization controller. These will + Hook into the Organization view. These methods will usually be called just before committing or returning the - respective object, i.e. all validation, synchronization + respective object i.e. when all validation, synchronization and authorization setup are complete. ''' @@ -567,12 +569,14 @@ def read(self, entity): pass def create(self, entity): - u'''Called after organization had been created inside organization_create. + u'''Called after organization had been created inside + organization_create. ''' pass def edit(self, entity): - u'''Called after organization had been updated inside organization_update. + u'''Called after organization had been updated inside + organization_update. ''' pass @@ -583,31 +587,30 @@ def delete(self, entity): def before_view(self, pkg_dict): u''' - Extensions will recieve this before the organization gets - displayed. The dictionary passed will be the one that gets - sent to the template. + Extensions will receive this before the organization gets + displayed. The dictionary passed will be the one that gets + sent to the template. ''' return pkg_dict class IPackageController(Interface): u''' - Hook into the package controller. - (see IGroupController) + Hook into the dataset view. ''' def read(self, entity): - u'''Called after IGroupController.before_view inside package_read. + u'''Called after IPackageController.before_view inside package_show. ''' pass def create(self, entity): - u'''Called after group had been created inside package_create. + u'''Called after the dataset had been created inside package_create. ''' pass def edit(self, entity): - u'''Called after group had been updated inside package_update. + u'''Called after the dataset had been updated inside package_update. ''' pass @@ -618,62 +621,59 @@ def delete(self, entity): def after_create(self, context, pkg_dict): u''' - Extensions will receive the validated data dict after the package - has been created (Note that the create method will return a package - domain object, which may not include all fields). Also the newly - created package id will be added to the dict. + Extensions will receive the validated data dict after the dataset + has been created (Note that the create method will return a dataset + domain object, which may not include all fields). Also the newly + created dataset id will be added to the dict. ''' pass def after_update(self, context, pkg_dict): u''' - Extensions will receive the validated data dict after the package - has been updated (Note that the edit method will return a package - domain object, which may not include all fields). + Extensions will receive the validated data dict after the dataset + has been updated. ''' pass def after_delete(self, context, pkg_dict): u''' - Extensions will receive the data dict (tipically containing - just the package id) after the package has been deleted. + Extensions will receive the data dict (typically containing + just the dataset id) after the dataset has been deleted. ''' pass def after_show(self, context, pkg_dict): u''' - Extensions will receive the validated data dict after the package - is ready for display (Note that the read method will return a - package domain object, which may not include all fields). + Extensions will receive the validated data dict after the dataset + is ready for display. ''' pass def before_search(self, search_params): u''' - Extensions will receive a dictionary with the query parameters, - and should return a modified (or not) version of it. - - search_params will include an `extras` dictionary with all values - from fields starting with `ext_`, so extensions can receive user - input from specific fields. + Extensions will receive a dictionary with the query parameters, + and should return a modified (or not) version of it. + search_params will include an `extras` dictionary with all values + from fields starting with `ext_`, so extensions can receive user + input from specific fields. ''' return search_params def after_search(self, search_results, search_params): u''' - Extensions will receive the search results, as well as the search - parameters, and should return a modified (or not) object with the - same structure: + Extensions will receive the search results, as well as the search + parameters, and should return a modified (or not) object with the + same structure:: - {'count': '', 'results': '', 'facets': ''} + {'count': '', 'results': '', 'facets': ''} - Note that count and facets may need to be adjusted if the extension - changed the results for some reason. + Note that count and facets may need to be adjusted if the extension + changed the results for some reason. - search_params will include an `extras` dictionary with all values - from fields starting with `ext_`, so extensions can receive user - input from specific fields. + search_params will include an `extras` dictionary with all values + from fields starting with `ext_`, so extensions can receive user + input from specific fields. ''' @@ -681,26 +681,26 @@ def after_search(self, search_results, search_params): def before_index(self, pkg_dict): u''' - Extensions will receive what will be given to the solr for - indexing. This is essentially a flattened dict (except for - multli-valued fields such as tags) of all the terms sent to - the indexer. The extension can modify this by returning an - altered version. + Extensions will receive what will be given to Solr for + indexing. This is essentially a flattened dict (except for + multi-valued fields such as tags) of all the terms sent to + the indexer. The extension can modify this by returning an + altered version. ''' return pkg_dict def before_view(self, pkg_dict): u''' - Extensions will recieve this before the dataset gets - displayed. The dictionary passed will be the one that gets - sent to the template. + Extensions will receive this before the dataset gets + displayed. The dictionary passed will be the one that gets + sent to the template. ''' return pkg_dict class IResourceController(Interface): u''' - Hook into the resource controller. + Hook into the resource view. ''' def before_create(self, context, resource): @@ -765,8 +765,7 @@ def after_update(self, context, resource): def before_delete(self, context, resource, resources): u''' - Extensions will receive this before a previously created resource is - deleted. + Extensions will receive this before a resource is deleted. :param context: The context object of the current request, this includes for example access to the ``model`` and the ``user``. @@ -777,15 +776,14 @@ def before_delete(self, context, resource, resources): :type resource: dictionary :param resources: The list of resources from which the resource will be deleted (including the resource to be deleted if it existed - in the package). + in the dataset). :type resources: list ''' pass def after_delete(self, context, resources): u''' - Extensions will receive this after a previously created resource is - deleted. + Extensions will receive this after a resource is deleted. :param context: The context object of the current request, this includes for example access to the ``model`` and the ``user``. @@ -802,20 +800,20 @@ def before_show(self, resource_dict): is ready for display. Be aware that this method is not only called for UI display, but also - in other methods like when a resource is deleted because showing a - package is used to get access to the resources in a package. + in other methods, like when a resource is deleted, because package_show + is used to get access to the resources in a dataset. ''' return resource_dict class IPluginObserver(Interface): u''' - Plugin to the plugin loading mechanism + Hook into the plugin loading mechanism itself ''' def before_load(self, plugin): u''' - Called before a plugin is loaded + Called before a plugin is loaded. This method is passed the plugin class. ''' @@ -827,7 +825,7 @@ def after_load(self, service): def before_unload(self, plugin): u''' - Called before a plugin is loaded + Called before a plugin is loaded. This method is passed the plugin class. ''' @@ -840,7 +838,7 @@ def after_unload(self, service): class IConfigurable(Interface): u''' - Initialization hook for plugins. + Hook called during the startup of CKAN See also :py:class:`IConfigurer`. ''' @@ -865,14 +863,14 @@ def configure(self, config): class IConfigurer(Interface): u''' - Configure CKAN environment via the ``config`` object + Configure the CKAN environment via the ``config`` object See also :py:class:`IConfigurable`. ''' def update_config(self, config): u''' - Called by load_environment at earliest point when config is + Called by load_environment at the earliest point that config is available to plugins. The config should be updated in place. :param config: ``config`` object @@ -880,7 +878,7 @@ def update_config(self, config): def update_config_schema(self, schema): u''' - Return a schema with the runtime-editable config options + Return a schema with the runtime-editable config options. CKAN will use the returned schema to decide which configuration options can be edited during runtime (using @@ -915,19 +913,23 @@ def get_actions(self): function and the values being the functions themselves. By decorating a function with the `ckan.logic.side_effect_free` - decorator, the associated action will be made available by a GET - request (as well as the usual POST request) through the action API. - - By decrorating a function with the 'ckan.plugins.toolkit.chained_action, - the action will be chained to another function defined in plugins with a - "first plugin wins" pattern, which means the first plugin declaring a - chained action should be called first. Chained actions must be - defined as action_function(original_action, context, data_dict) - where the first parameter will be set to the action function in - the next plugin or in core ckan. The chained action may call the - original_action function, optionally passing different values, - handling exceptions, returning different values and/or raising - different exceptions to the caller. + decorator, the associated action will be made available to a GET + request (as well as the usual POST request) through the Action API. + + By decorating a function with 'ckan.plugins.toolkit.chained_action`, + the action will 'intercept' calls to an existing action function. This + allows a plugin to modify the behaviour of an existing action function. + Chained actions must be defined as + `action_function(original_action, context, data_dict)`, where the + function's name matches the original action function it intercepts, the + first parameter is the action function it intercepts (in the next + plugin or in core ckan). The chained action may call the + original_action function, optionally passing different values, handling + exceptions, returning different values and/or raising different + exceptions to the caller. When multiple plugins chain to an action, the + first plugin declaring is called first, and if it chooses to call the + original_action, then the chained action in the next plugin to be + declared next is called, and so on. ''' @@ -969,7 +971,7 @@ def get_auth_functions(self): functions registered by plugins and in CKAN's core authorization functions (found in ``ckan/logic/auth/``). - For example when a user tries to create a package, a + For example when action function ``'package_create'`` is called, a ``'package_create'`` authorization function is searched for. If an extension registers an authorization function with the same name @@ -996,13 +998,13 @@ def user_create(context, data_dict=None): See ``ckan/logic/auth/`` for more examples. - Note that by default, all auth functions provided by extensions are assumed - to require a validated user or API key, otherwise a - :py:class:`ckan.logic.NotAuthorized`: exception will be raised. This check - will be performed *before* calling the actual auth function. If you want - to allow anonymous access to one of your actions, its auth function must - be decorated with the ``auth_allow_anonymous_access`` decorator, available - on the plugins toolkit. + Note that by default, all auth functions provided by extensions are + assumed to require a validated user or API key, otherwise a + :py:class:`ckan.logic.NotAuthorized`: exception will be raised. This + check will be performed *before* calling the actual auth function. If + you want to allow anonymous access to one of your actions, its auth + function must be decorated with the ``auth_allow_anonymous_access`` + decorator, available in the plugins toolkit. For example:: @@ -1023,7 +1025,7 @@ def my_create_action(context, data_dict): chain starts with the last chained auth function to be registered and ends with the original auth function (or a non-chained plugin override version). Chained auth functions must accept an extra parameter, - specifically the next auth function in the chain, for example: + specifically the next auth function in the chain, for example:: auth_function(next_auth, context, data_dict). @@ -1065,10 +1067,10 @@ class IDatasetForm(Interface): for example to add new custom fields to datasets. Multiple IDatasetForm plugins can be used at once, each plugin associating - itself with different package types using the ``package_types()`` and + itself with different dataset types using the ``package_types()`` and ``is_fallback()`` methods below, and then providing different schemas and - templates for different types of dataset. When a package controller action - is invoked, the ``type`` field of the package will determine which + templates for different types of dataset. When a dataset view action + is invoked, the ``type`` field of the dataset will determine which IDatasetForm plugin (if any) gets delegated to. When implementing IDatasetForm, you can inherit from @@ -1079,12 +1081,13 @@ class IDatasetForm(Interface): ''' def package_types(self): - u'''Return an iterable of package types that this plugin handles. + u'''Return an iterable of dataset (package) types that this plugin + handles. - If a request involving a package of one of the returned types is made, + If a request involving a dataset of one of the returned types is made, then this plugin instance will be delegated to. - There cannot be two IDatasetForm plugins that return the same package + There cannot be two IDatasetForm plugins that return the same dataset type, if this happens then CKAN will raise an exception at startup. :rtype: iterable of strings @@ -1095,7 +1098,7 @@ def is_fallback(self): u'''Return ``True`` if this plugin is the fallback plugin. When no IDatasetForm plugin's ``package_types()`` match the ``type`` of - the package being processed, the fallback plugin is delegated to + the dataset being processed, the fallback plugin is delegated to instead. There cannot be more than one IDatasetForm plugin whose @@ -1182,7 +1185,7 @@ def show_package_schema(self): ''' def setup_template_variables(self, context, data_dict): - u'''Add variables to the template context for use in templates. + u'''Add variables to the template context for use in dataset templates. This function is called before a dataset template is rendered. If you have custom dataset templates that require some additional variables, @@ -1312,7 +1315,7 @@ def validate(self, context, data_dict, schema, action): class IGroupForm(Interface): u''' - Allows customisation of the group controller as a plugin. + Allows customisation of the group form and its underlying schema. The behaviour of the plugin is determined by 5 method hooks: @@ -1324,9 +1327,9 @@ class IGroupForm(Interface): Furthermore, there can be many implementations of this plugin registered at once. With each instance associating itself with 0 or more group - type strings. When a group controller action is invoked, the group + type strings. When a group form action is invoked, the group type determines which of the registered plugins to delegate to. Each - implementation must implement two methods which are used to determine the + implementation must implement these methods which are used to determine the group-type -> plugin mapping: - is_fallback(self) @@ -1339,14 +1342,14 @@ class IGroupForm(Interface): ''' - ##### These methods control when the plugin is delegated to ##### + # These methods control when the plugin is delegated to ################### def is_fallback(self): u''' Returns true if this provides the fallback behaviour, when no other plugin instance matches a group's type. - There must be exactly one fallback controller defined, any attempt to + There must be exactly one fallback view defined, any attempt to register more than one will throw an exception at startup. If there's no fallback registered at startup the ckan.lib.plugins.DefaultGroupForm used as the fallback. @@ -1366,19 +1369,19 @@ def group_types(self): def group_controller(self): u''' - Returns the name of the group controller. + Returns the name of the group view - The group controller is the controller, that is used to handle requests + The group view is the view, that is used to handle requests of the group type(s) of this plugin. - If this method is not provided, the default group controller is used + If this method is not provided, the default group view is used (`group`). ''' - ##### End of control methods + # End of control methods ################################################## - ##### Hooks for customising the GroupController's behaviour ##### - ##### TODO: flesh out the docstrings a little more. ##### + # Hooks for customising the GroupController's behaviour ########## + # TODO: flesh out the docstrings a little more def new_template(self): u''' Returns a string representing the location of the template to be @@ -1473,7 +1476,8 @@ def validate(self, context, data_dict, schema, action): :rtype: (dictionary, dictionary) ''' - ##### End of hooks ##### + # End of hooks ############################################################ + class IFacets(Interface): u'''Customize the search facets shown on search pages. @@ -1519,14 +1523,14 @@ class IFacets(Interface): def dataset_facets(self, facets_dict, package_type): u'''Modify and return the ``facets_dict`` for the dataset search page. - The ``package_type`` is the type of package that these facets apply to. + The ``package_type`` is the type of dataset that these facets apply to. Plugins can provide different search facets for different types of - package. See :py:class:`~ckan.plugins.interfaces.IDatasetForm`. + dataset. See :py:class:`~ckan.plugins.interfaces.IDatasetForm`. :param facets_dict: the search facets as currently specified :type facets_dict: OrderedDict - :param package_type: the package type that these facets apply to + :param package_type: the dataset type that these facets apply to :type package_type: string :returns: the updated ``facets_dict`` @@ -1538,9 +1542,9 @@ def dataset_facets(self, facets_dict, package_type): def group_facets(self, facets_dict, group_type, package_type): u'''Modify and return the ``facets_dict`` for a group's page. - The ``package_type`` is the type of package that these facets apply to. + The ``package_type`` is the type of dataset that these facets apply to. Plugins can provide different search facets for different types of - package. See :py:class:`~ckan.plugins.interfaces.IDatasetForm`. + dataset. See :py:class:`~ckan.plugins.interfaces.IDatasetForm`. The ``group_type`` is the type of group that these facets apply to. Plugins can provide different search facets for different types of @@ -1552,7 +1556,7 @@ def group_facets(self, facets_dict, group_type, package_type): :param group_type: the group type that these facets apply to :type group_type: string - :param package_type: the package type that these facets apply to + :param package_type: the dataset type that these facets apply to :type package_type: string :returns: the updated ``facets_dict`` @@ -1561,12 +1565,13 @@ def group_facets(self, facets_dict, group_type, package_type): ''' return facets_dict - def organization_facets(self, facets_dict, organization_type, package_type): + def organization_facets(self, facets_dict, organization_type, + package_type): u'''Modify and return the ``facets_dict`` for an organization's page. - The ``package_type`` is the type of package that these facets apply to. + The ``package_type`` is the type of dataset that these facets apply to. Plugins can provide different search facets for different types of - package. See :py:class:`~ckan.plugins.interfaces.IDatasetForm`. + dataset. See :py:class:`~ckan.plugins.interfaces.IDatasetForm`. The ``organization_type`` is the type of organization that these facets apply to. Plugins can provide different search facets for different @@ -1580,7 +1585,7 @@ def organization_facets(self, facets_dict, organization_type, package_type): to :type organization_type: string - :param package_type: the package type that these facets apply to + :param package_type: the dataset type that these facets apply to :type package_type: string :returns: the updated ``facets_dict`` @@ -1594,24 +1599,25 @@ class IAuthenticator(Interface): u'''Allows custom authentication methods to be integrated into CKAN.''' def identify(self): - u'''called to identify the user. + u'''Called to identify the user. + + If the user is identified then it should set: - If the user is identified then it should set - c.user: The id of the user - c.userobj: The actual user object (this may be removed as a - requirement in a later release so that access to the model is not - required) + - c.user: The id of the user + - c.userobj: The actual user object (this may be removed as a + requirement in a later release so that access to the model is not + required) ''' def login(self): - u'''called at login.''' + u'''Called at login.''' def logout(self): - u'''called at logout.''' + u'''Called at logout.''' def abort(self, status_code, detail, headers, comment): - u'''called on abort. This allows aborts due to authorization issues - to be overriden''' + u'''Called on abort. This allows aborts due to authorization issues + to be overridden''' return (status_code, detail, headers, comment) @@ -1623,7 +1629,7 @@ def i18n_directory(self): u'''Change the directory of the .mo translation files''' def i18n_locales(self): - u'''Change the list of locales that this plugin handles ''' + u'''Change the list of locales that this plugin handles''' def i18n_domain(self): u'''Change the gettext domain handled by this plugin''' @@ -1693,8 +1699,8 @@ def get_resource_uploader(self): Optionally, this method can set the following two attributes on the class instance so they are set in the resource object: - filesize (int): Uploaded file filesize. - mimetype (str): Uploaded file mimetype. + - filesize (int): Uploaded file filesize. + - mimetype (str): Uploaded file mimetype. ``upload(id, max_size)`` diff --git a/ckan/plugins/toolkit.py b/ckan/plugins/toolkit.py index ce107f0f20f..e258e0cdb6f 100644 --- a/ckan/plugins/toolkit.py +++ b/ckan/plugins/toolkit.py @@ -325,8 +325,19 @@ def _add_public_directory(cls, config, relative_path): The path is relative to the file calling this function. + Webassets addition: append directory to webassets load paths + in order to correctly rewrite relative css paths and resolve + public urls. + ''' - cls._add_served_directory(config, relative_path, 'extra_public_paths') + import ckan.lib.helpers as h + from ckan.lib.webassets_tools import add_public_path + path = cls._add_served_directory( + config, + relative_path, + 'extra_public_paths' + ) + add_public_path(path, h.url_for_static('/')) @classmethod def _add_served_directory(cls, config, relative_path, config_var): @@ -337,8 +348,10 @@ def _add_served_directory(cls, config, relative_path, config_var): assert config_var in ('extra_template_paths', 'extra_public_paths') # we want the filename that of the function caller but they will # have used one of the available helper functions - frame, filename, line_number, function_name, lines, index =\ - inspect.getouterframes(inspect.currentframe())[2] + # TODO: starting from python 3.5, `inspect.stack` returns list + # of named tuples `FrameInfo`. Don't forget to remove + # `getframeinfo` wrapper after migration. + filename = inspect.getframeinfo(inspect.stack()[2][0]).filename this_dir = os.path.dirname(filename) absolute_path = os.path.join(this_dir, relative_path) @@ -347,40 +360,53 @@ def _add_served_directory(cls, config, relative_path, config_var): config[config_var] += ',' + absolute_path else: config[config_var] = absolute_path + return absolute_path @classmethod def _add_resource(cls, path, name): - '''Add a Fanstatic resource library to CKAN. + '''Add a WebAssets library to CKAN. - Fanstatic libraries are directories containing static resource files - (e.g. CSS, JavaScript or image files) that can be accessed from CKAN. + WebAssets libraries are directories containing static resource + files (e.g. CSS, JavaScript or image files) that can be + compiled into WebAsset Bundles. See :doc:`/theming/index` for more details. ''' import inspect import os + from ckan.lib.webassets_tools import create_library - # we want the filename that of the function caller but they will - # have used one of the available helper functions - frame, filename, line_number, function_name, lines, index =\ - inspect.getouterframes(inspect.currentframe())[1] + # we want the filename that of the function caller but they + # will have used one of the available helper functions + # TODO: starting from python 3.5, `inspect.stack` returns list + # of named tuples `FrameInfo`. Don't forget to remove + # `getframeinfo` wrapper after migration. + filename = inspect.getframeinfo(inspect.stack()[1][0]).filename this_dir = os.path.dirname(filename) absolute_path = os.path.join(this_dir, path) + create_library(name, absolute_path) + + # TODO: remove next two lines after dropping Fanstatic support import ckan.lib.fanstatic_resources ckan.lib.fanstatic_resources.create_library(name, absolute_path) @classmethod def _add_ckan_admin_tabs(cls, config, route_name, tab_label, - config_var='ckan.admin_tabs'): + config_var='ckan.admin_tabs', icon=None): ''' Update 'ckan.admin_tabs' dict the passed config dict. ''' # get the admin_tabs dict from the config, or an empty dict. admin_tabs_dict = config.get(config_var, {}) # update the admin_tabs dict with the new values - admin_tabs_dict.update({route_name: tab_label}) + admin_tabs_dict.update({ + route_name: { + 'label': tab_label, + 'icon': icon + } + }) # update the config with the updated admin_tabs dict config.update({config_var: admin_tabs_dict}) diff --git a/ckan/public-bs2/base/css/.gitignore b/ckan/public-bs2/base/css/.gitignore deleted file mode 100644 index 5be98f3eed9..00000000000 --- a/ckan/public-bs2/base/css/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*debug.css diff --git a/ckan/public-bs2/base/css/fuchsia.css b/ckan/public-bs2/base/css/fuchsia.css deleted file mode 100644 index b5c44dccedf..00000000000 --- a/ckan/public-bs2/base/css/fuchsia.css +++ /dev/null @@ -1,9520 +0,0 @@ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} -audio:not([controls]) { - display: none; -} -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -a:hover, -a:active { - outline: 0; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - /* Responsive images (ensure images don't scale beyond their parents) */ - max-width: 100%; - /* Part 1: Set a maxium relative to the parent */ - width: auto\9; - /* IE7-8 need help adjusting responsive images */ - height: auto; - /* Part 2: Scale the height according to the width, otherwise you get stretching */ - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} -#map_canvas img, -.google-maps img { - max-width: none; -} -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} -button, -input { - *overflow: visible; - line-height: normal; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; -} -textarea { - overflow: auto; - vertical-align: top; -} -@media print { - * { - text-shadow: none !important; - color: #000 !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 0.5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } -} -.clearfix { - *zoom: 1; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; - line-height: 0; -} -.clearfix:after { - clear: both; -} -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -body { - margin: 0; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 20px; - color: #444; - background-color: #eee; -} -a { - color: #E73892; - text-decoration: none; -} -a:hover, -a:focus { - color: #bc176c; - text-decoration: underline; -} -.img-rounded { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.img-polaroid { - padding: 4px; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} -.img-circle { - -webkit-border-radius: 500px; - -moz-border-radius: 500px; - border-radius: 500px; -} -.row { - margin-left: -20px; - *zoom: 1; -} -.row:before, -.row:after { - display: table; - content: ""; - line-height: 0; -} -.row:after { - clear: both; -} -[class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; -} -.container, -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} -.span12 { - width: 940px; -} -.span11 { - width: 860px; -} -.span10 { - width: 780px; -} -.span9 { - width: 700px; -} -.span8 { - width: 620px; -} -.span7 { - width: 540px; -} -.span6 { - width: 460px; -} -.span5 { - width: 380px; -} -.span4 { - width: 300px; -} -.span3 { - width: 220px; -} -.span2 { - width: 140px; -} -.span1 { - width: 60px; -} -.offset12 { - margin-left: 980px; -} -.offset11 { - margin-left: 900px; -} -.offset10 { - margin-left: 820px; -} -.offset9 { - margin-left: 740px; -} -.offset8 { - margin-left: 660px; -} -.offset7 { - margin-left: 580px; -} -.offset6 { - margin-left: 500px; -} -.offset5 { - margin-left: 420px; -} -.offset4 { - margin-left: 340px; -} -.offset3 { - margin-left: 260px; -} -.offset2 { - margin-left: 180px; -} -.offset1 { - margin-left: 100px; -} -.row-fluid { - width: 100%; - *zoom: 1; -} -.row-fluid:before, -.row-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.row-fluid:after { - clear: both; -} -.row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.12765957%; - *margin-left: 2.07446809%; -} -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} -.row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.12765957%; -} -.row-fluid .span12 { - width: 100%; - *width: 99.94680851%; -} -.row-fluid .span11 { - width: 91.4893617%; - *width: 91.43617021%; -} -.row-fluid .span10 { - width: 82.9787234%; - *width: 82.92553191%; -} -.row-fluid .span9 { - width: 74.46808511%; - *width: 74.41489362%; -} -.row-fluid .span8 { - width: 65.95744681%; - *width: 65.90425532%; -} -.row-fluid .span7 { - width: 57.44680851%; - *width: 57.39361702%; -} -.row-fluid .span6 { - width: 48.93617021%; - *width: 48.88297872%; -} -.row-fluid .span5 { - width: 40.42553191%; - *width: 40.37234043%; -} -.row-fluid .span4 { - width: 31.91489362%; - *width: 31.86170213%; -} -.row-fluid .span3 { - width: 23.40425532%; - *width: 23.35106383%; -} -.row-fluid .span2 { - width: 14.89361702%; - *width: 14.84042553%; -} -.row-fluid .span1 { - width: 6.38297872%; - *width: 6.32978723%; -} -.row-fluid .offset12 { - margin-left: 104.25531915%; - *margin-left: 104.14893617%; -} -.row-fluid .offset12:first-child { - margin-left: 102.12765957%; - *margin-left: 102.0212766%; -} -.row-fluid .offset11 { - margin-left: 95.74468085%; - *margin-left: 95.63829787%; -} -.row-fluid .offset11:first-child { - margin-left: 93.61702128%; - *margin-left: 93.5106383%; -} -.row-fluid .offset10 { - margin-left: 87.23404255%; - *margin-left: 87.12765957%; -} -.row-fluid .offset10:first-child { - margin-left: 85.10638298%; - *margin-left: 85%; -} -.row-fluid .offset9 { - margin-left: 78.72340426%; - *margin-left: 78.61702128%; -} -.row-fluid .offset9:first-child { - margin-left: 76.59574468%; - *margin-left: 76.4893617%; -} -.row-fluid .offset8 { - margin-left: 70.21276596%; - *margin-left: 70.10638298%; -} -.row-fluid .offset8:first-child { - margin-left: 68.08510638%; - *margin-left: 67.9787234%; -} -.row-fluid .offset7 { - margin-left: 61.70212766%; - *margin-left: 61.59574468%; -} -.row-fluid .offset7:first-child { - margin-left: 59.57446809%; - *margin-left: 59.46808511%; -} -.row-fluid .offset6 { - margin-left: 53.19148936%; - *margin-left: 53.08510638%; -} -.row-fluid .offset6:first-child { - margin-left: 51.06382979%; - *margin-left: 50.95744681%; -} -.row-fluid .offset5 { - margin-left: 44.68085106%; - *margin-left: 44.57446809%; -} -.row-fluid .offset5:first-child { - margin-left: 42.55319149%; - *margin-left: 42.44680851%; -} -.row-fluid .offset4 { - margin-left: 36.17021277%; - *margin-left: 36.06382979%; -} -.row-fluid .offset4:first-child { - margin-left: 34.04255319%; - *margin-left: 33.93617021%; -} -.row-fluid .offset3 { - margin-left: 27.65957447%; - *margin-left: 27.55319149%; -} -.row-fluid .offset3:first-child { - margin-left: 25.53191489%; - *margin-left: 25.42553191%; -} -.row-fluid .offset2 { - margin-left: 19.14893617%; - *margin-left: 19.04255319%; -} -.row-fluid .offset2:first-child { - margin-left: 17.0212766%; - *margin-left: 16.91489362%; -} -.row-fluid .offset1 { - margin-left: 10.63829787%; - *margin-left: 10.53191489%; -} -.row-fluid .offset1:first-child { - margin-left: 8.5106383%; - *margin-left: 8.40425532%; -} -[class*="span"].hide, -.row-fluid [class*="span"].hide { - display: none; -} -[class*="span"].pull-right, -.row-fluid [class*="span"].pull-right { - float: right; -} -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} -.container:before, -.container:after { - display: table; - content: ""; - line-height: 0; -} -.container:after { - clear: both; -} -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} -.container-fluid:before, -.container-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.container-fluid:after { - clear: both; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 21px; - font-weight: 200; - line-height: 30px; -} -small { - font-size: 85%; -} -strong { - font-weight: bold; -} -em { - font-style: italic; -} -cite { - font-style: normal; -} -.muted { - color: #999; -} -a.muted:hover, -a.muted:focus { - color: #808080; -} -.text-warning { - color: #c09853; -} -a.text-warning:hover, -a.text-warning:focus { - color: #a47e3c; -} -.text-error { - color: #b55457; -} -a.text-error:hover, -a.text-error:focus { - color: #954143; -} -.text-info { - color: #3a87ad; -} -a.text-info:hover, -a.text-info:focus { - color: #2d6987; -} -.text-success { - color: #468847; -} -a.text-success:hover, -a.text-success:focus { - color: #356635; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 10px 0; - font-family: inherit; - font-weight: bold; - line-height: 20px; - color: inherit; - text-rendering: optimizelegibility; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-weight: normal; - line-height: 1; - color: #999; -} -h1, -h2, -h3 { - line-height: 40px; -} -h1 { - font-size: 38.5px; -} -h2 { - font-size: 31.5px; -} -h3 { - font-size: 24.5px; -} -h4 { - font-size: 17.5px; -} -h5 { - font-size: 14px; -} -h6 { - font-size: 11.9px; -} -h1 small { - font-size: 24.5px; -} -h2 small { - font-size: 17.5px; -} -h3 small { - font-size: 14px; -} -h4 small { - font-size: 14px; -} -.page-header { - padding-bottom: 9px; - margin: 20px 0 30px; - border-bottom: 1px solid #eee; -} -ul, -ol { - padding: 0; - margin: 0 0 10px 25px; -} -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} -li { - line-height: 20px; -} -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} -ul.inline, -ol.inline { - margin-left: 0; - list-style: none; -} -ul.inline > li, -ol.inline > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-bottom: 20px; -} -dt, -dd { - line-height: 20px; -} -dt { - font-weight: bold; -} -dd { - margin-left: 10px; -} -.dl-horizontal { - *zoom: 1; -} -.dl-horizontal:before, -.dl-horizontal:after { - display: table; - content: ""; - line-height: 0; -} -.dl-horizontal:after { - clear: both; -} -.dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dl-horizontal dd { - margin-left: 180px; -} -hr { - margin: 20px 0; - border: 0; - border-top: 1px solid #eee; - border-bottom: 1px solid #fff; -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 0 0 0 15px; - margin: 0 0 20px; - border-left: 5px solid #eee; -} -blockquote p { - margin-bottom: 0; - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} -blockquote small { - display: block; - line-height: 20px; - color: #999; -} -blockquote small:before { - content: '\2014 \00A0'; -} -blockquote.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eee; - border-left: 0; -} -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} -blockquote.pull-right small:before { - content: ''; -} -blockquote.pull-right small:after { - content: '\00A0 \2014'; -} -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} -address { - display: block; - margin-bottom: 20px; - font-style: normal; - line-height: 20px; -} -code, -pre { - padding: 0 3px 2px; - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; - font-size: 12px; - color: #333; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -code { - padding: 2px 4px; - color: #d14; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; - white-space: nowrap; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 20px; - word-break: break-all; - word-wrap: break-word; - white-space: pre; - white-space: pre-wrap; - background-color: #f5f5f5; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -pre.prettyprint { - margin-bottom: 20px; -} -pre code { - padding: 0; - color: inherit; - white-space: pre; - white-space: pre-wrap; - background-color: transparent; - border: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -form { - margin: 0 0 20px; -} -fieldset { - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: 40px; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -legend small { - font-size: 15px; - color: #999; -} -label, -input, -button, -select, -textarea { - font-size: 14px; - font-weight: normal; - line-height: 20px; -} -input, -button, -select, -textarea { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} -label { - display: block; - margin-bottom: 5px; -} -select, -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - display: inline-block; - height: 20px; - padding: 4px 6px; - margin-bottom: 10px; - font-size: 14px; - line-height: 20px; - color: #555; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - vertical-align: middle; -} -input, -textarea, -.uneditable-input { - width: 206px; -} -textarea { - height: auto; -} -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - background-color: #fff; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear .2s, box-shadow linear .2s; - -moz-transition: border linear .2s, box-shadow linear .2s; - -o-transition: border linear .2s, box-shadow linear .2s; - transition: border linear .2s, box-shadow linear .2s; -} -textarea:focus, -input[type="text"]:focus, -input[type="password"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="date"]:focus, -input[type="month"]:focus, -input[type="time"]:focus, -input[type="week"]:focus, -input[type="number"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="color"]:focus, -.uneditable-input:focus { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - *margin-top: 0; - /* IE7 */ - margin-top: 1px \9; - /* IE8-9 */ - line-height: normal; -} -input[type="file"], -input[type="image"], -input[type="submit"], -input[type="reset"], -input[type="button"], -input[type="radio"], -input[type="checkbox"] { - width: auto; -} -select, -input[type="file"] { - height: 30px; - /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ - line-height: 30px; -} -select { - width: 220px; - border: 1px solid #ccc; - background-color: #fff; -} -select[multiple], -select[size] { - height: auto; -} -select:focus, -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.uneditable-input, -.uneditable-textarea { - color: #999; - background-color: #fcfcfc; - border-color: #ccc; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - cursor: not-allowed; -} -.uneditable-input { - overflow: hidden; - white-space: nowrap; -} -.uneditable-textarea { - width: auto; - height: auto; -} -input:-moz-placeholder, -textarea:-moz-placeholder { - color: #999; -} -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #999; -} -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #999; -} -.radio, -.checkbox { - min-height: 20px; - padding-left: 20px; -} -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.controls > .radio:first-child, -.controls > .checkbox:first-child { - padding-top: 5px; -} -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left: 10px; -} -.input-mini { - width: 60px; -} -.input-small { - width: 90px; -} -.input-medium { - width: 150px; -} -.input-large { - width: 210px; -} -.input-xlarge { - width: 270px; -} -.input-xxlarge { - width: 530px; -} -input[class*="span"], -select[class*="span"], -textarea[class*="span"], -.uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"] { - float: none; - margin-left: 0; -} -.input-append input[class*="span"], -.input-append .uneditable-input[class*="span"], -.input-prepend input[class*="span"], -.input-prepend .uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"], -.row-fluid .input-prepend [class*="span"], -.row-fluid .input-append [class*="span"] { - display: inline-block; -} -input, -textarea, -.uneditable-input { - margin-left: 0; -} -.controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; -} -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 926px; -} -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 846px; -} -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 766px; -} -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 686px; -} -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 606px; -} -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 526px; -} -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 446px; -} -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 366px; -} -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 286px; -} -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 206px; -} -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 126px; -} -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 46px; -} -.controls-row { - *zoom: 1; -} -.controls-row:before, -.controls-row:after { - display: table; - content: ""; - line-height: 0; -} -.controls-row:after { - clear: both; -} -.controls-row [class*="span"], -.row-fluid .controls-row [class*="span"] { - float: left; -} -.controls-row .checkbox[class*="span"], -.controls-row .radio[class*="span"] { - padding-top: 5px; -} -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eee; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"][readonly], -input[type="checkbox"][readonly] { - background-color: transparent; -} -.control-group.warning .control-label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} -.control-group.warning .checkbox, -.control-group.warning .radio, -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; -} -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} -.control-group.error .control-label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b55457; -} -.control-group.error .checkbox, -.control-group.error .radio, -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - border-color: #b55457; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #954143; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; -} -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b55457; - background-color: #f8f0f0; - border-color: #b55457; -} -.control-group.success .control-label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} -.control-group.success .checkbox, -.control-group.success .radio, -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; -} -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} -.control-group.info .control-label, -.control-group.info .help-block, -.control-group.info .help-inline { - color: #3a87ad; -} -.control-group.info .checkbox, -.control-group.info .radio, -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - color: #3a87ad; -} -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - border-color: #3a87ad; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.info input:focus, -.control-group.info select:focus, -.control-group.info textarea:focus { - border-color: #2d6987; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -} -.control-group.info .input-prepend .add-on, -.control-group.info .input-append .add-on { - color: #3a87ad; - background-color: #d9edf7; - border-color: #3a87ad; -} -input:focus:invalid, -textarea:focus:invalid, -select:focus:invalid { - color: #b94a48; - border-color: #ee5f5b; -} -input:focus:invalid:focus, -textarea:focus:invalid:focus, -select:focus:invalid:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} -.form-actions { - padding: 19px 20px 20px; - margin-top: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-top: 1px solid #e5e5e5; - *zoom: 1; -} -.form-actions:before, -.form-actions:after { - display: table; - content: ""; - line-height: 0; -} -.form-actions:after { - clear: both; -} -.help-block, -.help-inline { - color: #6a6a6a; -} -.help-block { - display: block; - margin-bottom: 10px; -} -.help-inline { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - vertical-align: middle; - padding-left: 5px; -} -.input-append, -.input-prepend { - display: inline-block; - margin-bottom: 10px; - vertical-align: middle; - font-size: 0; - white-space: nowrap; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input, -.input-append .dropdown-menu, -.input-prepend .dropdown-menu, -.input-append .popover, -.input-prepend .popover { - font-size: 14px; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: top; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append input:focus, -.input-prepend input:focus, -.input-append select:focus, -.input-prepend select:focus, -.input-append .uneditable-input:focus, -.input-prepend .uneditable-input:focus { - z-index: 2; -} -.input-append .add-on, -.input-prepend .add-on { - display: inline-block; - width: auto; - height: 20px; - min-width: 16px; - padding: 4px 5px; - font-size: 14px; - font-weight: normal; - line-height: 20px; - text-align: center; - text-shadow: 0 1px 0 #fff; - background-color: #eee; - border: 1px solid #ccc; -} -.input-append .add-on, -.input-prepend .add-on, -.input-append .btn, -.input-prepend .btn, -.input-append .btn-group > .dropdown-toggle, -.input-prepend .btn-group > .dropdown-toggle { - vertical-align: top; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-append .active, -.input-prepend .active { - background-color: #a9dba9; - border-color: #46a546; -} -.input-prepend .add-on, -.input-prepend .btn { - margin-right: -1px; -} -.input-prepend .add-on:first-child, -.input-prepend .btn:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input, -.input-append select, -.input-append .uneditable-input { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input + .btn-group .btn:last-child, -.input-append select + .btn-group .btn:last-child, -.input-append .uneditable-input + .btn-group .btn:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append .add-on, -.input-append .btn, -.input-append .btn-group { - margin-left: -1px; -} -.input-append .add-on:last-child, -.input-append .btn:last-child, -.input-append .btn-group:last-child > .dropdown-toggle { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append input, -.input-prepend.input-append select, -.input-prepend.input-append .uneditable-input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-prepend.input-append input + .btn-group .btn, -.input-prepend.input-append select + .btn-group .btn, -.input-prepend.input-append .uneditable-input + .btn-group .btn { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .add-on:first-child, -.input-prepend.input-append .btn:first-child { - margin-right: -1px; - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { - margin-left: -1px; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .btn-group:first-child { - margin-left: 0; -} -input.search-query { - padding-right: 14px; - padding-right: 4px \9; - padding-left: 14px; - padding-left: 4px \9; - /* IE7-8 doesn't have border-radius, so don't indent the padding */ - margin-bottom: 0; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -/* Allow for input prepend/append in search forms */ -.form-search .input-append .search-query, -.form-search .input-prepend .search-query { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.form-search .input-append .search-query { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search .input-append .btn { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .search-query { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .btn { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search input, -.form-inline input, -.form-horizontal input, -.form-search textarea, -.form-inline textarea, -.form-horizontal textarea, -.form-search select, -.form-inline select, -.form-horizontal select, -.form-search .help-inline, -.form-inline .help-inline, -.form-horizontal .help-inline, -.form-search .uneditable-input, -.form-inline .uneditable-input, -.form-horizontal .uneditable-input, -.form-search .input-prepend, -.form-inline .input-prepend, -.form-horizontal .input-prepend, -.form-search .input-append, -.form-inline .input-append, -.form-horizontal .input-append { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { - display: none; -} -.form-search label, -.form-inline label, -.form-search .btn-group, -.form-inline .btn-group { - display: inline-block; -} -.form-search .input-append, -.form-inline .input-append, -.form-search .input-prepend, -.form-inline .input-prepend { - margin-bottom: 0; -} -.form-search .radio, -.form-search .checkbox, -.form-inline .radio, -.form-inline .checkbox { - padding-left: 0; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"], -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: left; - margin-right: 3px; - margin-left: 0; -} -.control-group { - margin-bottom: 10px; -} -legend + .control-group { - margin-top: 20px; - -webkit-margin-top-collapse: separate; -} -.form-horizontal .control-group { - margin-bottom: 20px; - *zoom: 1; -} -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; - content: ""; - line-height: 0; -} -.form-horizontal .control-group:after { - clear: both; -} -.form-horizontal .control-label { - float: left; - width: 160px; - padding-top: 5px; - text-align: right; -} -.form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; - margin-left: 180px; - *margin-left: 0; -} -.form-horizontal .controls:first-child { - *padding-left: 180px; -} -.form-horizontal .help-block { - margin-bottom: 0; -} -.form-horizontal input + .help-block, -.form-horizontal select + .help-block, -.form-horizontal textarea + .help-block, -.form-horizontal .uneditable-input + .help-block, -.form-horizontal .input-prepend + .help-block, -.form-horizontal .input-append + .help-block { - margin-top: 10px; -} -.form-horizontal .form-actions { - padding-left: 180px; -} -table { - max-width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; -} -.table { - width: 100%; - margin-bottom: 20px; -} -.table th, -.table td { - padding: 8px; - line-height: 20px; - text-align: left; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table th { - font-weight: bold; -} -.table thead th { - vertical-align: bottom; -} -.table caption + thead tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child th, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child th, -.table thead:first-child tr:first-child td { - border-top: 0; -} -.table tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #eee; -} -.table-condensed th, -.table-condensed td { - padding: 4px 5px; -} -.table-bordered { - border: 1px solid #ddd; - border-collapse: separate; - *border-collapse: collapse; - border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.table-bordered th, -.table-bordered td { - border-left: 1px solid #ddd; -} -.table-bordered caption + thead tr:first-child th, -.table-bordered caption + tbody tr:first-child th, -.table-bordered caption + tbody tr:first-child td, -.table-bordered colgroup + thead tr:first-child th, -.table-bordered colgroup + tbody tr:first-child th, -.table-bordered colgroup + tbody tr:first-child td, -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { - border-top: 0; -} -.table-bordered thead:first-child tr:first-child > th:first-child, -.table-bordered tbody:first-child tr:first-child > td:first-child, -.table-bordered tbody:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered thead:first-child tr:first-child > th:last-child, -.table-bordered tbody:first-child tr:first-child > td:last-child, -.table-bordered tbody:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:first-child, -.table-bordered tbody:last-child tr:last-child > td:first-child, -.table-bordered tbody:last-child tr:last-child > th:first-child, -.table-bordered tfoot:last-child tr:last-child > td:first-child, -.table-bordered tfoot:last-child tr:last-child > th:first-child { - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:last-child, -.table-bordered tbody:last-child tr:last-child > td:last-child, -.table-bordered tbody:last-child tr:last-child > th:last-child, -.table-bordered tfoot:last-child tr:last-child > td:last-child, -.table-bordered tfoot:last-child tr:last-child > th:last-child { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomright: 0; - border-bottom-right-radius: 0; -} -.table-bordered caption + thead tr:first-child th:first-child, -.table-bordered caption + tbody tr:first-child td:first-child, -.table-bordered colgroup + thead tr:first-child th:first-child, -.table-bordered colgroup + tbody tr:first-child td:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered caption + thead tr:first-child th:last-child, -.table-bordered caption + tbody tr:first-child td:last-child, -.table-bordered colgroup + thead tr:first-child th:last-child, -.table-bordered colgroup + tbody tr:first-child td:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-striped tbody > tr:nth-child(odd) > td, -.table-striped tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.table-hover tbody tr:hover > td, -.table-hover tbody tr:hover > th { - background-color: #f5f5f5; -} -table td[class*="span"], -table th[class*="span"], -.row-fluid table td[class*="span"], -.row-fluid table th[class*="span"] { - display: table-cell; - float: none; - margin-left: 0; -} -.table td.span1, -.table th.span1 { - float: none; - width: 44px; - margin-left: 0; -} -.table td.span2, -.table th.span2 { - float: none; - width: 124px; - margin-left: 0; -} -.table td.span3, -.table th.span3 { - float: none; - width: 204px; - margin-left: 0; -} -.table td.span4, -.table th.span4 { - float: none; - width: 284px; - margin-left: 0; -} -.table td.span5, -.table th.span5 { - float: none; - width: 364px; - margin-left: 0; -} -.table td.span6, -.table th.span6 { - float: none; - width: 444px; - margin-left: 0; -} -.table td.span7, -.table th.span7 { - float: none; - width: 524px; - margin-left: 0; -} -.table td.span8, -.table th.span8 { - float: none; - width: 604px; - margin-left: 0; -} -.table td.span9, -.table th.span9 { - float: none; - width: 684px; - margin-left: 0; -} -.table td.span10, -.table th.span10 { - float: none; - width: 764px; - margin-left: 0; -} -.table td.span11, -.table th.span11 { - float: none; - width: 844px; - margin-left: 0; -} -.table td.span12, -.table th.span12 { - float: none; - width: 924px; - margin-left: 0; -} -.table tbody tr.success > td { - background-color: #dff0d8; -} -.table tbody tr.error > td { - background-color: #f8f0f0; -} -.table tbody tr.warning > td { - background-color: #fcf8e3; -} -.table tbody tr.info > td { - background-color: #d9edf7; -} -.table-hover tbody tr.success:hover > td { - background-color: #d0e9c6; -} -.table-hover tbody tr.error:hover > td { - background-color: #f0dfe0; -} -.table-hover tbody tr.warning:hover > td { - background-color: #faf2cc; -} -.table-hover tbody tr.info:hover > td { - background-color: #c4e3f3; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle { - *margin-bottom: -3px; -} -.dropdown-toggle:active, -.open .dropdown-toggle { - outline: 0; -} -.caret { - display: inline-block; - width: 0; - height: 0; - vertical-align: top; - border-top: 4px solid #000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - content: ""; -} -.dropdown .caret { - margin-top: 8px; - margin-left: 2px; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 20px; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus, -.dropdown-submenu:hover > a, -.dropdown-submenu:focus > a { - text-decoration: none; - color: #fff; - background-color: #e62f8d; - background-image: -moz-linear-gradient(top, #E73892, #e42186); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#E73892), to(#e42186)); - background-image: -webkit-linear-gradient(top, #E73892, #e42186); - background-image: -o-linear-gradient(top, #E73892, #e42186); - background-image: linear-gradient(to bottom, #E73892, #e42186); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe73892', endColorstr='#ffe42186', GradientType=0); -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #e62f8d; - background-image: -moz-linear-gradient(top, #E73892, #e42186); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#E73892), to(#e42186)); - background-image: -webkit-linear-gradient(top, #E73892, #e42186); - background-image: -o-linear-gradient(top, #E73892, #e42186); - background-image: linear-gradient(to bottom, #E73892, #e42186); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe73892', endColorstr='#ffe42186', GradientType=0); -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: default; -} -.open { - *z-index: 1000; -} -.open > .dropdown-menu { - display: block; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid #000; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -.dropdown-submenu { - position: relative; -} -.dropdown-submenu > .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} -.dropdown-submenu:hover > .dropdown-menu { - display: block; -} -.dropup .dropdown-submenu > .dropdown-menu { - top: auto; - bottom: 0; - margin-top: 0; - margin-bottom: -2px; - -webkit-border-radius: 5px 5px 5px 0; - -moz-border-radius: 5px 5px 5px 0; - border-radius: 5px 5px 5px 0; -} -.dropdown-submenu > a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} -.dropdown-submenu:hover > a:after { - border-left-color: #fff; -} -.dropdown-submenu.pull-left { - float: none; -} -.dropdown-submenu.pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.dropdown .dropdown-menu .nav-header { - padding-left: 20px; - padding-right: 20px; -} -.typeahead { - z-index: 1051; - margin-top: 2px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-large { - padding: 24px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.well-small { - padding: 9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} -.collapse.in { - height: auto; -} -.close { - float: right; - font-size: 20px; - font-weight: bold; - line-height: 20px; - color: #000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.btn { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding: 4px 12px; - margin-bottom: 0; - font-size: 14px; - line-height: 20px; - text-align: center; - vertical-align: middle; - cursor: pointer; - color: #333; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #ffffff, #eaeaea); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#eaeaea)); - background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea); - background-image: -o-linear-gradient(top, #ffffff, #eaeaea); - background-image: linear-gradient(to bottom, #ffffff, #eaeaea); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeaeaea', GradientType=0); - border-color: #eaeaea #eaeaea #c4c4c4; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #eaeaea; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border: 1px solid #ccc; - *border: 0; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *margin-left: .3em; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -} -.btn:hover, -.btn:focus, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - color: #333; - background-color: #eaeaea; - *background-color: #dddddd; -} -.btn:active, -.btn.active { - background-color: #d1d1d1 \9; -} -.btn:first-child { - *margin-left: 0; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn.active, -.btn:active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn.disabled, -.btn[disabled] { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-large { - padding: 11px 19px; - font-size: 17.5px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.btn-large [class^="icon-"], -.btn-large [class*=" icon-"] { - margin-top: 4px; -} -.btn-small { - padding: 2px 10px; - font-size: 11.9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-small [class^="icon-"], -.btn-small [class*=" icon-"] { - margin-top: 0; -} -.btn-mini [class^="icon-"], -.btn-mini [class*=" icon-"] { - margin-top: -1px; -} -.btn-mini { - padding: 0 6px; - font-size: 10.5px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} -.btn-primary { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ea53a1; - background-image: -moz-linear-gradient(top, #ec66ab, #E73892); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ec66ab), to(#E73892)); - background-image: -webkit-linear-gradient(top, #ec66ab, #E73892); - background-image: -o-linear-gradient(top, #ec66ab, #E73892); - background-image: linear-gradient(to bottom, #ec66ab, #E73892); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec66ab', endColorstr='#ffe73892', GradientType=0); - border-color: #E73892 #E73892 #bc176c; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #E73892; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - color: #fff; - background-color: #E73892; - *background-color: #e42186; -} -.btn-primary:active, -.btn-primary.active { - background-color: #d31979 \9; -} -.btn-warning { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #f89406; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - color: #fff; - background-color: #f89406; - *background-color: #df8505; -} -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} -.btn-danger { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #da4f49; - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #bd362f; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - color: #fff; - background-color: #bd362f; - *background-color: #a9302a; -} -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} -.btn-success { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #5bb75b; - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(to bottom, #62c462, #51a351); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #51a351; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - color: #fff; - background-color: #51a351; - *background-color: #499249; -} -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} -.btn-info { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #49afcd; - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #2f96b4; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - color: #fff; - background-color: #2f96b4; - *background-color: #2a85a0; -} -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} -.btn-inverse { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #363636; - background-image: -moz-linear-gradient(top, #444, #222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444), to(#222)); - background-image: -webkit-linear-gradient(top, #444, #222); - background-image: -o-linear-gradient(top, #444, #222); - background-image: linear-gradient(to bottom, #444, #222); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); - border-color: #222 #222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #222; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-inverse:hover, -.btn-inverse:focus, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - color: #fff; - background-color: #222; - *background-color: #151515; -} -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} -button.btn, -input[type="submit"].btn { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn::-moz-focus-inner, -input[type="submit"].btn::-moz-focus-inner { - padding: 0; - border: 0; -} -button.btn.btn-large, -input[type="submit"].btn.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; -} -button.btn.btn-small, -input[type="submit"].btn.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn.btn-mini, -input[type="submit"].btn.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; -} -.btn-link, -.btn-link:active, -.btn-link[disabled] { - background-color: transparent; - background-image: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-link { - border-color: transparent; - cursor: pointer; - color: #E73892; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-link:hover, -.btn-link:focus { - color: #bc176c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -.btn-link[disabled]:focus { - color: #333; - text-decoration: none; -} -.btn-group { - position: relative; - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - font-size: 0; - vertical-align: middle; - white-space: nowrap; - *margin-left: .3em; -} -.btn-group:first-child { - *margin-left: 0; -} -.btn-group + .btn-group { - margin-left: 5px; -} -.btn-toolbar { - font-size: 0; - margin-top: 10px; - margin-bottom: 10px; -} -.btn-toolbar > .btn + .btn, -.btn-toolbar > .btn-group + .btn, -.btn-toolbar > .btn + .btn-group { - margin-left: 5px; -} -.btn-group > .btn { - position: relative; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group > .btn + .btn { - margin-left: -1px; -} -.btn-group > .btn, -.btn-group > .dropdown-menu, -.btn-group > .popover { - font-size: 14px; -} -.btn-group > .btn-mini { - font-size: 10.5px; -} -.btn-group > .btn-small { - font-size: 11.9px; -} -.btn-group > .btn-large { - font-size: 17.5px; -} -.btn-group > .btn:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.btn-group > .btn:last-child, -.btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.btn-group > .btn.large:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.btn-group > .btn.large:last-child, -.btn-group > .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active { - z-index: 2; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - *padding-top: 5px; - *padding-bottom: 5px; -} -.btn-group > .btn-mini + .dropdown-toggle { - padding-left: 5px; - padding-right: 5px; - *padding-top: 2px; - *padding-bottom: 2px; -} -.btn-group > .btn-small + .dropdown-toggle { - *padding-top: 5px; - *padding-bottom: 4px; -} -.btn-group > .btn-large + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; - *padding-top: 7px; - *padding-bottom: 7px; -} -.btn-group.open .dropdown-toggle { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn-group.open .btn.dropdown-toggle { - background-color: #eaeaea; -} -.btn-group.open .btn-primary.dropdown-toggle { - background-color: #E73892; -} -.btn-group.open .btn-warning.dropdown-toggle { - background-color: #f89406; -} -.btn-group.open .btn-danger.dropdown-toggle { - background-color: #bd362f; -} -.btn-group.open .btn-success.dropdown-toggle { - background-color: #51a351; -} -.btn-group.open .btn-info.dropdown-toggle { - background-color: #2f96b4; -} -.btn-group.open .btn-inverse.dropdown-toggle { - background-color: #222; -} -.btn .caret { - margin-top: 8px; - margin-left: 0; -} -.btn-large .caret { - margin-top: 6px; -} -.btn-large .caret { - border-left-width: 5px; - border-right-width: 5px; - border-top-width: 5px; -} -.btn-mini .caret, -.btn-small .caret { - margin-top: 8px; -} -.dropup .btn-large .caret { - border-bottom-width: 5px; -} -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.btn-group-vertical { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.btn-group-vertical > .btn { - display: block; - float: none; - max-width: 100%; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group-vertical > .btn + .btn { - margin-left: 0; - margin-top: -1px; -} -.btn-group-vertical > .btn:first-child { - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.btn-group-vertical > .btn:last-child { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.btn-group-vertical > .btn-large:first-child { - -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; -} -.btn-group-vertical > .btn-large:last-child { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.alert { - padding: 8px 35px 8px 14px; - margin-bottom: 20px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - background-color: #fcf8e3; - border: 1px solid #fbeed5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.alert, -.alert h4 { - color: #c09853; -} -.alert h4 { - margin: 0; -} -.alert .close { - position: relative; - top: -2px; - right: -21px; - line-height: 20px; -} -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #468847; -} -.alert-success h4 { - color: #468847; -} -.alert-danger, -.alert-error { - background-color: #f8f0f0; - border-color: #c6898b; - color: #b55457; -} -.alert-danger h4, -.alert-error h4 { - color: #b55457; -} -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #3a87ad; -} -.alert-info h4 { - color: #3a87ad; -} -.alert-block { - padding-top: 14px; - padding-bottom: 14px; -} -.alert-block > p, -.alert-block > ul { - margin-bottom: 0; -} -.alert-block p + p { - margin-top: 5px; -} -.nav { - margin-left: 0; - margin-bottom: 20px; - list-style: none; -} -.nav > li > a { - display: block; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li > a > img { - max-width: none; -} -.nav > .pull-right { - float: right; -} -.nav-header { - display: block; - padding: 3px 15px; - font-size: 11px; - font-weight: bold; - line-height: 20px; - color: #999; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-transform: uppercase; -} -.nav li + .nav-header { - margin-top: 9px; -} -.nav-list { - padding-left: 15px; - padding-right: 15px; - margin-bottom: 0; -} -.nav-list > li > a, -.nav-list .nav-header { - margin-left: -15px; - margin-right: -15px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.nav-list > li > a { - padding: 3px 15px; -} -.nav-list > .active > a, -.nav-list > .active > a:hover, -.nav-list > .active > a:focus { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - background-color: #E73892; -} -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - margin-right: 2px; -} -.nav-list .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.nav-tabs, -.nav-pills { - *zoom: 1; -} -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; - content: ""; - line-height: 0; -} -.nav-tabs:after, -.nav-pills:after { - clear: both; -} -.nav-tabs > li, -.nav-pills > li { - float: left; -} -.nav-tabs > li > a, -.nav-pills > li > a { - padding-right: 12px; - padding-left: 12px; - margin-right: 2px; - line-height: 14px; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - margin-bottom: -1px; -} -.nav-tabs > li > a { - padding-top: 8px; - padding-bottom: 8px; - line-height: 20px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - border-color: #eee #eee #ddd; -} -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover, -.nav-tabs > .active > a:focus { - color: #555; - background-color: #eee; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-pills > li > a { - padding-top: 8px; - padding-bottom: 8px; - margin-top: 2px; - margin-bottom: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-pills > .active > a, -.nav-pills > .active > a:hover, -.nav-pills > .active > a:focus { - color: #fff; - background-color: #E73892; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li > a { - margin-right: 0; -} -.nav-tabs.nav-stacked { - border-bottom: 0; -} -.nav-tabs.nav-stacked > li > a { - border: 1px solid #ddd; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.nav-tabs.nav-stacked > li:first-child > a { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.nav-tabs.nav-stacked > li:last-child > a { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.nav-tabs.nav-stacked > li > a:hover, -.nav-tabs.nav-stacked > li > a:focus { - border-color: #ddd; - z-index: 2; -} -.nav-pills.nav-stacked > li > a { - margin-bottom: 3px; -} -.nav-pills.nav-stacked > li:last-child > a { - margin-bottom: 1px; -} -.nav-tabs .dropdown-menu { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.nav-pills .dropdown-menu { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.nav .dropdown-toggle .caret { - border-top-color: #E73892; - border-bottom-color: #E73892; - margin-top: 6px; -} -.nav .dropdown-toggle:hover .caret, -.nav .dropdown-toggle:focus .caret { - border-top-color: #bc176c; - border-bottom-color: #bc176c; -} -/* move down carets for tabs */ -.nav-tabs .dropdown-toggle .caret { - margin-top: 8px; -} -.nav .active .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.nav-tabs .active .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.nav > .dropdown.active > a:hover, -.nav > .dropdown.active > a:focus { - cursor: pointer; -} -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover, -.nav > li.dropdown.open.active > a:focus { - color: #fff; - background-color: #999; - border-color: #999; -} -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret, -.nav li.dropdown.open a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; - opacity: 1; - filter: alpha(opacity=100); -} -.tabs-stacked .open > a:hover, -.tabs-stacked .open > a:focus { - border-color: #999; -} -.tabbable { - *zoom: 1; -} -.tabbable:before, -.tabbable:after { - display: table; - content: ""; - line-height: 0; -} -.tabbable:after { - clear: both; -} -.tab-content { - overflow: auto; -} -.tabs-below > .nav-tabs, -.tabs-right > .nav-tabs, -.tabs-left > .nav-tabs { - border-bottom: 0; -} -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} -.tab-content > .active, -.pill-content > .active { - display: block; -} -.tabs-below > .nav-tabs { - border-top: 1px solid #ddd; -} -.tabs-below > .nav-tabs > li { - margin-top: -1px; - margin-bottom: 0; -} -.tabs-below > .nav-tabs > li > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.tabs-below > .nav-tabs > li > a:hover, -.tabs-below > .nav-tabs > li > a:focus { - border-bottom-color: transparent; - border-top-color: #ddd; -} -.tabs-below > .nav-tabs > .active > a, -.tabs-below > .nav-tabs > .active > a:hover, -.tabs-below > .nav-tabs > .active > a:focus { - border-color: transparent #ddd #ddd #ddd; -} -.tabs-left > .nav-tabs > li, -.tabs-right > .nav-tabs > li { - float: none; -} -.tabs-left > .nav-tabs > li > a, -.tabs-right > .nav-tabs > li > a { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; -} -.tabs-left > .nav-tabs { - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} -.tabs-left > .nav-tabs > li > a { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} -.tabs-left > .nav-tabs > li > a:hover, -.tabs-left > .nav-tabs > li > a:focus { - border-color: #eee #ddd #eee #eee; -} -.tabs-left > .nav-tabs .active > a, -.tabs-left > .nav-tabs .active > a:hover, -.tabs-left > .nav-tabs .active > a:focus { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #fff; -} -.tabs-right > .nav-tabs { - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} -.tabs-right > .nav-tabs > li > a { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} -.tabs-right > .nav-tabs > li > a:hover, -.tabs-right > .nav-tabs > li > a:focus { - border-color: #eee #eee #eee #ddd; -} -.tabs-right > .nav-tabs .active > a, -.tabs-right > .nav-tabs .active > a:hover, -.tabs-right > .nav-tabs .active > a:focus { - border-color: #ddd #ddd #ddd transparent; - *border-left-color: #fff; -} -.nav > .disabled > a { - color: #999; -} -.nav > .disabled > a:hover, -.nav > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - cursor: default; -} -.navbar { - overflow: visible; - margin-bottom: 20px; - *position: relative; - *z-index: 2; -} -.navbar-inner { - min-height: 40px; - padding-left: 20px; - padding-right: 20px; - background-color: #fafafa; - background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); - background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); - background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - border: 1px solid #d4d4d4; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - *zoom: 1; -} -.navbar-inner:before, -.navbar-inner:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-inner:after { - clear: both; -} -.navbar .container { - width: auto; -} -.nav-collapse.collapse { - height: auto; - overflow: visible; -} -.navbar .brand { - float: left; - display: block; - padding: 10px 20px 10px; - margin-left: -20px; - font-size: 20px; - font-weight: 200; - color: #777; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .brand:hover, -.navbar .brand:focus { - text-decoration: none; -} -.navbar-text { - margin-bottom: 0; - line-height: 40px; - color: #777; -} -.navbar-link { - color: #777; -} -.navbar-link:hover, -.navbar-link:focus { - color: #333; -} -.navbar .divider-vertical { - height: 40px; - margin: 0 9px; - border-left: 1px solid #f2f2f2; - border-right: 1px solid #ffffff; -} -.navbar .btn, -.navbar .btn-group { - margin-top: 5px; -} -.navbar .btn-group .btn, -.navbar .input-prepend .btn, -.navbar .input-append .btn, -.navbar .input-prepend .btn-group, -.navbar .input-append .btn-group { - margin-top: 0; -} -.navbar-form { - margin-bottom: 0; - *zoom: 1; -} -.navbar-form:before, -.navbar-form:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-form:after { - clear: both; -} -.navbar-form input, -.navbar-form select, -.navbar-form .radio, -.navbar-form .checkbox { - margin-top: 5px; -} -.navbar-form input, -.navbar-form select, -.navbar-form .btn { - display: inline-block; - margin-bottom: 0; -} -.navbar-form input[type="image"], -.navbar-form input[type="checkbox"], -.navbar-form input[type="radio"] { - margin-top: 3px; -} -.navbar-form .input-append, -.navbar-form .input-prepend { - margin-top: 5px; - white-space: nowrap; -} -.navbar-form .input-append input, -.navbar-form .input-prepend input { - margin-top: 0; -} -.navbar-search { - position: relative; - float: left; - margin-top: 5px; - margin-bottom: 0; -} -.navbar-search .search-query { - margin-bottom: 0; - padding: 4px 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 1; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.navbar-static-top { - position: static; - margin-bottom: 0; -} -.navbar-static-top .navbar-inner { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; - margin-bottom: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - border-width: 0 0 1px; -} -.navbar-fixed-bottom .navbar-inner { - border-width: 1px 0 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-left: 0; - padding-right: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; - width: 100%; - *width: 99.94680851%; - width: 926px; -} -.navbar-fixed-top { - top: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); - box-shadow: 0 1px 10px rgba(0,0,0,.1); -} -.navbar-fixed-bottom { - bottom: 0; -} -.navbar-fixed-bottom .navbar-inner { - -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - box-shadow: 0 -1px 10px rgba(0,0,0,.1); -} -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} -.navbar .nav.pull-right { - float: right; - margin-right: 0; -} -.navbar .nav > li { - float: left; -} -.navbar .nav > li > a { - float: none; - padding: 10px 15px 10px; - color: #777; - text-decoration: none; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .nav .dropdown-toggle .caret { - margin-top: 8px; -} -.navbar .nav > li > a:focus, -.navbar .nav > li > a:hover { - background-color: transparent; - color: #333; - text-decoration: none; -} -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: #555; - text-decoration: none; - background-color: #e5e5e5; - -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -} -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-left: 5px; - margin-right: 5px; - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ededed; - background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); - background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); - border-color: #e5e5e5 #e5e5e5 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #e5e5e5; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -} -.navbar .btn-navbar:hover, -.navbar .btn-navbar:focus, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - color: #fff; - background-color: #e5e5e5; - *background-color: #d9d9d9; -} -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #cccccc \9; -} -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -} -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} -.navbar .nav > li > .dropdown-menu:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; - top: -7px; - left: 9px; -} -.navbar .nav > li > .dropdown-menu:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - position: absolute; - top: -6px; - left: 10px; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:before { - border-top: 7px solid #ccc; - border-top-color: rgba(0, 0, 0, 0.2); - border-bottom: 0; - bottom: -7px; - top: auto; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:after { - border-top: 6px solid #fff; - border-bottom: 0; - bottom: -6px; - top: auto; -} -.navbar .nav li.dropdown > a:hover .caret, -.navbar .nav li.dropdown > a:focus .caret { - border-top-color: #333; - border-bottom-color: #333; -} -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #e5e5e5; - color: #555; -} -.navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #777; - border-bottom-color: #777; -} -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.navbar .pull-right > li > .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right { - left: auto; - right: 0; -} -.navbar .pull-right > li > .dropdown-menu:before, -.navbar .nav > li > .dropdown-menu.pull-right:before { - left: auto; - right: 12px; -} -.navbar .pull-right > li > .dropdown-menu:after, -.navbar .nav > li > .dropdown-menu.pull-right:after { - left: auto; - right: 13px; -} -.navbar .pull-right > li > .dropdown-menu .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { - left: auto; - right: 100%; - margin-left: 0; - margin-right: -1px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.navbar-inverse .navbar-inner { - background-color: #1b1b1b; - background-image: -moz-linear-gradient(top, #222222, #111111); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); - background-image: -webkit-linear-gradient(top, #222222, #111111); - background-image: -o-linear-gradient(top, #222222, #111111); - background-image: linear-gradient(to bottom, #222222, #111111); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); - border-color: #252525; -} -.navbar-inverse .brand, -.navbar-inverse .nav > li > a { - color: #999; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.navbar-inverse .brand:hover, -.navbar-inverse .nav > li > a:hover, -.navbar-inverse .brand:focus, -.navbar-inverse .nav > li > a:focus { - color: #fff; -} -.navbar-inverse .brand { - color: #999; -} -.navbar-inverse .navbar-text { - color: #999; -} -.navbar-inverse .nav > li > a:focus, -.navbar-inverse .nav > li > a:hover { - background-color: transparent; - color: #fff; -} -.navbar-inverse .nav .active > a, -.navbar-inverse .nav .active > a:hover, -.navbar-inverse .nav .active > a:focus { - color: #fff; - background-color: #111111; -} -.navbar-inverse .navbar-link { - color: #999; -} -.navbar-inverse .navbar-link:hover, -.navbar-inverse .navbar-link:focus { - color: #fff; -} -.navbar-inverse .divider-vertical { - border-left-color: #111111; - border-right-color: #222222; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #111111; - color: #fff; -} -.navbar-inverse .nav li.dropdown > a:hover .caret, -.navbar-inverse .nav li.dropdown > a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #999; - border-bottom-color: #999; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .navbar-search .search-query { - color: #fff; - background-color: #515151; - border-color: #111111; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} -.navbar-inverse .navbar-search .search-query:-moz-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:focus, -.navbar-inverse .navbar-search .search-query.focused { - padding: 5px 15px; - color: #333; - text-shadow: 0 1px 0 #fff; - background-color: #fff; - border: 0; - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - outline: 0; -} -.navbar-inverse .btn-navbar { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e0e0e; - background-image: -moz-linear-gradient(top, #151515, #040404); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); - background-image: -webkit-linear-gradient(top, #151515, #040404); - background-image: -o-linear-gradient(top, #151515, #040404); - background-image: linear-gradient(to bottom, #151515, #040404); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); - border-color: #040404 #040404 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #040404; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.navbar-inverse .btn-navbar:hover, -.navbar-inverse .btn-navbar:focus, -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active, -.navbar-inverse .btn-navbar.disabled, -.navbar-inverse .btn-navbar[disabled] { - color: #fff; - background-color: #040404; - *background-color: #000000; -} -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active { - background-color: #000000 \9; -} -.breadcrumb { - padding: 8px 15px; - margin: 0 0 20px; - list-style: none; - background-color: #f5f5f5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - text-shadow: 0 1px 0 #fff; -} -.breadcrumb > li > .divider { - padding: 0 5px; - color: #ccc; -} -.breadcrumb > .active { - color: #999; -} -.pagination { - margin: 20px 0; -} -.pagination ul { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-left: 0; - margin-bottom: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -} -.pagination ul > li { - display: inline; -} -.pagination ul > li > a, -.pagination ul > li > span { - float: left; - padding: 4px 12px; - line-height: 20px; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; - border-left-width: 0; -} -.pagination ul > li > a:hover, -.pagination ul > li > a:focus, -.pagination ul > .active > a, -.pagination ul > .active > span { - background-color: #f5f5f5; -} -.pagination ul > .active > a, -.pagination ul > .active > span { - color: #999; - cursor: default; -} -.pagination ul > .disabled > span, -.pagination ul > .disabled > a, -.pagination ul > .disabled > a:hover, -.pagination ul > .disabled > a:focus { - color: #999; - background-color: transparent; - cursor: default; -} -.pagination ul > li:first-child > a, -.pagination ul > li:first-child > span { - border-left-width: 1px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.pagination ul > li:last-child > a, -.pagination ul > li:last-child > span { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.pagination-centered { - text-align: center; -} -.pagination-right { - text-align: right; -} -.pagination-large ul > li > a, -.pagination-large ul > li > span { - padding: 11px 19px; - font-size: 17.5px; -} -.pagination-large ul > li:first-child > a, -.pagination-large ul > li:first-child > span { - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.pagination-large ul > li:last-child > a, -.pagination-large ul > li:last-child > span { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.pagination-mini ul > li:first-child > a, -.pagination-small ul > li:first-child > a, -.pagination-mini ul > li:first-child > span, -.pagination-small ul > li:first-child > span { - -webkit-border-top-left-radius: 3px; - -moz-border-radius-topleft: 3px; - border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - border-bottom-left-radius: 3px; -} -.pagination-mini ul > li:last-child > a, -.pagination-small ul > li:last-child > a, -.pagination-mini ul > li:last-child > span, -.pagination-small ul > li:last-child > span { - -webkit-border-top-right-radius: 3px; - -moz-border-radius-topright: 3px; - border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - border-bottom-right-radius: 3px; -} -.pagination-small ul > li > a, -.pagination-small ul > li > span { - padding: 2px 10px; - font-size: 11.9px; -} -.pagination-mini ul > li > a, -.pagination-mini ul > li > span { - padding: 0 6px; - font-size: 10.5px; -} -.pager { - margin: 20px 0; - list-style: none; - text-align: center; - *zoom: 1; -} -.pager:before, -.pager:after { - display: table; - content: ""; - line-height: 0; -} -.pager:after { - clear: both; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #f5f5f5; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999; - background-color: #fff; - cursor: default; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop, -.modal-backdrop.fade.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.modal { - position: fixed; - top: 10%; - left: 50%; - z-index: 1050; - width: 560px; - margin-left: -280px; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.3); - *border: 1px solid #999; - /* IE6-7 */ - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; - outline: none; -} -.modal.fade { - -webkit-transition: opacity .3s linear, top .3s ease-out; - -moz-transition: opacity .3s linear, top .3s ease-out; - -o-transition: opacity .3s linear, top .3s ease-out; - transition: opacity .3s linear, top .3s ease-out; - top: -25%; -} -.modal.fade.in { - top: 10%; -} -.modal-header { - padding: 9px 15px; - border-bottom: 1px solid #eee; -} -.modal-header .close { - margin-top: 2px; -} -.modal-header h3 { - margin: 0; - line-height: 30px; -} -.modal-body { - position: relative; - overflow-y: auto; - max-height: 400px; - padding: 15px; -} -.modal-form { - margin-bottom: 0; -} -.modal-footer { - padding: 14px 15px 15px; - margin-bottom: 0; - text-align: right; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - -webkit-box-shadow: inset 0 1px 0 #fff; - -moz-box-shadow: inset 0 1px 0 #fff; - box-shadow: inset 0 1px 0 #fff; - *zoom: 1; -} -.modal-footer:before, -.modal-footer:after { - display: table; - content: ""; - line-height: 0; -} -.modal-footer:after { - clear: both; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - visibility: visible; - font-size: 11px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.thumbnails { - margin-left: -20px; - list-style: none; - *zoom: 1; -} -.thumbnails:before, -.thumbnails:after { - display: table; - content: ""; - line-height: 0; -} -.thumbnails:after { - clear: both; -} -.row-fluid .thumbnails { - margin-left: 0; -} -.thumbnails > li { - float: left; - margin-bottom: 20px; - margin-left: 20px; -} -.thumbnail { - display: block; - padding: 4px; - line-height: 20px; - border: 1px solid #ddd; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -a.thumbnail:hover, -a.thumbnail:focus { - border-color: #E73892; - -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -} -.thumbnail > img { - display: block; - max-width: 100%; - margin-left: auto; - margin-right: auto; -} -.thumbnail .caption { - padding: 9px; - color: #555; -} -.label, -.badge { - display: inline-block; - padding: 2px 4px; - font-size: 11.844px; - font-weight: bold; - line-height: 14px; - color: #fff; - vertical-align: baseline; - white-space: nowrap; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #999; -} -.label { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.badge { - padding-left: 9px; - padding-right: 9px; - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} -.label:empty, -.badge:empty { - display: none; -} -a.label:hover, -a.label:focus, -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-important, -.badge-important { - background-color: #b55457; -} -.label-important[href], -.badge-important[href] { - background-color: #954143; -} -.label-warning, -.badge-warning { - background-color: #f89406; -} -.label-warning[href], -.badge-warning[href] { - background-color: #c67605; -} -.label-success, -.badge-success { - background-color: #468847; -} -.label-success[href], -.badge-success[href] { - background-color: #356635; -} -.label-info, -.badge-info { - background-color: #3a87ad; -} -.label-info[href], -.badge-info[href] { - background-color: #2d6987; -} -.label-inverse, -.badge-inverse { - background-color: #333; -} -.label-inverse[href], -.badge-inverse[href] { - background-color: #1a1a1a; -} -.btn .label, -.btn .badge { - position: relative; - top: -1px; -} -.btn-mini .label, -.btn-mini .badge { - top: 0; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-ms-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.progress .bar { - width: 0%; - height: 100%; - color: #fff; - float: left; - font-size: 12px; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e90d2; - background-image: -moz-linear-gradient(top, #149bdf, #0480be); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); - background-image: -webkit-linear-gradient(top, #149bdf, #0480be); - background-image: -o-linear-gradient(top, #149bdf, #0480be); - background-image: linear-gradient(to bottom, #149bdf, #0480be); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress .bar + .bar { - -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -} -.progress-striped .bar { - background-color: #149bdf; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-danger .bar, -.progress .bar-danger { - background-color: #dd514c; - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); -} -.progress-danger.progress-striped .bar, -.progress-striped .bar-danger { - background-color: #ee5f5b; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-success .bar, -.progress .bar-success { - background-color: #5eb95e; - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(to bottom, #62c462, #57a957); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); -} -.progress-success.progress-striped .bar, -.progress-striped .bar-success { - background-color: #62c462; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-info .bar, -.progress .bar-info { - background-color: #4bb1cf; - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); -} -.progress-info.progress-striped .bar, -.progress-striped .bar-info { - background-color: #5bc0de; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-warning .bar, -.progress .bar-warning { - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); -} -.progress-warning.progress-striped .bar, -.progress-striped .bar-warning { - background-color: #fbb450; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.accordion { - margin-bottom: 20px; -} -.accordion-group { - margin-bottom: 2px; - border: 1px solid #e5e5e5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.accordion-heading { - border-bottom: 0; -} -.accordion-heading .accordion-toggle { - display: block; - padding: 8px 15px; -} -.accordion-toggle { - cursor: pointer; -} -.accordion-inner { - padding: 9px 15px; - border-top: 1px solid #e5e5e5; -} -.carousel { - position: relative; - margin-bottom: 20px; - line-height: 1; -} -.carousel-inner { - overflow: hidden; - width: 100%; - position: relative; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 40%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -20px; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #fff; - text-align: center; - background: #222; - border: 3px solid #fff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - filter: alpha(opacity=50); -} -.carousel-control.right { - left: auto; - right: 15px; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-indicators { - position: absolute; - top: 15px; - right: 15px; - z-index: 5; - margin: 0; - list-style: none; -} -.carousel-indicators li { - display: block; - float: left; - width: 10px; - height: 10px; - margin-left: 5px; - text-indent: -999px; - background-color: #ccc; - background-color: rgba(255, 255, 255, 0.25); - border-radius: 5px; -} -.carousel-indicators .active { - background-color: #fff; -} -.carousel-caption { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 15px; - background: #333; - background: rgba(0, 0, 0, 0.75); -} -.carousel-caption h4, -.carousel-caption p { - color: #fff; - line-height: 20px; -} -.carousel-caption h4 { - margin: 0 0 5px; -} -.carousel-caption p { - margin-bottom: 0; -} -.hero-unit { - padding: 60px; - margin-bottom: 30px; - font-size: 18px; - font-weight: 200; - line-height: 30px; - color: inherit; - background-color: #eee; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.hero-unit h1 { - margin-bottom: 0; - font-size: 60px; - line-height: 1; - color: inherit; - letter-spacing: -1px; -} -.hero-unit li { - line-height: 30px; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - background-color: #fff; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.popover-title:empty { - display: none; -} -.popover-content { - padding: 9px 14px; -} -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover .arrow { - border-width: 11px; -} -.popover .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #fff; -} -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right .arrow:after { - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; -} -.popover.bottom .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left .arrow:after { - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.hide { - display: none; -} -.show { - display: block; -} -.invisible { - visibility: hidden; -} -.affix { - position: fixed; -} -/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ -@-ms-viewport { - width: device-width; -} -.hidden { - display: none; - visibility: hidden; -} -.visible-phone { - display: none !important; -} -.visible-tablet { - display: none !important; -} -.hidden-desktop { - display: none !important; -} -.visible-desktop { - display: inherit !important; -} -@media (min-width: 768px) and (max-width: 979px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important ; - } - .visible-tablet { - display: inherit !important; - } - .hidden-tablet { - display: none !important; - } -} -@media (max-width: 767px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important; - } - .visible-phone { - display: inherit !important; - } - .hidden-phone { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: inherit !important; - } - .hidden-print { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - content: ""; - line-height: 0; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; - } - .span3 { - width: 166px; - } - .span2 { - width: 104px; - } - .span1 { - width: 42px; - } - .offset12 { - margin-left: 764px; - } - .offset11 { - margin-left: 702px; - } - .offset10 { - margin-left: 640px; - } - .offset9 { - margin-left: 578px; - } - .offset8 { - margin-left: 516px; - } - .offset7 { - margin-left: 454px; - } - .offset6 { - margin-left: 392px; - } - .offset5 { - margin-left: 330px; - } - .offset4 { - margin-left: 268px; - } - .offset3 { - margin-left: 206px; - } - .offset2 { - margin-left: 144px; - } - .offset1 { - margin-left: 82px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - content: ""; - line-height: 0; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.76243094%; - *margin-left: 2.70923945%; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.76243094%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851%; - } - .row-fluid .span11 { - width: 91.43646409%; - *width: 91.3832726%; - } - .row-fluid .span10 { - width: 82.87292818%; - *width: 82.81973669%; - } - .row-fluid .span9 { - width: 74.30939227%; - *width: 74.25620078%; - } - .row-fluid .span8 { - width: 65.74585635%; - *width: 65.69266486%; - } - .row-fluid .span7 { - width: 57.18232044%; - *width: 57.12912895%; - } - .row-fluid .span6 { - width: 48.61878453%; - *width: 48.56559304%; - } - .row-fluid .span5 { - width: 40.05524862%; - *width: 40.00205713%; - } - .row-fluid .span4 { - width: 31.49171271%; - *width: 31.43852122%; - } - .row-fluid .span3 { - width: 22.9281768%; - *width: 22.87498531%; - } - .row-fluid .span2 { - width: 14.36464088%; - *width: 14.31144939%; - } - .row-fluid .span1 { - width: 5.80110497%; - *width: 5.74791348%; - } - .row-fluid .offset12 { - margin-left: 105.52486188%; - *margin-left: 105.4184789%; - } - .row-fluid .offset12:first-child { - margin-left: 102.76243094%; - *margin-left: 102.65604796%; - } - .row-fluid .offset11 { - margin-left: 96.96132597%; - *margin-left: 96.85494299%; - } - .row-fluid .offset11:first-child { - margin-left: 94.19889503%; - *margin-left: 94.09251205%; - } - .row-fluid .offset10 { - margin-left: 88.39779006%; - *margin-left: 88.29140708%; - } - .row-fluid .offset10:first-child { - margin-left: 85.63535912%; - *margin-left: 85.52897614%; - } - .row-fluid .offset9 { - margin-left: 79.83425414%; - *margin-left: 79.72787116%; - } - .row-fluid .offset9:first-child { - margin-left: 77.0718232%; - *margin-left: 76.96544023%; - } - .row-fluid .offset8 { - margin-left: 71.27071823%; - *margin-left: 71.16433525%; - } - .row-fluid .offset8:first-child { - margin-left: 68.50828729%; - *margin-left: 68.40190431%; - } - .row-fluid .offset7 { - margin-left: 62.70718232%; - *margin-left: 62.60079934%; - } - .row-fluid .offset7:first-child { - margin-left: 59.94475138%; - *margin-left: 59.8383684%; - } - .row-fluid .offset6 { - margin-left: 54.14364641%; - *margin-left: 54.03726343%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121547%; - *margin-left: 51.27483249%; - } - .row-fluid .offset5 { - margin-left: 45.5801105%; - *margin-left: 45.47372752%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767956%; - *margin-left: 42.71129658%; - } - .row-fluid .offset4 { - margin-left: 37.01657459%; - *margin-left: 36.91019161%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414365%; - *margin-left: 34.14776067%; - } - .row-fluid .offset3 { - margin-left: 28.45303867%; - *margin-left: 28.3466557%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773%; - *margin-left: 25.58422476%; - } - .row-fluid .offset2 { - margin-left: 19.88950276%; - *margin-left: 19.78311978%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182%; - *margin-left: 17.02068884%; - } - .row-fluid .offset1 { - margin-left: 11.32596685%; - *margin-left: 11.21958387%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591%; - *margin-left: 8.45715293%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 710px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 648px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 586px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 524px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 462px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 400px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 338px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 276px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 214px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 152px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 90px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 28px; - } -} -@media (max-width: 767px) { - body { - padding-left: 20px; - padding-right: 20px; - } - .navbar-fixed-top, - .navbar-fixed-bottom, - .navbar-static-top { - margin-left: -20px; - margin-right: -20px; - } - .container-fluid { - padding: 0; - } - .dl-horizontal dt { - float: none; - clear: none; - width: auto; - text-align: left; - } - .dl-horizontal dd { - margin-left: 0; - } - .container { - width: auto; - } - .row-fluid { - width: 100%; - } - .row, - .thumbnails { - margin-left: 0; - } - .thumbnails > li { - float: none; - margin-left: 0; - } - [class*="span"], - .uneditable-input[class*="span"], - .row-fluid [class*="span"] { - float: none; - display: block; - width: 100%; - margin-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .span12, - .row-fluid .span12 { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="offset"]:first-child { - margin-left: 0; - } - .input-large, - .input-xlarge, - .input-xxlarge, - input[class*="span"], - select[class*="span"], - textarea[class*="span"], - .uneditable-input { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .input-prepend input, - .input-append input, - .input-prepend input[class*="span"], - .input-append input[class*="span"] { - display: inline-block; - width: auto; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 0; - } - .modal { - position: fixed; - top: 20px; - left: 20px; - right: 20px; - width: auto; - margin: 0; - } - .modal.fade { - top: -100px; - } - .modal.fade.in { - top: 20px; - } -} -@media (max-width: 480px) { - .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); - } - .page-header h1 small { - display: block; - line-height: 20px; - } - input[type="checkbox"], - input[type="radio"] { - border: 1px solid #ccc; - } - .form-horizontal .control-label { - float: none; - width: auto; - padding-top: 0; - text-align: left; - } - .form-horizontal .controls { - margin-left: 0; - } - .form-horizontal .control-list { - padding-top: 0; - } - .form-horizontal .form-actions { - padding-left: 10px; - padding-right: 10px; - } - .media .pull-left, - .media .pull-right { - float: none; - display: block; - margin-bottom: 10px; - } - .media-object { - margin-right: 0; - margin-left: 0; - } - .modal { - top: 10px; - left: 10px; - right: 10px; - } - .modal-header .close { - padding: 10px; - margin: -10px; - } - .carousel-caption { - position: static; - } -} -@media (max-width: 979px) { - body { - padding-top: 0; - } - .navbar-fixed-top, - .navbar-fixed-bottom { - position: static; - } - .navbar-fixed-top { - margin-bottom: 20px; - } - .navbar-fixed-bottom { - margin-top: 20px; - } - .navbar-fixed-top .navbar-inner, - .navbar-fixed-bottom .navbar-inner { - padding: 5px; - } - .navbar .container { - width: auto; - padding: 0; - } - .navbar .brand { - padding-left: 10px; - padding-right: 10px; - margin: 0 0 0 -5px; - } - .nav-collapse { - clear: both; - } - .nav-collapse .nav { - float: none; - margin: 0 0 10px; - } - .nav-collapse .nav > li { - float: none; - } - .nav-collapse .nav > li > a { - margin-bottom: 2px; - } - .nav-collapse .nav > .divider-vertical { - display: none; - } - .nav-collapse .nav .nav-header { - color: #777; - text-shadow: none; - } - .nav-collapse .nav > li > a, - .nav-collapse .dropdown-menu a { - padding: 9px 15px; - font-weight: bold; - color: #777; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - } - .nav-collapse .btn { - padding: 4px 10px 4px; - font-weight: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .nav-collapse .dropdown-menu li + li a { - margin-bottom: 2px; - } - .nav-collapse .nav > li > a:hover, - .nav-collapse .nav > li > a:focus, - .nav-collapse .dropdown-menu a:hover, - .nav-collapse .dropdown-menu a:focus { - background-color: #f2f2f2; - } - .navbar-inverse .nav-collapse .nav > li > a, - .navbar-inverse .nav-collapse .dropdown-menu a { - color: #999; - } - .navbar-inverse .nav-collapse .nav > li > a:hover, - .navbar-inverse .nav-collapse .nav > li > a:focus, - .navbar-inverse .nav-collapse .dropdown-menu a:hover, - .navbar-inverse .nav-collapse .dropdown-menu a:focus { - background-color: #111111; - } - .nav-collapse.in .btn-group { - margin-top: 5px; - padding: 0; - } - .nav-collapse .dropdown-menu { - position: static; - top: auto; - left: auto; - float: none; - display: none; - max-width: none; - margin: 0 15px; - padding: 0; - background-color: transparent; - border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - } - .nav-collapse .open > .dropdown-menu { - display: block; - } - .nav-collapse .dropdown-menu:before, - .nav-collapse .dropdown-menu:after { - display: none; - } - .nav-collapse .dropdown-menu .divider { - display: none; - } - .nav-collapse .nav > li > .dropdown-menu:before, - .nav-collapse .nav > li > .dropdown-menu:after { - display: none; - } - .nav-collapse .navbar-form, - .nav-collapse .navbar-search { - float: none; - padding: 10px 15px; - margin: 10px 0; - border-top: 1px solid #f2f2f2; - border-bottom: 1px solid #f2f2f2; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - } - .navbar-inverse .nav-collapse .navbar-form, - .navbar-inverse .nav-collapse .navbar-search { - border-top-color: #111111; - border-bottom-color: #111111; - } - .navbar .nav-collapse .nav.pull-right { - float: none; - margin-left: 0; - } - .nav-collapse, - .nav-collapse.collapse { - overflow: hidden; - height: 0; - } - .navbar .btn-navbar { - display: block; - } - .navbar-static .navbar-inner { - padding-left: 10px; - padding-right: 10px; - } -} -@media (min-width: 979px + 1) { - .nav-collapse.collapse { - height: auto !important; - overflow: visible !important; - } -} -.break-word { - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.tag { - display: inline-block; - margin-bottom: 4px; - color: #111; - background-color: #f6f6f6; - padding: 1px 10px; - border: 1px solid #dddddd; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} -a.tag:hover { - text-decoration: none; - color: #fff; - background-color: #ec66ab; - border: 1px solid #e73892; - -webkit-box-shadow: inset 0 1px 0 #f293c4; - -moz-box-shadow: inset 0 1px 0 #f293c4; - box-shadow: inset 0 1px 0 #f293c4; -} -.pill { - display: inline-block; - background-color: #6f8890; - color: #FFF; - padding: 2px 10px 1px 10px; - margin-right: 5px; - font-weight: normal; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.pill a { - color: #FFF; -} -.pill a.remove { - font-size: 11px; -} -.unstyled { - margin: 0; - list-style: none; -} -.simple-item { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-item:last-of-type { - border-bottom: 0; -} -.simple-list { - *zoom: 1; - margin: 0; - list-style: none; -} -.simple-list:before, -.simple-list:after { - display: table; - content: ""; - line-height: 0; -} -.simple-list:after { - clear: both; -} -.simple-list > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-list > li:last-of-type { - border-bottom: 0; -} -.simple-list .ckan-icon { - position: relative; - top: 0px; -} -.module-narrow .simple-list > li { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.listing li { - text-align: right; - margin-bottom: 5px; -} -.listing .key { - clear: right; - font-weight: bold; -} -.js .tab-content { - display: none; -} -.js .tab-content.active { - display: block; -} -.box { - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); -} -.module { - margin: 20px 0; -} -.module-heading { - *zoom: 1; - margin: 0; - padding: 7px 25px; - font-size: 14px; - line-height: 1.3; - background-color: #f6f6f6; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} -.module-heading:before, -.module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.module-heading:after { - clear: both; -} -.module-content { - padding: 0 25px; - margin: 20px 0; -} -@media (min-width: 768px) { - .span9 div.module-content { - padding-left: 10px; - } -} -.module-content:first-child { - margin-top: 0; - padding-top: 20px; -} -.module-content:last-child { - margin-bottom: 0; - padding-bottom: 20px; -} -.module-content > :last-child { - margin-bottom: 0; -} -.module:first-child .module-heading { - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; - border-top-width: 0; -} -.module:last-child { - margin-bottom: 20px; -} -.module-footer { - padding: 7px 25px 7px; - margin: 0; - border-top: 1px dotted #ddd; -} -.module .read-more { - font-weight: bold; - color: #000; -} -.module-content .pagination { - margin-left: -25px; - margin-right: -25px; - margin-bottom: -20px; -} -.module .pagination > ul { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border: 0; -} -.module .pagination li a { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - padding-top: 7px; - padding-bottom: 7px; -} -.module .pagination li:first-child a, -.module .pagination li:last-child a { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.module-content-shallow { - padding: 0; - margin-top: 10px; - padding-bottom: 10px; -} -.module h1 { - margin-bottom: 20px; -} -.module-shallow .module-content { - padding: 10px; - margin: 0; -} -.module-shallow .module-tags { - margin-top: 0; - margin-bottom: 0; -} -.module-shallow .module-content:first-child { - padding-top: 10px; -} -.module-shallow .module-content:last-child { - padding-bottom: 10px; -} -.module-narrow .module-heading, -.module-narrow .module-content, -.module-narrow .module-footer { - padding-left: 15px; - padding-right: 15px; -} -.module-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.module-grid:before, -.module-grid:after { - display: table; - content: ""; - line-height: 0; -} -.module-grid:after { - clear: both; -} -.module-item { - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - float: left; - margin-left: 20px; - width: 460px; - padding-top: 10px; - padding-bottom: 10px; - padding-right: 50px; - overflow: hidden; - position: relative; -} -.module-item span.count { - color: #999; -} -.module-item .media-image { - margin-bottom: 5px; -} -.module-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.module-item:hover { - z-index: 1; -} -.module-item:hover .media-edit { - opacity: 1; -} -.module-item.first { - clear: left; -} -.group .content img { - margin: 0 -5px 5px; - max-width: initial; -} -.group .content h3 { - font-size: 14px; - line-height: 1.3; -} -.group-listing { - margin-left: -20px; -} -.ckanext-datapreview { - position: relative; - clear: both; - padding-top: 15px; - margin-top: 0; -} -.ckanext-datapreview > iframe { - min-height: 650px; -} -.ckanext-datapreview > img { - max-height: 500px; - max-width: 100%; - overflow: hidden; -} -.package-info h4 { - margin-bottom: 10px; -} -.module-resource { - background-color: #fff; - border-bottom: 1px solid #ddd; - margin-top: 0; - margin-bottom: 0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.module-resource .actions { - position: relative; - float: right; - top: -10px; - right: -15px; -} -.module .module-tags { - padding-bottom: 8px; -} -.secondary .module:first-child, -.primary .module:first-child { - margin-top: 0; -} -.no-nav .module:last-child { - margin-top: 0; -} -.module-image { - float: left; - width: 50px; - height: 50px; - line-height: 50px; - text-align: center; - margin-right: 15px; -} -.module-image img { - max-width: 50px; - max-height: 50px; - vertical-align: middle; -} -.banner { - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transform-origin: center center; - -moz-transform-origin: center center; - -ms-transform-origin: center center; - -o-transform-origin: center center; - transform-origin: center center; - position: absolute; - top: 15px; - right: -35px; - width: 80px; - color: #fff; - background-color: #E73892; - padding: 1px 20px; - font-size: 11px; - text-align: center; - text-transform: uppercase; -} -.media-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.media-grid:before, -.media-grid:after { - display: table; - content: ""; - line-height: 0; -} -.media-grid:after { - clear: both; -} -@media (min-width: 768px) { - .media-grid { - margin-left: -27px; - } - .module-content .wide .media-grid { - margin-left: -25px; - } -} -.media-item { - position: relative; - float: left; - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-item span.count { - color: #999; -} -.media-item .media-image { - margin-bottom: 5px; -} -.media-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.media-item:hover { - z-index: 1; -} -.media-item:hover .media-edit { - opacity: 1; -} -.media-view { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid #ddd; - overflow: hidden; - -webkit-transition: all 0.2s ease-in; - -moz-transition: all 0.2s ease-in; - -o-transition: all 0.2s ease-in; - transition: all 0.2s ease-in; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-view:hover, -.media-view.hovered { - border-color: #E73892; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); -} -.media-view:hover .banner, -.media-view.hovered .banner { - background-color: #E73892; -} -.media-view span { - display: none; -} -.media-view .banner { - display: block; - background-color: #b7b7b7; - -webkit-transition: background-color 0.2s ease-in; - -moz-transition: background-color 0.2s ease-in; - -o-transition: background-color 0.2s ease-in; - transition: background-color 0.2s ease-in; -} -.media-image { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.media-heading { - font-size: 18px; - line-height: 1.3; - margin: 5px 0; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.media-overlay { - position: relative; - min-height: 35px; -} -.media-overlay .media-heading { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 12px 10px; - margin: 0; - background-color: #000; - background-color: rgba(0, 0, 0, 0.8); - font-size: 13px; - color: #fff; - z-index: 1; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.media-overlay .media-image { - float: none; - display: block; - margin-right: 0; -} -.media-item.is-expander .truncator-link { - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; - position: absolute; - z-index: 10; - left: 15px; - bottom: 15px; - opacity: 0; -} -.media-item.is-expander:hover { - padding-bottom: 35px; -} -.media-item.is-expander:hover .truncator-link { - opacity: 1; -} -.wide .media-item { - width: 186px; -} -.nav-simple, -.nav-aside { - *zoom: 1; - margin: 0; - list-style: none; - padding-bottom: 0; -} -.nav-simple:before, -.nav-aside:before, -.nav-simple:after, -.nav-aside:after { - display: table; - content: ""; - line-height: 0; -} -.nav-simple:after, -.nav-aside:after { - clear: both; -} -.nav-simple > li, -.nav-aside > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.nav-simple > li:last-of-type, -.nav-aside > li:last-of-type { - border-bottom: 0; -} -.nav-simple .ckan-icon, -.nav-aside .ckan-icon { - position: relative; - top: 0px; -} -.nav-aside { - border-top: 1px dotted #DDD; - border-bottom: 1px dotted #DDD; - margin-bottom: 15px; -} -.nav-item > a, -.nav-aside li a { - color: #333; - font-size: 14px; - line-height: 20px; - margin: -7px -25px; - padding: 7px 25px; -} -.nav-item.active, -.nav-aside li.active { - background-color: #f6f6f6; -} -.nav-item.active > a, -.nav-aside li.active a { - position: relative; - color: #FFF; - background-color: #8CA0A6; -} -.nav-item.active > a:hover, -.nav-aside li.active a:hover { - color: #FFF; - background-color: #8CA0A6; -} -@media (min-width: 768px) { - .nav-item.active > a:before, - .nav-aside li.active a:before { - content: ' '; - position: absolute; - top: 0; - right: -6px; - width: 6px; - height: 34px; - background-image: url("../../../base/images/nav-active.png?1"); - } -} -.nav-item.active > a span, -.nav-aside li.active a span { - white-space: nowrap; - overflow: hidden; - display: block; -} -.module-narrow .nav-item > a, -.module-narrow .nav-aside li a { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.module-narrow .nav-item.image, -.module-narrow .nav-aside li.image { - position: relative; -} -.module-narrow .nav-item.image > a, -.module-narrow .nav-aside li.image a { - padding-left: 42px; - padding-right: 42px; -} -.module-narrow .nav-item.image > img, -.module-narrow .nav-aside li.image img { - position: absolute; - top: 50%; - left: 15px; - width: 20px; - height: 20px; - margin-top: -10px; - z-index: 2; -} -.nav-facet .nav-item > a:hover:after, -.nav-facet .nav-item.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-facet .nav-item > a:hover:after { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.nav-facet .nav-item.active > a:after { - width: 17px; - height: 17px; - background-position: 0px -16px; - right: 3px; -} -.user-list { - margin: 0; - list-style: none; -} -.user-list li { - margin: 0 0 10px 0; -} -.user-list .gravatar { - vertical-align: -4px; - margin-right: 3px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.nav-facet-tertiary { - margin: 10px 0; -} -.nav-facet-tertiary .module-heading { - margin-bottom: 5px; - padding: 8px 12px; - border-bottom-width: 0; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-facet-tertiary .module-heading i { - display: none; -} -.nav-facet-tertiary .module-footer { - padding: 8px 12px; - border-top-width: 0; -} -.nav-facet-tertiary .module-footer a { - font-weight: normal; - color: #8C8C8C; -} -.nav-facet-tertiary .nav { - margin-bottom: 0; -} -.nav-facet-tertiary .module-content.empty { - padding: 8px 12px; - margin-top: 0; -} -.nav-facet-tertiary .nav li.active { - position: relative; -} -.nav-facet-tertiary .nav li.active > a:hover:after, -.nav-facet-tertiary .nav li.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - width: 17px; - height: 17px; - background-position: 0px -16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-simple > .nav-btn { - padding-left: 0; - padding-right: 0; - text-align: center; -} -.nav-simple > .nav-btn .btn { - display: inline-block; -} -.js .js-hide { - display: none; -} -.js .js-hide.active { - display: block; -} -.btn, -label { - font-weight: bold; -} -.btn-rounded { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - padding-left: 15px; - padding-right: 15px; -} -label { - cursor: pointer; - font-size: 14px; -} -label:after { - content: ":"; -} -label.radio:after, -label.checkbox:after { - content: ""; -} -input[type=radio], -input[type=checkbox] { - position: relative; - top: 7px; - padding: 0; - margin: 0; -} -input[type=radio].checkbox-onown, -input[type=checkbox].checkbox-onown { - top: 0; -} -select { - padding: 4px; -} -textarea { - max-width: 100%; -} -.control-group .btn { - position: relative; - top: -2px; -} -.control-full input, -.control-full select, -.control-full textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - height: auto; - width: 100%; -} -.control-medium input, -.control-medium select, -.control-medium textarea { - width: 320px; -} -@media (max-width: 768px) { - .control-medium input, - .control-medium select, - .control-medium textarea { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-large input, -.control-large .control-label { - font-size: 17.5px; - line-height: 30px; -} -.control-large input { - height: 41px; -} -.control-required { - color: #c6898b; -} -.form-actions .control-required-message { - float: left; - margin-left: 20px; - margin-bottom: 0; - line-height: 30px; -} -.form-actions .control-required-message:first-child { - margin-left: 0; -} -.form-actions { - background: none; - margin-left: -25px; - margin-right: -25px; - margin-bottom: 0; - padding-bottom: 0; -} -@media (min-width: 768px) { - .form-actions { - text-align: right; - } -} -.form-actions .action-info { - line-height: 2; - text-align: left; - color: #707070; - margin: 0; -} -@media (min-width: 768px) { - .form-actions .action-info { - float: left; - width: 50%; - } -} -.form-actions .action-info.small { - font-size: 11px; - line-height: 1.2; -} -@media (max-width: 768px) { - .form-actions .btn { - margin-top: 5px; - } -} -.form-horizontal .control-label { - width: 120px; -} -@media (min-width: 768px) { - .form-horizontal .controls { - margin-left: 130px; - } -} -.form-horizontal .info-block { - position: relative; - display: block; - font-size: 11px; - color: #aaa; - line-height: 1.3; - margin-top: 6px; -} -.form-horizontal .info-help { - padding: 6px 0; -} -.form-horizontal .info-help:before { - display: none; -} -.form-horizontal .info-help-tight { - margin-top: -10px; -} -@media (min-width: 980px) { - .form-horizontal .info-block { - padding: 6px 0 6px 0; - } - .form-horizontal .info-inline { - float: right; - width: 265px; - margin-top: 0; - padding-bottom: 0; - } -} -.form-horizontal .control-medium .info-block.info-inline { - width: 165px; -} -.form-horizontal .info-block:before { - font-size: 2.2em; - position: absolute; - left: 0; - top: 2px; -} -.form-horizontal .info-inline:before { - top: 8px; -} -.info-block .icon-large, -.info-inline .icon-large { - float: left; - font-size: 22px; - margin-right: 15px; -} -.form-horizontal .info-block a { - color: #aaa; - text-decoration: underline; -} -.form-horizontal .form-actions { - padding-left: 25px; - padding-right: 25px; -} -.form-inline input { - padding-bottom: 9px; -} -.form-inline select { - margin-top: 0; -} -.form-inline .btn { - margin-left: 5px; -} -.form-narrow label { - margin-bottom: 0; -} -.form-narrow select { - width: 100%; -} -.form-narrow .form-actions { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px 0; -} -.form-select label { - margin-right: 5px; -} -.simple-input label, -.simple-input button { - display: none; -} -.simple-input .field { - position: relative; -} -.simple-input .field-bordered { - border-bottom: 1px dotted #ddd; -} -.simple-input .field input { - width: 100%; - height: auto; - margin: 0 -7px; - padding: 7px 5px; -} -.simple-input .field .btn-search { - position: absolute; - display: block; - height: 17px; - width: 17px; - padding: 0; - top: 50%; - right: 0; - margin-top: -10px; - background-color: transparent; - border: none; - color: #999; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.simple-input .field .btn-search:hover { - color: #000; -} -.editor textarea { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - border-bottom: none; -} -.editor .editor-info-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - float: none; - padding: 4px 10px; - background: #ebebeb; - width: auto; - border: 1px solid #ccc; - border-top: none; - font-size: 11px; - color: #282828; -} -.editor .editor-info-block a { - color: #E73892; - text-decoration: none; -} -@media (max-width: 768px) { - [data-module="custom-fields"] .input-prepend .add-on { - display: block; - } -} -@media (max-width: 480px) { - [data-module="custom-fields"] .input-prepend { - width: 100%; - } - [data-module="custom-fields"] .control-custom input { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-custom { - font-size: 0; -} -.control-custom label { - margin-bottom: 0; -} -.control-custom input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - width: 140px; -} -.control-custom input:last-of-type { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.control-custom .checkbox { - display: inline-block; - margin-left: 5px; -} -.control-custom .checkbox input { - width: auto; -} -.control-custom.disabled label, -.control-custom.disabled input { - color: #aaa; - text-decoration: line-through; - text-shadow: none; -} -.control-custom.disabled input { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - background-color: #f3f3f3; -} -.control-custom.disabled .checkbox { - color: #444; - text-decoration: none; -} -.control-custom .checkbox.btn { - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - position: relative; - top: 0; - left: 5px; - height: 1px; - width: 9px; - padding: 3px 8px; - line-height: 18px; -} -.control-custom .checkbox.btn span { - display: none; - width: 30px; -} -.control-custom .checkbox.btn:before { - position: relative; - top: 1px; - left: -1px; - color: #fff; -} -.control-custom .checkbox.btn input { - display: none; -} -.control-custom.disabled .checkbox.btn { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ea53a1; - background-image: -moz-linear-gradient(top, #ec66ab, #E73892); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ec66ab), to(#E73892)); - background-image: -webkit-linear-gradient(top, #ec66ab, #E73892); - background-image: -o-linear-gradient(top, #ec66ab, #E73892); - background-image: linear-gradient(to bottom, #ec66ab, #E73892); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec66ab', endColorstr='#ffe73892', GradientType=0); - border-color: #E73892 #E73892 #bc176c; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #E73892; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.control-custom.disabled .checkbox.btn:hover, -.control-custom.disabled .checkbox.btn:focus, -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active, -.control-custom.disabled .checkbox.btn.disabled, -.control-custom.disabled .checkbox.btn[disabled] { - color: #fff; - background-color: #E73892; - *background-color: #e42186; -} -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active { - background-color: #d31979 \9; -} -.control-custom.disabled .checkbox.btn .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.alert-danger a, -.alert-error a { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea, -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - border-color: #c6898b; -} -.error-inline { - color: #b55457; -} -.error-block, -.error-inline { - font-size: 12px; -} -.error-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - padding: 6px 8px 3px; - background: #c6898b; - margin: -3px 0 0; - color: #fff; - width: 208px; -} -.control-medium .error-block { - width: 318px; -} -.control-full .error-block { - width: auto; -} -.control-group.error .input-prepend .error-block, -.control-custom.error .error-block { - width: auto; -} -.control-custom.error .error-block { - width: 401px; -} -.control-select.error .error-block { - width: 196px; -} -.stages { - margin: 0; - list-style: none; - *zoom: 1; - color: #aeaeae; - counter-reset: stage; - margin: -20px -25px 20px; - overflow: hidden; -} -.stages:before, -.stages:after { - display: table; - content: ""; - line-height: 0; -} -.stages:after { - clear: both; -} -.stages li { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - line-height: 27px; - counter-increment: stage; - width: 50%; - background-color: #EDEDED; - float: left; - padding: 10px 20px; - position: relative; - z-index: 0; -} -.stages li:before { - -webkit-border-radius: 14px; - -moz-border-radius: 14px; - border-radius: 14px; - content: counter(stage); - display: inline-block; - width: 27px; - height: 27px; - margin-right: 5px; - font-weight: bold; - text-align: center; - color: #fff; - background-color: #aeaeae; - z-index: 1; -} -.stages li:after { - left: 0; - border: solid rgba(237, 237, 237, 0); - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-top-color: #EDEDED; - border-bottom-color: #EDEDED; - border-width: 29px; - top: 50%; - margin-top: -29px; - margin-left: -30px; -} -.stages li.last { - position: relative; - right: -1px; -} -.stages li.last, -.stages li.last .highlight { - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.stages li.first:after { - content: none; - border: none; -} -.stages li.active:after { - border-color: rgba(140, 198, 138, 0); - border-top-color: #8cc68a; - border-bottom-color: #8cc68a; -} -.stages li.complete:after { - border-color: rgba(197, 226, 196, 0); - border-top-color: #c5e2c4; - border-bottom-color: #c5e2c4; -} -.stages.stage-3 li.complete:first-child:after { - content: none; -} -.stages li.active, -.stages li.complete { - background: none; -} -.stages li.active:before { - color: #8cc68a; - background: #fff; -} -.stages li.complete:before { - color: #c5e2c4; - background: #eef6ed; -} -.stages li .highlight { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - padding: 10px 52px; - border: none; - text-align: left; - text-decoration: none; - line-height: 27px; - z-index: -1; -} -@media (max-width: 768px) { - .stages li .highlight { - text-indent: -9999px; - } -} -.stages li.active .highlight { - color: #fff; - background: #8cc68a; -} -.stages li.complete .highlight { - color: #eef6ed; - background: #c5e2c4; -} -.alert > :last-child { - margin-bottom: 0; -} -.slug-preview { - font-size: 14px; - line-height: 1.5; - margin-top: 5px; - margin-left: 10px; -} -.slug-preview-value { - background-color: #faedcf; - margin-right: 3px; -} -.resource-upload-field { - position: relative; - overflow: hidden; - display: inline-block; - vertical-align: bottom; -} -.resource-upload-field label { - z-index: 0; -} -.resource-upload-field input { - opacity: 0; - filter: alpha(opacity=0); - position: absolute; - top: 0; - right: 0; - z-index: 1; - margin: 0; - border: solid transparent; - border-width: 100px 0 0 200px; - cursor: pointer; - direction: ltr; - -moz-transform: translate(-300px, 0) scale(4); -} -.resource-upload-field.loading { - display: inline-block; - background: url("../../../base/images/loading-spinner.gif") no-repeat center right; - padding-right: 5px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - font-size: 14px; -} -.select2-container-multi .select2-choices .select2-search-field input { - height: 29px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - padding-left: 10px; -} -.select2-container { - margin-top: 1px; -} -.select2-container-multi { - margin-top: 0; -} -.select2-container-multi .select2-choices .select2-search-choice { - padding: 5px 8px 5px 22px; -} -.select2-container-multi.select2-container .select2-choices { - padding-top: 3px; - padding-bottom: 3px; -} -.select2-search-choice-close, -.select2-container-multi .select2-search-choice-close { - top: 6px; - left: 5px; -} -.select2-container-multi .select2-choices { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; - background-color: #fff; - border: 1px solid #ccc; -} -.select2-container-active .select2-choices, -.select2-container-multi.select2-container-active .select2-choices { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -.select2-container-multi .select2-drop { - margin-top: -2px; -} -.select2-container .select2-results li { - line-height: 18px; - padding-top: 4px; - padding-bottom: 4px; -} -.control-full .select2-container { - max-width: 100%; -} -.control-group.error .select2-container input:focus, -.control-group.error .select2-container select:focus, -.control-group.error .select2-container textarea:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.js .image-upload #field-image-url { - padding-right: 90px; -} -.js .image-upload #field-image-upload { - cursor: pointer; - position: absolute; - z-index: 1; - opacity: 0; - filter: alpha(opacity=0); -} -.js .image-upload .controls { - position: relative; -} -.js .image-upload .btn { - position: relative; - top: 0; - margin-right: 10px; -} -.js .image-upload .btn.hover { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.js .image-upload .btn-remove-url { - position: absolute; - margin-right: 0; - top: 4px; - right: 5px; - padding: 0 12px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.js .image-upload .btn-remove-url .icon-remove { - margin-right: 0; -} -.add-member-form .control-label { - width: 100%; - text-align: left; -} -.add-member-form .controls { - margin-left: auto; -} -.add-member-or { - float: left; - margin-top: 75px; - width: 7%; - text-align: center; - text-transform: uppercase; - color: #999; - font-weight: bold; -} -.add-member-form .row-fluid .control-group { - float: left; - width: 45%; -} -.add-member-form .row-fluid .select2-container, -.add-member-form .row-fluid input { - width: 100% !important; -} -#recaptcha_table { - table-layout: inherit; - line-height: 1; -} -.dataset-item { - border-bottom: 1px dotted #ddd; - padding-bottom: 20px; - margin-bottom: 20px; -} -@media (max-width: 768px) { - .dataset-item { - word-wrap: break-word; - } -} -.dataset-item:last-of-type { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} -.dataset-heading { - font-size: 16px; - margin-top: 0; - margin-bottom: 8px; - line-height: 1.3; -} -.dataset-heading a { - color: #333; -} -.dataset-heading .label { - position: relative; - top: -1px; -} -.dataset-private { - margin-right: 10px; - text-transform: uppercase; -} -.dataset-private .icon-lock { - width: 9px; -} -.dataset-private.pull-right { - margin-right: 0; -} -.dataset-resources { - margin-top: 8px; -} -.dataset-resources li { - display: inline; -} -.dataset-resources li a { - background-color: #aaa; -} -.dataset-heading .popular { - top: 0; -} -.resource-list { - margin: 0; - list-style: none; - margin: -10px -10px 10px -10px; -} -.resource-item { - position: relative; - padding: 10px 10px 10px 60px; - margin-bottom: 0px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.resource-item:hover { - background-color: #eee; -} -.resource-item .heading { - color: #000; - font-size: 14px; - font-weight: bold; -} -.resource-item .format-label { - position: absolute; - top: 10px; - left: 10px; -} -.resource-item .description { - font-size: 12px; - margin-bottom: 0; - min-height: 12px; -} -.resource-item .btn-group { - position: absolute; - top: 14px; - right: 10px; -} -@media (max-width: 768px) { - .resource-item .btn-group { - display: none; - } -} -.resource-list.reordering .resource-item { - border: 1px solid #ddd; - margin-bottom: 10px; - cursor: move; -} -.resource-list.reordering .resource-item .handle { - display: block; - position: absolute; - color: #888; - left: -31px; - top: 50%; - margin-top: -15px; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - border: 1px solid #ddd; - border-width: 1px 0 1px 1px; - background-color: #fff; - -webkit-border-radius: 20px 0 0 20px; - -moz-border-radius: 20px 0 0 20px; - border-radius: 20px 0 0 20px; -} -.resource-list.reordering .resource-item .handle:hover { - text-decoration: none; -} -.resource-list.reordering .resource-item:hover .handle { - background-color: #eee; -} -.resource-list.reordering .resource-item.ui-sortable-helper { - background-color: #eee; - border: 1px solid #E73892; -} -.resource-list.reordering .resource-item.ui-sortable-helper .handle { - background-color: #eee; - border-color: #E73892; - color: #333; -} -.resource-item .handle { - display: none; -} -.tag-list { - margin: 0; - list-style: none; - padding: 10px 10px 5px 10px; -} -.tag-list li { - display: inline-block; - margin-right: 5px; -} -.tag-list li:last-child { - margin-right: 0; -} -.additional-info td, -.additional-info th { - width: 50%; -} -.label[data-format=html], -.label[data-format*=html] { - background-color: #55a1ce; -} -.label[data-format=json], -.label[data-format*=json] { - background-color: #ef7100; -} -.label[data-format=xml], -.label[data-format*=xml] { - background-color: #ef7100; -} -.label[data-format=text], -.label[data-format*=text] { - background-color: #74cbec; -} -.label[data-format=csv], -.label[data-format*=csv] { - background-color: #dfb100; -} -.label[data-format=xls], -.label[data-format*=xls] { - background-color: #2db55d; -} -.label[data-format=zip], -.label[data-format*=zip] { - background-color: #686868; -} -.label[data-format=api], -.label[data-format*=api] { - background-color: #ec96be; -} -.label[data-format=pdf], -.label[data-format*=pdf] { - background-color: #e0051e; -} -.label[data-format=rdf], -.label[data-format*=rdf], -.label[data-format*=nquad], -.label[data-format*=ntriples], -.label[data-format*=turtle] { - background-color: #0b4498; -} -.view-list { - margin: 0; - list-style: none; -} -.view-list li { - position: relative; - margin-bottom: 10px; -} -.view-list li a { - display: block; - min-height: 50px; - padding: 10px; - border: 1px solid #ddd; - overflow: hidden; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon { - float: left; - width: 50px; - height: 50px; - overflow: hidden; - margin-right: 10px; - color: #444; - background-color: #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon i { - display: block; - text-align: center; - font-size: 28px; - line-height: 50px; -} -.view-list li a h3 { - color: #000; - font-weight: bold; - font-size: 16px; - margin: 0 0 3px 0; -} -.view-list li a p { - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: #444; -} -.view-list li a.active, -.view-list li a:hover { - text-decoration: none; - border-color: #E73892; -} -.view-list li a.active .icon, -.view-list li a:hover .icon { - background-color: #E73892; - color: #f6f6f6; -} -.view-list li .arrow { - position: absolute; - display: none; - border: 8px solid transparent; - border-top-color: #E73892; - left: 50%; - bottom: -15px; - margin-left: -4px; -} -.view-list li.active a { - text-decoration: none; - border-color: #E73892; -} -.view-list li.active a .icon { - background-color: #E73892; - color: #f6f6f6; -} -.view-list li.active .arrow { - display: block; -} -.view-list.stacked { - overflow-y: hidden; - overflow-x: auto; - height: 100px; - white-space: nowrap; -} -.view-list.stacked li { - display: inline-block; - width: 250px; - margin-right: 10px; -} -.view-list.stacked li:last-child { - margin-right: 0; -} -.view-list.stacked::-webkit-scrollbar { - width: 7px; - height: 7px; -} -.view-list.stacked::-webkit-scrollbar-track { - border-radius: 10px; - background-color: #f6f6f6; -} -.view-list.stacked::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #c3c3c3; -} -.view-list.stacked::-webkit-scrollbar-thumb:hover { - background-color: #E73892; -} -.resource-view { - margin-top: 20px; -} -.search-form { - margin-bottom: 20px; - padding-bottom: 25px; - border-bottom: 1px dotted #ddd; -} -.search-form .search-input { - position: relative; - margin-bottom: 20px; -} -.search-form .search-input input { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - width: 100%; - height: auto; -} -.search-form .search-input button { - cursor: pointer; - display: block; - position: absolute; - top: 50%; - margin-top: 1px; - right: 10px; - height: 20px; - padding: 0; - border: none; - background: transparent; -} -.search-form .search-input button span { - display: none; -} -.search-form .search-input button i { - color: #ccc; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.search-form .search-input button:hover i { - color: #000; -} -.search-form .search-input.search-giant input { - font-size: 16px; - padding: 15px; -} -.search-form .search-input.search-giant button { - margin-top: -4px; - right: 15px; - height: 30px; -} -.search-form .search-input.search-giant button i { - font-size: 28px; - width: 28px; -} -.search-form .control-order-by label, -.search-form .control-order-by select { - display: inline; -} -.search-form .control-order-by select { - width: 160px; - margin: 0; -} -.search-form h2 { - font-size: 24px; - line-height: 1.3; - color: #000; - margin-bottom: 0; - margin-top: 20px; -} -.search-form .filter-list { - color: #444; - line-height: 32px; - margin: 10px 0 0 0; -} -.search-form .filter-list .pill { - line-height: 21px; -} -.search-form .filter-list .extra { - margin-top: 10px; - font-size: 18px; - font-weight: normal; - color: #000; -} -.search-form.no-bottom-border { - border-bottom-width: 0; - margin-bottom: 0; -} -.tertiary .control-order-by { - float: none; - margin: 0; -} -.tertiary .control-order-by label { - display: block; - margin-bottom: 5px; - font-weight: normal; - font-size: 12px; -} -.tertiary .control-order-by select { - display: block; - font-size: 12px; - width: 100%; -} -.tertiary .search-input { - margin-bottom: 10px; -} -@media (min-width: 980px) { - .search-form .control-order-by { - float: right; - margin-left: 15px; - } - .tertiary .search-form .control-order-by { - float: none; - margin: 0; - } -} -.group .media-vertical .image { - margin: 0 -5px 5px; -} -.group-list:nth-child(odd) { - clear: left; -} -.group-list .module-heading { - padding-top: 15px; - padding-bottom: 15px; -} -.group-list .dataset-content { - min-height: 54px; -} -.group-list .module-heading h3 { - margin-bottom: 2px; -} -.group-list .module-heading h3 a { - color: #333; -} -.group-list .module-heading .media-image { - overflow: hidden; - max-height: 60px; -} -.group-list .module-heading .media-image img { - max-width: 85px; -} -.toolbar { - *zoom: 1; - position: relative; - margin-bottom: 10px; - padding: 5px 0; -} -.toolbar:before, -.toolbar:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar:after { - clear: both; -} -.page_primary_action { - margin-bottom: 20px; -} -.toolbar .breadcrumb { - *zoom: 1; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - position: relative; - float: left; - margin: 0; - padding: 0; - border: none; - background: none; - font-size: 20px; - line-height: 1.3; -} -.toolbar .breadcrumb:before, -.toolbar .breadcrumb:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar .breadcrumb:after { - clear: both; -} -.toolbar .breadcrumb li:after { - content: " / "; -} -.toolbar .breadcrumb li.active:after { - content: ""; -} -.toolbar .breadcrumb li:last-of-type:after { - content: ""; -} -.toolbar .home a { - text-decoration: none; -} -.toolbar .home span { - display: none; -} -.toolbar .breadcrumb a { - color: #505050; -} -@media (max-width: 767px) { - .toolbar .breadcrumb { - color: #fff; - text-shadow: none; - } - .toolbar .breadcrumb .home { - display: none; - } - .toolbar .breadcrumb a { - color: #fff; - text-shadow: none; - } -} -.toolbar .breadcrumb .active a, -.toolbar .breadcrumb a.active { - font-weight: bold; -} -.actions { - margin: 0; - list-style: none; - position: absolute; - top: 10px; - right: 10px; - z-index: 1; -} -.actions li { - display: inline-block; - margin-right: 5px; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.actions li:last-of-type { - margin-right: 0; -} -.hide-heading { - display: none; -} -.page-header { - *zoom: 1; - border-bottom: 1px solid #ddd; - background-color: #f6f6f6; - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.page-header:before, -.page-header:after { - display: table; - content: ""; - line-height: 0; -} -.page-header:after { - clear: both; -} -.page-header .nav-tabs { - float: left; - margin-bottom: -1px; -} -.page-header .nav-tabs li.active a, -.page-header .nav-tabs a:hover { - background-color: #fff; -} -.page-header .content_action { - float: right; - margin-top: -5px; - margin-right: -7px; -} -.no-nav .page-header { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.nav-tabs-plain { - padding: 0 25px; -} -.nav-tabs-plain > .active > a, -.nav-tabs-plain > .active > a:hover { - background-color: #fff; -} -@media (min-width: 768px) { - .span9 .page-header { - margin-left: -17px; - } -} -@media (max-width: 768px) { - .page-header .nav-tabs { - margin: 5px 10px 10px -5px; - border: none; - } - .page-header .nav-tabs > li { - float: none; - } - .page-header .nav-tabs > li a { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .page-header .nav-tabs > .active > a, - .page-header .nav-tabs > .active > a:hover, - .page-header .nav-tabs > .active > a:focus { - border-bottom-color: #dddddd; - } -} -h1 { - font-size: 28px; -} -h2 { - font-size: 21px; -} -h3 { - font-size: 18px; -} -h4 { - font-size: 14px; -} -h1, -h2, -h3, -h4 { - line-height: 1.5; -} -h1 small, -h2 small, -h3 small, -h4 small { - font-size: 14px; -} -.prose h1, -.prose heading-1 h2, -.prose heading-2 { - margin-bottom: 15px; -} -.prose h3, -.prose heading-3 { - margin-bottom: 10px; -} -.table-chunky td, -.table-chunky th { - padding: 12px 15px; - font-size: 12px; -} -.table-chunky thead th, -.table-chunky thead td { - color: #fff; - background-color: #aaa; - padding-top: 10px; - padding-bottom: 10px; -} -.table-striped tbody tr:nth-child(odd) td, -.table-striped tbody tr:nth-child(odd) th { - background-color: transparent; -} -.table-striped tbody tr:nth-child(even) td, -.table-striped tbody tr:nth-child(even) th { - background-color: #f2f2f2; -} -.table-chunky.table-bordered { - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:first-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:first-child { - -webkit-border-top-left-radius: 2px; - -moz-border-radius-topleft: 2px; - border-top-left-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:last-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:last-child { - -webkit-border-top-right-radius: 2px; - -moz-border-radius-topright: 2px; - border-top-right-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:first-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:first-child { - -webkit-border-radius: 0 0 0 2px; - -moz-border-radius: 0 0 0 2px; - border-radius: 0 0 0 2px; - -webkit-border-bottom-left-radius: 2px; - -moz-border-radius-bottomleft: 2px; - border-bottom-left-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:last-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 2px; - -moz-border-radius-bottomright: 2px; - border-bottom-right-radius: 2px; -} -.ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.ckan-icon { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; -} -.ckan-icon-fb { - width: 16px; - height: 16px; - background-position: 0px 0; -} -.ckan-icon-gplus { - width: 16px; - height: 16px; - background-position: -16px 0; -} -.ckan-icon-twitter { - width: 16px; - height: 16px; - background-position: -32px 0; -} -.ckan-icon-email { - width: 16px; - height: 16px; - background-position: -48px 0; -} -.ckan-icon-share { - width: 16px; - height: 16px; - background-position: -64px 0; -} -.ckan-icon-feed { - width: 16px; - height: 16px; - background-position: -80px 0; -} -.ckan-icon-calendar { - width: 16px; - height: 16px; - background-position: -96px 0; -} -.ckan-icon-file { - width: 16px; - height: 16px; - background-position: -112px 0; -} -.ckan-icon-lock { - width: 16px; - height: 16px; - background-position: -128px 0; -} -.ckan-icon-link-file { - width: 16px; - height: 16px; - background-position: -144px 0; -} -.ckan-icon-link-plugin { - width: 16px; - height: 16px; - background-position: -160px 0; -} -.ckan-icon-upload-file { - width: 16px; - height: 16px; - background-position: -176px 0; -} -.ckan-icon-callout { - width: 16px; - height: 16px; - background-position: -192px 0; -} -.ckan-icon-circle-cross { - width: 17px; - height: 17px; - background-position: 0px -16px; -} -.ckan-icon-circle-add { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.ckan-icon-flame { - width: 17px; - height: 17px; - background-position: -34px -16px; -} -.ckan-icon-search { - width: 17px; - height: 17px; - background-position: -51px -16px; -} -.ckan-icon-large-lock { - width: 20px; - height: 20px; - background-position: 0px -33px; -} -.ckan-icon-photo { - width: 20px; - height: 20px; - background-position: -20px -33px; -} -.ckan-icon-add { - width: 20px; - height: 20px; - background-position: -40px -33px; -} -.ckan-icon-home { - width: 20px; - height: 20px; - background-position: -60px -33px; -} -.ckan-icon-rewind { - width: 20px; - height: 20px; - background-position: -80px -33px; -} -.ckan-icon-tools { - width: 20px; - height: 20px; - background-position: -100px -33px; -} -.ckan-icon-flag { - width: 20px; - height: 20px; - background-position: -120px -33px; -} -.ckan-icon-clipboard { - width: 20px; - height: 20px; - background-position: -140px -33px; -} -.ckan-icon-share { - width: 20px; - height: 20px; - background-position: -160px -33px; -} -.ckan-icon-info { - width: 20px; - height: 20px; - background-position: -180px -33px; -} -.ckan-icon-download { - width: 20px; - height: 20px; - background-position: -200px -33px; -} -.ckan-icon-star { - width: 20px; - height: 20px; - background-position: -220px -33px; -} -.ckan-icon-info-flat { - width: 20px; - height: 20px; - background-position: -240px -33px; -} -.ckan-icon-tag { - width: 20px; - height: 20px; - background-position: -260px -33px; -} -.ckan-icon-plus { - width: 20px; - height: 20px; - background-position: -280px -33px; - width: 16px; -} -.ckan-icon-head { - width: 20px; - height: 20px; - background-position: -300px -33px; -} -.ckan-icon-arrow-e { - width: 20px; - height: 20px; - background-position: -320px -33px; - width: 16px; -} -.ckan-icon-bookmark { - width: 25px; - height: 25px; - background-position: 0px -53px; -} -.format-label { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - text-indent: -900em; - background: url("../../../base/images/sprite-resource-icons.png") no-repeat 0 0; -} -.format-label { - width: 32px; - height: 35px; - background-position: 0px -62px; -} -.format-label[data-format=rdf], -.format-label[data-format*=rdf] { - width: 32px; - height: 35px; - background-position: -32px -62px; -} -.format-label[data-format=pdf], -.format-label[data-format*=pdf] { - width: 32px; - height: 35px; - background-position: -64px -62px; -} -.format-label[data-format=api], -.format-label[data-format*=api] { - width: 32px; - height: 35px; - background-position: -96px -62px; -} -.format-label[data-format=zip], -.format-label[data-format*=zip] { - width: 32px; - height: 35px; - background-position: -128px -62px; -} -.format-label[data-format=xls], -.format-label[data-format*=xls] { - width: 32px; - height: 35px; - background-position: -160px -62px; -} -.format-label[data-format=csv], -.format-label[data-format*=csv] { - width: 32px; - height: 35px; - background-position: -192px -62px; -} -.format-label[data-format=txt], -.format-label[data-format*=txt] { - width: 32px; - height: 35px; - background-position: -224px -62px; -} -.format-label[data-format=xml], -.format-label[data-format*=xml] { - width: 32px; - height: 35px; - background-position: -256px -62px; -} -.format-label[data-format=json], -.format-label[data-format*=json] { - width: 32px; - height: 35px; - background-position: -288px -62px; -} -.format-label[data-format=html], -.format-label[data-format*=html] { - width: 32px; - height: 35px; - background-position: -320px -62px; -} -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - text-align: right; - font-size: 14px; - line-height: 1; - width: 14px; -} -.btn [class^="icon-"], -.nav [class^="icon-"], -.module-heading [class^="icon-"], -.dropdown [class^="icon-"], -.btn [class*=" icon-"], -.nav [class*=" icon-"], -.module-heading [class*=" icon-"], -.dropdown [class*=" icon-"] { - margin-right: 4px; -} -.info-block [class^="icon-"], -.info-block [class*=" icon-"] { - float: left; - font-size: 28px; - width: 28px; - margin-right: 5px; - margin-top: 2px; -} -.breadcrumb .home .icon-home { - font-size: 24px; - width: 24px; - vertical-align: -1px; -} -.info-block-small [class^="icon-"], -.info-block-small [class*=" icon-"] { - font-size: 14px; - width: 14px; - margin-top: 1px; -} -.nav-tabs .fa:last-child, -.module-heading .fa:last-child, -.btn .fa:last-child { - margin-right: 3px; -} -.wrapper { - *zoom: 1; - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - position: relative; - background-color: #fff; - margin-bottom: 20px; - margin-left: 0; -} -.wrapper:before, -.wrapper:after { - display: table; - content: ""; - line-height: 0; -} -.wrapper:after { - clear: both; -} -@media (min-width: 768px) { - .wrapper { - background-image: url("../../../base/images/nav.png"); - background-repeat: repeat-y; - background-position: -54px 0px; - } -} -@media (min-width: 980px) { - .wrapper { - background-position: 0px 0px; - } -} -.wrapper.no-nav { - background-image: none; -} -[role=main], -.main { - position: relative; - padding-bottom: 20px; -} -@media (min-width: 768px) { - [role=main], - .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); - } -} -[role=main] { - min-height: 350px; -} -.main:after, -[role=main]:after { - bottom: 0; - border-top-width: 1px; -} -[role=main] .primary { - float: right; - margin-left: 0; -} -[role=main] .secondary { - margin-left: 0; -} -/* Filters modal */ -.no-text .text { - display: none; -} -.js body.filters-modal { - overflow: hidden; -} -.show-filters.btn, -.hide-filters { - display: none; -} -@media (max-width: 768px) { - .wrapper { - margin: 0 -20px; - border-width: 0; - -webkit-box-shadow: 0; - -moz-box-shadow: 0; - box-shadow: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - } - .js [role=main] .secondary .filters { - display: none; - position: fixed; - overflow: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 1; - padding: 10px; - background-color: #000000; - background-color: rgba(0, 0, 0, 0.5); - } - .js body.filters-modal .secondary .filters { - display: block; - } - .js [role=main] .secondary .filters > div { - background-color: #fff; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - overflow: hidden; - } - .js [role=main] .secondary .filters > div .module-footer { - display: none; - } - .js body.filters-modal .secondary .filters .hide-filters { - display: inline-block; - position: absolute; - top: 14px; - right: 17px; - opacity: 0.6; - } - .js body.filters-modal .secondary .filters .hide-filters i { - font-size: 18px; - } - .js .show-filters.btn { - display: inline-block; - } -} -.primary > :last-child, -.secondary > :last-child { - margin-bottom: 0; -} -.primary .primary { - float: left; - width: 467px; - margin-left: 0; - margin-bottom: 20px; -} -.primary .primary h1:first-child, -.primary .primary h2:first-child, -.primary .primary h3:first-child, -.primary .primary h4:first-child { - margin-top: 0; -} -.primary .tertiary { - float: left; - width: 180px; - margin-left: 18px; - margin-bottom: 20px; -} -@media (min-width: 768px) { - .hero { - background: url("../../../base/images/background-tile.png"); - } -} -.hero:after { - background-color: rgba(0, 0, 0, 0.09); - background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(0, 0, 0, 0))); - background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-repeat: repeat-x; - background-color: #f6f6f6; - border-bottom: 1px solid #d0d0d0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - -webkit-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - -moz-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); -} -.hero:after .back:hover { - text-decoration: none; -} -.hero:after .back:hover span { - text-decoration: underline; -} -.context-info .module-content { - padding: 15px; -} -.context-info .image { - margin-bottom: 10px; -} -.context-info .image img, -.context-info .image a { - display: block; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.context-info p { - overflow: auto; -} -.context-info code { - display: block; - font-weight: normal; - padding: 0; - margin: 0; - overflow: auto; -} -.context-info h1.heading { - margin: 0 0 5px 0; - font-size: 18px; - line-height: 1.3; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.context-info .info { - margin-top: 15px; - padding-top: 10px; - border-top: 1px dotted #DDD; - word-break: break-word; -} -.context-info .info dl dd { - margin-top: 3px; - margin-left: 0; -} -.context-info .nums { - *zoom: 1; - margin-top: 15px; - padding-top: 10px; - padding-bottom: 0; - border-top: 1px dotted #DDD; -} -.context-info .nums:before, -.context-info .nums:after { - display: table; - content: ""; - line-height: 0; -} -.context-info .nums:after { - clear: both; -} -.context-info .nums dl { - float: left; - width: 50%; - margin: 5px 0 0 0; - color: #444; -} -.context-info .nums dl dt { - display: block; - font-size: 13px; - font-weight: 300; -} -.context-info .nums dl dd { - display: block; - font-size: 30px; - font-weight: 700; - line-height: 36px; - margin-left: 0; -} -.context-info .nums dl dd .smallest { - font-size: 13px; -} -.context-info .nums dl dd .smaller { - font-size: 16px; -} -.context-info .nums dl dd .small { - font-size: 21px; -} -.context-info .follow_button { - margin-top: 15px; -} -.context-info.editing .module-content { - margin-top: 0; -} -.flash-messages .alert { - -webkit-box-shadow: 0 0 0 1px white; - -moz-box-shadow: 0 0 0 1px white; - box-shadow: 0 0 0 1px white; -} -.homepage .row { - position: relative; -} -.homepage .module-search { - padding: 5px; - margin: 20px 0 0 0; - color: #fff; - background: #fff; -} -.homepage .module-search .search-giant { - margin-bottom: 10px; -} -.homepage .module-search .search-giant input { - border-color: #003f52; -} -.homepage .module-search .module-content { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - background-color: #E73892; - border-bottom: none; -} -.homepage .module-search .module-content .heading { - margin-top: 0; - margin-bottom: 7px; - font-size: 24px; - line-height: 40px; -} -.homepage .module-search .tags { - *zoom: 1; - padding: 5px 10px 10px 10px; - background-color: #d31979; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.homepage .module-search .tags:before, -.homepage .module-search .tags:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .module-search .tags:after { - clear: both; -} -.homepage .module-search .tags h3, -.homepage .module-search .tags .tag { - display: block; - float: left; - margin: 5px 10px 0 0; -} -.homepage .module-search .tags h3 { - font-size: 14px; - line-height: 20px; - padding: 2px 8px; -} -.homepage .group-list { - margin: 0; -} -.homepage .box .inner { - padding: 20px 25px; -} -.homepage .stats h3 { - margin: 0 0 10px 0; -} -.homepage .stats ul { - margin: 0; - list-style: none; - *zoom: 1; -} -.homepage .stats ul:before, -.homepage .stats ul:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .stats ul:after { - clear: both; -} -.homepage .stats ul li { - float: left; - width: 25%; - font-weight: 300; -} -.homepage .stats ul li a { - display: block; -} -.homepage .stats ul li a b { - display: block; - font-size: 35px; - line-height: 1.5; -} -.homepage .stats ul li a:hover { - text-decoration: none; -} -.homepage.layout-2 .stats { - margin-top: 20px; -} -@media (min-width: 768px) { - .homepage [role=main] { - padding: 20px 0; - } - .homepage.layout-1 .row1 .col2 { - position: absolute; - bottom: 0; - right: 0; - } - .homepage.layout-1 .row1 .col2 .module-search { - bottom: 0; - left: 0; - right: 0; - } -} -.account-masthead { - *zoom: 1; - min-height: 30px; - color: #fff; - background: #d31979 url("../../../base/images/bg.png"); -} -.account-masthead:before, -.account-masthead:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead:after { - clear: both; -} -.account-masthead .account { - float: right; -} -.account-masthead .account ul { - *zoom: 1; -} -.account-masthead .account ul:before, -.account-masthead .account ul:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead .account ul:after { - clear: both; -} -.account-masthead .account ul li { - display: block; - float: left; - border-left: 1px solid #bc176c; -} -.account-masthead .account ul li a { - display: block; - color: #f9cde4; - font-size: 13px; - font-weight: bold; - padding: 0 10px; - line-height: 31px; -} -.account-masthead .account ul li a span.username, -.account-masthead .account ul li a span.text { - margin: 0 2px 0 4px; -} -.account-masthead .account ul li a span.text { - position: absolute; - top: -9999px; - left: -9999px; -} -.account-masthead .account ul li a:hover { - color: #fbe1ef; - background-color: #bc176c; - text-decoration: none; -} -.account-masthead .account ul li a.sub { - font-weight: 300; -} -.account-masthead .account ul li a .btn { - vertical-align: 1px; - margin-left: 3px; -} -.account-masthead .account .notifications a span.badge { - font-size: 12px; - margin-left: 3px; - padding: 1px 6px; - background-color: #bc176c; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - text-shadow: none; - color: #f9cde4; -} -.account-masthead .account .notifications a:hover span { - color: #fff; - background-color: #a5145f; -} -.account-masthead .account .notifications.notifications-important a span.badge { - color: #fff; - background-color: #C9403A; -} -.account-masthead .account.authed .image { - padding: 0 6px; -} -.account-masthead .account.authed .image img { - vertical-align: -6px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.masthead { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #E73892 url("../../../base/images/bg.png"); -} -.masthead:before, -.masthead:after { - display: table; - content: ""; - line-height: 0; -} -.masthead:after { - clear: both; -} -.masthead .container { - position: relative; -} -.masthead a { - color: #fff; -} -.masthead hgroup h1, -.masthead hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.masthead hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.masthead hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.masthead .nav-collapse { - padding-top: 10px; -} -.masthead .section { - float: left; -} -.masthead input[type="text"] { - border-color: #e42186; -} -.masthead .navigation { - margin-right: 20px; -} -.masthead .navigation .nav-pills { - margin-bottom: 0; -} -.masthead .navigation .nav-pills li a:hover, -.masthead .navigation .nav-pills li.active a { - background-color: #d31979; -} -.masthead .nav > li > a, -.masthead .nav > li > a:focus, -.masthead .nav > li > a:hover, -.masthead .nav > .active > a, -.masthead .nav > .active > a:hover, -.masthead .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.masthead .site-search { - margin: 2px 8px 2px 0; -} -.masthead .site-search input { - width: 200px; - padding: 4px 10px; -} -.masthead .btn-navbar, -.masthead .btn-navbar:hover, -.masthead .btn-navbar:focus, -.masthead .btn-navbar:active, -.masthead .btn-navbar.active, -.masthead .btn-navbar.disabled, -.masthead .btn-navbar[disabled] { - background-color: #d31979; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.masthead .btn-navbar .icon-bar, -.masthead .btn-navbar:hover .icon-bar, -.masthead .btn-navbar:focus .icon-bar, -.masthead .btn-navbar:active .icon-bar, -.masthead .btn-navbar.active .icon-bar, -.masthead .btn-navbar.disabled .icon-bar, -.masthead .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.masthead .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -@media (min-width: 980px) { - .masthead .nav-collapse { - float: right; - } -} -@media (max-width: 767px) { - .account-masthead { - margin-left: -20px; - margin-right: -20px; - padding-left: 20px; - padding-right: 20px; - } - .masthead .section { - float: none; - } - .masthead .section .nav-collapse { - margin-bottom: 25px; - } -} -@media (max-width: 979px) { - .masthead .container { - padding-left: 20px; - padding-right: 20px; - } - .masthead .site-search { - display: none; - } -} -.site-footer { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #E73892 url("../../../base/images/bg.png"); - padding: 20px 0; -} -.site-footer:before, -.site-footer:after { - display: table; - content: ""; - line-height: 0; -} -.site-footer:after { - clear: both; -} -.site-footer .container { - position: relative; -} -.site-footer a { - color: #fff; -} -.site-footer hgroup h1, -.site-footer hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.site-footer hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.site-footer hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.site-footer .nav-collapse { - padding-top: 10px; -} -.site-footer .section { - float: left; -} -.site-footer input[type="text"] { - border-color: #e42186; -} -.site-footer .navigation { - margin-right: 20px; -} -.site-footer .navigation .nav-pills { - margin-bottom: 0; -} -.site-footer .navigation .nav-pills li a:hover, -.site-footer .navigation .nav-pills li.active a { - background-color: #d31979; -} -.site-footer .nav > li > a, -.site-footer .nav > li > a:focus, -.site-footer .nav > li > a:hover, -.site-footer .nav > .active > a, -.site-footer .nav > .active > a:hover, -.site-footer .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.site-footer .site-search { - margin: 2px 8px 2px 0; -} -.site-footer .site-search input { - width: 200px; - padding: 4px 10px; -} -.site-footer .btn-navbar, -.site-footer .btn-navbar:hover, -.site-footer .btn-navbar:focus, -.site-footer .btn-navbar:active, -.site-footer .btn-navbar.active, -.site-footer .btn-navbar.disabled, -.site-footer .btn-navbar[disabled] { - background-color: #d31979; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.site-footer .btn-navbar .icon-bar, -.site-footer .btn-navbar:hover .icon-bar, -.site-footer .btn-navbar:focus .icon-bar, -.site-footer .btn-navbar:active .icon-bar, -.site-footer .btn-navbar.active .icon-bar, -.site-footer .btn-navbar.disabled .icon-bar, -.site-footer .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.site-footer .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -.site-footer, -.site-footer label, -.site-footer small { - color: #f5afd3; -} -.site-footer a { - color: #f5afd3; -} -.footer-links ul li { - margin-bottom: 5px; -} -.attribution small { - color: #f5afd3; - font-size: 12px; -} -.attribution .ckan-footer-logo { - display: block; - width: 68px; - height: 21px; - margin-top: 2px; - background: url("../../../base/images/ckan-logo-footer.png") no-repeat top left; - text-indent: -900em; -} -.lang-select { - *zoom: 1; -} -.lang-select:before, -.lang-select:after { - display: table; - content: ""; - line-height: 0; -} -.lang-select:after { - clear: both; -} -.lang-select label, -.lang-select select, -.lang-select .lang-container { - float: left; - margin-top: 0; -} -.lang-dropdown { - color: #000; -} -.lang-dropdown li { - width: auto; -} -.table-selected td { - background-color: #f5f5f5; -} -.table-selected td .edit { - display: block; -} -.table-bulk-edit th input { - top: -5px; -} -.table-bulk-edit .table-actions .btn-group { - float: left; - margin: 0 10px 0 0; -} -.table-bulk-edit .context p { - margin-bottom: 0; -} -.table-header thead th { - background-color: #f6f6f6; -} -.table-edit-hover .edit { - display: none; - float: right; -} -.table-edit-hover tr:hover .edit { - display: block; -} -.js .table-toggle-more .toggle-more { - display: none; -} -.js .table-toggle-more .show-more { - display: inline; -} -.js .table-toggle-more .show-less { - display: none; -} -.js .table-toggle-more .toggle-seperator { - display: table-row; -} -.js .table-toggle-more .toggle-seperator td { - height: 11px; - padding: 0; - background-image: url("../../../base/images/table-seperator.png"); -} -.js .table .toggle-show td { - background: none; - text-align: center; -} -.js .table-toggle-less .show-less { - display: inline; -} -.js .table-toggle-less .show-more { - display: none; -} -.js .table-toggle-less .toggle-seperator { - display: none; -} -.profile .empty, -.profile .dataset-list { - margin-bottom: 20px; -} -.activity { - margin: 10px 0; - padding: 0; - list-style-type: none; - background: transparent url('../../../base/images/dotted.png') 14px 0 repeat-y; -} -.activity .item { - position: relative; - margin: 0 0 15px 0; - padding: 0; - *zoom: 1; -} -.activity .item:before, -.activity .item:after { - display: table; - content: ""; - line-height: 0; -} -.activity .item:after { - clear: both; -} -.activity .item .icon { - display: block; - position: absolute; - top: 0; - left: 0; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - color: #FFFFFF; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - font-weight: normal; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item .gravatar { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.activity .item .actor .gravatar { - position: absolute; - top: 0; - left: 40px; -} -.activity .item p { - font-size: 14px; - line-height: 1.5; - margin: 5px 0 0 80px; -} -.activity .item .date { - color: #999; - font-size: 12px; - white-space: nowrap; -} -.activity .item .new { - display: block; - position: absolute; - overflow: hidden; - top: -3px; - left: -3px; - width: 10px; - height: 10px; - background-color: #A35647; - border: 1px solid #FFF; - text-indent: -1000px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item.no-avatar p { - margin-left: 40px; -} -.activity .load-less { - margin-bottom: 15px; -} -.popover { - width: 300px; -} -.popover .popover-title { - font-weight: bold; - margin-bottom: 0; -} -.popover p.about { - margin: 0 0 10px 0; -} -.popover .popover-close { - float: right; - text-decoration: none; -} -.popover .popover-content { - font-size: 14px; - line-height: 20px; - color: #444; - word-break: break-all; -} -.popover .popover-content dl { - margin: 0; -} -.popover .popover-content dl dd { - margin-left: 0; - margin-bottom: 10px; -} -.activity .item .icon { - background-color: #999999; -} -.activity .item.failure .icon { - background-color: #B95252; -} -.activity .item.success .icon { - background-color: #69A67A; -} -.activity .item.added-tag .icon { - background-color: #6995a6; -} -.activity .item.changed-group .icon { - background-color: #767DCE; -} -.activity .item.changed-package .icon { - background-color: #8c76ce; -} -.activity .item.changed-package_extra .icon { - background-color: #769ace; -} -.activity .item.changed-resource .icon { - background-color: #aa76ce; -} -.activity .item.changed-user .icon { - background-color: #76b8ce; -} -.activity .item.changed-organization .icon { - background-color: #699fa6; -} -.activity .item.deleted-group .icon { - background-color: #B95252; -} -.activity .item.deleted-package .icon { - background-color: #b97452; -} -.activity .item.deleted-package_extra .icon { - background-color: #b95274; -} -.activity .item.deleted-resource .icon { - background-color: #b99752; -} -.activity .item.deleted-organization .icon { - background-color: #b95297; -} -.activity .item.new-group .icon { - background-color: #69A67A; -} -.activity .item.new-package .icon { - background-color: #69a68e; -} -.activity .item.new-package_extra .icon { - background-color: #6ca669; -} -.activity .item.new-resource .icon { - background-color: #81a669; -} -.activity .item.new-user .icon { - background-color: #69a6a3; -} -.activity .item.new-organization .icon { - background-color: #81a669; -} -.activity .item.removed-tag .icon { - background-color: #b95297; -} -.activity .item.deleted-related-item .icon { - background-color: #b9b952; -} -.activity .item.follow-dataset .icon { - background-color: #767DCE; -} -.activity .item.follow-user .icon { - background-color: #8c76ce; -} -.activity .item.new-related-item .icon { - background-color: #95a669; -} -.activity .item.follow-group .icon { - background-color: #8ba669; -} -.dropdown:hover .dropdown-menu { - display: block; -} -.js .dropdown .dropdown-menu, -.js .dropdown:hover .dropdown-menu { - display: none; -} -.js .dropdown.open .dropdown-menu { - display: block; -} -#followee-filter .btn { - *zoom: 1; -} -#followee-filter .btn:before, -#followee-filter .btn:after { - display: table; - content: ""; - line-height: 0; -} -#followee-filter .btn:after { - clear: both; -} -#followee-filter .btn span, -#followee-filter .btn strong { - display: block; - float: left; - line-height: 1.5; -} -#followee-filter .btn span { - font-weight: normal; -} -#followee-filter .btn strong { - margin: 0 5px; - white-space: nowrap; - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; -} -.dashboard-context { - position: relative; - margin-bottom: 20px; - padding: 20px; - border-bottom: 1px solid #DCDCDC; - background-color: #f6f6f6; - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; -} -.dashboard-context h2 { - margin-bottom: 10px; -} -.dashboard-context .arrow { - position: absolute; - content: ' '; - top: 30px; - right: -10px; - width: 10px; - height: 21px; - background: transparent url("../../../base/images/dashboard-followee-related.png"); -} -.popover-followee .popover-title { - display: none; -} -.popover-followee .popover-content { - padding: 0; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.popover-followee .empty { - padding: 10px; -} -.popover-followee .popover-header { - *zoom: 1; - background-color: whiteSmoke; - padding: 5px; - border-bottom: 1px solid #ccc; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.popover-followee .popover-header:before, -.popover-followee .popover-header:after { - display: table; - content: ""; - line-height: 0; -} -.popover-followee .popover-header:after { - clear: both; -} -.popover-followee .popover-header .input-prepend { - margin-bottom: 0; -} -.popover-followee .popover-header .add-on, -.popover-followee .popover-header input { - float: left; - margin: 0; -} -.popover-followee .popover-header .add-on { - padding: 4px 8px 4px 12px; - border-right-width: 0; - -webkit-border-radius: 100px 0 0 100px; - -moz-border-radius: 100px 0 0 100px; - border-radius: 100px 0 0 100px; -} -.popover-followee .popover-header input { - padding: 4px 12px 4px 8px; - font-size: 13px; - width: 207px; - -webkit-border-radius: 0 100px 100px 0; - -moz-border-radius: 0 100px 100px 0; - border-radius: 0 100px 100px 0; -} -.popover-followee .nav { - padding: 0; - margin: 0; - max-height: 205px; - overflow: auto; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.popover-followee .nav li a { - display: block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: 7px 10px 7px 15px; - margin: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.popover-followee .nav li a i { - background-color: #E73892; - color: #fff; - margin-right: 11px; - padding: 3px 5px; - line-height: 1; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); -} -.popover-followee .nav li a:hover i { - background-color: #000; -} -.popover-followee .nav li.active a i { - color: #E73892; - background-color: #fff; -} -.dashboard-me { - *zoom: 1; - padding: 15px 15px 0 15px; -} -.dashboard-me:before, -.dashboard-me:after { - display: table; - content: ""; - line-height: 0; -} -.dashboard-me:after { - clear: both; -} -.dashboard-me img { - float: left; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.dashboard-me strong { - display: block; - font-size: 16px; - margin: 3px 0; -} -.resource-view-filters { - margin-bottom: 1em; -} -.resource-view-filters .resource-view-filter { - margin-bottom: 1.0em; -} -.resource-view-filters .resource-view-remove-filter { - cursor: pointer; - color: #b55457; -} -.resource-view-filters .resource-view-filter-values .select2-container { - margin-right: 0.3em; - margin-bottom: 0.2em; - width: 24% !important; -} -.resource-view-filters .resource-view-filter-values .select2-container .select2-search-choice-close { - left: auto; -} -.datapusher-status-link:hover { - text-decoration: none; -} -.datapusher-status.status-unknown { - color: #bbb; -} -.datapusher-status.status-pending { - color: #FFCC00; -} -.datapusher-status.status-error { - color: red; -} -.datapusher-status.status-complete { - color: #009900; -} -body { - background: #E73892 url("../../../base/images/bg.png"); -} -[hidden] { - display: none; -} -table { - table-layout: fixed; -} -thead th { - vertical-align: top; -} -td, -th { - word-wrap: break-word; -} -table .metric { - width: 140px; -} -code { - color: #000; - border: none; - background: none; - white-space: normal; -} -pre { - border: none; - background: none; - padding-left: 0; - padding-right: 0; -} -mark { - background: #fdf7e9; -} -blockquote p { - font-size: 1em; -} -iframe { - border: none; -} -.embedded-content h1 { - font-size: 1.4em; -} -.embedded-content h2 { - font-size: 1.4em; -} -.embedded-content h3 { - font-size: 1.2em; -} -.popular { - text-indent: -999em; -} -.empty { - color: #aaa; - font-style: italic; -} -.page-heading { - margin-top: 0; - margin-bottom: 16px; -} -.m-top { - margin-top: 15px; -} -.m-left { - margin-left: 15px; -} -.m-right { - margin-right: 15px; -} -.m-bottom { - margin-bottom: 15px; -} -.no-margin { - margin: 0; -} -.reduced-margin { - margin: 3px 5px; -} -.p-top { - padding-top: 15px; -} -.p-left { - padding-left: 15px; -} -.p-right { - padding-right: 15px; -} -.p-bottom { - padding-bottom: 15px; -} -.no-padding { - padding: 0; -} -.reduced-padding { - padding: 3px 5px; -} -.ie .lang-dropdown { - position: relative; - top: -20px; -} -.ie .module-popup { - border-bottom: none; -} -.ie .banner { - top: 0; - right: 0; - width: auto; -} -.ie .group-listing { - margin-left: -24px; -} -.ie .toolbar .breadcrumb { - filter: none; -} -.ie .toolbar .breadcrumb li { - float: left; -} -.ie .toolbar .breadcrumb li:after { - margin: 0 0.2em; -} -.ie9 .control-large input { - height: 56px; -} -.ie8 .account-masthead a.image, -.ie8 .account-masthead .username { - white-space: nowrap; -} -.ie9 .homepage .media.module-heading .media-image img, -.ie8 .homepage .media.module-heading .media-image img, -.ie7 .homepage .media.module-heading .media-image img { - width: 85px !important; -} -.ie8 .masthead .nav-collapse, -.ie7 .masthead .nav-collapse { - float: right; -} -.ie8 [role=main], -.ie7 [role=main], -.ie8 .main, -.ie7 .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); -} -.ie8 .hero, -.ie7 .hero { - background: url("../../../base/images/background-tile.png"); -} -.ie8 .hero .hero-primary.module-popup .box, -.ie7 .hero .hero-primary.module-popup .box { - padding-bottom: 20px !important; - margin-bottom: 0 !important; -} -.ie8 .lang-dropdown, -.ie7 .lang-dropdown { - position: relative !important; - top: -90px !important; -} -.ie7 .alert { - position: relative; -} -.ie7 .alert .close { - position: absolute; - top: 6px !important; - right: 20px; -} -.ie7 .media-item { - width: 30%; -} -.ie7 .tags .tag-list { - *zoom: 1; -} -.ie7 .tags .tag-list:before, -.ie7 .tags .tag-list:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .tags .tag-list:after { - clear: both; -} -.ie7 .tags .tag-list li { - display: block; - float: left; -} -.ie7 .tags h3 { - float: left; -} -.ie7 .tags .tag { - display: block; -} -.ie7 .search-giant input { - width: 95%; -} -.ie7 .control-full input, -.ie7 .control-full select, -.ie7 .control-full textarea { - width: 95%; -} -.ie7 .control-full.control-large .controls input { - padding-bottom: 20px; -} -.ie7 .controls { - position: relative; -} -.ie7 .controls .info-block, -.ie7 .controls .info-inline { - position: absolute; - top: 0; - right: 0; -} -.ie7 .form-horizontal .controls { - margin-left: 0; -} -.ie7 .control-custom .checkbox { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .stages { - overflow: hidden; - background-color: #EDEDED; -} -.ie7 .stages li { - height: 30px; - width: 27.5%; -} -.ie7 .stages li button, -.ie7 .stages li span { - display: block; - height: 30px; - padding-left: 20px; -} -.ie7 .stages li button { - height: 50px; -} -.ie7 .stages li .highlight { - width: auto; -} -.ie7 .account-masthead .account a i { - line-height: 31px; -} -.ie7 .masthead { - position: relative; - z-index: 1; -} -.ie7 .masthead .logo img, -.ie7 .masthead nav { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .masthead .header-image { - display: block; -} -.ie7 .masthead .account .dropdown-menu { - z-index: 10000; -} -.ie7 .module-narrow .nav-item.image { - *zoom: 1; -} -.ie7 .module-narrow .nav-item.image:before, -.ie7 .module-narrow .nav-item.image:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-narrow .nav-item.image:after { - clear: both; -} -.ie7 .nav-facet .nav-item.active a { - content: 'x'; -} -.ie7 .toolbar .breadcrumb li { - padding-right: 10px; - margin-right: 5px; - background: transparent url("../../../base/images/breadcrumb-slash-ie7.png") 100% 50% no-repeat; -} -.ie7 .toolbar .breadcrumb li.active { - background-image: none; -} -.ie7 .module-heading { - *zoom: 1; - position: relative; -} -.ie7 .module-heading:before, -.ie7 .module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-heading:after { - clear: both; -} -.ie7 .module-heading .media-content { - position: relative; -} -.ie7 .module-heading .media-image img { - float: left; -} -.ie7 .group-listing { - position: relative; - zoom: 1; -} -.ie7 .resource-item { - position: static; - padding-bottom: 1px; -} -.ie7 .resource-item .heading { - position: relative; -} -.ie7 .resource-item .format-label { - left: -48px; -} -.ie7 .resource-item .btn-group { - position: relative; - float: right; - top: -35px; - right: 0; -} -.ie7 .media-overlay .media-heading { - background-color: #000; -} diff --git a/ckan/public-bs2/base/css/green.css b/ckan/public-bs2/base/css/green.css deleted file mode 100644 index 437660248d6..00000000000 --- a/ckan/public-bs2/base/css/green.css +++ /dev/null @@ -1,9520 +0,0 @@ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} -audio:not([controls]) { - display: none; -} -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -a:hover, -a:active { - outline: 0; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - /* Responsive images (ensure images don't scale beyond their parents) */ - max-width: 100%; - /* Part 1: Set a maxium relative to the parent */ - width: auto\9; - /* IE7-8 need help adjusting responsive images */ - height: auto; - /* Part 2: Scale the height according to the width, otherwise you get stretching */ - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} -#map_canvas img, -.google-maps img { - max-width: none; -} -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} -button, -input { - *overflow: visible; - line-height: normal; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; -} -textarea { - overflow: auto; - vertical-align: top; -} -@media print { - * { - text-shadow: none !important; - color: #000 !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 0.5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } -} -.clearfix { - *zoom: 1; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; - line-height: 0; -} -.clearfix:after { - clear: both; -} -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -body { - margin: 0; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 20px; - color: #444; - background-color: #eee; -} -a { - color: #2F9B45; - text-decoration: none; -} -a:hover, -a:focus { - color: #1d602b; - text-decoration: underline; -} -.img-rounded { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.img-polaroid { - padding: 4px; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} -.img-circle { - -webkit-border-radius: 500px; - -moz-border-radius: 500px; - border-radius: 500px; -} -.row { - margin-left: -20px; - *zoom: 1; -} -.row:before, -.row:after { - display: table; - content: ""; - line-height: 0; -} -.row:after { - clear: both; -} -[class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; -} -.container, -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} -.span12 { - width: 940px; -} -.span11 { - width: 860px; -} -.span10 { - width: 780px; -} -.span9 { - width: 700px; -} -.span8 { - width: 620px; -} -.span7 { - width: 540px; -} -.span6 { - width: 460px; -} -.span5 { - width: 380px; -} -.span4 { - width: 300px; -} -.span3 { - width: 220px; -} -.span2 { - width: 140px; -} -.span1 { - width: 60px; -} -.offset12 { - margin-left: 980px; -} -.offset11 { - margin-left: 900px; -} -.offset10 { - margin-left: 820px; -} -.offset9 { - margin-left: 740px; -} -.offset8 { - margin-left: 660px; -} -.offset7 { - margin-left: 580px; -} -.offset6 { - margin-left: 500px; -} -.offset5 { - margin-left: 420px; -} -.offset4 { - margin-left: 340px; -} -.offset3 { - margin-left: 260px; -} -.offset2 { - margin-left: 180px; -} -.offset1 { - margin-left: 100px; -} -.row-fluid { - width: 100%; - *zoom: 1; -} -.row-fluid:before, -.row-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.row-fluid:after { - clear: both; -} -.row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.12765957%; - *margin-left: 2.07446809%; -} -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} -.row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.12765957%; -} -.row-fluid .span12 { - width: 100%; - *width: 99.94680851%; -} -.row-fluid .span11 { - width: 91.4893617%; - *width: 91.43617021%; -} -.row-fluid .span10 { - width: 82.9787234%; - *width: 82.92553191%; -} -.row-fluid .span9 { - width: 74.46808511%; - *width: 74.41489362%; -} -.row-fluid .span8 { - width: 65.95744681%; - *width: 65.90425532%; -} -.row-fluid .span7 { - width: 57.44680851%; - *width: 57.39361702%; -} -.row-fluid .span6 { - width: 48.93617021%; - *width: 48.88297872%; -} -.row-fluid .span5 { - width: 40.42553191%; - *width: 40.37234043%; -} -.row-fluid .span4 { - width: 31.91489362%; - *width: 31.86170213%; -} -.row-fluid .span3 { - width: 23.40425532%; - *width: 23.35106383%; -} -.row-fluid .span2 { - width: 14.89361702%; - *width: 14.84042553%; -} -.row-fluid .span1 { - width: 6.38297872%; - *width: 6.32978723%; -} -.row-fluid .offset12 { - margin-left: 104.25531915%; - *margin-left: 104.14893617%; -} -.row-fluid .offset12:first-child { - margin-left: 102.12765957%; - *margin-left: 102.0212766%; -} -.row-fluid .offset11 { - margin-left: 95.74468085%; - *margin-left: 95.63829787%; -} -.row-fluid .offset11:first-child { - margin-left: 93.61702128%; - *margin-left: 93.5106383%; -} -.row-fluid .offset10 { - margin-left: 87.23404255%; - *margin-left: 87.12765957%; -} -.row-fluid .offset10:first-child { - margin-left: 85.10638298%; - *margin-left: 85%; -} -.row-fluid .offset9 { - margin-left: 78.72340426%; - *margin-left: 78.61702128%; -} -.row-fluid .offset9:first-child { - margin-left: 76.59574468%; - *margin-left: 76.4893617%; -} -.row-fluid .offset8 { - margin-left: 70.21276596%; - *margin-left: 70.10638298%; -} -.row-fluid .offset8:first-child { - margin-left: 68.08510638%; - *margin-left: 67.9787234%; -} -.row-fluid .offset7 { - margin-left: 61.70212766%; - *margin-left: 61.59574468%; -} -.row-fluid .offset7:first-child { - margin-left: 59.57446809%; - *margin-left: 59.46808511%; -} -.row-fluid .offset6 { - margin-left: 53.19148936%; - *margin-left: 53.08510638%; -} -.row-fluid .offset6:first-child { - margin-left: 51.06382979%; - *margin-left: 50.95744681%; -} -.row-fluid .offset5 { - margin-left: 44.68085106%; - *margin-left: 44.57446809%; -} -.row-fluid .offset5:first-child { - margin-left: 42.55319149%; - *margin-left: 42.44680851%; -} -.row-fluid .offset4 { - margin-left: 36.17021277%; - *margin-left: 36.06382979%; -} -.row-fluid .offset4:first-child { - margin-left: 34.04255319%; - *margin-left: 33.93617021%; -} -.row-fluid .offset3 { - margin-left: 27.65957447%; - *margin-left: 27.55319149%; -} -.row-fluid .offset3:first-child { - margin-left: 25.53191489%; - *margin-left: 25.42553191%; -} -.row-fluid .offset2 { - margin-left: 19.14893617%; - *margin-left: 19.04255319%; -} -.row-fluid .offset2:first-child { - margin-left: 17.0212766%; - *margin-left: 16.91489362%; -} -.row-fluid .offset1 { - margin-left: 10.63829787%; - *margin-left: 10.53191489%; -} -.row-fluid .offset1:first-child { - margin-left: 8.5106383%; - *margin-left: 8.40425532%; -} -[class*="span"].hide, -.row-fluid [class*="span"].hide { - display: none; -} -[class*="span"].pull-right, -.row-fluid [class*="span"].pull-right { - float: right; -} -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} -.container:before, -.container:after { - display: table; - content: ""; - line-height: 0; -} -.container:after { - clear: both; -} -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} -.container-fluid:before, -.container-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.container-fluid:after { - clear: both; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 21px; - font-weight: 200; - line-height: 30px; -} -small { - font-size: 85%; -} -strong { - font-weight: bold; -} -em { - font-style: italic; -} -cite { - font-style: normal; -} -.muted { - color: #999; -} -a.muted:hover, -a.muted:focus { - color: #808080; -} -.text-warning { - color: #c09853; -} -a.text-warning:hover, -a.text-warning:focus { - color: #a47e3c; -} -.text-error { - color: #b55457; -} -a.text-error:hover, -a.text-error:focus { - color: #954143; -} -.text-info { - color: #3a87ad; -} -a.text-info:hover, -a.text-info:focus { - color: #2d6987; -} -.text-success { - color: #468847; -} -a.text-success:hover, -a.text-success:focus { - color: #356635; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 10px 0; - font-family: inherit; - font-weight: bold; - line-height: 20px; - color: inherit; - text-rendering: optimizelegibility; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-weight: normal; - line-height: 1; - color: #999; -} -h1, -h2, -h3 { - line-height: 40px; -} -h1 { - font-size: 38.5px; -} -h2 { - font-size: 31.5px; -} -h3 { - font-size: 24.5px; -} -h4 { - font-size: 17.5px; -} -h5 { - font-size: 14px; -} -h6 { - font-size: 11.9px; -} -h1 small { - font-size: 24.5px; -} -h2 small { - font-size: 17.5px; -} -h3 small { - font-size: 14px; -} -h4 small { - font-size: 14px; -} -.page-header { - padding-bottom: 9px; - margin: 20px 0 30px; - border-bottom: 1px solid #eee; -} -ul, -ol { - padding: 0; - margin: 0 0 10px 25px; -} -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} -li { - line-height: 20px; -} -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} -ul.inline, -ol.inline { - margin-left: 0; - list-style: none; -} -ul.inline > li, -ol.inline > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-bottom: 20px; -} -dt, -dd { - line-height: 20px; -} -dt { - font-weight: bold; -} -dd { - margin-left: 10px; -} -.dl-horizontal { - *zoom: 1; -} -.dl-horizontal:before, -.dl-horizontal:after { - display: table; - content: ""; - line-height: 0; -} -.dl-horizontal:after { - clear: both; -} -.dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dl-horizontal dd { - margin-left: 180px; -} -hr { - margin: 20px 0; - border: 0; - border-top: 1px solid #eee; - border-bottom: 1px solid #fff; -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 0 0 0 15px; - margin: 0 0 20px; - border-left: 5px solid #eee; -} -blockquote p { - margin-bottom: 0; - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} -blockquote small { - display: block; - line-height: 20px; - color: #999; -} -blockquote small:before { - content: '\2014 \00A0'; -} -blockquote.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eee; - border-left: 0; -} -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} -blockquote.pull-right small:before { - content: ''; -} -blockquote.pull-right small:after { - content: '\00A0 \2014'; -} -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} -address { - display: block; - margin-bottom: 20px; - font-style: normal; - line-height: 20px; -} -code, -pre { - padding: 0 3px 2px; - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; - font-size: 12px; - color: #333; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -code { - padding: 2px 4px; - color: #d14; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; - white-space: nowrap; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 20px; - word-break: break-all; - word-wrap: break-word; - white-space: pre; - white-space: pre-wrap; - background-color: #f5f5f5; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -pre.prettyprint { - margin-bottom: 20px; -} -pre code { - padding: 0; - color: inherit; - white-space: pre; - white-space: pre-wrap; - background-color: transparent; - border: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -form { - margin: 0 0 20px; -} -fieldset { - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: 40px; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -legend small { - font-size: 15px; - color: #999; -} -label, -input, -button, -select, -textarea { - font-size: 14px; - font-weight: normal; - line-height: 20px; -} -input, -button, -select, -textarea { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} -label { - display: block; - margin-bottom: 5px; -} -select, -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - display: inline-block; - height: 20px; - padding: 4px 6px; - margin-bottom: 10px; - font-size: 14px; - line-height: 20px; - color: #555; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - vertical-align: middle; -} -input, -textarea, -.uneditable-input { - width: 206px; -} -textarea { - height: auto; -} -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - background-color: #fff; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear .2s, box-shadow linear .2s; - -moz-transition: border linear .2s, box-shadow linear .2s; - -o-transition: border linear .2s, box-shadow linear .2s; - transition: border linear .2s, box-shadow linear .2s; -} -textarea:focus, -input[type="text"]:focus, -input[type="password"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="date"]:focus, -input[type="month"]:focus, -input[type="time"]:focus, -input[type="week"]:focus, -input[type="number"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="color"]:focus, -.uneditable-input:focus { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - *margin-top: 0; - /* IE7 */ - margin-top: 1px \9; - /* IE8-9 */ - line-height: normal; -} -input[type="file"], -input[type="image"], -input[type="submit"], -input[type="reset"], -input[type="button"], -input[type="radio"], -input[type="checkbox"] { - width: auto; -} -select, -input[type="file"] { - height: 30px; - /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ - line-height: 30px; -} -select { - width: 220px; - border: 1px solid #ccc; - background-color: #fff; -} -select[multiple], -select[size] { - height: auto; -} -select:focus, -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.uneditable-input, -.uneditable-textarea { - color: #999; - background-color: #fcfcfc; - border-color: #ccc; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - cursor: not-allowed; -} -.uneditable-input { - overflow: hidden; - white-space: nowrap; -} -.uneditable-textarea { - width: auto; - height: auto; -} -input:-moz-placeholder, -textarea:-moz-placeholder { - color: #999; -} -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #999; -} -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #999; -} -.radio, -.checkbox { - min-height: 20px; - padding-left: 20px; -} -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.controls > .radio:first-child, -.controls > .checkbox:first-child { - padding-top: 5px; -} -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left: 10px; -} -.input-mini { - width: 60px; -} -.input-small { - width: 90px; -} -.input-medium { - width: 150px; -} -.input-large { - width: 210px; -} -.input-xlarge { - width: 270px; -} -.input-xxlarge { - width: 530px; -} -input[class*="span"], -select[class*="span"], -textarea[class*="span"], -.uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"] { - float: none; - margin-left: 0; -} -.input-append input[class*="span"], -.input-append .uneditable-input[class*="span"], -.input-prepend input[class*="span"], -.input-prepend .uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"], -.row-fluid .input-prepend [class*="span"], -.row-fluid .input-append [class*="span"] { - display: inline-block; -} -input, -textarea, -.uneditable-input { - margin-left: 0; -} -.controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; -} -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 926px; -} -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 846px; -} -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 766px; -} -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 686px; -} -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 606px; -} -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 526px; -} -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 446px; -} -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 366px; -} -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 286px; -} -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 206px; -} -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 126px; -} -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 46px; -} -.controls-row { - *zoom: 1; -} -.controls-row:before, -.controls-row:after { - display: table; - content: ""; - line-height: 0; -} -.controls-row:after { - clear: both; -} -.controls-row [class*="span"], -.row-fluid .controls-row [class*="span"] { - float: left; -} -.controls-row .checkbox[class*="span"], -.controls-row .radio[class*="span"] { - padding-top: 5px; -} -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eee; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"][readonly], -input[type="checkbox"][readonly] { - background-color: transparent; -} -.control-group.warning .control-label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} -.control-group.warning .checkbox, -.control-group.warning .radio, -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; -} -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} -.control-group.error .control-label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b55457; -} -.control-group.error .checkbox, -.control-group.error .radio, -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - border-color: #b55457; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #954143; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; -} -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b55457; - background-color: #f8f0f0; - border-color: #b55457; -} -.control-group.success .control-label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} -.control-group.success .checkbox, -.control-group.success .radio, -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; -} -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} -.control-group.info .control-label, -.control-group.info .help-block, -.control-group.info .help-inline { - color: #3a87ad; -} -.control-group.info .checkbox, -.control-group.info .radio, -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - color: #3a87ad; -} -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - border-color: #3a87ad; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.info input:focus, -.control-group.info select:focus, -.control-group.info textarea:focus { - border-color: #2d6987; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -} -.control-group.info .input-prepend .add-on, -.control-group.info .input-append .add-on { - color: #3a87ad; - background-color: #d9edf7; - border-color: #3a87ad; -} -input:focus:invalid, -textarea:focus:invalid, -select:focus:invalid { - color: #b94a48; - border-color: #ee5f5b; -} -input:focus:invalid:focus, -textarea:focus:invalid:focus, -select:focus:invalid:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} -.form-actions { - padding: 19px 20px 20px; - margin-top: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-top: 1px solid #e5e5e5; - *zoom: 1; -} -.form-actions:before, -.form-actions:after { - display: table; - content: ""; - line-height: 0; -} -.form-actions:after { - clear: both; -} -.help-block, -.help-inline { - color: #6a6a6a; -} -.help-block { - display: block; - margin-bottom: 10px; -} -.help-inline { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - vertical-align: middle; - padding-left: 5px; -} -.input-append, -.input-prepend { - display: inline-block; - margin-bottom: 10px; - vertical-align: middle; - font-size: 0; - white-space: nowrap; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input, -.input-append .dropdown-menu, -.input-prepend .dropdown-menu, -.input-append .popover, -.input-prepend .popover { - font-size: 14px; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: top; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append input:focus, -.input-prepend input:focus, -.input-append select:focus, -.input-prepend select:focus, -.input-append .uneditable-input:focus, -.input-prepend .uneditable-input:focus { - z-index: 2; -} -.input-append .add-on, -.input-prepend .add-on { - display: inline-block; - width: auto; - height: 20px; - min-width: 16px; - padding: 4px 5px; - font-size: 14px; - font-weight: normal; - line-height: 20px; - text-align: center; - text-shadow: 0 1px 0 #fff; - background-color: #eee; - border: 1px solid #ccc; -} -.input-append .add-on, -.input-prepend .add-on, -.input-append .btn, -.input-prepend .btn, -.input-append .btn-group > .dropdown-toggle, -.input-prepend .btn-group > .dropdown-toggle { - vertical-align: top; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-append .active, -.input-prepend .active { - background-color: #a9dba9; - border-color: #46a546; -} -.input-prepend .add-on, -.input-prepend .btn { - margin-right: -1px; -} -.input-prepend .add-on:first-child, -.input-prepend .btn:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input, -.input-append select, -.input-append .uneditable-input { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input + .btn-group .btn:last-child, -.input-append select + .btn-group .btn:last-child, -.input-append .uneditable-input + .btn-group .btn:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append .add-on, -.input-append .btn, -.input-append .btn-group { - margin-left: -1px; -} -.input-append .add-on:last-child, -.input-append .btn:last-child, -.input-append .btn-group:last-child > .dropdown-toggle { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append input, -.input-prepend.input-append select, -.input-prepend.input-append .uneditable-input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-prepend.input-append input + .btn-group .btn, -.input-prepend.input-append select + .btn-group .btn, -.input-prepend.input-append .uneditable-input + .btn-group .btn { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .add-on:first-child, -.input-prepend.input-append .btn:first-child { - margin-right: -1px; - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { - margin-left: -1px; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .btn-group:first-child { - margin-left: 0; -} -input.search-query { - padding-right: 14px; - padding-right: 4px \9; - padding-left: 14px; - padding-left: 4px \9; - /* IE7-8 doesn't have border-radius, so don't indent the padding */ - margin-bottom: 0; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -/* Allow for input prepend/append in search forms */ -.form-search .input-append .search-query, -.form-search .input-prepend .search-query { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.form-search .input-append .search-query { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search .input-append .btn { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .search-query { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .btn { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search input, -.form-inline input, -.form-horizontal input, -.form-search textarea, -.form-inline textarea, -.form-horizontal textarea, -.form-search select, -.form-inline select, -.form-horizontal select, -.form-search .help-inline, -.form-inline .help-inline, -.form-horizontal .help-inline, -.form-search .uneditable-input, -.form-inline .uneditable-input, -.form-horizontal .uneditable-input, -.form-search .input-prepend, -.form-inline .input-prepend, -.form-horizontal .input-prepend, -.form-search .input-append, -.form-inline .input-append, -.form-horizontal .input-append { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { - display: none; -} -.form-search label, -.form-inline label, -.form-search .btn-group, -.form-inline .btn-group { - display: inline-block; -} -.form-search .input-append, -.form-inline .input-append, -.form-search .input-prepend, -.form-inline .input-prepend { - margin-bottom: 0; -} -.form-search .radio, -.form-search .checkbox, -.form-inline .radio, -.form-inline .checkbox { - padding-left: 0; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"], -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: left; - margin-right: 3px; - margin-left: 0; -} -.control-group { - margin-bottom: 10px; -} -legend + .control-group { - margin-top: 20px; - -webkit-margin-top-collapse: separate; -} -.form-horizontal .control-group { - margin-bottom: 20px; - *zoom: 1; -} -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; - content: ""; - line-height: 0; -} -.form-horizontal .control-group:after { - clear: both; -} -.form-horizontal .control-label { - float: left; - width: 160px; - padding-top: 5px; - text-align: right; -} -.form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; - margin-left: 180px; - *margin-left: 0; -} -.form-horizontal .controls:first-child { - *padding-left: 180px; -} -.form-horizontal .help-block { - margin-bottom: 0; -} -.form-horizontal input + .help-block, -.form-horizontal select + .help-block, -.form-horizontal textarea + .help-block, -.form-horizontal .uneditable-input + .help-block, -.form-horizontal .input-prepend + .help-block, -.form-horizontal .input-append + .help-block { - margin-top: 10px; -} -.form-horizontal .form-actions { - padding-left: 180px; -} -table { - max-width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; -} -.table { - width: 100%; - margin-bottom: 20px; -} -.table th, -.table td { - padding: 8px; - line-height: 20px; - text-align: left; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table th { - font-weight: bold; -} -.table thead th { - vertical-align: bottom; -} -.table caption + thead tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child th, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child th, -.table thead:first-child tr:first-child td { - border-top: 0; -} -.table tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #eee; -} -.table-condensed th, -.table-condensed td { - padding: 4px 5px; -} -.table-bordered { - border: 1px solid #ddd; - border-collapse: separate; - *border-collapse: collapse; - border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.table-bordered th, -.table-bordered td { - border-left: 1px solid #ddd; -} -.table-bordered caption + thead tr:first-child th, -.table-bordered caption + tbody tr:first-child th, -.table-bordered caption + tbody tr:first-child td, -.table-bordered colgroup + thead tr:first-child th, -.table-bordered colgroup + tbody tr:first-child th, -.table-bordered colgroup + tbody tr:first-child td, -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { - border-top: 0; -} -.table-bordered thead:first-child tr:first-child > th:first-child, -.table-bordered tbody:first-child tr:first-child > td:first-child, -.table-bordered tbody:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered thead:first-child tr:first-child > th:last-child, -.table-bordered tbody:first-child tr:first-child > td:last-child, -.table-bordered tbody:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:first-child, -.table-bordered tbody:last-child tr:last-child > td:first-child, -.table-bordered tbody:last-child tr:last-child > th:first-child, -.table-bordered tfoot:last-child tr:last-child > td:first-child, -.table-bordered tfoot:last-child tr:last-child > th:first-child { - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:last-child, -.table-bordered tbody:last-child tr:last-child > td:last-child, -.table-bordered tbody:last-child tr:last-child > th:last-child, -.table-bordered tfoot:last-child tr:last-child > td:last-child, -.table-bordered tfoot:last-child tr:last-child > th:last-child { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomright: 0; - border-bottom-right-radius: 0; -} -.table-bordered caption + thead tr:first-child th:first-child, -.table-bordered caption + tbody tr:first-child td:first-child, -.table-bordered colgroup + thead tr:first-child th:first-child, -.table-bordered colgroup + tbody tr:first-child td:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered caption + thead tr:first-child th:last-child, -.table-bordered caption + tbody tr:first-child td:last-child, -.table-bordered colgroup + thead tr:first-child th:last-child, -.table-bordered colgroup + tbody tr:first-child td:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-striped tbody > tr:nth-child(odd) > td, -.table-striped tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.table-hover tbody tr:hover > td, -.table-hover tbody tr:hover > th { - background-color: #f5f5f5; -} -table td[class*="span"], -table th[class*="span"], -.row-fluid table td[class*="span"], -.row-fluid table th[class*="span"] { - display: table-cell; - float: none; - margin-left: 0; -} -.table td.span1, -.table th.span1 { - float: none; - width: 44px; - margin-left: 0; -} -.table td.span2, -.table th.span2 { - float: none; - width: 124px; - margin-left: 0; -} -.table td.span3, -.table th.span3 { - float: none; - width: 204px; - margin-left: 0; -} -.table td.span4, -.table th.span4 { - float: none; - width: 284px; - margin-left: 0; -} -.table td.span5, -.table th.span5 { - float: none; - width: 364px; - margin-left: 0; -} -.table td.span6, -.table th.span6 { - float: none; - width: 444px; - margin-left: 0; -} -.table td.span7, -.table th.span7 { - float: none; - width: 524px; - margin-left: 0; -} -.table td.span8, -.table th.span8 { - float: none; - width: 604px; - margin-left: 0; -} -.table td.span9, -.table th.span9 { - float: none; - width: 684px; - margin-left: 0; -} -.table td.span10, -.table th.span10 { - float: none; - width: 764px; - margin-left: 0; -} -.table td.span11, -.table th.span11 { - float: none; - width: 844px; - margin-left: 0; -} -.table td.span12, -.table th.span12 { - float: none; - width: 924px; - margin-left: 0; -} -.table tbody tr.success > td { - background-color: #dff0d8; -} -.table tbody tr.error > td { - background-color: #f8f0f0; -} -.table tbody tr.warning > td { - background-color: #fcf8e3; -} -.table tbody tr.info > td { - background-color: #d9edf7; -} -.table-hover tbody tr.success:hover > td { - background-color: #d0e9c6; -} -.table-hover tbody tr.error:hover > td { - background-color: #f0dfe0; -} -.table-hover tbody tr.warning:hover > td { - background-color: #faf2cc; -} -.table-hover tbody tr.info:hover > td { - background-color: #c4e3f3; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle { - *margin-bottom: -3px; -} -.dropdown-toggle:active, -.open .dropdown-toggle { - outline: 0; -} -.caret { - display: inline-block; - width: 0; - height: 0; - vertical-align: top; - border-top: 4px solid #000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - content: ""; -} -.dropdown .caret { - margin-top: 8px; - margin-left: 2px; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 20px; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus, -.dropdown-submenu:hover > a, -.dropdown-submenu:focus > a { - text-decoration: none; - color: #fff; - background-color: #2d9342; - background-image: -moz-linear-gradient(top, #2F9B45, #29873c); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2F9B45), to(#29873c)); - background-image: -webkit-linear-gradient(top, #2F9B45, #29873c); - background-image: -o-linear-gradient(top, #2F9B45, #29873c); - background-image: linear-gradient(to bottom, #2F9B45, #29873c); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f9b45', endColorstr='#ff29873c', GradientType=0); -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #2d9342; - background-image: -moz-linear-gradient(top, #2F9B45, #29873c); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2F9B45), to(#29873c)); - background-image: -webkit-linear-gradient(top, #2F9B45, #29873c); - background-image: -o-linear-gradient(top, #2F9B45, #29873c); - background-image: linear-gradient(to bottom, #2F9B45, #29873c); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f9b45', endColorstr='#ff29873c', GradientType=0); -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: default; -} -.open { - *z-index: 1000; -} -.open > .dropdown-menu { - display: block; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid #000; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -.dropdown-submenu { - position: relative; -} -.dropdown-submenu > .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} -.dropdown-submenu:hover > .dropdown-menu { - display: block; -} -.dropup .dropdown-submenu > .dropdown-menu { - top: auto; - bottom: 0; - margin-top: 0; - margin-bottom: -2px; - -webkit-border-radius: 5px 5px 5px 0; - -moz-border-radius: 5px 5px 5px 0; - border-radius: 5px 5px 5px 0; -} -.dropdown-submenu > a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} -.dropdown-submenu:hover > a:after { - border-left-color: #fff; -} -.dropdown-submenu.pull-left { - float: none; -} -.dropdown-submenu.pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.dropdown .dropdown-menu .nav-header { - padding-left: 20px; - padding-right: 20px; -} -.typeahead { - z-index: 1051; - margin-top: 2px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-large { - padding: 24px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.well-small { - padding: 9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} -.collapse.in { - height: auto; -} -.close { - float: right; - font-size: 20px; - font-weight: bold; - line-height: 20px; - color: #000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.btn { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding: 4px 12px; - margin-bottom: 0; - font-size: 14px; - line-height: 20px; - text-align: center; - vertical-align: middle; - cursor: pointer; - color: #333; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #ffffff, #eaeaea); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#eaeaea)); - background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea); - background-image: -o-linear-gradient(top, #ffffff, #eaeaea); - background-image: linear-gradient(to bottom, #ffffff, #eaeaea); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeaeaea', GradientType=0); - border-color: #eaeaea #eaeaea #c4c4c4; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #eaeaea; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border: 1px solid #ccc; - *border: 0; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *margin-left: .3em; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -} -.btn:hover, -.btn:focus, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - color: #333; - background-color: #eaeaea; - *background-color: #dddddd; -} -.btn:active, -.btn.active { - background-color: #d1d1d1 \9; -} -.btn:first-child { - *margin-left: 0; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn.active, -.btn:active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn.disabled, -.btn[disabled] { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-large { - padding: 11px 19px; - font-size: 17.5px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.btn-large [class^="icon-"], -.btn-large [class*=" icon-"] { - margin-top: 4px; -} -.btn-small { - padding: 2px 10px; - font-size: 11.9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-small [class^="icon-"], -.btn-small [class*=" icon-"] { - margin-top: 0; -} -.btn-mini [class^="icon-"], -.btn-mini [class*=" icon-"] { - margin-top: -1px; -} -.btn-mini { - padding: 0 6px; - font-size: 10.5px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} -.btn-primary { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #36b24f; - background-image: -moz-linear-gradient(top, #3bc256, #2F9B45); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3bc256), to(#2F9B45)); - background-image: -webkit-linear-gradient(top, #3bc256, #2F9B45); - background-image: -o-linear-gradient(top, #3bc256, #2F9B45); - background-image: linear-gradient(to bottom, #3bc256, #2F9B45); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3bc256', endColorstr='#ff2f9b45', GradientType=0); - border-color: #2F9B45 #2F9B45 #1d602b; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #2F9B45; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - color: #fff; - background-color: #2F9B45; - *background-color: #29873c; -} -.btn-primary:active, -.btn-primary.active { - background-color: #237434 \9; -} -.btn-warning { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #f89406; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - color: #fff; - background-color: #f89406; - *background-color: #df8505; -} -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} -.btn-danger { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #da4f49; - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #bd362f; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - color: #fff; - background-color: #bd362f; - *background-color: #a9302a; -} -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} -.btn-success { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #5bb75b; - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(to bottom, #62c462, #51a351); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #51a351; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - color: #fff; - background-color: #51a351; - *background-color: #499249; -} -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} -.btn-info { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #49afcd; - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #2f96b4; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - color: #fff; - background-color: #2f96b4; - *background-color: #2a85a0; -} -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} -.btn-inverse { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #363636; - background-image: -moz-linear-gradient(top, #444, #222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444), to(#222)); - background-image: -webkit-linear-gradient(top, #444, #222); - background-image: -o-linear-gradient(top, #444, #222); - background-image: linear-gradient(to bottom, #444, #222); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); - border-color: #222 #222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #222; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-inverse:hover, -.btn-inverse:focus, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - color: #fff; - background-color: #222; - *background-color: #151515; -} -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} -button.btn, -input[type="submit"].btn { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn::-moz-focus-inner, -input[type="submit"].btn::-moz-focus-inner { - padding: 0; - border: 0; -} -button.btn.btn-large, -input[type="submit"].btn.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; -} -button.btn.btn-small, -input[type="submit"].btn.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn.btn-mini, -input[type="submit"].btn.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; -} -.btn-link, -.btn-link:active, -.btn-link[disabled] { - background-color: transparent; - background-image: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-link { - border-color: transparent; - cursor: pointer; - color: #2F9B45; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-link:hover, -.btn-link:focus { - color: #1d602b; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -.btn-link[disabled]:focus { - color: #333; - text-decoration: none; -} -.btn-group { - position: relative; - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - font-size: 0; - vertical-align: middle; - white-space: nowrap; - *margin-left: .3em; -} -.btn-group:first-child { - *margin-left: 0; -} -.btn-group + .btn-group { - margin-left: 5px; -} -.btn-toolbar { - font-size: 0; - margin-top: 10px; - margin-bottom: 10px; -} -.btn-toolbar > .btn + .btn, -.btn-toolbar > .btn-group + .btn, -.btn-toolbar > .btn + .btn-group { - margin-left: 5px; -} -.btn-group > .btn { - position: relative; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group > .btn + .btn { - margin-left: -1px; -} -.btn-group > .btn, -.btn-group > .dropdown-menu, -.btn-group > .popover { - font-size: 14px; -} -.btn-group > .btn-mini { - font-size: 10.5px; -} -.btn-group > .btn-small { - font-size: 11.9px; -} -.btn-group > .btn-large { - font-size: 17.5px; -} -.btn-group > .btn:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.btn-group > .btn:last-child, -.btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.btn-group > .btn.large:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.btn-group > .btn.large:last-child, -.btn-group > .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active { - z-index: 2; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - *padding-top: 5px; - *padding-bottom: 5px; -} -.btn-group > .btn-mini + .dropdown-toggle { - padding-left: 5px; - padding-right: 5px; - *padding-top: 2px; - *padding-bottom: 2px; -} -.btn-group > .btn-small + .dropdown-toggle { - *padding-top: 5px; - *padding-bottom: 4px; -} -.btn-group > .btn-large + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; - *padding-top: 7px; - *padding-bottom: 7px; -} -.btn-group.open .dropdown-toggle { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn-group.open .btn.dropdown-toggle { - background-color: #eaeaea; -} -.btn-group.open .btn-primary.dropdown-toggle { - background-color: #2F9B45; -} -.btn-group.open .btn-warning.dropdown-toggle { - background-color: #f89406; -} -.btn-group.open .btn-danger.dropdown-toggle { - background-color: #bd362f; -} -.btn-group.open .btn-success.dropdown-toggle { - background-color: #51a351; -} -.btn-group.open .btn-info.dropdown-toggle { - background-color: #2f96b4; -} -.btn-group.open .btn-inverse.dropdown-toggle { - background-color: #222; -} -.btn .caret { - margin-top: 8px; - margin-left: 0; -} -.btn-large .caret { - margin-top: 6px; -} -.btn-large .caret { - border-left-width: 5px; - border-right-width: 5px; - border-top-width: 5px; -} -.btn-mini .caret, -.btn-small .caret { - margin-top: 8px; -} -.dropup .btn-large .caret { - border-bottom-width: 5px; -} -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.btn-group-vertical { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.btn-group-vertical > .btn { - display: block; - float: none; - max-width: 100%; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group-vertical > .btn + .btn { - margin-left: 0; - margin-top: -1px; -} -.btn-group-vertical > .btn:first-child { - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.btn-group-vertical > .btn:last-child { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.btn-group-vertical > .btn-large:first-child { - -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; -} -.btn-group-vertical > .btn-large:last-child { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.alert { - padding: 8px 35px 8px 14px; - margin-bottom: 20px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - background-color: #fcf8e3; - border: 1px solid #fbeed5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.alert, -.alert h4 { - color: #c09853; -} -.alert h4 { - margin: 0; -} -.alert .close { - position: relative; - top: -2px; - right: -21px; - line-height: 20px; -} -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #468847; -} -.alert-success h4 { - color: #468847; -} -.alert-danger, -.alert-error { - background-color: #f8f0f0; - border-color: #c6898b; - color: #b55457; -} -.alert-danger h4, -.alert-error h4 { - color: #b55457; -} -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #3a87ad; -} -.alert-info h4 { - color: #3a87ad; -} -.alert-block { - padding-top: 14px; - padding-bottom: 14px; -} -.alert-block > p, -.alert-block > ul { - margin-bottom: 0; -} -.alert-block p + p { - margin-top: 5px; -} -.nav { - margin-left: 0; - margin-bottom: 20px; - list-style: none; -} -.nav > li > a { - display: block; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li > a > img { - max-width: none; -} -.nav > .pull-right { - float: right; -} -.nav-header { - display: block; - padding: 3px 15px; - font-size: 11px; - font-weight: bold; - line-height: 20px; - color: #999; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-transform: uppercase; -} -.nav li + .nav-header { - margin-top: 9px; -} -.nav-list { - padding-left: 15px; - padding-right: 15px; - margin-bottom: 0; -} -.nav-list > li > a, -.nav-list .nav-header { - margin-left: -15px; - margin-right: -15px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.nav-list > li > a { - padding: 3px 15px; -} -.nav-list > .active > a, -.nav-list > .active > a:hover, -.nav-list > .active > a:focus { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - background-color: #2F9B45; -} -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - margin-right: 2px; -} -.nav-list .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.nav-tabs, -.nav-pills { - *zoom: 1; -} -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; - content: ""; - line-height: 0; -} -.nav-tabs:after, -.nav-pills:after { - clear: both; -} -.nav-tabs > li, -.nav-pills > li { - float: left; -} -.nav-tabs > li > a, -.nav-pills > li > a { - padding-right: 12px; - padding-left: 12px; - margin-right: 2px; - line-height: 14px; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - margin-bottom: -1px; -} -.nav-tabs > li > a { - padding-top: 8px; - padding-bottom: 8px; - line-height: 20px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - border-color: #eee #eee #ddd; -} -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover, -.nav-tabs > .active > a:focus { - color: #555; - background-color: #eee; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-pills > li > a { - padding-top: 8px; - padding-bottom: 8px; - margin-top: 2px; - margin-bottom: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-pills > .active > a, -.nav-pills > .active > a:hover, -.nav-pills > .active > a:focus { - color: #fff; - background-color: #2F9B45; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li > a { - margin-right: 0; -} -.nav-tabs.nav-stacked { - border-bottom: 0; -} -.nav-tabs.nav-stacked > li > a { - border: 1px solid #ddd; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.nav-tabs.nav-stacked > li:first-child > a { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.nav-tabs.nav-stacked > li:last-child > a { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.nav-tabs.nav-stacked > li > a:hover, -.nav-tabs.nav-stacked > li > a:focus { - border-color: #ddd; - z-index: 2; -} -.nav-pills.nav-stacked > li > a { - margin-bottom: 3px; -} -.nav-pills.nav-stacked > li:last-child > a { - margin-bottom: 1px; -} -.nav-tabs .dropdown-menu { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.nav-pills .dropdown-menu { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.nav .dropdown-toggle .caret { - border-top-color: #2F9B45; - border-bottom-color: #2F9B45; - margin-top: 6px; -} -.nav .dropdown-toggle:hover .caret, -.nav .dropdown-toggle:focus .caret { - border-top-color: #1d602b; - border-bottom-color: #1d602b; -} -/* move down carets for tabs */ -.nav-tabs .dropdown-toggle .caret { - margin-top: 8px; -} -.nav .active .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.nav-tabs .active .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.nav > .dropdown.active > a:hover, -.nav > .dropdown.active > a:focus { - cursor: pointer; -} -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover, -.nav > li.dropdown.open.active > a:focus { - color: #fff; - background-color: #999; - border-color: #999; -} -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret, -.nav li.dropdown.open a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; - opacity: 1; - filter: alpha(opacity=100); -} -.tabs-stacked .open > a:hover, -.tabs-stacked .open > a:focus { - border-color: #999; -} -.tabbable { - *zoom: 1; -} -.tabbable:before, -.tabbable:after { - display: table; - content: ""; - line-height: 0; -} -.tabbable:after { - clear: both; -} -.tab-content { - overflow: auto; -} -.tabs-below > .nav-tabs, -.tabs-right > .nav-tabs, -.tabs-left > .nav-tabs { - border-bottom: 0; -} -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} -.tab-content > .active, -.pill-content > .active { - display: block; -} -.tabs-below > .nav-tabs { - border-top: 1px solid #ddd; -} -.tabs-below > .nav-tabs > li { - margin-top: -1px; - margin-bottom: 0; -} -.tabs-below > .nav-tabs > li > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.tabs-below > .nav-tabs > li > a:hover, -.tabs-below > .nav-tabs > li > a:focus { - border-bottom-color: transparent; - border-top-color: #ddd; -} -.tabs-below > .nav-tabs > .active > a, -.tabs-below > .nav-tabs > .active > a:hover, -.tabs-below > .nav-tabs > .active > a:focus { - border-color: transparent #ddd #ddd #ddd; -} -.tabs-left > .nav-tabs > li, -.tabs-right > .nav-tabs > li { - float: none; -} -.tabs-left > .nav-tabs > li > a, -.tabs-right > .nav-tabs > li > a { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; -} -.tabs-left > .nav-tabs { - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} -.tabs-left > .nav-tabs > li > a { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} -.tabs-left > .nav-tabs > li > a:hover, -.tabs-left > .nav-tabs > li > a:focus { - border-color: #eee #ddd #eee #eee; -} -.tabs-left > .nav-tabs .active > a, -.tabs-left > .nav-tabs .active > a:hover, -.tabs-left > .nav-tabs .active > a:focus { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #fff; -} -.tabs-right > .nav-tabs { - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} -.tabs-right > .nav-tabs > li > a { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} -.tabs-right > .nav-tabs > li > a:hover, -.tabs-right > .nav-tabs > li > a:focus { - border-color: #eee #eee #eee #ddd; -} -.tabs-right > .nav-tabs .active > a, -.tabs-right > .nav-tabs .active > a:hover, -.tabs-right > .nav-tabs .active > a:focus { - border-color: #ddd #ddd #ddd transparent; - *border-left-color: #fff; -} -.nav > .disabled > a { - color: #999; -} -.nav > .disabled > a:hover, -.nav > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - cursor: default; -} -.navbar { - overflow: visible; - margin-bottom: 20px; - *position: relative; - *z-index: 2; -} -.navbar-inner { - min-height: 40px; - padding-left: 20px; - padding-right: 20px; - background-color: #fafafa; - background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); - background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); - background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - border: 1px solid #d4d4d4; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - *zoom: 1; -} -.navbar-inner:before, -.navbar-inner:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-inner:after { - clear: both; -} -.navbar .container { - width: auto; -} -.nav-collapse.collapse { - height: auto; - overflow: visible; -} -.navbar .brand { - float: left; - display: block; - padding: 10px 20px 10px; - margin-left: -20px; - font-size: 20px; - font-weight: 200; - color: #777; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .brand:hover, -.navbar .brand:focus { - text-decoration: none; -} -.navbar-text { - margin-bottom: 0; - line-height: 40px; - color: #777; -} -.navbar-link { - color: #777; -} -.navbar-link:hover, -.navbar-link:focus { - color: #333; -} -.navbar .divider-vertical { - height: 40px; - margin: 0 9px; - border-left: 1px solid #f2f2f2; - border-right: 1px solid #ffffff; -} -.navbar .btn, -.navbar .btn-group { - margin-top: 5px; -} -.navbar .btn-group .btn, -.navbar .input-prepend .btn, -.navbar .input-append .btn, -.navbar .input-prepend .btn-group, -.navbar .input-append .btn-group { - margin-top: 0; -} -.navbar-form { - margin-bottom: 0; - *zoom: 1; -} -.navbar-form:before, -.navbar-form:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-form:after { - clear: both; -} -.navbar-form input, -.navbar-form select, -.navbar-form .radio, -.navbar-form .checkbox { - margin-top: 5px; -} -.navbar-form input, -.navbar-form select, -.navbar-form .btn { - display: inline-block; - margin-bottom: 0; -} -.navbar-form input[type="image"], -.navbar-form input[type="checkbox"], -.navbar-form input[type="radio"] { - margin-top: 3px; -} -.navbar-form .input-append, -.navbar-form .input-prepend { - margin-top: 5px; - white-space: nowrap; -} -.navbar-form .input-append input, -.navbar-form .input-prepend input { - margin-top: 0; -} -.navbar-search { - position: relative; - float: left; - margin-top: 5px; - margin-bottom: 0; -} -.navbar-search .search-query { - margin-bottom: 0; - padding: 4px 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 1; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.navbar-static-top { - position: static; - margin-bottom: 0; -} -.navbar-static-top .navbar-inner { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; - margin-bottom: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - border-width: 0 0 1px; -} -.navbar-fixed-bottom .navbar-inner { - border-width: 1px 0 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-left: 0; - padding-right: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; - width: 100%; - *width: 99.94680851%; - width: 926px; -} -.navbar-fixed-top { - top: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); - box-shadow: 0 1px 10px rgba(0,0,0,.1); -} -.navbar-fixed-bottom { - bottom: 0; -} -.navbar-fixed-bottom .navbar-inner { - -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - box-shadow: 0 -1px 10px rgba(0,0,0,.1); -} -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} -.navbar .nav.pull-right { - float: right; - margin-right: 0; -} -.navbar .nav > li { - float: left; -} -.navbar .nav > li > a { - float: none; - padding: 10px 15px 10px; - color: #777; - text-decoration: none; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .nav .dropdown-toggle .caret { - margin-top: 8px; -} -.navbar .nav > li > a:focus, -.navbar .nav > li > a:hover { - background-color: transparent; - color: #333; - text-decoration: none; -} -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: #555; - text-decoration: none; - background-color: #e5e5e5; - -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -} -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-left: 5px; - margin-right: 5px; - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ededed; - background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); - background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); - border-color: #e5e5e5 #e5e5e5 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #e5e5e5; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -} -.navbar .btn-navbar:hover, -.navbar .btn-navbar:focus, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - color: #fff; - background-color: #e5e5e5; - *background-color: #d9d9d9; -} -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #cccccc \9; -} -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -} -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} -.navbar .nav > li > .dropdown-menu:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; - top: -7px; - left: 9px; -} -.navbar .nav > li > .dropdown-menu:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - position: absolute; - top: -6px; - left: 10px; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:before { - border-top: 7px solid #ccc; - border-top-color: rgba(0, 0, 0, 0.2); - border-bottom: 0; - bottom: -7px; - top: auto; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:after { - border-top: 6px solid #fff; - border-bottom: 0; - bottom: -6px; - top: auto; -} -.navbar .nav li.dropdown > a:hover .caret, -.navbar .nav li.dropdown > a:focus .caret { - border-top-color: #333; - border-bottom-color: #333; -} -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #e5e5e5; - color: #555; -} -.navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #777; - border-bottom-color: #777; -} -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.navbar .pull-right > li > .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right { - left: auto; - right: 0; -} -.navbar .pull-right > li > .dropdown-menu:before, -.navbar .nav > li > .dropdown-menu.pull-right:before { - left: auto; - right: 12px; -} -.navbar .pull-right > li > .dropdown-menu:after, -.navbar .nav > li > .dropdown-menu.pull-right:after { - left: auto; - right: 13px; -} -.navbar .pull-right > li > .dropdown-menu .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { - left: auto; - right: 100%; - margin-left: 0; - margin-right: -1px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.navbar-inverse .navbar-inner { - background-color: #1b1b1b; - background-image: -moz-linear-gradient(top, #222222, #111111); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); - background-image: -webkit-linear-gradient(top, #222222, #111111); - background-image: -o-linear-gradient(top, #222222, #111111); - background-image: linear-gradient(to bottom, #222222, #111111); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); - border-color: #252525; -} -.navbar-inverse .brand, -.navbar-inverse .nav > li > a { - color: #999; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.navbar-inverse .brand:hover, -.navbar-inverse .nav > li > a:hover, -.navbar-inverse .brand:focus, -.navbar-inverse .nav > li > a:focus { - color: #fff; -} -.navbar-inverse .brand { - color: #999; -} -.navbar-inverse .navbar-text { - color: #999; -} -.navbar-inverse .nav > li > a:focus, -.navbar-inverse .nav > li > a:hover { - background-color: transparent; - color: #fff; -} -.navbar-inverse .nav .active > a, -.navbar-inverse .nav .active > a:hover, -.navbar-inverse .nav .active > a:focus { - color: #fff; - background-color: #111111; -} -.navbar-inverse .navbar-link { - color: #999; -} -.navbar-inverse .navbar-link:hover, -.navbar-inverse .navbar-link:focus { - color: #fff; -} -.navbar-inverse .divider-vertical { - border-left-color: #111111; - border-right-color: #222222; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #111111; - color: #fff; -} -.navbar-inverse .nav li.dropdown > a:hover .caret, -.navbar-inverse .nav li.dropdown > a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #999; - border-bottom-color: #999; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .navbar-search .search-query { - color: #fff; - background-color: #515151; - border-color: #111111; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} -.navbar-inverse .navbar-search .search-query:-moz-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:focus, -.navbar-inverse .navbar-search .search-query.focused { - padding: 5px 15px; - color: #333; - text-shadow: 0 1px 0 #fff; - background-color: #fff; - border: 0; - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - outline: 0; -} -.navbar-inverse .btn-navbar { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e0e0e; - background-image: -moz-linear-gradient(top, #151515, #040404); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); - background-image: -webkit-linear-gradient(top, #151515, #040404); - background-image: -o-linear-gradient(top, #151515, #040404); - background-image: linear-gradient(to bottom, #151515, #040404); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); - border-color: #040404 #040404 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #040404; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.navbar-inverse .btn-navbar:hover, -.navbar-inverse .btn-navbar:focus, -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active, -.navbar-inverse .btn-navbar.disabled, -.navbar-inverse .btn-navbar[disabled] { - color: #fff; - background-color: #040404; - *background-color: #000000; -} -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active { - background-color: #000000 \9; -} -.breadcrumb { - padding: 8px 15px; - margin: 0 0 20px; - list-style: none; - background-color: #f5f5f5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - text-shadow: 0 1px 0 #fff; -} -.breadcrumb > li > .divider { - padding: 0 5px; - color: #ccc; -} -.breadcrumb > .active { - color: #999; -} -.pagination { - margin: 20px 0; -} -.pagination ul { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-left: 0; - margin-bottom: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -} -.pagination ul > li { - display: inline; -} -.pagination ul > li > a, -.pagination ul > li > span { - float: left; - padding: 4px 12px; - line-height: 20px; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; - border-left-width: 0; -} -.pagination ul > li > a:hover, -.pagination ul > li > a:focus, -.pagination ul > .active > a, -.pagination ul > .active > span { - background-color: #f5f5f5; -} -.pagination ul > .active > a, -.pagination ul > .active > span { - color: #999; - cursor: default; -} -.pagination ul > .disabled > span, -.pagination ul > .disabled > a, -.pagination ul > .disabled > a:hover, -.pagination ul > .disabled > a:focus { - color: #999; - background-color: transparent; - cursor: default; -} -.pagination ul > li:first-child > a, -.pagination ul > li:first-child > span { - border-left-width: 1px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.pagination ul > li:last-child > a, -.pagination ul > li:last-child > span { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.pagination-centered { - text-align: center; -} -.pagination-right { - text-align: right; -} -.pagination-large ul > li > a, -.pagination-large ul > li > span { - padding: 11px 19px; - font-size: 17.5px; -} -.pagination-large ul > li:first-child > a, -.pagination-large ul > li:first-child > span { - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.pagination-large ul > li:last-child > a, -.pagination-large ul > li:last-child > span { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.pagination-mini ul > li:first-child > a, -.pagination-small ul > li:first-child > a, -.pagination-mini ul > li:first-child > span, -.pagination-small ul > li:first-child > span { - -webkit-border-top-left-radius: 3px; - -moz-border-radius-topleft: 3px; - border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - border-bottom-left-radius: 3px; -} -.pagination-mini ul > li:last-child > a, -.pagination-small ul > li:last-child > a, -.pagination-mini ul > li:last-child > span, -.pagination-small ul > li:last-child > span { - -webkit-border-top-right-radius: 3px; - -moz-border-radius-topright: 3px; - border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - border-bottom-right-radius: 3px; -} -.pagination-small ul > li > a, -.pagination-small ul > li > span { - padding: 2px 10px; - font-size: 11.9px; -} -.pagination-mini ul > li > a, -.pagination-mini ul > li > span { - padding: 0 6px; - font-size: 10.5px; -} -.pager { - margin: 20px 0; - list-style: none; - text-align: center; - *zoom: 1; -} -.pager:before, -.pager:after { - display: table; - content: ""; - line-height: 0; -} -.pager:after { - clear: both; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #f5f5f5; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999; - background-color: #fff; - cursor: default; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop, -.modal-backdrop.fade.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.modal { - position: fixed; - top: 10%; - left: 50%; - z-index: 1050; - width: 560px; - margin-left: -280px; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.3); - *border: 1px solid #999; - /* IE6-7 */ - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; - outline: none; -} -.modal.fade { - -webkit-transition: opacity .3s linear, top .3s ease-out; - -moz-transition: opacity .3s linear, top .3s ease-out; - -o-transition: opacity .3s linear, top .3s ease-out; - transition: opacity .3s linear, top .3s ease-out; - top: -25%; -} -.modal.fade.in { - top: 10%; -} -.modal-header { - padding: 9px 15px; - border-bottom: 1px solid #eee; -} -.modal-header .close { - margin-top: 2px; -} -.modal-header h3 { - margin: 0; - line-height: 30px; -} -.modal-body { - position: relative; - overflow-y: auto; - max-height: 400px; - padding: 15px; -} -.modal-form { - margin-bottom: 0; -} -.modal-footer { - padding: 14px 15px 15px; - margin-bottom: 0; - text-align: right; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - -webkit-box-shadow: inset 0 1px 0 #fff; - -moz-box-shadow: inset 0 1px 0 #fff; - box-shadow: inset 0 1px 0 #fff; - *zoom: 1; -} -.modal-footer:before, -.modal-footer:after { - display: table; - content: ""; - line-height: 0; -} -.modal-footer:after { - clear: both; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - visibility: visible; - font-size: 11px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.thumbnails { - margin-left: -20px; - list-style: none; - *zoom: 1; -} -.thumbnails:before, -.thumbnails:after { - display: table; - content: ""; - line-height: 0; -} -.thumbnails:after { - clear: both; -} -.row-fluid .thumbnails { - margin-left: 0; -} -.thumbnails > li { - float: left; - margin-bottom: 20px; - margin-left: 20px; -} -.thumbnail { - display: block; - padding: 4px; - line-height: 20px; - border: 1px solid #ddd; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -a.thumbnail:hover, -a.thumbnail:focus { - border-color: #2F9B45; - -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -} -.thumbnail > img { - display: block; - max-width: 100%; - margin-left: auto; - margin-right: auto; -} -.thumbnail .caption { - padding: 9px; - color: #555; -} -.label, -.badge { - display: inline-block; - padding: 2px 4px; - font-size: 11.844px; - font-weight: bold; - line-height: 14px; - color: #fff; - vertical-align: baseline; - white-space: nowrap; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #999; -} -.label { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.badge { - padding-left: 9px; - padding-right: 9px; - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} -.label:empty, -.badge:empty { - display: none; -} -a.label:hover, -a.label:focus, -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-important, -.badge-important { - background-color: #b55457; -} -.label-important[href], -.badge-important[href] { - background-color: #954143; -} -.label-warning, -.badge-warning { - background-color: #f89406; -} -.label-warning[href], -.badge-warning[href] { - background-color: #c67605; -} -.label-success, -.badge-success { - background-color: #468847; -} -.label-success[href], -.badge-success[href] { - background-color: #356635; -} -.label-info, -.badge-info { - background-color: #3a87ad; -} -.label-info[href], -.badge-info[href] { - background-color: #2d6987; -} -.label-inverse, -.badge-inverse { - background-color: #333; -} -.label-inverse[href], -.badge-inverse[href] { - background-color: #1a1a1a; -} -.btn .label, -.btn .badge { - position: relative; - top: -1px; -} -.btn-mini .label, -.btn-mini .badge { - top: 0; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-ms-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.progress .bar { - width: 0%; - height: 100%; - color: #fff; - float: left; - font-size: 12px; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e90d2; - background-image: -moz-linear-gradient(top, #149bdf, #0480be); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); - background-image: -webkit-linear-gradient(top, #149bdf, #0480be); - background-image: -o-linear-gradient(top, #149bdf, #0480be); - background-image: linear-gradient(to bottom, #149bdf, #0480be); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress .bar + .bar { - -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -} -.progress-striped .bar { - background-color: #149bdf; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-danger .bar, -.progress .bar-danger { - background-color: #dd514c; - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); -} -.progress-danger.progress-striped .bar, -.progress-striped .bar-danger { - background-color: #ee5f5b; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-success .bar, -.progress .bar-success { - background-color: #5eb95e; - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(to bottom, #62c462, #57a957); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); -} -.progress-success.progress-striped .bar, -.progress-striped .bar-success { - background-color: #62c462; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-info .bar, -.progress .bar-info { - background-color: #4bb1cf; - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); -} -.progress-info.progress-striped .bar, -.progress-striped .bar-info { - background-color: #5bc0de; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-warning .bar, -.progress .bar-warning { - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); -} -.progress-warning.progress-striped .bar, -.progress-striped .bar-warning { - background-color: #fbb450; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.accordion { - margin-bottom: 20px; -} -.accordion-group { - margin-bottom: 2px; - border: 1px solid #e5e5e5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.accordion-heading { - border-bottom: 0; -} -.accordion-heading .accordion-toggle { - display: block; - padding: 8px 15px; -} -.accordion-toggle { - cursor: pointer; -} -.accordion-inner { - padding: 9px 15px; - border-top: 1px solid #e5e5e5; -} -.carousel { - position: relative; - margin-bottom: 20px; - line-height: 1; -} -.carousel-inner { - overflow: hidden; - width: 100%; - position: relative; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 40%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -20px; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #fff; - text-align: center; - background: #222; - border: 3px solid #fff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - filter: alpha(opacity=50); -} -.carousel-control.right { - left: auto; - right: 15px; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-indicators { - position: absolute; - top: 15px; - right: 15px; - z-index: 5; - margin: 0; - list-style: none; -} -.carousel-indicators li { - display: block; - float: left; - width: 10px; - height: 10px; - margin-left: 5px; - text-indent: -999px; - background-color: #ccc; - background-color: rgba(255, 255, 255, 0.25); - border-radius: 5px; -} -.carousel-indicators .active { - background-color: #fff; -} -.carousel-caption { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 15px; - background: #333; - background: rgba(0, 0, 0, 0.75); -} -.carousel-caption h4, -.carousel-caption p { - color: #fff; - line-height: 20px; -} -.carousel-caption h4 { - margin: 0 0 5px; -} -.carousel-caption p { - margin-bottom: 0; -} -.hero-unit { - padding: 60px; - margin-bottom: 30px; - font-size: 18px; - font-weight: 200; - line-height: 30px; - color: inherit; - background-color: #eee; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.hero-unit h1 { - margin-bottom: 0; - font-size: 60px; - line-height: 1; - color: inherit; - letter-spacing: -1px; -} -.hero-unit li { - line-height: 30px; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - background-color: #fff; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.popover-title:empty { - display: none; -} -.popover-content { - padding: 9px 14px; -} -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover .arrow { - border-width: 11px; -} -.popover .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #fff; -} -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right .arrow:after { - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; -} -.popover.bottom .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left .arrow:after { - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.hide { - display: none; -} -.show { - display: block; -} -.invisible { - visibility: hidden; -} -.affix { - position: fixed; -} -/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ -@-ms-viewport { - width: device-width; -} -.hidden { - display: none; - visibility: hidden; -} -.visible-phone { - display: none !important; -} -.visible-tablet { - display: none !important; -} -.hidden-desktop { - display: none !important; -} -.visible-desktop { - display: inherit !important; -} -@media (min-width: 768px) and (max-width: 979px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important ; - } - .visible-tablet { - display: inherit !important; - } - .hidden-tablet { - display: none !important; - } -} -@media (max-width: 767px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important; - } - .visible-phone { - display: inherit !important; - } - .hidden-phone { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: inherit !important; - } - .hidden-print { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - content: ""; - line-height: 0; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; - } - .span3 { - width: 166px; - } - .span2 { - width: 104px; - } - .span1 { - width: 42px; - } - .offset12 { - margin-left: 764px; - } - .offset11 { - margin-left: 702px; - } - .offset10 { - margin-left: 640px; - } - .offset9 { - margin-left: 578px; - } - .offset8 { - margin-left: 516px; - } - .offset7 { - margin-left: 454px; - } - .offset6 { - margin-left: 392px; - } - .offset5 { - margin-left: 330px; - } - .offset4 { - margin-left: 268px; - } - .offset3 { - margin-left: 206px; - } - .offset2 { - margin-left: 144px; - } - .offset1 { - margin-left: 82px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - content: ""; - line-height: 0; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.76243094%; - *margin-left: 2.70923945%; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.76243094%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851%; - } - .row-fluid .span11 { - width: 91.43646409%; - *width: 91.3832726%; - } - .row-fluid .span10 { - width: 82.87292818%; - *width: 82.81973669%; - } - .row-fluid .span9 { - width: 74.30939227%; - *width: 74.25620078%; - } - .row-fluid .span8 { - width: 65.74585635%; - *width: 65.69266486%; - } - .row-fluid .span7 { - width: 57.18232044%; - *width: 57.12912895%; - } - .row-fluid .span6 { - width: 48.61878453%; - *width: 48.56559304%; - } - .row-fluid .span5 { - width: 40.05524862%; - *width: 40.00205713%; - } - .row-fluid .span4 { - width: 31.49171271%; - *width: 31.43852122%; - } - .row-fluid .span3 { - width: 22.9281768%; - *width: 22.87498531%; - } - .row-fluid .span2 { - width: 14.36464088%; - *width: 14.31144939%; - } - .row-fluid .span1 { - width: 5.80110497%; - *width: 5.74791348%; - } - .row-fluid .offset12 { - margin-left: 105.52486188%; - *margin-left: 105.4184789%; - } - .row-fluid .offset12:first-child { - margin-left: 102.76243094%; - *margin-left: 102.65604796%; - } - .row-fluid .offset11 { - margin-left: 96.96132597%; - *margin-left: 96.85494299%; - } - .row-fluid .offset11:first-child { - margin-left: 94.19889503%; - *margin-left: 94.09251205%; - } - .row-fluid .offset10 { - margin-left: 88.39779006%; - *margin-left: 88.29140708%; - } - .row-fluid .offset10:first-child { - margin-left: 85.63535912%; - *margin-left: 85.52897614%; - } - .row-fluid .offset9 { - margin-left: 79.83425414%; - *margin-left: 79.72787116%; - } - .row-fluid .offset9:first-child { - margin-left: 77.0718232%; - *margin-left: 76.96544023%; - } - .row-fluid .offset8 { - margin-left: 71.27071823%; - *margin-left: 71.16433525%; - } - .row-fluid .offset8:first-child { - margin-left: 68.50828729%; - *margin-left: 68.40190431%; - } - .row-fluid .offset7 { - margin-left: 62.70718232%; - *margin-left: 62.60079934%; - } - .row-fluid .offset7:first-child { - margin-left: 59.94475138%; - *margin-left: 59.8383684%; - } - .row-fluid .offset6 { - margin-left: 54.14364641%; - *margin-left: 54.03726343%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121547%; - *margin-left: 51.27483249%; - } - .row-fluid .offset5 { - margin-left: 45.5801105%; - *margin-left: 45.47372752%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767956%; - *margin-left: 42.71129658%; - } - .row-fluid .offset4 { - margin-left: 37.01657459%; - *margin-left: 36.91019161%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414365%; - *margin-left: 34.14776067%; - } - .row-fluid .offset3 { - margin-left: 28.45303867%; - *margin-left: 28.3466557%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773%; - *margin-left: 25.58422476%; - } - .row-fluid .offset2 { - margin-left: 19.88950276%; - *margin-left: 19.78311978%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182%; - *margin-left: 17.02068884%; - } - .row-fluid .offset1 { - margin-left: 11.32596685%; - *margin-left: 11.21958387%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591%; - *margin-left: 8.45715293%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 710px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 648px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 586px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 524px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 462px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 400px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 338px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 276px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 214px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 152px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 90px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 28px; - } -} -@media (max-width: 767px) { - body { - padding-left: 20px; - padding-right: 20px; - } - .navbar-fixed-top, - .navbar-fixed-bottom, - .navbar-static-top { - margin-left: -20px; - margin-right: -20px; - } - .container-fluid { - padding: 0; - } - .dl-horizontal dt { - float: none; - clear: none; - width: auto; - text-align: left; - } - .dl-horizontal dd { - margin-left: 0; - } - .container { - width: auto; - } - .row-fluid { - width: 100%; - } - .row, - .thumbnails { - margin-left: 0; - } - .thumbnails > li { - float: none; - margin-left: 0; - } - [class*="span"], - .uneditable-input[class*="span"], - .row-fluid [class*="span"] { - float: none; - display: block; - width: 100%; - margin-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .span12, - .row-fluid .span12 { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="offset"]:first-child { - margin-left: 0; - } - .input-large, - .input-xlarge, - .input-xxlarge, - input[class*="span"], - select[class*="span"], - textarea[class*="span"], - .uneditable-input { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .input-prepend input, - .input-append input, - .input-prepend input[class*="span"], - .input-append input[class*="span"] { - display: inline-block; - width: auto; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 0; - } - .modal { - position: fixed; - top: 20px; - left: 20px; - right: 20px; - width: auto; - margin: 0; - } - .modal.fade { - top: -100px; - } - .modal.fade.in { - top: 20px; - } -} -@media (max-width: 480px) { - .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); - } - .page-header h1 small { - display: block; - line-height: 20px; - } - input[type="checkbox"], - input[type="radio"] { - border: 1px solid #ccc; - } - .form-horizontal .control-label { - float: none; - width: auto; - padding-top: 0; - text-align: left; - } - .form-horizontal .controls { - margin-left: 0; - } - .form-horizontal .control-list { - padding-top: 0; - } - .form-horizontal .form-actions { - padding-left: 10px; - padding-right: 10px; - } - .media .pull-left, - .media .pull-right { - float: none; - display: block; - margin-bottom: 10px; - } - .media-object { - margin-right: 0; - margin-left: 0; - } - .modal { - top: 10px; - left: 10px; - right: 10px; - } - .modal-header .close { - padding: 10px; - margin: -10px; - } - .carousel-caption { - position: static; - } -} -@media (max-width: 979px) { - body { - padding-top: 0; - } - .navbar-fixed-top, - .navbar-fixed-bottom { - position: static; - } - .navbar-fixed-top { - margin-bottom: 20px; - } - .navbar-fixed-bottom { - margin-top: 20px; - } - .navbar-fixed-top .navbar-inner, - .navbar-fixed-bottom .navbar-inner { - padding: 5px; - } - .navbar .container { - width: auto; - padding: 0; - } - .navbar .brand { - padding-left: 10px; - padding-right: 10px; - margin: 0 0 0 -5px; - } - .nav-collapse { - clear: both; - } - .nav-collapse .nav { - float: none; - margin: 0 0 10px; - } - .nav-collapse .nav > li { - float: none; - } - .nav-collapse .nav > li > a { - margin-bottom: 2px; - } - .nav-collapse .nav > .divider-vertical { - display: none; - } - .nav-collapse .nav .nav-header { - color: #777; - text-shadow: none; - } - .nav-collapse .nav > li > a, - .nav-collapse .dropdown-menu a { - padding: 9px 15px; - font-weight: bold; - color: #777; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - } - .nav-collapse .btn { - padding: 4px 10px 4px; - font-weight: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .nav-collapse .dropdown-menu li + li a { - margin-bottom: 2px; - } - .nav-collapse .nav > li > a:hover, - .nav-collapse .nav > li > a:focus, - .nav-collapse .dropdown-menu a:hover, - .nav-collapse .dropdown-menu a:focus { - background-color: #f2f2f2; - } - .navbar-inverse .nav-collapse .nav > li > a, - .navbar-inverse .nav-collapse .dropdown-menu a { - color: #999; - } - .navbar-inverse .nav-collapse .nav > li > a:hover, - .navbar-inverse .nav-collapse .nav > li > a:focus, - .navbar-inverse .nav-collapse .dropdown-menu a:hover, - .navbar-inverse .nav-collapse .dropdown-menu a:focus { - background-color: #111111; - } - .nav-collapse.in .btn-group { - margin-top: 5px; - padding: 0; - } - .nav-collapse .dropdown-menu { - position: static; - top: auto; - left: auto; - float: none; - display: none; - max-width: none; - margin: 0 15px; - padding: 0; - background-color: transparent; - border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - } - .nav-collapse .open > .dropdown-menu { - display: block; - } - .nav-collapse .dropdown-menu:before, - .nav-collapse .dropdown-menu:after { - display: none; - } - .nav-collapse .dropdown-menu .divider { - display: none; - } - .nav-collapse .nav > li > .dropdown-menu:before, - .nav-collapse .nav > li > .dropdown-menu:after { - display: none; - } - .nav-collapse .navbar-form, - .nav-collapse .navbar-search { - float: none; - padding: 10px 15px; - margin: 10px 0; - border-top: 1px solid #f2f2f2; - border-bottom: 1px solid #f2f2f2; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - } - .navbar-inverse .nav-collapse .navbar-form, - .navbar-inverse .nav-collapse .navbar-search { - border-top-color: #111111; - border-bottom-color: #111111; - } - .navbar .nav-collapse .nav.pull-right { - float: none; - margin-left: 0; - } - .nav-collapse, - .nav-collapse.collapse { - overflow: hidden; - height: 0; - } - .navbar .btn-navbar { - display: block; - } - .navbar-static .navbar-inner { - padding-left: 10px; - padding-right: 10px; - } -} -@media (min-width: 979px + 1) { - .nav-collapse.collapse { - height: auto !important; - overflow: visible !important; - } -} -.break-word { - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.tag { - display: inline-block; - margin-bottom: 4px; - color: #111; - background-color: #f6f6f6; - padding: 1px 10px; - border: 1px solid #dddddd; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} -a.tag:hover { - text-decoration: none; - color: #fff; - background-color: #3bc256; - border: 1px solid #2f9b45; - -webkit-box-shadow: inset 0 1px 0 #61cf77; - -moz-box-shadow: inset 0 1px 0 #61cf77; - box-shadow: inset 0 1px 0 #61cf77; -} -.pill { - display: inline-block; - background-color: #6f8890; - color: #FFF; - padding: 2px 10px 1px 10px; - margin-right: 5px; - font-weight: normal; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.pill a { - color: #FFF; -} -.pill a.remove { - font-size: 11px; -} -.unstyled { - margin: 0; - list-style: none; -} -.simple-item { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-item:last-of-type { - border-bottom: 0; -} -.simple-list { - *zoom: 1; - margin: 0; - list-style: none; -} -.simple-list:before, -.simple-list:after { - display: table; - content: ""; - line-height: 0; -} -.simple-list:after { - clear: both; -} -.simple-list > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-list > li:last-of-type { - border-bottom: 0; -} -.simple-list .ckan-icon { - position: relative; - top: 0px; -} -.module-narrow .simple-list > li { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.listing li { - text-align: right; - margin-bottom: 5px; -} -.listing .key { - clear: right; - font-weight: bold; -} -.js .tab-content { - display: none; -} -.js .tab-content.active { - display: block; -} -.box { - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); -} -.module { - margin: 20px 0; -} -.module-heading { - *zoom: 1; - margin: 0; - padding: 7px 25px; - font-size: 14px; - line-height: 1.3; - background-color: #f6f6f6; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} -.module-heading:before, -.module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.module-heading:after { - clear: both; -} -.module-content { - padding: 0 25px; - margin: 20px 0; -} -@media (min-width: 768px) { - .span9 div.module-content { - padding-left: 10px; - } -} -.module-content:first-child { - margin-top: 0; - padding-top: 20px; -} -.module-content:last-child { - margin-bottom: 0; - padding-bottom: 20px; -} -.module-content > :last-child { - margin-bottom: 0; -} -.module:first-child .module-heading { - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; - border-top-width: 0; -} -.module:last-child { - margin-bottom: 20px; -} -.module-footer { - padding: 7px 25px 7px; - margin: 0; - border-top: 1px dotted #ddd; -} -.module .read-more { - font-weight: bold; - color: #000; -} -.module-content .pagination { - margin-left: -25px; - margin-right: -25px; - margin-bottom: -20px; -} -.module .pagination > ul { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border: 0; -} -.module .pagination li a { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - padding-top: 7px; - padding-bottom: 7px; -} -.module .pagination li:first-child a, -.module .pagination li:last-child a { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.module-content-shallow { - padding: 0; - margin-top: 10px; - padding-bottom: 10px; -} -.module h1 { - margin-bottom: 20px; -} -.module-shallow .module-content { - padding: 10px; - margin: 0; -} -.module-shallow .module-tags { - margin-top: 0; - margin-bottom: 0; -} -.module-shallow .module-content:first-child { - padding-top: 10px; -} -.module-shallow .module-content:last-child { - padding-bottom: 10px; -} -.module-narrow .module-heading, -.module-narrow .module-content, -.module-narrow .module-footer { - padding-left: 15px; - padding-right: 15px; -} -.module-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.module-grid:before, -.module-grid:after { - display: table; - content: ""; - line-height: 0; -} -.module-grid:after { - clear: both; -} -.module-item { - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - float: left; - margin-left: 20px; - width: 460px; - padding-top: 10px; - padding-bottom: 10px; - padding-right: 50px; - overflow: hidden; - position: relative; -} -.module-item span.count { - color: #999; -} -.module-item .media-image { - margin-bottom: 5px; -} -.module-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.module-item:hover { - z-index: 1; -} -.module-item:hover .media-edit { - opacity: 1; -} -.module-item.first { - clear: left; -} -.group .content img { - margin: 0 -5px 5px; - max-width: initial; -} -.group .content h3 { - font-size: 14px; - line-height: 1.3; -} -.group-listing { - margin-left: -20px; -} -.ckanext-datapreview { - position: relative; - clear: both; - padding-top: 15px; - margin-top: 0; -} -.ckanext-datapreview > iframe { - min-height: 650px; -} -.ckanext-datapreview > img { - max-height: 500px; - max-width: 100%; - overflow: hidden; -} -.package-info h4 { - margin-bottom: 10px; -} -.module-resource { - background-color: #fff; - border-bottom: 1px solid #ddd; - margin-top: 0; - margin-bottom: 0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.module-resource .actions { - position: relative; - float: right; - top: -10px; - right: -15px; -} -.module .module-tags { - padding-bottom: 8px; -} -.secondary .module:first-child, -.primary .module:first-child { - margin-top: 0; -} -.no-nav .module:last-child { - margin-top: 0; -} -.module-image { - float: left; - width: 50px; - height: 50px; - line-height: 50px; - text-align: center; - margin-right: 15px; -} -.module-image img { - max-width: 50px; - max-height: 50px; - vertical-align: middle; -} -.banner { - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transform-origin: center center; - -moz-transform-origin: center center; - -ms-transform-origin: center center; - -o-transform-origin: center center; - transform-origin: center center; - position: absolute; - top: 15px; - right: -35px; - width: 80px; - color: #fff; - background-color: #2F9B45; - padding: 1px 20px; - font-size: 11px; - text-align: center; - text-transform: uppercase; -} -.media-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.media-grid:before, -.media-grid:after { - display: table; - content: ""; - line-height: 0; -} -.media-grid:after { - clear: both; -} -@media (min-width: 768px) { - .media-grid { - margin-left: -27px; - } - .module-content .wide .media-grid { - margin-left: -25px; - } -} -.media-item { - position: relative; - float: left; - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-item span.count { - color: #999; -} -.media-item .media-image { - margin-bottom: 5px; -} -.media-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.media-item:hover { - z-index: 1; -} -.media-item:hover .media-edit { - opacity: 1; -} -.media-view { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid #ddd; - overflow: hidden; - -webkit-transition: all 0.2s ease-in; - -moz-transition: all 0.2s ease-in; - -o-transition: all 0.2s ease-in; - transition: all 0.2s ease-in; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-view:hover, -.media-view.hovered { - border-color: #2F9B45; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); -} -.media-view:hover .banner, -.media-view.hovered .banner { - background-color: #2F9B45; -} -.media-view span { - display: none; -} -.media-view .banner { - display: block; - background-color: #b7b7b7; - -webkit-transition: background-color 0.2s ease-in; - -moz-transition: background-color 0.2s ease-in; - -o-transition: background-color 0.2s ease-in; - transition: background-color 0.2s ease-in; -} -.media-image { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.media-heading { - font-size: 18px; - line-height: 1.3; - margin: 5px 0; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.media-overlay { - position: relative; - min-height: 35px; -} -.media-overlay .media-heading { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 12px 10px; - margin: 0; - background-color: #000; - background-color: rgba(0, 0, 0, 0.8); - font-size: 13px; - color: #fff; - z-index: 1; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.media-overlay .media-image { - float: none; - display: block; - margin-right: 0; -} -.media-item.is-expander .truncator-link { - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; - position: absolute; - z-index: 10; - left: 15px; - bottom: 15px; - opacity: 0; -} -.media-item.is-expander:hover { - padding-bottom: 35px; -} -.media-item.is-expander:hover .truncator-link { - opacity: 1; -} -.wide .media-item { - width: 186px; -} -.nav-simple, -.nav-aside { - *zoom: 1; - margin: 0; - list-style: none; - padding-bottom: 0; -} -.nav-simple:before, -.nav-aside:before, -.nav-simple:after, -.nav-aside:after { - display: table; - content: ""; - line-height: 0; -} -.nav-simple:after, -.nav-aside:after { - clear: both; -} -.nav-simple > li, -.nav-aside > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.nav-simple > li:last-of-type, -.nav-aside > li:last-of-type { - border-bottom: 0; -} -.nav-simple .ckan-icon, -.nav-aside .ckan-icon { - position: relative; - top: 0px; -} -.nav-aside { - border-top: 1px dotted #DDD; - border-bottom: 1px dotted #DDD; - margin-bottom: 15px; -} -.nav-item > a, -.nav-aside li a { - color: #333; - font-size: 14px; - line-height: 20px; - margin: -7px -25px; - padding: 7px 25px; -} -.nav-item.active, -.nav-aside li.active { - background-color: #f6f6f6; -} -.nav-item.active > a, -.nav-aside li.active a { - position: relative; - color: #FFF; - background-color: #8CA0A6; -} -.nav-item.active > a:hover, -.nav-aside li.active a:hover { - color: #FFF; - background-color: #8CA0A6; -} -@media (min-width: 768px) { - .nav-item.active > a:before, - .nav-aside li.active a:before { - content: ' '; - position: absolute; - top: 0; - right: -6px; - width: 6px; - height: 34px; - background-image: url("../../../base/images/nav-active.png?1"); - } -} -.nav-item.active > a span, -.nav-aside li.active a span { - white-space: nowrap; - overflow: hidden; - display: block; -} -.module-narrow .nav-item > a, -.module-narrow .nav-aside li a { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.module-narrow .nav-item.image, -.module-narrow .nav-aside li.image { - position: relative; -} -.module-narrow .nav-item.image > a, -.module-narrow .nav-aside li.image a { - padding-left: 42px; - padding-right: 42px; -} -.module-narrow .nav-item.image > img, -.module-narrow .nav-aside li.image img { - position: absolute; - top: 50%; - left: 15px; - width: 20px; - height: 20px; - margin-top: -10px; - z-index: 2; -} -.nav-facet .nav-item > a:hover:after, -.nav-facet .nav-item.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-facet .nav-item > a:hover:after { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.nav-facet .nav-item.active > a:after { - width: 17px; - height: 17px; - background-position: 0px -16px; - right: 3px; -} -.user-list { - margin: 0; - list-style: none; -} -.user-list li { - margin: 0 0 10px 0; -} -.user-list .gravatar { - vertical-align: -4px; - margin-right: 3px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.nav-facet-tertiary { - margin: 10px 0; -} -.nav-facet-tertiary .module-heading { - margin-bottom: 5px; - padding: 8px 12px; - border-bottom-width: 0; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-facet-tertiary .module-heading i { - display: none; -} -.nav-facet-tertiary .module-footer { - padding: 8px 12px; - border-top-width: 0; -} -.nav-facet-tertiary .module-footer a { - font-weight: normal; - color: #8C8C8C; -} -.nav-facet-tertiary .nav { - margin-bottom: 0; -} -.nav-facet-tertiary .module-content.empty { - padding: 8px 12px; - margin-top: 0; -} -.nav-facet-tertiary .nav li.active { - position: relative; -} -.nav-facet-tertiary .nav li.active > a:hover:after, -.nav-facet-tertiary .nav li.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - width: 17px; - height: 17px; - background-position: 0px -16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-simple > .nav-btn { - padding-left: 0; - padding-right: 0; - text-align: center; -} -.nav-simple > .nav-btn .btn { - display: inline-block; -} -.js .js-hide { - display: none; -} -.js .js-hide.active { - display: block; -} -.btn, -label { - font-weight: bold; -} -.btn-rounded { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - padding-left: 15px; - padding-right: 15px; -} -label { - cursor: pointer; - font-size: 14px; -} -label:after { - content: ":"; -} -label.radio:after, -label.checkbox:after { - content: ""; -} -input[type=radio], -input[type=checkbox] { - position: relative; - top: 7px; - padding: 0; - margin: 0; -} -input[type=radio].checkbox-onown, -input[type=checkbox].checkbox-onown { - top: 0; -} -select { - padding: 4px; -} -textarea { - max-width: 100%; -} -.control-group .btn { - position: relative; - top: -2px; -} -.control-full input, -.control-full select, -.control-full textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - height: auto; - width: 100%; -} -.control-medium input, -.control-medium select, -.control-medium textarea { - width: 320px; -} -@media (max-width: 768px) { - .control-medium input, - .control-medium select, - .control-medium textarea { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-large input, -.control-large .control-label { - font-size: 17.5px; - line-height: 30px; -} -.control-large input { - height: 41px; -} -.control-required { - color: #c6898b; -} -.form-actions .control-required-message { - float: left; - margin-left: 20px; - margin-bottom: 0; - line-height: 30px; -} -.form-actions .control-required-message:first-child { - margin-left: 0; -} -.form-actions { - background: none; - margin-left: -25px; - margin-right: -25px; - margin-bottom: 0; - padding-bottom: 0; -} -@media (min-width: 768px) { - .form-actions { - text-align: right; - } -} -.form-actions .action-info { - line-height: 2; - text-align: left; - color: #707070; - margin: 0; -} -@media (min-width: 768px) { - .form-actions .action-info { - float: left; - width: 50%; - } -} -.form-actions .action-info.small { - font-size: 11px; - line-height: 1.2; -} -@media (max-width: 768px) { - .form-actions .btn { - margin-top: 5px; - } -} -.form-horizontal .control-label { - width: 120px; -} -@media (min-width: 768px) { - .form-horizontal .controls { - margin-left: 130px; - } -} -.form-horizontal .info-block { - position: relative; - display: block; - font-size: 11px; - color: #aaa; - line-height: 1.3; - margin-top: 6px; -} -.form-horizontal .info-help { - padding: 6px 0; -} -.form-horizontal .info-help:before { - display: none; -} -.form-horizontal .info-help-tight { - margin-top: -10px; -} -@media (min-width: 980px) { - .form-horizontal .info-block { - padding: 6px 0 6px 0; - } - .form-horizontal .info-inline { - float: right; - width: 265px; - margin-top: 0; - padding-bottom: 0; - } -} -.form-horizontal .control-medium .info-block.info-inline { - width: 165px; -} -.form-horizontal .info-block:before { - font-size: 2.2em; - position: absolute; - left: 0; - top: 2px; -} -.form-horizontal .info-inline:before { - top: 8px; -} -.info-block .icon-large, -.info-inline .icon-large { - float: left; - font-size: 22px; - margin-right: 15px; -} -.form-horizontal .info-block a { - color: #aaa; - text-decoration: underline; -} -.form-horizontal .form-actions { - padding-left: 25px; - padding-right: 25px; -} -.form-inline input { - padding-bottom: 9px; -} -.form-inline select { - margin-top: 0; -} -.form-inline .btn { - margin-left: 5px; -} -.form-narrow label { - margin-bottom: 0; -} -.form-narrow select { - width: 100%; -} -.form-narrow .form-actions { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px 0; -} -.form-select label { - margin-right: 5px; -} -.simple-input label, -.simple-input button { - display: none; -} -.simple-input .field { - position: relative; -} -.simple-input .field-bordered { - border-bottom: 1px dotted #ddd; -} -.simple-input .field input { - width: 100%; - height: auto; - margin: 0 -7px; - padding: 7px 5px; -} -.simple-input .field .btn-search { - position: absolute; - display: block; - height: 17px; - width: 17px; - padding: 0; - top: 50%; - right: 0; - margin-top: -10px; - background-color: transparent; - border: none; - color: #999; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.simple-input .field .btn-search:hover { - color: #000; -} -.editor textarea { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - border-bottom: none; -} -.editor .editor-info-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - float: none; - padding: 4px 10px; - background: #ebebeb; - width: auto; - border: 1px solid #ccc; - border-top: none; - font-size: 11px; - color: #282828; -} -.editor .editor-info-block a { - color: #2F9B45; - text-decoration: none; -} -@media (max-width: 768px) { - [data-module="custom-fields"] .input-prepend .add-on { - display: block; - } -} -@media (max-width: 480px) { - [data-module="custom-fields"] .input-prepend { - width: 100%; - } - [data-module="custom-fields"] .control-custom input { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-custom { - font-size: 0; -} -.control-custom label { - margin-bottom: 0; -} -.control-custom input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - width: 140px; -} -.control-custom input:last-of-type { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.control-custom .checkbox { - display: inline-block; - margin-left: 5px; -} -.control-custom .checkbox input { - width: auto; -} -.control-custom.disabled label, -.control-custom.disabled input { - color: #aaa; - text-decoration: line-through; - text-shadow: none; -} -.control-custom.disabled input { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - background-color: #f3f3f3; -} -.control-custom.disabled .checkbox { - color: #444; - text-decoration: none; -} -.control-custom .checkbox.btn { - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - position: relative; - top: 0; - left: 5px; - height: 1px; - width: 9px; - padding: 3px 8px; - line-height: 18px; -} -.control-custom .checkbox.btn span { - display: none; - width: 30px; -} -.control-custom .checkbox.btn:before { - position: relative; - top: 1px; - left: -1px; - color: #fff; -} -.control-custom .checkbox.btn input { - display: none; -} -.control-custom.disabled .checkbox.btn { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #36b24f; - background-image: -moz-linear-gradient(top, #3bc256, #2F9B45); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3bc256), to(#2F9B45)); - background-image: -webkit-linear-gradient(top, #3bc256, #2F9B45); - background-image: -o-linear-gradient(top, #3bc256, #2F9B45); - background-image: linear-gradient(to bottom, #3bc256, #2F9B45); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3bc256', endColorstr='#ff2f9b45', GradientType=0); - border-color: #2F9B45 #2F9B45 #1d602b; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #2F9B45; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.control-custom.disabled .checkbox.btn:hover, -.control-custom.disabled .checkbox.btn:focus, -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active, -.control-custom.disabled .checkbox.btn.disabled, -.control-custom.disabled .checkbox.btn[disabled] { - color: #fff; - background-color: #2F9B45; - *background-color: #29873c; -} -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active { - background-color: #237434 \9; -} -.control-custom.disabled .checkbox.btn .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.alert-danger a, -.alert-error a { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea, -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - border-color: #c6898b; -} -.error-inline { - color: #b55457; -} -.error-block, -.error-inline { - font-size: 12px; -} -.error-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - padding: 6px 8px 3px; - background: #c6898b; - margin: -3px 0 0; - color: #fff; - width: 208px; -} -.control-medium .error-block { - width: 318px; -} -.control-full .error-block { - width: auto; -} -.control-group.error .input-prepend .error-block, -.control-custom.error .error-block { - width: auto; -} -.control-custom.error .error-block { - width: 401px; -} -.control-select.error .error-block { - width: 196px; -} -.stages { - margin: 0; - list-style: none; - *zoom: 1; - color: #aeaeae; - counter-reset: stage; - margin: -20px -25px 20px; - overflow: hidden; -} -.stages:before, -.stages:after { - display: table; - content: ""; - line-height: 0; -} -.stages:after { - clear: both; -} -.stages li { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - line-height: 27px; - counter-increment: stage; - width: 50%; - background-color: #EDEDED; - float: left; - padding: 10px 20px; - position: relative; - z-index: 0; -} -.stages li:before { - -webkit-border-radius: 14px; - -moz-border-radius: 14px; - border-radius: 14px; - content: counter(stage); - display: inline-block; - width: 27px; - height: 27px; - margin-right: 5px; - font-weight: bold; - text-align: center; - color: #fff; - background-color: #aeaeae; - z-index: 1; -} -.stages li:after { - left: 0; - border: solid rgba(237, 237, 237, 0); - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-top-color: #EDEDED; - border-bottom-color: #EDEDED; - border-width: 29px; - top: 50%; - margin-top: -29px; - margin-left: -30px; -} -.stages li.last { - position: relative; - right: -1px; -} -.stages li.last, -.stages li.last .highlight { - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.stages li.first:after { - content: none; - border: none; -} -.stages li.active:after { - border-color: rgba(140, 198, 138, 0); - border-top-color: #8cc68a; - border-bottom-color: #8cc68a; -} -.stages li.complete:after { - border-color: rgba(197, 226, 196, 0); - border-top-color: #c5e2c4; - border-bottom-color: #c5e2c4; -} -.stages.stage-3 li.complete:first-child:after { - content: none; -} -.stages li.active, -.stages li.complete { - background: none; -} -.stages li.active:before { - color: #8cc68a; - background: #fff; -} -.stages li.complete:before { - color: #c5e2c4; - background: #eef6ed; -} -.stages li .highlight { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - padding: 10px 52px; - border: none; - text-align: left; - text-decoration: none; - line-height: 27px; - z-index: -1; -} -@media (max-width: 768px) { - .stages li .highlight { - text-indent: -9999px; - } -} -.stages li.active .highlight { - color: #fff; - background: #8cc68a; -} -.stages li.complete .highlight { - color: #eef6ed; - background: #c5e2c4; -} -.alert > :last-child { - margin-bottom: 0; -} -.slug-preview { - font-size: 14px; - line-height: 1.5; - margin-top: 5px; - margin-left: 10px; -} -.slug-preview-value { - background-color: #faedcf; - margin-right: 3px; -} -.resource-upload-field { - position: relative; - overflow: hidden; - display: inline-block; - vertical-align: bottom; -} -.resource-upload-field label { - z-index: 0; -} -.resource-upload-field input { - opacity: 0; - filter: alpha(opacity=0); - position: absolute; - top: 0; - right: 0; - z-index: 1; - margin: 0; - border: solid transparent; - border-width: 100px 0 0 200px; - cursor: pointer; - direction: ltr; - -moz-transform: translate(-300px, 0) scale(4); -} -.resource-upload-field.loading { - display: inline-block; - background: url("../../../base/images/loading-spinner.gif") no-repeat center right; - padding-right: 5px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - font-size: 14px; -} -.select2-container-multi .select2-choices .select2-search-field input { - height: 29px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - padding-left: 10px; -} -.select2-container { - margin-top: 1px; -} -.select2-container-multi { - margin-top: 0; -} -.select2-container-multi .select2-choices .select2-search-choice { - padding: 5px 8px 5px 22px; -} -.select2-container-multi.select2-container .select2-choices { - padding-top: 3px; - padding-bottom: 3px; -} -.select2-search-choice-close, -.select2-container-multi .select2-search-choice-close { - top: 6px; - left: 5px; -} -.select2-container-multi .select2-choices { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; - background-color: #fff; - border: 1px solid #ccc; -} -.select2-container-active .select2-choices, -.select2-container-multi.select2-container-active .select2-choices { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -.select2-container-multi .select2-drop { - margin-top: -2px; -} -.select2-container .select2-results li { - line-height: 18px; - padding-top: 4px; - padding-bottom: 4px; -} -.control-full .select2-container { - max-width: 100%; -} -.control-group.error .select2-container input:focus, -.control-group.error .select2-container select:focus, -.control-group.error .select2-container textarea:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.js .image-upload #field-image-url { - padding-right: 90px; -} -.js .image-upload #field-image-upload { - cursor: pointer; - position: absolute; - z-index: 1; - opacity: 0; - filter: alpha(opacity=0); -} -.js .image-upload .controls { - position: relative; -} -.js .image-upload .btn { - position: relative; - top: 0; - margin-right: 10px; -} -.js .image-upload .btn.hover { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.js .image-upload .btn-remove-url { - position: absolute; - margin-right: 0; - top: 4px; - right: 5px; - padding: 0 12px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.js .image-upload .btn-remove-url .icon-remove { - margin-right: 0; -} -.add-member-form .control-label { - width: 100%; - text-align: left; -} -.add-member-form .controls { - margin-left: auto; -} -.add-member-or { - float: left; - margin-top: 75px; - width: 7%; - text-align: center; - text-transform: uppercase; - color: #999; - font-weight: bold; -} -.add-member-form .row-fluid .control-group { - float: left; - width: 45%; -} -.add-member-form .row-fluid .select2-container, -.add-member-form .row-fluid input { - width: 100% !important; -} -#recaptcha_table { - table-layout: inherit; - line-height: 1; -} -.dataset-item { - border-bottom: 1px dotted #ddd; - padding-bottom: 20px; - margin-bottom: 20px; -} -@media (max-width: 768px) { - .dataset-item { - word-wrap: break-word; - } -} -.dataset-item:last-of-type { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} -.dataset-heading { - font-size: 16px; - margin-top: 0; - margin-bottom: 8px; - line-height: 1.3; -} -.dataset-heading a { - color: #333; -} -.dataset-heading .label { - position: relative; - top: -1px; -} -.dataset-private { - margin-right: 10px; - text-transform: uppercase; -} -.dataset-private .icon-lock { - width: 9px; -} -.dataset-private.pull-right { - margin-right: 0; -} -.dataset-resources { - margin-top: 8px; -} -.dataset-resources li { - display: inline; -} -.dataset-resources li a { - background-color: #aaa; -} -.dataset-heading .popular { - top: 0; -} -.resource-list { - margin: 0; - list-style: none; - margin: -10px -10px 10px -10px; -} -.resource-item { - position: relative; - padding: 10px 10px 10px 60px; - margin-bottom: 0px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.resource-item:hover { - background-color: #eee; -} -.resource-item .heading { - color: #000; - font-size: 14px; - font-weight: bold; -} -.resource-item .format-label { - position: absolute; - top: 10px; - left: 10px; -} -.resource-item .description { - font-size: 12px; - margin-bottom: 0; - min-height: 12px; -} -.resource-item .btn-group { - position: absolute; - top: 14px; - right: 10px; -} -@media (max-width: 768px) { - .resource-item .btn-group { - display: none; - } -} -.resource-list.reordering .resource-item { - border: 1px solid #ddd; - margin-bottom: 10px; - cursor: move; -} -.resource-list.reordering .resource-item .handle { - display: block; - position: absolute; - color: #888; - left: -31px; - top: 50%; - margin-top: -15px; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - border: 1px solid #ddd; - border-width: 1px 0 1px 1px; - background-color: #fff; - -webkit-border-radius: 20px 0 0 20px; - -moz-border-radius: 20px 0 0 20px; - border-radius: 20px 0 0 20px; -} -.resource-list.reordering .resource-item .handle:hover { - text-decoration: none; -} -.resource-list.reordering .resource-item:hover .handle { - background-color: #eee; -} -.resource-list.reordering .resource-item.ui-sortable-helper { - background-color: #eee; - border: 1px solid #2F9B45; -} -.resource-list.reordering .resource-item.ui-sortable-helper .handle { - background-color: #eee; - border-color: #2F9B45; - color: #333; -} -.resource-item .handle { - display: none; -} -.tag-list { - margin: 0; - list-style: none; - padding: 10px 10px 5px 10px; -} -.tag-list li { - display: inline-block; - margin-right: 5px; -} -.tag-list li:last-child { - margin-right: 0; -} -.additional-info td, -.additional-info th { - width: 50%; -} -.label[data-format=html], -.label[data-format*=html] { - background-color: #55a1ce; -} -.label[data-format=json], -.label[data-format*=json] { - background-color: #ef7100; -} -.label[data-format=xml], -.label[data-format*=xml] { - background-color: #ef7100; -} -.label[data-format=text], -.label[data-format*=text] { - background-color: #74cbec; -} -.label[data-format=csv], -.label[data-format*=csv] { - background-color: #dfb100; -} -.label[data-format=xls], -.label[data-format*=xls] { - background-color: #2db55d; -} -.label[data-format=zip], -.label[data-format*=zip] { - background-color: #686868; -} -.label[data-format=api], -.label[data-format*=api] { - background-color: #ec96be; -} -.label[data-format=pdf], -.label[data-format*=pdf] { - background-color: #e0051e; -} -.label[data-format=rdf], -.label[data-format*=rdf], -.label[data-format*=nquad], -.label[data-format*=ntriples], -.label[data-format*=turtle] { - background-color: #0b4498; -} -.view-list { - margin: 0; - list-style: none; -} -.view-list li { - position: relative; - margin-bottom: 10px; -} -.view-list li a { - display: block; - min-height: 50px; - padding: 10px; - border: 1px solid #ddd; - overflow: hidden; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon { - float: left; - width: 50px; - height: 50px; - overflow: hidden; - margin-right: 10px; - color: #444; - background-color: #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon i { - display: block; - text-align: center; - font-size: 28px; - line-height: 50px; -} -.view-list li a h3 { - color: #000; - font-weight: bold; - font-size: 16px; - margin: 0 0 3px 0; -} -.view-list li a p { - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: #444; -} -.view-list li a.active, -.view-list li a:hover { - text-decoration: none; - border-color: #2F9B45; -} -.view-list li a.active .icon, -.view-list li a:hover .icon { - background-color: #2F9B45; - color: #f6f6f6; -} -.view-list li .arrow { - position: absolute; - display: none; - border: 8px solid transparent; - border-top-color: #2F9B45; - left: 50%; - bottom: -15px; - margin-left: -4px; -} -.view-list li.active a { - text-decoration: none; - border-color: #2F9B45; -} -.view-list li.active a .icon { - background-color: #2F9B45; - color: #f6f6f6; -} -.view-list li.active .arrow { - display: block; -} -.view-list.stacked { - overflow-y: hidden; - overflow-x: auto; - height: 100px; - white-space: nowrap; -} -.view-list.stacked li { - display: inline-block; - width: 250px; - margin-right: 10px; -} -.view-list.stacked li:last-child { - margin-right: 0; -} -.view-list.stacked::-webkit-scrollbar { - width: 7px; - height: 7px; -} -.view-list.stacked::-webkit-scrollbar-track { - border-radius: 10px; - background-color: #f6f6f6; -} -.view-list.stacked::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #c3c3c3; -} -.view-list.stacked::-webkit-scrollbar-thumb:hover { - background-color: #2F9B45; -} -.resource-view { - margin-top: 20px; -} -.search-form { - margin-bottom: 20px; - padding-bottom: 25px; - border-bottom: 1px dotted #ddd; -} -.search-form .search-input { - position: relative; - margin-bottom: 20px; -} -.search-form .search-input input { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - width: 100%; - height: auto; -} -.search-form .search-input button { - cursor: pointer; - display: block; - position: absolute; - top: 50%; - margin-top: 1px; - right: 10px; - height: 20px; - padding: 0; - border: none; - background: transparent; -} -.search-form .search-input button span { - display: none; -} -.search-form .search-input button i { - color: #ccc; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.search-form .search-input button:hover i { - color: #000; -} -.search-form .search-input.search-giant input { - font-size: 16px; - padding: 15px; -} -.search-form .search-input.search-giant button { - margin-top: -4px; - right: 15px; - height: 30px; -} -.search-form .search-input.search-giant button i { - font-size: 28px; - width: 28px; -} -.search-form .control-order-by label, -.search-form .control-order-by select { - display: inline; -} -.search-form .control-order-by select { - width: 160px; - margin: 0; -} -.search-form h2 { - font-size: 24px; - line-height: 1.3; - color: #000; - margin-bottom: 0; - margin-top: 20px; -} -.search-form .filter-list { - color: #444; - line-height: 32px; - margin: 10px 0 0 0; -} -.search-form .filter-list .pill { - line-height: 21px; -} -.search-form .filter-list .extra { - margin-top: 10px; - font-size: 18px; - font-weight: normal; - color: #000; -} -.search-form.no-bottom-border { - border-bottom-width: 0; - margin-bottom: 0; -} -.tertiary .control-order-by { - float: none; - margin: 0; -} -.tertiary .control-order-by label { - display: block; - margin-bottom: 5px; - font-weight: normal; - font-size: 12px; -} -.tertiary .control-order-by select { - display: block; - font-size: 12px; - width: 100%; -} -.tertiary .search-input { - margin-bottom: 10px; -} -@media (min-width: 980px) { - .search-form .control-order-by { - float: right; - margin-left: 15px; - } - .tertiary .search-form .control-order-by { - float: none; - margin: 0; - } -} -.group .media-vertical .image { - margin: 0 -5px 5px; -} -.group-list:nth-child(odd) { - clear: left; -} -.group-list .module-heading { - padding-top: 15px; - padding-bottom: 15px; -} -.group-list .dataset-content { - min-height: 54px; -} -.group-list .module-heading h3 { - margin-bottom: 2px; -} -.group-list .module-heading h3 a { - color: #333; -} -.group-list .module-heading .media-image { - overflow: hidden; - max-height: 60px; -} -.group-list .module-heading .media-image img { - max-width: 85px; -} -.toolbar { - *zoom: 1; - position: relative; - margin-bottom: 10px; - padding: 5px 0; -} -.toolbar:before, -.toolbar:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar:after { - clear: both; -} -.page_primary_action { - margin-bottom: 20px; -} -.toolbar .breadcrumb { - *zoom: 1; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - position: relative; - float: left; - margin: 0; - padding: 0; - border: none; - background: none; - font-size: 20px; - line-height: 1.3; -} -.toolbar .breadcrumb:before, -.toolbar .breadcrumb:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar .breadcrumb:after { - clear: both; -} -.toolbar .breadcrumb li:after { - content: " / "; -} -.toolbar .breadcrumb li.active:after { - content: ""; -} -.toolbar .breadcrumb li:last-of-type:after { - content: ""; -} -.toolbar .home a { - text-decoration: none; -} -.toolbar .home span { - display: none; -} -.toolbar .breadcrumb a { - color: #505050; -} -@media (max-width: 767px) { - .toolbar .breadcrumb { - color: #fff; - text-shadow: none; - } - .toolbar .breadcrumb .home { - display: none; - } - .toolbar .breadcrumb a { - color: #fff; - text-shadow: none; - } -} -.toolbar .breadcrumb .active a, -.toolbar .breadcrumb a.active { - font-weight: bold; -} -.actions { - margin: 0; - list-style: none; - position: absolute; - top: 10px; - right: 10px; - z-index: 1; -} -.actions li { - display: inline-block; - margin-right: 5px; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.actions li:last-of-type { - margin-right: 0; -} -.hide-heading { - display: none; -} -.page-header { - *zoom: 1; - border-bottom: 1px solid #ddd; - background-color: #f6f6f6; - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.page-header:before, -.page-header:after { - display: table; - content: ""; - line-height: 0; -} -.page-header:after { - clear: both; -} -.page-header .nav-tabs { - float: left; - margin-bottom: -1px; -} -.page-header .nav-tabs li.active a, -.page-header .nav-tabs a:hover { - background-color: #fff; -} -.page-header .content_action { - float: right; - margin-top: -5px; - margin-right: -7px; -} -.no-nav .page-header { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.nav-tabs-plain { - padding: 0 25px; -} -.nav-tabs-plain > .active > a, -.nav-tabs-plain > .active > a:hover { - background-color: #fff; -} -@media (min-width: 768px) { - .span9 .page-header { - margin-left: -17px; - } -} -@media (max-width: 768px) { - .page-header .nav-tabs { - margin: 5px 10px 10px -5px; - border: none; - } - .page-header .nav-tabs > li { - float: none; - } - .page-header .nav-tabs > li a { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .page-header .nav-tabs > .active > a, - .page-header .nav-tabs > .active > a:hover, - .page-header .nav-tabs > .active > a:focus { - border-bottom-color: #dddddd; - } -} -h1 { - font-size: 28px; -} -h2 { - font-size: 21px; -} -h3 { - font-size: 18px; -} -h4 { - font-size: 14px; -} -h1, -h2, -h3, -h4 { - line-height: 1.5; -} -h1 small, -h2 small, -h3 small, -h4 small { - font-size: 14px; -} -.prose h1, -.prose heading-1 h2, -.prose heading-2 { - margin-bottom: 15px; -} -.prose h3, -.prose heading-3 { - margin-bottom: 10px; -} -.table-chunky td, -.table-chunky th { - padding: 12px 15px; - font-size: 12px; -} -.table-chunky thead th, -.table-chunky thead td { - color: #fff; - background-color: #aaa; - padding-top: 10px; - padding-bottom: 10px; -} -.table-striped tbody tr:nth-child(odd) td, -.table-striped tbody tr:nth-child(odd) th { - background-color: transparent; -} -.table-striped tbody tr:nth-child(even) td, -.table-striped tbody tr:nth-child(even) th { - background-color: #f2f2f2; -} -.table-chunky.table-bordered { - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:first-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:first-child { - -webkit-border-top-left-radius: 2px; - -moz-border-radius-topleft: 2px; - border-top-left-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:last-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:last-child { - -webkit-border-top-right-radius: 2px; - -moz-border-radius-topright: 2px; - border-top-right-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:first-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:first-child { - -webkit-border-radius: 0 0 0 2px; - -moz-border-radius: 0 0 0 2px; - border-radius: 0 0 0 2px; - -webkit-border-bottom-left-radius: 2px; - -moz-border-radius-bottomleft: 2px; - border-bottom-left-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:last-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 2px; - -moz-border-radius-bottomright: 2px; - border-bottom-right-radius: 2px; -} -.ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.ckan-icon { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; -} -.ckan-icon-fb { - width: 16px; - height: 16px; - background-position: 0px 0; -} -.ckan-icon-gplus { - width: 16px; - height: 16px; - background-position: -16px 0; -} -.ckan-icon-twitter { - width: 16px; - height: 16px; - background-position: -32px 0; -} -.ckan-icon-email { - width: 16px; - height: 16px; - background-position: -48px 0; -} -.ckan-icon-share { - width: 16px; - height: 16px; - background-position: -64px 0; -} -.ckan-icon-feed { - width: 16px; - height: 16px; - background-position: -80px 0; -} -.ckan-icon-calendar { - width: 16px; - height: 16px; - background-position: -96px 0; -} -.ckan-icon-file { - width: 16px; - height: 16px; - background-position: -112px 0; -} -.ckan-icon-lock { - width: 16px; - height: 16px; - background-position: -128px 0; -} -.ckan-icon-link-file { - width: 16px; - height: 16px; - background-position: -144px 0; -} -.ckan-icon-link-plugin { - width: 16px; - height: 16px; - background-position: -160px 0; -} -.ckan-icon-upload-file { - width: 16px; - height: 16px; - background-position: -176px 0; -} -.ckan-icon-callout { - width: 16px; - height: 16px; - background-position: -192px 0; -} -.ckan-icon-circle-cross { - width: 17px; - height: 17px; - background-position: 0px -16px; -} -.ckan-icon-circle-add { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.ckan-icon-flame { - width: 17px; - height: 17px; - background-position: -34px -16px; -} -.ckan-icon-search { - width: 17px; - height: 17px; - background-position: -51px -16px; -} -.ckan-icon-large-lock { - width: 20px; - height: 20px; - background-position: 0px -33px; -} -.ckan-icon-photo { - width: 20px; - height: 20px; - background-position: -20px -33px; -} -.ckan-icon-add { - width: 20px; - height: 20px; - background-position: -40px -33px; -} -.ckan-icon-home { - width: 20px; - height: 20px; - background-position: -60px -33px; -} -.ckan-icon-rewind { - width: 20px; - height: 20px; - background-position: -80px -33px; -} -.ckan-icon-tools { - width: 20px; - height: 20px; - background-position: -100px -33px; -} -.ckan-icon-flag { - width: 20px; - height: 20px; - background-position: -120px -33px; -} -.ckan-icon-clipboard { - width: 20px; - height: 20px; - background-position: -140px -33px; -} -.ckan-icon-share { - width: 20px; - height: 20px; - background-position: -160px -33px; -} -.ckan-icon-info { - width: 20px; - height: 20px; - background-position: -180px -33px; -} -.ckan-icon-download { - width: 20px; - height: 20px; - background-position: -200px -33px; -} -.ckan-icon-star { - width: 20px; - height: 20px; - background-position: -220px -33px; -} -.ckan-icon-info-flat { - width: 20px; - height: 20px; - background-position: -240px -33px; -} -.ckan-icon-tag { - width: 20px; - height: 20px; - background-position: -260px -33px; -} -.ckan-icon-plus { - width: 20px; - height: 20px; - background-position: -280px -33px; - width: 16px; -} -.ckan-icon-head { - width: 20px; - height: 20px; - background-position: -300px -33px; -} -.ckan-icon-arrow-e { - width: 20px; - height: 20px; - background-position: -320px -33px; - width: 16px; -} -.ckan-icon-bookmark { - width: 25px; - height: 25px; - background-position: 0px -53px; -} -.format-label { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - text-indent: -900em; - background: url("../../../base/images/sprite-resource-icons.png") no-repeat 0 0; -} -.format-label { - width: 32px; - height: 35px; - background-position: 0px -62px; -} -.format-label[data-format=rdf], -.format-label[data-format*=rdf] { - width: 32px; - height: 35px; - background-position: -32px -62px; -} -.format-label[data-format=pdf], -.format-label[data-format*=pdf] { - width: 32px; - height: 35px; - background-position: -64px -62px; -} -.format-label[data-format=api], -.format-label[data-format*=api] { - width: 32px; - height: 35px; - background-position: -96px -62px; -} -.format-label[data-format=zip], -.format-label[data-format*=zip] { - width: 32px; - height: 35px; - background-position: -128px -62px; -} -.format-label[data-format=xls], -.format-label[data-format*=xls] { - width: 32px; - height: 35px; - background-position: -160px -62px; -} -.format-label[data-format=csv], -.format-label[data-format*=csv] { - width: 32px; - height: 35px; - background-position: -192px -62px; -} -.format-label[data-format=txt], -.format-label[data-format*=txt] { - width: 32px; - height: 35px; - background-position: -224px -62px; -} -.format-label[data-format=xml], -.format-label[data-format*=xml] { - width: 32px; - height: 35px; - background-position: -256px -62px; -} -.format-label[data-format=json], -.format-label[data-format*=json] { - width: 32px; - height: 35px; - background-position: -288px -62px; -} -.format-label[data-format=html], -.format-label[data-format*=html] { - width: 32px; - height: 35px; - background-position: -320px -62px; -} -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - text-align: right; - font-size: 14px; - line-height: 1; - width: 14px; -} -.btn [class^="icon-"], -.nav [class^="icon-"], -.module-heading [class^="icon-"], -.dropdown [class^="icon-"], -.btn [class*=" icon-"], -.nav [class*=" icon-"], -.module-heading [class*=" icon-"], -.dropdown [class*=" icon-"] { - margin-right: 4px; -} -.info-block [class^="icon-"], -.info-block [class*=" icon-"] { - float: left; - font-size: 28px; - width: 28px; - margin-right: 5px; - margin-top: 2px; -} -.breadcrumb .home .icon-home { - font-size: 24px; - width: 24px; - vertical-align: -1px; -} -.info-block-small [class^="icon-"], -.info-block-small [class*=" icon-"] { - font-size: 14px; - width: 14px; - margin-top: 1px; -} -.nav-tabs .fa:last-child, -.module-heading .fa:last-child, -.btn .fa:last-child { - margin-right: 3px; -} -.wrapper { - *zoom: 1; - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - position: relative; - background-color: #fff; - margin-bottom: 20px; - margin-left: 0; -} -.wrapper:before, -.wrapper:after { - display: table; - content: ""; - line-height: 0; -} -.wrapper:after { - clear: both; -} -@media (min-width: 768px) { - .wrapper { - background-image: url("../../../base/images/nav.png"); - background-repeat: repeat-y; - background-position: -54px 0px; - } -} -@media (min-width: 980px) { - .wrapper { - background-position: 0px 0px; - } -} -.wrapper.no-nav { - background-image: none; -} -[role=main], -.main { - position: relative; - padding-bottom: 20px; -} -@media (min-width: 768px) { - [role=main], - .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); - } -} -[role=main] { - min-height: 350px; -} -.main:after, -[role=main]:after { - bottom: 0; - border-top-width: 1px; -} -[role=main] .primary { - float: right; - margin-left: 0; -} -[role=main] .secondary { - margin-left: 0; -} -/* Filters modal */ -.no-text .text { - display: none; -} -.js body.filters-modal { - overflow: hidden; -} -.show-filters.btn, -.hide-filters { - display: none; -} -@media (max-width: 768px) { - .wrapper { - margin: 0 -20px; - border-width: 0; - -webkit-box-shadow: 0; - -moz-box-shadow: 0; - box-shadow: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - } - .js [role=main] .secondary .filters { - display: none; - position: fixed; - overflow: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 1; - padding: 10px; - background-color: #000000; - background-color: rgba(0, 0, 0, 0.5); - } - .js body.filters-modal .secondary .filters { - display: block; - } - .js [role=main] .secondary .filters > div { - background-color: #fff; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - overflow: hidden; - } - .js [role=main] .secondary .filters > div .module-footer { - display: none; - } - .js body.filters-modal .secondary .filters .hide-filters { - display: inline-block; - position: absolute; - top: 14px; - right: 17px; - opacity: 0.6; - } - .js body.filters-modal .secondary .filters .hide-filters i { - font-size: 18px; - } - .js .show-filters.btn { - display: inline-block; - } -} -.primary > :last-child, -.secondary > :last-child { - margin-bottom: 0; -} -.primary .primary { - float: left; - width: 467px; - margin-left: 0; - margin-bottom: 20px; -} -.primary .primary h1:first-child, -.primary .primary h2:first-child, -.primary .primary h3:first-child, -.primary .primary h4:first-child { - margin-top: 0; -} -.primary .tertiary { - float: left; - width: 180px; - margin-left: 18px; - margin-bottom: 20px; -} -@media (min-width: 768px) { - .hero { - background: url("../../../base/images/background-tile.png"); - } -} -.hero:after { - background-color: rgba(0, 0, 0, 0.09); - background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(0, 0, 0, 0))); - background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-repeat: repeat-x; - background-color: #f6f6f6; - border-bottom: 1px solid #d0d0d0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - -webkit-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - -moz-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); -} -.hero:after .back:hover { - text-decoration: none; -} -.hero:after .back:hover span { - text-decoration: underline; -} -.context-info .module-content { - padding: 15px; -} -.context-info .image { - margin-bottom: 10px; -} -.context-info .image img, -.context-info .image a { - display: block; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.context-info p { - overflow: auto; -} -.context-info code { - display: block; - font-weight: normal; - padding: 0; - margin: 0; - overflow: auto; -} -.context-info h1.heading { - margin: 0 0 5px 0; - font-size: 18px; - line-height: 1.3; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.context-info .info { - margin-top: 15px; - padding-top: 10px; - border-top: 1px dotted #DDD; - word-break: break-word; -} -.context-info .info dl dd { - margin-top: 3px; - margin-left: 0; -} -.context-info .nums { - *zoom: 1; - margin-top: 15px; - padding-top: 10px; - padding-bottom: 0; - border-top: 1px dotted #DDD; -} -.context-info .nums:before, -.context-info .nums:after { - display: table; - content: ""; - line-height: 0; -} -.context-info .nums:after { - clear: both; -} -.context-info .nums dl { - float: left; - width: 50%; - margin: 5px 0 0 0; - color: #444; -} -.context-info .nums dl dt { - display: block; - font-size: 13px; - font-weight: 300; -} -.context-info .nums dl dd { - display: block; - font-size: 30px; - font-weight: 700; - line-height: 36px; - margin-left: 0; -} -.context-info .nums dl dd .smallest { - font-size: 13px; -} -.context-info .nums dl dd .smaller { - font-size: 16px; -} -.context-info .nums dl dd .small { - font-size: 21px; -} -.context-info .follow_button { - margin-top: 15px; -} -.context-info.editing .module-content { - margin-top: 0; -} -.flash-messages .alert { - -webkit-box-shadow: 0 0 0 1px white; - -moz-box-shadow: 0 0 0 1px white; - box-shadow: 0 0 0 1px white; -} -.homepage .row { - position: relative; -} -.homepage .module-search { - padding: 5px; - margin: 20px 0 0 0; - color: #fff; - background: #fff; -} -.homepage .module-search .search-giant { - margin-bottom: 10px; -} -.homepage .module-search .search-giant input { - border-color: #003f52; -} -.homepage .module-search .module-content { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - background-color: #2F9B45; - border-bottom: none; -} -.homepage .module-search .module-content .heading { - margin-top: 0; - margin-bottom: 7px; - font-size: 24px; - line-height: 40px; -} -.homepage .module-search .tags { - *zoom: 1; - padding: 5px 10px 10px 10px; - background-color: #237434; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.homepage .module-search .tags:before, -.homepage .module-search .tags:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .module-search .tags:after { - clear: both; -} -.homepage .module-search .tags h3, -.homepage .module-search .tags .tag { - display: block; - float: left; - margin: 5px 10px 0 0; -} -.homepage .module-search .tags h3 { - font-size: 14px; - line-height: 20px; - padding: 2px 8px; -} -.homepage .group-list { - margin: 0; -} -.homepage .box .inner { - padding: 20px 25px; -} -.homepage .stats h3 { - margin: 0 0 10px 0; -} -.homepage .stats ul { - margin: 0; - list-style: none; - *zoom: 1; -} -.homepage .stats ul:before, -.homepage .stats ul:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .stats ul:after { - clear: both; -} -.homepage .stats ul li { - float: left; - width: 25%; - font-weight: 300; -} -.homepage .stats ul li a { - display: block; -} -.homepage .stats ul li a b { - display: block; - font-size: 35px; - line-height: 1.5; -} -.homepage .stats ul li a:hover { - text-decoration: none; -} -.homepage.layout-2 .stats { - margin-top: 20px; -} -@media (min-width: 768px) { - .homepage [role=main] { - padding: 20px 0; - } - .homepage.layout-1 .row1 .col2 { - position: absolute; - bottom: 0; - right: 0; - } - .homepage.layout-1 .row1 .col2 .module-search { - bottom: 0; - left: 0; - right: 0; - } -} -.account-masthead { - *zoom: 1; - min-height: 30px; - color: #fff; - background: #237434 url("../../../base/images/bg.png"); -} -.account-masthead:before, -.account-masthead:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead:after { - clear: both; -} -.account-masthead .account { - float: right; -} -.account-masthead .account ul { - *zoom: 1; -} -.account-masthead .account ul:before, -.account-masthead .account ul:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead .account ul:after { - clear: both; -} -.account-masthead .account ul li { - display: block; - float: left; - border-left: 1px solid #1d602b; -} -.account-masthead .account ul li a { - display: block; - color: #cbe6d1; - font-size: 13px; - font-weight: bold; - padding: 0 10px; - line-height: 31px; -} -.account-masthead .account ul li a span.username, -.account-masthead .account ul li a span.text { - margin: 0 2px 0 4px; -} -.account-masthead .account ul li a span.text { - position: absolute; - top: -9999px; - left: -9999px; -} -.account-masthead .account ul li a:hover { - color: #e0f0e3; - background-color: #1d602b; - text-decoration: none; -} -.account-masthead .account ul li a.sub { - font-weight: 300; -} -.account-masthead .account ul li a .btn { - vertical-align: 1px; - margin-left: 3px; -} -.account-masthead .account .notifications a span.badge { - font-size: 12px; - margin-left: 3px; - padding: 1px 6px; - background-color: #1d602b; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - text-shadow: none; - color: #cbe6d1; -} -.account-masthead .account .notifications a:hover span { - color: #fff; - background-color: #174d22; -} -.account-masthead .account .notifications.notifications-important a span.badge { - color: #fff; - background-color: #C9403A; -} -.account-masthead .account.authed .image { - padding: 0 6px; -} -.account-masthead .account.authed .image img { - vertical-align: -6px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.masthead { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #2F9B45 url("../../../base/images/bg.png"); -} -.masthead:before, -.masthead:after { - display: table; - content: ""; - line-height: 0; -} -.masthead:after { - clear: both; -} -.masthead .container { - position: relative; -} -.masthead a { - color: #fff; -} -.masthead hgroup h1, -.masthead hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.masthead hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.masthead hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.masthead .nav-collapse { - padding-top: 10px; -} -.masthead .section { - float: left; -} -.masthead input[type="text"] { - border-color: #29873c; -} -.masthead .navigation { - margin-right: 20px; -} -.masthead .navigation .nav-pills { - margin-bottom: 0; -} -.masthead .navigation .nav-pills li a:hover, -.masthead .navigation .nav-pills li.active a { - background-color: #237434; -} -.masthead .nav > li > a, -.masthead .nav > li > a:focus, -.masthead .nav > li > a:hover, -.masthead .nav > .active > a, -.masthead .nav > .active > a:hover, -.masthead .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.masthead .site-search { - margin: 2px 8px 2px 0; -} -.masthead .site-search input { - width: 200px; - padding: 4px 10px; -} -.masthead .btn-navbar, -.masthead .btn-navbar:hover, -.masthead .btn-navbar:focus, -.masthead .btn-navbar:active, -.masthead .btn-navbar.active, -.masthead .btn-navbar.disabled, -.masthead .btn-navbar[disabled] { - background-color: #237434; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.masthead .btn-navbar .icon-bar, -.masthead .btn-navbar:hover .icon-bar, -.masthead .btn-navbar:focus .icon-bar, -.masthead .btn-navbar:active .icon-bar, -.masthead .btn-navbar.active .icon-bar, -.masthead .btn-navbar.disabled .icon-bar, -.masthead .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.masthead .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -@media (min-width: 980px) { - .masthead .nav-collapse { - float: right; - } -} -@media (max-width: 767px) { - .account-masthead { - margin-left: -20px; - margin-right: -20px; - padding-left: 20px; - padding-right: 20px; - } - .masthead .section { - float: none; - } - .masthead .section .nav-collapse { - margin-bottom: 25px; - } -} -@media (max-width: 979px) { - .masthead .container { - padding-left: 20px; - padding-right: 20px; - } - .masthead .site-search { - display: none; - } -} -.site-footer { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #2F9B45 url("../../../base/images/bg.png"); - padding: 20px 0; -} -.site-footer:before, -.site-footer:after { - display: table; - content: ""; - line-height: 0; -} -.site-footer:after { - clear: both; -} -.site-footer .container { - position: relative; -} -.site-footer a { - color: #fff; -} -.site-footer hgroup h1, -.site-footer hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.site-footer hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.site-footer hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.site-footer .nav-collapse { - padding-top: 10px; -} -.site-footer .section { - float: left; -} -.site-footer input[type="text"] { - border-color: #29873c; -} -.site-footer .navigation { - margin-right: 20px; -} -.site-footer .navigation .nav-pills { - margin-bottom: 0; -} -.site-footer .navigation .nav-pills li a:hover, -.site-footer .navigation .nav-pills li.active a { - background-color: #237434; -} -.site-footer .nav > li > a, -.site-footer .nav > li > a:focus, -.site-footer .nav > li > a:hover, -.site-footer .nav > .active > a, -.site-footer .nav > .active > a:hover, -.site-footer .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.site-footer .site-search { - margin: 2px 8px 2px 0; -} -.site-footer .site-search input { - width: 200px; - padding: 4px 10px; -} -.site-footer .btn-navbar, -.site-footer .btn-navbar:hover, -.site-footer .btn-navbar:focus, -.site-footer .btn-navbar:active, -.site-footer .btn-navbar.active, -.site-footer .btn-navbar.disabled, -.site-footer .btn-navbar[disabled] { - background-color: #237434; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.site-footer .btn-navbar .icon-bar, -.site-footer .btn-navbar:hover .icon-bar, -.site-footer .btn-navbar:focus .icon-bar, -.site-footer .btn-navbar:active .icon-bar, -.site-footer .btn-navbar.active .icon-bar, -.site-footer .btn-navbar.disabled .icon-bar, -.site-footer .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.site-footer .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -.site-footer, -.site-footer label, -.site-footer small { - color: #acd7b5; -} -.site-footer a { - color: #acd7b5; -} -.footer-links ul li { - margin-bottom: 5px; -} -.attribution small { - color: #acd7b5; - font-size: 12px; -} -.attribution .ckan-footer-logo { - display: block; - width: 68px; - height: 21px; - margin-top: 2px; - background: url("../../../base/images/ckan-logo-footer.png") no-repeat top left; - text-indent: -900em; -} -.lang-select { - *zoom: 1; -} -.lang-select:before, -.lang-select:after { - display: table; - content: ""; - line-height: 0; -} -.lang-select:after { - clear: both; -} -.lang-select label, -.lang-select select, -.lang-select .lang-container { - float: left; - margin-top: 0; -} -.lang-dropdown { - color: #000; -} -.lang-dropdown li { - width: auto; -} -.table-selected td { - background-color: #f5f5f5; -} -.table-selected td .edit { - display: block; -} -.table-bulk-edit th input { - top: -5px; -} -.table-bulk-edit .table-actions .btn-group { - float: left; - margin: 0 10px 0 0; -} -.table-bulk-edit .context p { - margin-bottom: 0; -} -.table-header thead th { - background-color: #f6f6f6; -} -.table-edit-hover .edit { - display: none; - float: right; -} -.table-edit-hover tr:hover .edit { - display: block; -} -.js .table-toggle-more .toggle-more { - display: none; -} -.js .table-toggle-more .show-more { - display: inline; -} -.js .table-toggle-more .show-less { - display: none; -} -.js .table-toggle-more .toggle-seperator { - display: table-row; -} -.js .table-toggle-more .toggle-seperator td { - height: 11px; - padding: 0; - background-image: url("../../../base/images/table-seperator.png"); -} -.js .table .toggle-show td { - background: none; - text-align: center; -} -.js .table-toggle-less .show-less { - display: inline; -} -.js .table-toggle-less .show-more { - display: none; -} -.js .table-toggle-less .toggle-seperator { - display: none; -} -.profile .empty, -.profile .dataset-list { - margin-bottom: 20px; -} -.activity { - margin: 10px 0; - padding: 0; - list-style-type: none; - background: transparent url('../../../base/images/dotted.png') 14px 0 repeat-y; -} -.activity .item { - position: relative; - margin: 0 0 15px 0; - padding: 0; - *zoom: 1; -} -.activity .item:before, -.activity .item:after { - display: table; - content: ""; - line-height: 0; -} -.activity .item:after { - clear: both; -} -.activity .item .icon { - display: block; - position: absolute; - top: 0; - left: 0; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - color: #FFFFFF; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - font-weight: normal; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item .gravatar { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.activity .item .actor .gravatar { - position: absolute; - top: 0; - left: 40px; -} -.activity .item p { - font-size: 14px; - line-height: 1.5; - margin: 5px 0 0 80px; -} -.activity .item .date { - color: #999; - font-size: 12px; - white-space: nowrap; -} -.activity .item .new { - display: block; - position: absolute; - overflow: hidden; - top: -3px; - left: -3px; - width: 10px; - height: 10px; - background-color: #A35647; - border: 1px solid #FFF; - text-indent: -1000px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item.no-avatar p { - margin-left: 40px; -} -.activity .load-less { - margin-bottom: 15px; -} -.popover { - width: 300px; -} -.popover .popover-title { - font-weight: bold; - margin-bottom: 0; -} -.popover p.about { - margin: 0 0 10px 0; -} -.popover .popover-close { - float: right; - text-decoration: none; -} -.popover .popover-content { - font-size: 14px; - line-height: 20px; - color: #444; - word-break: break-all; -} -.popover .popover-content dl { - margin: 0; -} -.popover .popover-content dl dd { - margin-left: 0; - margin-bottom: 10px; -} -.activity .item .icon { - background-color: #999999; -} -.activity .item.failure .icon { - background-color: #B95252; -} -.activity .item.success .icon { - background-color: #69A67A; -} -.activity .item.added-tag .icon { - background-color: #6995a6; -} -.activity .item.changed-group .icon { - background-color: #767DCE; -} -.activity .item.changed-package .icon { - background-color: #8c76ce; -} -.activity .item.changed-package_extra .icon { - background-color: #769ace; -} -.activity .item.changed-resource .icon { - background-color: #aa76ce; -} -.activity .item.changed-user .icon { - background-color: #76b8ce; -} -.activity .item.changed-organization .icon { - background-color: #699fa6; -} -.activity .item.deleted-group .icon { - background-color: #B95252; -} -.activity .item.deleted-package .icon { - background-color: #b97452; -} -.activity .item.deleted-package_extra .icon { - background-color: #b95274; -} -.activity .item.deleted-resource .icon { - background-color: #b99752; -} -.activity .item.deleted-organization .icon { - background-color: #b95297; -} -.activity .item.new-group .icon { - background-color: #69A67A; -} -.activity .item.new-package .icon { - background-color: #69a68e; -} -.activity .item.new-package_extra .icon { - background-color: #6ca669; -} -.activity .item.new-resource .icon { - background-color: #81a669; -} -.activity .item.new-user .icon { - background-color: #69a6a3; -} -.activity .item.new-organization .icon { - background-color: #81a669; -} -.activity .item.removed-tag .icon { - background-color: #b95297; -} -.activity .item.deleted-related-item .icon { - background-color: #b9b952; -} -.activity .item.follow-dataset .icon { - background-color: #767DCE; -} -.activity .item.follow-user .icon { - background-color: #8c76ce; -} -.activity .item.new-related-item .icon { - background-color: #95a669; -} -.activity .item.follow-group .icon { - background-color: #8ba669; -} -.dropdown:hover .dropdown-menu { - display: block; -} -.js .dropdown .dropdown-menu, -.js .dropdown:hover .dropdown-menu { - display: none; -} -.js .dropdown.open .dropdown-menu { - display: block; -} -#followee-filter .btn { - *zoom: 1; -} -#followee-filter .btn:before, -#followee-filter .btn:after { - display: table; - content: ""; - line-height: 0; -} -#followee-filter .btn:after { - clear: both; -} -#followee-filter .btn span, -#followee-filter .btn strong { - display: block; - float: left; - line-height: 1.5; -} -#followee-filter .btn span { - font-weight: normal; -} -#followee-filter .btn strong { - margin: 0 5px; - white-space: nowrap; - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; -} -.dashboard-context { - position: relative; - margin-bottom: 20px; - padding: 20px; - border-bottom: 1px solid #DCDCDC; - background-color: #f6f6f6; - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; -} -.dashboard-context h2 { - margin-bottom: 10px; -} -.dashboard-context .arrow { - position: absolute; - content: ' '; - top: 30px; - right: -10px; - width: 10px; - height: 21px; - background: transparent url("../../../base/images/dashboard-followee-related.png"); -} -.popover-followee .popover-title { - display: none; -} -.popover-followee .popover-content { - padding: 0; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.popover-followee .empty { - padding: 10px; -} -.popover-followee .popover-header { - *zoom: 1; - background-color: whiteSmoke; - padding: 5px; - border-bottom: 1px solid #ccc; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.popover-followee .popover-header:before, -.popover-followee .popover-header:after { - display: table; - content: ""; - line-height: 0; -} -.popover-followee .popover-header:after { - clear: both; -} -.popover-followee .popover-header .input-prepend { - margin-bottom: 0; -} -.popover-followee .popover-header .add-on, -.popover-followee .popover-header input { - float: left; - margin: 0; -} -.popover-followee .popover-header .add-on { - padding: 4px 8px 4px 12px; - border-right-width: 0; - -webkit-border-radius: 100px 0 0 100px; - -moz-border-radius: 100px 0 0 100px; - border-radius: 100px 0 0 100px; -} -.popover-followee .popover-header input { - padding: 4px 12px 4px 8px; - font-size: 13px; - width: 207px; - -webkit-border-radius: 0 100px 100px 0; - -moz-border-radius: 0 100px 100px 0; - border-radius: 0 100px 100px 0; -} -.popover-followee .nav { - padding: 0; - margin: 0; - max-height: 205px; - overflow: auto; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.popover-followee .nav li a { - display: block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: 7px 10px 7px 15px; - margin: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.popover-followee .nav li a i { - background-color: #2F9B45; - color: #fff; - margin-right: 11px; - padding: 3px 5px; - line-height: 1; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); -} -.popover-followee .nav li a:hover i { - background-color: #000; -} -.popover-followee .nav li.active a i { - color: #2F9B45; - background-color: #fff; -} -.dashboard-me { - *zoom: 1; - padding: 15px 15px 0 15px; -} -.dashboard-me:before, -.dashboard-me:after { - display: table; - content: ""; - line-height: 0; -} -.dashboard-me:after { - clear: both; -} -.dashboard-me img { - float: left; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.dashboard-me strong { - display: block; - font-size: 16px; - margin: 3px 0; -} -.resource-view-filters { - margin-bottom: 1em; -} -.resource-view-filters .resource-view-filter { - margin-bottom: 1.0em; -} -.resource-view-filters .resource-view-remove-filter { - cursor: pointer; - color: #b55457; -} -.resource-view-filters .resource-view-filter-values .select2-container { - margin-right: 0.3em; - margin-bottom: 0.2em; - width: 24% !important; -} -.resource-view-filters .resource-view-filter-values .select2-container .select2-search-choice-close { - left: auto; -} -.datapusher-status-link:hover { - text-decoration: none; -} -.datapusher-status.status-unknown { - color: #bbb; -} -.datapusher-status.status-pending { - color: #FFCC00; -} -.datapusher-status.status-error { - color: red; -} -.datapusher-status.status-complete { - color: #009900; -} -body { - background: #2F9B45 url("../../../base/images/bg.png"); -} -[hidden] { - display: none; -} -table { - table-layout: fixed; -} -thead th { - vertical-align: top; -} -td, -th { - word-wrap: break-word; -} -table .metric { - width: 140px; -} -code { - color: #000; - border: none; - background: none; - white-space: normal; -} -pre { - border: none; - background: none; - padding-left: 0; - padding-right: 0; -} -mark { - background: #fdf7e9; -} -blockquote p { - font-size: 1em; -} -iframe { - border: none; -} -.embedded-content h1 { - font-size: 1.4em; -} -.embedded-content h2 { - font-size: 1.4em; -} -.embedded-content h3 { - font-size: 1.2em; -} -.popular { - text-indent: -999em; -} -.empty { - color: #aaa; - font-style: italic; -} -.page-heading { - margin-top: 0; - margin-bottom: 16px; -} -.m-top { - margin-top: 15px; -} -.m-left { - margin-left: 15px; -} -.m-right { - margin-right: 15px; -} -.m-bottom { - margin-bottom: 15px; -} -.no-margin { - margin: 0; -} -.reduced-margin { - margin: 3px 5px; -} -.p-top { - padding-top: 15px; -} -.p-left { - padding-left: 15px; -} -.p-right { - padding-right: 15px; -} -.p-bottom { - padding-bottom: 15px; -} -.no-padding { - padding: 0; -} -.reduced-padding { - padding: 3px 5px; -} -.ie .lang-dropdown { - position: relative; - top: -20px; -} -.ie .module-popup { - border-bottom: none; -} -.ie .banner { - top: 0; - right: 0; - width: auto; -} -.ie .group-listing { - margin-left: -24px; -} -.ie .toolbar .breadcrumb { - filter: none; -} -.ie .toolbar .breadcrumb li { - float: left; -} -.ie .toolbar .breadcrumb li:after { - margin: 0 0.2em; -} -.ie9 .control-large input { - height: 56px; -} -.ie8 .account-masthead a.image, -.ie8 .account-masthead .username { - white-space: nowrap; -} -.ie9 .homepage .media.module-heading .media-image img, -.ie8 .homepage .media.module-heading .media-image img, -.ie7 .homepage .media.module-heading .media-image img { - width: 85px !important; -} -.ie8 .masthead .nav-collapse, -.ie7 .masthead .nav-collapse { - float: right; -} -.ie8 [role=main], -.ie7 [role=main], -.ie8 .main, -.ie7 .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); -} -.ie8 .hero, -.ie7 .hero { - background: url("../../../base/images/background-tile.png"); -} -.ie8 .hero .hero-primary.module-popup .box, -.ie7 .hero .hero-primary.module-popup .box { - padding-bottom: 20px !important; - margin-bottom: 0 !important; -} -.ie8 .lang-dropdown, -.ie7 .lang-dropdown { - position: relative !important; - top: -90px !important; -} -.ie7 .alert { - position: relative; -} -.ie7 .alert .close { - position: absolute; - top: 6px !important; - right: 20px; -} -.ie7 .media-item { - width: 30%; -} -.ie7 .tags .tag-list { - *zoom: 1; -} -.ie7 .tags .tag-list:before, -.ie7 .tags .tag-list:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .tags .tag-list:after { - clear: both; -} -.ie7 .tags .tag-list li { - display: block; - float: left; -} -.ie7 .tags h3 { - float: left; -} -.ie7 .tags .tag { - display: block; -} -.ie7 .search-giant input { - width: 95%; -} -.ie7 .control-full input, -.ie7 .control-full select, -.ie7 .control-full textarea { - width: 95%; -} -.ie7 .control-full.control-large .controls input { - padding-bottom: 20px; -} -.ie7 .controls { - position: relative; -} -.ie7 .controls .info-block, -.ie7 .controls .info-inline { - position: absolute; - top: 0; - right: 0; -} -.ie7 .form-horizontal .controls { - margin-left: 0; -} -.ie7 .control-custom .checkbox { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .stages { - overflow: hidden; - background-color: #EDEDED; -} -.ie7 .stages li { - height: 30px; - width: 27.5%; -} -.ie7 .stages li button, -.ie7 .stages li span { - display: block; - height: 30px; - padding-left: 20px; -} -.ie7 .stages li button { - height: 50px; -} -.ie7 .stages li .highlight { - width: auto; -} -.ie7 .account-masthead .account a i { - line-height: 31px; -} -.ie7 .masthead { - position: relative; - z-index: 1; -} -.ie7 .masthead .logo img, -.ie7 .masthead nav { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .masthead .header-image { - display: block; -} -.ie7 .masthead .account .dropdown-menu { - z-index: 10000; -} -.ie7 .module-narrow .nav-item.image { - *zoom: 1; -} -.ie7 .module-narrow .nav-item.image:before, -.ie7 .module-narrow .nav-item.image:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-narrow .nav-item.image:after { - clear: both; -} -.ie7 .nav-facet .nav-item.active a { - content: 'x'; -} -.ie7 .toolbar .breadcrumb li { - padding-right: 10px; - margin-right: 5px; - background: transparent url("../../../base/images/breadcrumb-slash-ie7.png") 100% 50% no-repeat; -} -.ie7 .toolbar .breadcrumb li.active { - background-image: none; -} -.ie7 .module-heading { - *zoom: 1; - position: relative; -} -.ie7 .module-heading:before, -.ie7 .module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-heading:after { - clear: both; -} -.ie7 .module-heading .media-content { - position: relative; -} -.ie7 .module-heading .media-image img { - float: left; -} -.ie7 .group-listing { - position: relative; - zoom: 1; -} -.ie7 .resource-item { - position: static; - padding-bottom: 1px; -} -.ie7 .resource-item .heading { - position: relative; -} -.ie7 .resource-item .format-label { - left: -48px; -} -.ie7 .resource-item .btn-group { - position: relative; - float: right; - top: -35px; - right: 0; -} -.ie7 .media-overlay .media-heading { - background-color: #000; -} diff --git a/ckan/public-bs2/base/css/main.css b/ckan/public-bs2/base/css/main.css deleted file mode 100644 index 8c5601d4c70..00000000000 --- a/ckan/public-bs2/base/css/main.css +++ /dev/null @@ -1,9520 +0,0 @@ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} -audio:not([controls]) { - display: none; -} -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -a:hover, -a:active { - outline: 0; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - /* Responsive images (ensure images don't scale beyond their parents) */ - max-width: 100%; - /* Part 1: Set a maxium relative to the parent */ - width: auto\9; - /* IE7-8 need help adjusting responsive images */ - height: auto; - /* Part 2: Scale the height according to the width, otherwise you get stretching */ - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} -#map_canvas img, -.google-maps img { - max-width: none; -} -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} -button, -input { - *overflow: visible; - line-height: normal; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; -} -textarea { - overflow: auto; - vertical-align: top; -} -@media print { - * { - text-shadow: none !important; - color: #000 !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 0.5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } -} -.clearfix { - *zoom: 1; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; - line-height: 0; -} -.clearfix:after { - clear: both; -} -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -body { - margin: 0; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 20px; - color: #444; - background-color: #eee; -} -a { - color: #187794; - text-decoration: none; -} -a:hover, -a:focus { - color: #0d4252; - text-decoration: underline; -} -.img-rounded { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.img-polaroid { - padding: 4px; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} -.img-circle { - -webkit-border-radius: 500px; - -moz-border-radius: 500px; - border-radius: 500px; -} -.row { - margin-left: -20px; - *zoom: 1; -} -.row:before, -.row:after { - display: table; - content: ""; - line-height: 0; -} -.row:after { - clear: both; -} -[class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; -} -.container, -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} -.span12 { - width: 940px; -} -.span11 { - width: 860px; -} -.span10 { - width: 780px; -} -.span9 { - width: 700px; -} -.span8 { - width: 620px; -} -.span7 { - width: 540px; -} -.span6 { - width: 460px; -} -.span5 { - width: 380px; -} -.span4 { - width: 300px; -} -.span3 { - width: 220px; -} -.span2 { - width: 140px; -} -.span1 { - width: 60px; -} -.offset12 { - margin-left: 980px; -} -.offset11 { - margin-left: 900px; -} -.offset10 { - margin-left: 820px; -} -.offset9 { - margin-left: 740px; -} -.offset8 { - margin-left: 660px; -} -.offset7 { - margin-left: 580px; -} -.offset6 { - margin-left: 500px; -} -.offset5 { - margin-left: 420px; -} -.offset4 { - margin-left: 340px; -} -.offset3 { - margin-left: 260px; -} -.offset2 { - margin-left: 180px; -} -.offset1 { - margin-left: 100px; -} -.row-fluid { - width: 100%; - *zoom: 1; -} -.row-fluid:before, -.row-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.row-fluid:after { - clear: both; -} -.row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.12765957%; - *margin-left: 2.07446809%; -} -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} -.row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.12765957%; -} -.row-fluid .span12 { - width: 100%; - *width: 99.94680851%; -} -.row-fluid .span11 { - width: 91.4893617%; - *width: 91.43617021%; -} -.row-fluid .span10 { - width: 82.9787234%; - *width: 82.92553191%; -} -.row-fluid .span9 { - width: 74.46808511%; - *width: 74.41489362%; -} -.row-fluid .span8 { - width: 65.95744681%; - *width: 65.90425532%; -} -.row-fluid .span7 { - width: 57.44680851%; - *width: 57.39361702%; -} -.row-fluid .span6 { - width: 48.93617021%; - *width: 48.88297872%; -} -.row-fluid .span5 { - width: 40.42553191%; - *width: 40.37234043%; -} -.row-fluid .span4 { - width: 31.91489362%; - *width: 31.86170213%; -} -.row-fluid .span3 { - width: 23.40425532%; - *width: 23.35106383%; -} -.row-fluid .span2 { - width: 14.89361702%; - *width: 14.84042553%; -} -.row-fluid .span1 { - width: 6.38297872%; - *width: 6.32978723%; -} -.row-fluid .offset12 { - margin-left: 104.25531915%; - *margin-left: 104.14893617%; -} -.row-fluid .offset12:first-child { - margin-left: 102.12765957%; - *margin-left: 102.0212766%; -} -.row-fluid .offset11 { - margin-left: 95.74468085%; - *margin-left: 95.63829787%; -} -.row-fluid .offset11:first-child { - margin-left: 93.61702128%; - *margin-left: 93.5106383%; -} -.row-fluid .offset10 { - margin-left: 87.23404255%; - *margin-left: 87.12765957%; -} -.row-fluid .offset10:first-child { - margin-left: 85.10638298%; - *margin-left: 85%; -} -.row-fluid .offset9 { - margin-left: 78.72340426%; - *margin-left: 78.61702128%; -} -.row-fluid .offset9:first-child { - margin-left: 76.59574468%; - *margin-left: 76.4893617%; -} -.row-fluid .offset8 { - margin-left: 70.21276596%; - *margin-left: 70.10638298%; -} -.row-fluid .offset8:first-child { - margin-left: 68.08510638%; - *margin-left: 67.9787234%; -} -.row-fluid .offset7 { - margin-left: 61.70212766%; - *margin-left: 61.59574468%; -} -.row-fluid .offset7:first-child { - margin-left: 59.57446809%; - *margin-left: 59.46808511%; -} -.row-fluid .offset6 { - margin-left: 53.19148936%; - *margin-left: 53.08510638%; -} -.row-fluid .offset6:first-child { - margin-left: 51.06382979%; - *margin-left: 50.95744681%; -} -.row-fluid .offset5 { - margin-left: 44.68085106%; - *margin-left: 44.57446809%; -} -.row-fluid .offset5:first-child { - margin-left: 42.55319149%; - *margin-left: 42.44680851%; -} -.row-fluid .offset4 { - margin-left: 36.17021277%; - *margin-left: 36.06382979%; -} -.row-fluid .offset4:first-child { - margin-left: 34.04255319%; - *margin-left: 33.93617021%; -} -.row-fluid .offset3 { - margin-left: 27.65957447%; - *margin-left: 27.55319149%; -} -.row-fluid .offset3:first-child { - margin-left: 25.53191489%; - *margin-left: 25.42553191%; -} -.row-fluid .offset2 { - margin-left: 19.14893617%; - *margin-left: 19.04255319%; -} -.row-fluid .offset2:first-child { - margin-left: 17.0212766%; - *margin-left: 16.91489362%; -} -.row-fluid .offset1 { - margin-left: 10.63829787%; - *margin-left: 10.53191489%; -} -.row-fluid .offset1:first-child { - margin-left: 8.5106383%; - *margin-left: 8.40425532%; -} -[class*="span"].hide, -.row-fluid [class*="span"].hide { - display: none; -} -[class*="span"].pull-right, -.row-fluid [class*="span"].pull-right { - float: right; -} -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} -.container:before, -.container:after { - display: table; - content: ""; - line-height: 0; -} -.container:after { - clear: both; -} -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} -.container-fluid:before, -.container-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.container-fluid:after { - clear: both; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 21px; - font-weight: 200; - line-height: 30px; -} -small { - font-size: 85%; -} -strong { - font-weight: bold; -} -em { - font-style: italic; -} -cite { - font-style: normal; -} -.muted { - color: #999; -} -a.muted:hover, -a.muted:focus { - color: #808080; -} -.text-warning { - color: #c09853; -} -a.text-warning:hover, -a.text-warning:focus { - color: #a47e3c; -} -.text-error { - color: #b55457; -} -a.text-error:hover, -a.text-error:focus { - color: #954143; -} -.text-info { - color: #3a87ad; -} -a.text-info:hover, -a.text-info:focus { - color: #2d6987; -} -.text-success { - color: #468847; -} -a.text-success:hover, -a.text-success:focus { - color: #356635; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 10px 0; - font-family: inherit; - font-weight: bold; - line-height: 20px; - color: inherit; - text-rendering: optimizelegibility; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-weight: normal; - line-height: 1; - color: #999; -} -h1, -h2, -h3 { - line-height: 40px; -} -h1 { - font-size: 38.5px; -} -h2 { - font-size: 31.5px; -} -h3 { - font-size: 24.5px; -} -h4 { - font-size: 17.5px; -} -h5 { - font-size: 14px; -} -h6 { - font-size: 11.9px; -} -h1 small { - font-size: 24.5px; -} -h2 small { - font-size: 17.5px; -} -h3 small { - font-size: 14px; -} -h4 small { - font-size: 14px; -} -.page-header { - padding-bottom: 9px; - margin: 20px 0 30px; - border-bottom: 1px solid #eee; -} -ul, -ol { - padding: 0; - margin: 0 0 10px 25px; -} -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} -li { - line-height: 20px; -} -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} -ul.inline, -ol.inline { - margin-left: 0; - list-style: none; -} -ul.inline > li, -ol.inline > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-bottom: 20px; -} -dt, -dd { - line-height: 20px; -} -dt { - font-weight: bold; -} -dd { - margin-left: 10px; -} -.dl-horizontal { - *zoom: 1; -} -.dl-horizontal:before, -.dl-horizontal:after { - display: table; - content: ""; - line-height: 0; -} -.dl-horizontal:after { - clear: both; -} -.dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dl-horizontal dd { - margin-left: 180px; -} -hr { - margin: 20px 0; - border: 0; - border-top: 1px solid #eee; - border-bottom: 1px solid #fff; -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 0 0 0 15px; - margin: 0 0 20px; - border-left: 5px solid #eee; -} -blockquote p { - margin-bottom: 0; - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} -blockquote small { - display: block; - line-height: 20px; - color: #999; -} -blockquote small:before { - content: '\2014 \00A0'; -} -blockquote.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eee; - border-left: 0; -} -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} -blockquote.pull-right small:before { - content: ''; -} -blockquote.pull-right small:after { - content: '\00A0 \2014'; -} -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} -address { - display: block; - margin-bottom: 20px; - font-style: normal; - line-height: 20px; -} -code, -pre { - padding: 0 3px 2px; - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; - font-size: 12px; - color: #333; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -code { - padding: 2px 4px; - color: #d14; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; - white-space: nowrap; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 20px; - word-break: break-all; - word-wrap: break-word; - white-space: pre; - white-space: pre-wrap; - background-color: #f5f5f5; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -pre.prettyprint { - margin-bottom: 20px; -} -pre code { - padding: 0; - color: inherit; - white-space: pre; - white-space: pre-wrap; - background-color: transparent; - border: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -form { - margin: 0 0 20px; -} -fieldset { - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: 40px; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -legend small { - font-size: 15px; - color: #999; -} -label, -input, -button, -select, -textarea { - font-size: 14px; - font-weight: normal; - line-height: 20px; -} -input, -button, -select, -textarea { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} -label { - display: block; - margin-bottom: 5px; -} -select, -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - display: inline-block; - height: 20px; - padding: 4px 6px; - margin-bottom: 10px; - font-size: 14px; - line-height: 20px; - color: #555; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - vertical-align: middle; -} -input, -textarea, -.uneditable-input { - width: 206px; -} -textarea { - height: auto; -} -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - background-color: #fff; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear .2s, box-shadow linear .2s; - -moz-transition: border linear .2s, box-shadow linear .2s; - -o-transition: border linear .2s, box-shadow linear .2s; - transition: border linear .2s, box-shadow linear .2s; -} -textarea:focus, -input[type="text"]:focus, -input[type="password"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="date"]:focus, -input[type="month"]:focus, -input[type="time"]:focus, -input[type="week"]:focus, -input[type="number"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="color"]:focus, -.uneditable-input:focus { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - *margin-top: 0; - /* IE7 */ - margin-top: 1px \9; - /* IE8-9 */ - line-height: normal; -} -input[type="file"], -input[type="image"], -input[type="submit"], -input[type="reset"], -input[type="button"], -input[type="radio"], -input[type="checkbox"] { - width: auto; -} -select, -input[type="file"] { - height: 30px; - /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ - line-height: 30px; -} -select { - width: 220px; - border: 1px solid #ccc; - background-color: #fff; -} -select[multiple], -select[size] { - height: auto; -} -select:focus, -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.uneditable-input, -.uneditable-textarea { - color: #999; - background-color: #fcfcfc; - border-color: #ccc; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - cursor: not-allowed; -} -.uneditable-input { - overflow: hidden; - white-space: nowrap; -} -.uneditable-textarea { - width: auto; - height: auto; -} -input:-moz-placeholder, -textarea:-moz-placeholder { - color: #999; -} -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #999; -} -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #999; -} -.radio, -.checkbox { - min-height: 20px; - padding-left: 20px; -} -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.controls > .radio:first-child, -.controls > .checkbox:first-child { - padding-top: 5px; -} -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left: 10px; -} -.input-mini { - width: 60px; -} -.input-small { - width: 90px; -} -.input-medium { - width: 150px; -} -.input-large { - width: 210px; -} -.input-xlarge { - width: 270px; -} -.input-xxlarge { - width: 530px; -} -input[class*="span"], -select[class*="span"], -textarea[class*="span"], -.uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"] { - float: none; - margin-left: 0; -} -.input-append input[class*="span"], -.input-append .uneditable-input[class*="span"], -.input-prepend input[class*="span"], -.input-prepend .uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"], -.row-fluid .input-prepend [class*="span"], -.row-fluid .input-append [class*="span"] { - display: inline-block; -} -input, -textarea, -.uneditable-input { - margin-left: 0; -} -.controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; -} -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 926px; -} -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 846px; -} -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 766px; -} -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 686px; -} -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 606px; -} -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 526px; -} -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 446px; -} -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 366px; -} -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 286px; -} -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 206px; -} -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 126px; -} -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 46px; -} -.controls-row { - *zoom: 1; -} -.controls-row:before, -.controls-row:after { - display: table; - content: ""; - line-height: 0; -} -.controls-row:after { - clear: both; -} -.controls-row [class*="span"], -.row-fluid .controls-row [class*="span"] { - float: left; -} -.controls-row .checkbox[class*="span"], -.controls-row .radio[class*="span"] { - padding-top: 5px; -} -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eee; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"][readonly], -input[type="checkbox"][readonly] { - background-color: transparent; -} -.control-group.warning .control-label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} -.control-group.warning .checkbox, -.control-group.warning .radio, -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; -} -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} -.control-group.error .control-label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b55457; -} -.control-group.error .checkbox, -.control-group.error .radio, -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - border-color: #b55457; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #954143; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; -} -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b55457; - background-color: #f8f0f0; - border-color: #b55457; -} -.control-group.success .control-label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} -.control-group.success .checkbox, -.control-group.success .radio, -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; -} -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} -.control-group.info .control-label, -.control-group.info .help-block, -.control-group.info .help-inline { - color: #3a87ad; -} -.control-group.info .checkbox, -.control-group.info .radio, -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - color: #3a87ad; -} -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - border-color: #3a87ad; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.info input:focus, -.control-group.info select:focus, -.control-group.info textarea:focus { - border-color: #2d6987; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -} -.control-group.info .input-prepend .add-on, -.control-group.info .input-append .add-on { - color: #3a87ad; - background-color: #d9edf7; - border-color: #3a87ad; -} -input:focus:invalid, -textarea:focus:invalid, -select:focus:invalid { - color: #b94a48; - border-color: #ee5f5b; -} -input:focus:invalid:focus, -textarea:focus:invalid:focus, -select:focus:invalid:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} -.form-actions { - padding: 19px 20px 20px; - margin-top: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-top: 1px solid #e5e5e5; - *zoom: 1; -} -.form-actions:before, -.form-actions:after { - display: table; - content: ""; - line-height: 0; -} -.form-actions:after { - clear: both; -} -.help-block, -.help-inline { - color: #6a6a6a; -} -.help-block { - display: block; - margin-bottom: 10px; -} -.help-inline { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - vertical-align: middle; - padding-left: 5px; -} -.input-append, -.input-prepend { - display: inline-block; - margin-bottom: 10px; - vertical-align: middle; - font-size: 0; - white-space: nowrap; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input, -.input-append .dropdown-menu, -.input-prepend .dropdown-menu, -.input-append .popover, -.input-prepend .popover { - font-size: 14px; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: top; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append input:focus, -.input-prepend input:focus, -.input-append select:focus, -.input-prepend select:focus, -.input-append .uneditable-input:focus, -.input-prepend .uneditable-input:focus { - z-index: 2; -} -.input-append .add-on, -.input-prepend .add-on { - display: inline-block; - width: auto; - height: 20px; - min-width: 16px; - padding: 4px 5px; - font-size: 14px; - font-weight: normal; - line-height: 20px; - text-align: center; - text-shadow: 0 1px 0 #fff; - background-color: #eee; - border: 1px solid #ccc; -} -.input-append .add-on, -.input-prepend .add-on, -.input-append .btn, -.input-prepend .btn, -.input-append .btn-group > .dropdown-toggle, -.input-prepend .btn-group > .dropdown-toggle { - vertical-align: top; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-append .active, -.input-prepend .active { - background-color: #a9dba9; - border-color: #46a546; -} -.input-prepend .add-on, -.input-prepend .btn { - margin-right: -1px; -} -.input-prepend .add-on:first-child, -.input-prepend .btn:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input, -.input-append select, -.input-append .uneditable-input { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input + .btn-group .btn:last-child, -.input-append select + .btn-group .btn:last-child, -.input-append .uneditable-input + .btn-group .btn:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append .add-on, -.input-append .btn, -.input-append .btn-group { - margin-left: -1px; -} -.input-append .add-on:last-child, -.input-append .btn:last-child, -.input-append .btn-group:last-child > .dropdown-toggle { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append input, -.input-prepend.input-append select, -.input-prepend.input-append .uneditable-input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-prepend.input-append input + .btn-group .btn, -.input-prepend.input-append select + .btn-group .btn, -.input-prepend.input-append .uneditable-input + .btn-group .btn { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .add-on:first-child, -.input-prepend.input-append .btn:first-child { - margin-right: -1px; - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { - margin-left: -1px; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .btn-group:first-child { - margin-left: 0; -} -input.search-query { - padding-right: 14px; - padding-right: 4px \9; - padding-left: 14px; - padding-left: 4px \9; - /* IE7-8 doesn't have border-radius, so don't indent the padding */ - margin-bottom: 0; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -/* Allow for input prepend/append in search forms */ -.form-search .input-append .search-query, -.form-search .input-prepend .search-query { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.form-search .input-append .search-query { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search .input-append .btn { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .search-query { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .btn { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search input, -.form-inline input, -.form-horizontal input, -.form-search textarea, -.form-inline textarea, -.form-horizontal textarea, -.form-search select, -.form-inline select, -.form-horizontal select, -.form-search .help-inline, -.form-inline .help-inline, -.form-horizontal .help-inline, -.form-search .uneditable-input, -.form-inline .uneditable-input, -.form-horizontal .uneditable-input, -.form-search .input-prepend, -.form-inline .input-prepend, -.form-horizontal .input-prepend, -.form-search .input-append, -.form-inline .input-append, -.form-horizontal .input-append { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { - display: none; -} -.form-search label, -.form-inline label, -.form-search .btn-group, -.form-inline .btn-group { - display: inline-block; -} -.form-search .input-append, -.form-inline .input-append, -.form-search .input-prepend, -.form-inline .input-prepend { - margin-bottom: 0; -} -.form-search .radio, -.form-search .checkbox, -.form-inline .radio, -.form-inline .checkbox { - padding-left: 0; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"], -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: left; - margin-right: 3px; - margin-left: 0; -} -.control-group { - margin-bottom: 10px; -} -legend + .control-group { - margin-top: 20px; - -webkit-margin-top-collapse: separate; -} -.form-horizontal .control-group { - margin-bottom: 20px; - *zoom: 1; -} -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; - content: ""; - line-height: 0; -} -.form-horizontal .control-group:after { - clear: both; -} -.form-horizontal .control-label { - float: left; - width: 160px; - padding-top: 5px; - text-align: right; -} -.form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; - margin-left: 180px; - *margin-left: 0; -} -.form-horizontal .controls:first-child { - *padding-left: 180px; -} -.form-horizontal .help-block { - margin-bottom: 0; -} -.form-horizontal input + .help-block, -.form-horizontal select + .help-block, -.form-horizontal textarea + .help-block, -.form-horizontal .uneditable-input + .help-block, -.form-horizontal .input-prepend + .help-block, -.form-horizontal .input-append + .help-block { - margin-top: 10px; -} -.form-horizontal .form-actions { - padding-left: 180px; -} -table { - max-width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; -} -.table { - width: 100%; - margin-bottom: 20px; -} -.table th, -.table td { - padding: 8px; - line-height: 20px; - text-align: left; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table th { - font-weight: bold; -} -.table thead th { - vertical-align: bottom; -} -.table caption + thead tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child th, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child th, -.table thead:first-child tr:first-child td { - border-top: 0; -} -.table tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #eee; -} -.table-condensed th, -.table-condensed td { - padding: 4px 5px; -} -.table-bordered { - border: 1px solid #ddd; - border-collapse: separate; - *border-collapse: collapse; - border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.table-bordered th, -.table-bordered td { - border-left: 1px solid #ddd; -} -.table-bordered caption + thead tr:first-child th, -.table-bordered caption + tbody tr:first-child th, -.table-bordered caption + tbody tr:first-child td, -.table-bordered colgroup + thead tr:first-child th, -.table-bordered colgroup + tbody tr:first-child th, -.table-bordered colgroup + tbody tr:first-child td, -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { - border-top: 0; -} -.table-bordered thead:first-child tr:first-child > th:first-child, -.table-bordered tbody:first-child tr:first-child > td:first-child, -.table-bordered tbody:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered thead:first-child tr:first-child > th:last-child, -.table-bordered tbody:first-child tr:first-child > td:last-child, -.table-bordered tbody:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:first-child, -.table-bordered tbody:last-child tr:last-child > td:first-child, -.table-bordered tbody:last-child tr:last-child > th:first-child, -.table-bordered tfoot:last-child tr:last-child > td:first-child, -.table-bordered tfoot:last-child tr:last-child > th:first-child { - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:last-child, -.table-bordered tbody:last-child tr:last-child > td:last-child, -.table-bordered tbody:last-child tr:last-child > th:last-child, -.table-bordered tfoot:last-child tr:last-child > td:last-child, -.table-bordered tfoot:last-child tr:last-child > th:last-child { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomright: 0; - border-bottom-right-radius: 0; -} -.table-bordered caption + thead tr:first-child th:first-child, -.table-bordered caption + tbody tr:first-child td:first-child, -.table-bordered colgroup + thead tr:first-child th:first-child, -.table-bordered colgroup + tbody tr:first-child td:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered caption + thead tr:first-child th:last-child, -.table-bordered caption + tbody tr:first-child td:last-child, -.table-bordered colgroup + thead tr:first-child th:last-child, -.table-bordered colgroup + tbody tr:first-child td:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-striped tbody > tr:nth-child(odd) > td, -.table-striped tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.table-hover tbody tr:hover > td, -.table-hover tbody tr:hover > th { - background-color: #f5f5f5; -} -table td[class*="span"], -table th[class*="span"], -.row-fluid table td[class*="span"], -.row-fluid table th[class*="span"] { - display: table-cell; - float: none; - margin-left: 0; -} -.table td.span1, -.table th.span1 { - float: none; - width: 44px; - margin-left: 0; -} -.table td.span2, -.table th.span2 { - float: none; - width: 124px; - margin-left: 0; -} -.table td.span3, -.table th.span3 { - float: none; - width: 204px; - margin-left: 0; -} -.table td.span4, -.table th.span4 { - float: none; - width: 284px; - margin-left: 0; -} -.table td.span5, -.table th.span5 { - float: none; - width: 364px; - margin-left: 0; -} -.table td.span6, -.table th.span6 { - float: none; - width: 444px; - margin-left: 0; -} -.table td.span7, -.table th.span7 { - float: none; - width: 524px; - margin-left: 0; -} -.table td.span8, -.table th.span8 { - float: none; - width: 604px; - margin-left: 0; -} -.table td.span9, -.table th.span9 { - float: none; - width: 684px; - margin-left: 0; -} -.table td.span10, -.table th.span10 { - float: none; - width: 764px; - margin-left: 0; -} -.table td.span11, -.table th.span11 { - float: none; - width: 844px; - margin-left: 0; -} -.table td.span12, -.table th.span12 { - float: none; - width: 924px; - margin-left: 0; -} -.table tbody tr.success > td { - background-color: #dff0d8; -} -.table tbody tr.error > td { - background-color: #f8f0f0; -} -.table tbody tr.warning > td { - background-color: #fcf8e3; -} -.table tbody tr.info > td { - background-color: #d9edf7; -} -.table-hover tbody tr.success:hover > td { - background-color: #d0e9c6; -} -.table-hover tbody tr.error:hover > td { - background-color: #f0dfe0; -} -.table-hover tbody tr.warning:hover > td { - background-color: #faf2cc; -} -.table-hover tbody tr.info:hover > td { - background-color: #c4e3f3; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle { - *margin-bottom: -3px; -} -.dropdown-toggle:active, -.open .dropdown-toggle { - outline: 0; -} -.caret { - display: inline-block; - width: 0; - height: 0; - vertical-align: top; - border-top: 4px solid #000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - content: ""; -} -.dropdown .caret { - margin-top: 8px; - margin-left: 2px; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 20px; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus, -.dropdown-submenu:hover > a, -.dropdown-submenu:focus > a { - text-decoration: none; - color: #fff; - background-color: #17708b; - background-image: -moz-linear-gradient(top, #187794, #14657e); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#187794), to(#14657e)); - background-image: -webkit-linear-gradient(top, #187794, #14657e); - background-image: -o-linear-gradient(top, #187794, #14657e); - background-image: linear-gradient(to bottom, #187794, #14657e); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff187794', endColorstr='#ff14657e', GradientType=0); -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #17708b; - background-image: -moz-linear-gradient(top, #187794, #14657e); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#187794), to(#14657e)); - background-image: -webkit-linear-gradient(top, #187794, #14657e); - background-image: -o-linear-gradient(top, #187794, #14657e); - background-image: linear-gradient(to bottom, #187794, #14657e); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff187794', endColorstr='#ff14657e', GradientType=0); -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: default; -} -.open { - *z-index: 1000; -} -.open > .dropdown-menu { - display: block; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid #000; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -.dropdown-submenu { - position: relative; -} -.dropdown-submenu > .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} -.dropdown-submenu:hover > .dropdown-menu { - display: block; -} -.dropup .dropdown-submenu > .dropdown-menu { - top: auto; - bottom: 0; - margin-top: 0; - margin-bottom: -2px; - -webkit-border-radius: 5px 5px 5px 0; - -moz-border-radius: 5px 5px 5px 0; - border-radius: 5px 5px 5px 0; -} -.dropdown-submenu > a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} -.dropdown-submenu:hover > a:after { - border-left-color: #fff; -} -.dropdown-submenu.pull-left { - float: none; -} -.dropdown-submenu.pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.dropdown .dropdown-menu .nav-header { - padding-left: 20px; - padding-right: 20px; -} -.typeahead { - z-index: 1051; - margin-top: 2px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-large { - padding: 24px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.well-small { - padding: 9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} -.collapse.in { - height: auto; -} -.close { - float: right; - font-size: 20px; - font-weight: bold; - line-height: 20px; - color: #000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.btn { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding: 4px 12px; - margin-bottom: 0; - font-size: 14px; - line-height: 20px; - text-align: center; - vertical-align: middle; - cursor: pointer; - color: #333; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #ffffff, #eaeaea); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#eaeaea)); - background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea); - background-image: -o-linear-gradient(top, #ffffff, #eaeaea); - background-image: linear-gradient(to bottom, #ffffff, #eaeaea); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeaeaea', GradientType=0); - border-color: #eaeaea #eaeaea #c4c4c4; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #eaeaea; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border: 1px solid #ccc; - *border: 0; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *margin-left: .3em; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -} -.btn:hover, -.btn:focus, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - color: #333; - background-color: #eaeaea; - *background-color: #dddddd; -} -.btn:active, -.btn.active { - background-color: #d1d1d1 \9; -} -.btn:first-child { - *margin-left: 0; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn.active, -.btn:active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn.disabled, -.btn[disabled] { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-large { - padding: 11px 19px; - font-size: 17.5px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.btn-large [class^="icon-"], -.btn-large [class*=" icon-"] { - margin-top: 4px; -} -.btn-small { - padding: 2px 10px; - font-size: 11.9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-small [class^="icon-"], -.btn-small [class*=" icon-"] { - margin-top: 0; -} -.btn-mini [class^="icon-"], -.btn-mini [class*=" icon-"] { - margin-top: -1px; -} -.btn-mini { - padding: 0 6px; - font-size: 10.5px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} -.btn-primary { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #206b82; - background-image: -moz-linear-gradient(top, #30778d, #085871); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#30778d), to(#085871)); - background-image: -webkit-linear-gradient(top, #30778d, #085871); - background-image: -o-linear-gradient(top, #30778d, #085871); - background-image: linear-gradient(to bottom, #30778d, #085871); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff30778d', endColorstr='#ff085871', GradientType=0); - border-color: #085871 #085871 #03202a; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #085871; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - color: #fff; - background-color: #085871; - *background-color: #064559; -} -.btn-primary:active, -.btn-primary.active { - background-color: #053341 \9; -} -.btn-warning { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #f89406; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - color: #fff; - background-color: #f89406; - *background-color: #df8505; -} -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} -.btn-danger { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #da4f49; - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #bd362f; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - color: #fff; - background-color: #bd362f; - *background-color: #a9302a; -} -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} -.btn-success { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #5bb75b; - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(to bottom, #62c462, #51a351); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #51a351; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - color: #fff; - background-color: #51a351; - *background-color: #499249; -} -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} -.btn-info { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #49afcd; - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #2f96b4; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - color: #fff; - background-color: #2f96b4; - *background-color: #2a85a0; -} -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} -.btn-inverse { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #363636; - background-image: -moz-linear-gradient(top, #444, #222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444), to(#222)); - background-image: -webkit-linear-gradient(top, #444, #222); - background-image: -o-linear-gradient(top, #444, #222); - background-image: linear-gradient(to bottom, #444, #222); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); - border-color: #222 #222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #222; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-inverse:hover, -.btn-inverse:focus, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - color: #fff; - background-color: #222; - *background-color: #151515; -} -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} -button.btn, -input[type="submit"].btn { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn::-moz-focus-inner, -input[type="submit"].btn::-moz-focus-inner { - padding: 0; - border: 0; -} -button.btn.btn-large, -input[type="submit"].btn.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; -} -button.btn.btn-small, -input[type="submit"].btn.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn.btn-mini, -input[type="submit"].btn.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; -} -.btn-link, -.btn-link:active, -.btn-link[disabled] { - background-color: transparent; - background-image: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-link { - border-color: transparent; - cursor: pointer; - color: #187794; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-link:hover, -.btn-link:focus { - color: #0d4252; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -.btn-link[disabled]:focus { - color: #333; - text-decoration: none; -} -.btn-group { - position: relative; - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - font-size: 0; - vertical-align: middle; - white-space: nowrap; - *margin-left: .3em; -} -.btn-group:first-child { - *margin-left: 0; -} -.btn-group + .btn-group { - margin-left: 5px; -} -.btn-toolbar { - font-size: 0; - margin-top: 10px; - margin-bottom: 10px; -} -.btn-toolbar > .btn + .btn, -.btn-toolbar > .btn-group + .btn, -.btn-toolbar > .btn + .btn-group { - margin-left: 5px; -} -.btn-group > .btn { - position: relative; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group > .btn + .btn { - margin-left: -1px; -} -.btn-group > .btn, -.btn-group > .dropdown-menu, -.btn-group > .popover { - font-size: 14px; -} -.btn-group > .btn-mini { - font-size: 10.5px; -} -.btn-group > .btn-small { - font-size: 11.9px; -} -.btn-group > .btn-large { - font-size: 17.5px; -} -.btn-group > .btn:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.btn-group > .btn:last-child, -.btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.btn-group > .btn.large:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.btn-group > .btn.large:last-child, -.btn-group > .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active { - z-index: 2; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - *padding-top: 5px; - *padding-bottom: 5px; -} -.btn-group > .btn-mini + .dropdown-toggle { - padding-left: 5px; - padding-right: 5px; - *padding-top: 2px; - *padding-bottom: 2px; -} -.btn-group > .btn-small + .dropdown-toggle { - *padding-top: 5px; - *padding-bottom: 4px; -} -.btn-group > .btn-large + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; - *padding-top: 7px; - *padding-bottom: 7px; -} -.btn-group.open .dropdown-toggle { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn-group.open .btn.dropdown-toggle { - background-color: #eaeaea; -} -.btn-group.open .btn-primary.dropdown-toggle { - background-color: #085871; -} -.btn-group.open .btn-warning.dropdown-toggle { - background-color: #f89406; -} -.btn-group.open .btn-danger.dropdown-toggle { - background-color: #bd362f; -} -.btn-group.open .btn-success.dropdown-toggle { - background-color: #51a351; -} -.btn-group.open .btn-info.dropdown-toggle { - background-color: #2f96b4; -} -.btn-group.open .btn-inverse.dropdown-toggle { - background-color: #222; -} -.btn .caret { - margin-top: 8px; - margin-left: 0; -} -.btn-large .caret { - margin-top: 6px; -} -.btn-large .caret { - border-left-width: 5px; - border-right-width: 5px; - border-top-width: 5px; -} -.btn-mini .caret, -.btn-small .caret { - margin-top: 8px; -} -.dropup .btn-large .caret { - border-bottom-width: 5px; -} -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.btn-group-vertical { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.btn-group-vertical > .btn { - display: block; - float: none; - max-width: 100%; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group-vertical > .btn + .btn { - margin-left: 0; - margin-top: -1px; -} -.btn-group-vertical > .btn:first-child { - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.btn-group-vertical > .btn:last-child { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.btn-group-vertical > .btn-large:first-child { - -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; -} -.btn-group-vertical > .btn-large:last-child { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.alert { - padding: 8px 35px 8px 14px; - margin-bottom: 20px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - background-color: #fcf8e3; - border: 1px solid #fbeed5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.alert, -.alert h4 { - color: #c09853; -} -.alert h4 { - margin: 0; -} -.alert .close { - position: relative; - top: -2px; - right: -21px; - line-height: 20px; -} -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #468847; -} -.alert-success h4 { - color: #468847; -} -.alert-danger, -.alert-error { - background-color: #f8f0f0; - border-color: #c6898b; - color: #b55457; -} -.alert-danger h4, -.alert-error h4 { - color: #b55457; -} -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #3a87ad; -} -.alert-info h4 { - color: #3a87ad; -} -.alert-block { - padding-top: 14px; - padding-bottom: 14px; -} -.alert-block > p, -.alert-block > ul { - margin-bottom: 0; -} -.alert-block p + p { - margin-top: 5px; -} -.nav { - margin-left: 0; - margin-bottom: 20px; - list-style: none; -} -.nav > li > a { - display: block; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li > a > img { - max-width: none; -} -.nav > .pull-right { - float: right; -} -.nav-header { - display: block; - padding: 3px 15px; - font-size: 11px; - font-weight: bold; - line-height: 20px; - color: #999; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-transform: uppercase; -} -.nav li + .nav-header { - margin-top: 9px; -} -.nav-list { - padding-left: 15px; - padding-right: 15px; - margin-bottom: 0; -} -.nav-list > li > a, -.nav-list .nav-header { - margin-left: -15px; - margin-right: -15px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.nav-list > li > a { - padding: 3px 15px; -} -.nav-list > .active > a, -.nav-list > .active > a:hover, -.nav-list > .active > a:focus { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - background-color: #187794; -} -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - margin-right: 2px; -} -.nav-list .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.nav-tabs, -.nav-pills { - *zoom: 1; -} -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; - content: ""; - line-height: 0; -} -.nav-tabs:after, -.nav-pills:after { - clear: both; -} -.nav-tabs > li, -.nav-pills > li { - float: left; -} -.nav-tabs > li > a, -.nav-pills > li > a { - padding-right: 12px; - padding-left: 12px; - margin-right: 2px; - line-height: 14px; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - margin-bottom: -1px; -} -.nav-tabs > li > a { - padding-top: 8px; - padding-bottom: 8px; - line-height: 20px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - border-color: #eee #eee #ddd; -} -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover, -.nav-tabs > .active > a:focus { - color: #555; - background-color: #eee; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-pills > li > a { - padding-top: 8px; - padding-bottom: 8px; - margin-top: 2px; - margin-bottom: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-pills > .active > a, -.nav-pills > .active > a:hover, -.nav-pills > .active > a:focus { - color: #fff; - background-color: #187794; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li > a { - margin-right: 0; -} -.nav-tabs.nav-stacked { - border-bottom: 0; -} -.nav-tabs.nav-stacked > li > a { - border: 1px solid #ddd; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.nav-tabs.nav-stacked > li:first-child > a { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.nav-tabs.nav-stacked > li:last-child > a { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.nav-tabs.nav-stacked > li > a:hover, -.nav-tabs.nav-stacked > li > a:focus { - border-color: #ddd; - z-index: 2; -} -.nav-pills.nav-stacked > li > a { - margin-bottom: 3px; -} -.nav-pills.nav-stacked > li:last-child > a { - margin-bottom: 1px; -} -.nav-tabs .dropdown-menu { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.nav-pills .dropdown-menu { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.nav .dropdown-toggle .caret { - border-top-color: #187794; - border-bottom-color: #187794; - margin-top: 6px; -} -.nav .dropdown-toggle:hover .caret, -.nav .dropdown-toggle:focus .caret { - border-top-color: #0d4252; - border-bottom-color: #0d4252; -} -/* move down carets for tabs */ -.nav-tabs .dropdown-toggle .caret { - margin-top: 8px; -} -.nav .active .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.nav-tabs .active .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.nav > .dropdown.active > a:hover, -.nav > .dropdown.active > a:focus { - cursor: pointer; -} -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover, -.nav > li.dropdown.open.active > a:focus { - color: #fff; - background-color: #999; - border-color: #999; -} -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret, -.nav li.dropdown.open a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; - opacity: 1; - filter: alpha(opacity=100); -} -.tabs-stacked .open > a:hover, -.tabs-stacked .open > a:focus { - border-color: #999; -} -.tabbable { - *zoom: 1; -} -.tabbable:before, -.tabbable:after { - display: table; - content: ""; - line-height: 0; -} -.tabbable:after { - clear: both; -} -.tab-content { - overflow: auto; -} -.tabs-below > .nav-tabs, -.tabs-right > .nav-tabs, -.tabs-left > .nav-tabs { - border-bottom: 0; -} -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} -.tab-content > .active, -.pill-content > .active { - display: block; -} -.tabs-below > .nav-tabs { - border-top: 1px solid #ddd; -} -.tabs-below > .nav-tabs > li { - margin-top: -1px; - margin-bottom: 0; -} -.tabs-below > .nav-tabs > li > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.tabs-below > .nav-tabs > li > a:hover, -.tabs-below > .nav-tabs > li > a:focus { - border-bottom-color: transparent; - border-top-color: #ddd; -} -.tabs-below > .nav-tabs > .active > a, -.tabs-below > .nav-tabs > .active > a:hover, -.tabs-below > .nav-tabs > .active > a:focus { - border-color: transparent #ddd #ddd #ddd; -} -.tabs-left > .nav-tabs > li, -.tabs-right > .nav-tabs > li { - float: none; -} -.tabs-left > .nav-tabs > li > a, -.tabs-right > .nav-tabs > li > a { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; -} -.tabs-left > .nav-tabs { - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} -.tabs-left > .nav-tabs > li > a { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} -.tabs-left > .nav-tabs > li > a:hover, -.tabs-left > .nav-tabs > li > a:focus { - border-color: #eee #ddd #eee #eee; -} -.tabs-left > .nav-tabs .active > a, -.tabs-left > .nav-tabs .active > a:hover, -.tabs-left > .nav-tabs .active > a:focus { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #fff; -} -.tabs-right > .nav-tabs { - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} -.tabs-right > .nav-tabs > li > a { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} -.tabs-right > .nav-tabs > li > a:hover, -.tabs-right > .nav-tabs > li > a:focus { - border-color: #eee #eee #eee #ddd; -} -.tabs-right > .nav-tabs .active > a, -.tabs-right > .nav-tabs .active > a:hover, -.tabs-right > .nav-tabs .active > a:focus { - border-color: #ddd #ddd #ddd transparent; - *border-left-color: #fff; -} -.nav > .disabled > a { - color: #999; -} -.nav > .disabled > a:hover, -.nav > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - cursor: default; -} -.navbar { - overflow: visible; - margin-bottom: 20px; - *position: relative; - *z-index: 2; -} -.navbar-inner { - min-height: 40px; - padding-left: 20px; - padding-right: 20px; - background-color: #fafafa; - background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); - background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); - background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - border: 1px solid #d4d4d4; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - *zoom: 1; -} -.navbar-inner:before, -.navbar-inner:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-inner:after { - clear: both; -} -.navbar .container { - width: auto; -} -.nav-collapse.collapse { - height: auto; - overflow: visible; -} -.navbar .brand { - float: left; - display: block; - padding: 10px 20px 10px; - margin-left: -20px; - font-size: 20px; - font-weight: 200; - color: #777; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .brand:hover, -.navbar .brand:focus { - text-decoration: none; -} -.navbar-text { - margin-bottom: 0; - line-height: 40px; - color: #777; -} -.navbar-link { - color: #777; -} -.navbar-link:hover, -.navbar-link:focus { - color: #333; -} -.navbar .divider-vertical { - height: 40px; - margin: 0 9px; - border-left: 1px solid #f2f2f2; - border-right: 1px solid #ffffff; -} -.navbar .btn, -.navbar .btn-group { - margin-top: 5px; -} -.navbar .btn-group .btn, -.navbar .input-prepend .btn, -.navbar .input-append .btn, -.navbar .input-prepend .btn-group, -.navbar .input-append .btn-group { - margin-top: 0; -} -.navbar-form { - margin-bottom: 0; - *zoom: 1; -} -.navbar-form:before, -.navbar-form:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-form:after { - clear: both; -} -.navbar-form input, -.navbar-form select, -.navbar-form .radio, -.navbar-form .checkbox { - margin-top: 5px; -} -.navbar-form input, -.navbar-form select, -.navbar-form .btn { - display: inline-block; - margin-bottom: 0; -} -.navbar-form input[type="image"], -.navbar-form input[type="checkbox"], -.navbar-form input[type="radio"] { - margin-top: 3px; -} -.navbar-form .input-append, -.navbar-form .input-prepend { - margin-top: 5px; - white-space: nowrap; -} -.navbar-form .input-append input, -.navbar-form .input-prepend input { - margin-top: 0; -} -.navbar-search { - position: relative; - float: left; - margin-top: 5px; - margin-bottom: 0; -} -.navbar-search .search-query { - margin-bottom: 0; - padding: 4px 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 1; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.navbar-static-top { - position: static; - margin-bottom: 0; -} -.navbar-static-top .navbar-inner { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; - margin-bottom: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - border-width: 0 0 1px; -} -.navbar-fixed-bottom .navbar-inner { - border-width: 1px 0 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-left: 0; - padding-right: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; - width: 100%; - *width: 99.94680851%; - width: 926px; -} -.navbar-fixed-top { - top: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); - box-shadow: 0 1px 10px rgba(0,0,0,.1); -} -.navbar-fixed-bottom { - bottom: 0; -} -.navbar-fixed-bottom .navbar-inner { - -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - box-shadow: 0 -1px 10px rgba(0,0,0,.1); -} -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} -.navbar .nav.pull-right { - float: right; - margin-right: 0; -} -.navbar .nav > li { - float: left; -} -.navbar .nav > li > a { - float: none; - padding: 10px 15px 10px; - color: #777; - text-decoration: none; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .nav .dropdown-toggle .caret { - margin-top: 8px; -} -.navbar .nav > li > a:focus, -.navbar .nav > li > a:hover { - background-color: transparent; - color: #333; - text-decoration: none; -} -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: #555; - text-decoration: none; - background-color: #e5e5e5; - -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -} -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-left: 5px; - margin-right: 5px; - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ededed; - background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); - background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); - border-color: #e5e5e5 #e5e5e5 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #e5e5e5; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -} -.navbar .btn-navbar:hover, -.navbar .btn-navbar:focus, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - color: #fff; - background-color: #e5e5e5; - *background-color: #d9d9d9; -} -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #cccccc \9; -} -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -} -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} -.navbar .nav > li > .dropdown-menu:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; - top: -7px; - left: 9px; -} -.navbar .nav > li > .dropdown-menu:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - position: absolute; - top: -6px; - left: 10px; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:before { - border-top: 7px solid #ccc; - border-top-color: rgba(0, 0, 0, 0.2); - border-bottom: 0; - bottom: -7px; - top: auto; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:after { - border-top: 6px solid #fff; - border-bottom: 0; - bottom: -6px; - top: auto; -} -.navbar .nav li.dropdown > a:hover .caret, -.navbar .nav li.dropdown > a:focus .caret { - border-top-color: #333; - border-bottom-color: #333; -} -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #e5e5e5; - color: #555; -} -.navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #777; - border-bottom-color: #777; -} -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.navbar .pull-right > li > .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right { - left: auto; - right: 0; -} -.navbar .pull-right > li > .dropdown-menu:before, -.navbar .nav > li > .dropdown-menu.pull-right:before { - left: auto; - right: 12px; -} -.navbar .pull-right > li > .dropdown-menu:after, -.navbar .nav > li > .dropdown-menu.pull-right:after { - left: auto; - right: 13px; -} -.navbar .pull-right > li > .dropdown-menu .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { - left: auto; - right: 100%; - margin-left: 0; - margin-right: -1px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.navbar-inverse .navbar-inner { - background-color: #1b1b1b; - background-image: -moz-linear-gradient(top, #222222, #111111); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); - background-image: -webkit-linear-gradient(top, #222222, #111111); - background-image: -o-linear-gradient(top, #222222, #111111); - background-image: linear-gradient(to bottom, #222222, #111111); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); - border-color: #252525; -} -.navbar-inverse .brand, -.navbar-inverse .nav > li > a { - color: #999; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.navbar-inverse .brand:hover, -.navbar-inverse .nav > li > a:hover, -.navbar-inverse .brand:focus, -.navbar-inverse .nav > li > a:focus { - color: #fff; -} -.navbar-inverse .brand { - color: #999; -} -.navbar-inverse .navbar-text { - color: #999; -} -.navbar-inverse .nav > li > a:focus, -.navbar-inverse .nav > li > a:hover { - background-color: transparent; - color: #fff; -} -.navbar-inverse .nav .active > a, -.navbar-inverse .nav .active > a:hover, -.navbar-inverse .nav .active > a:focus { - color: #fff; - background-color: #111111; -} -.navbar-inverse .navbar-link { - color: #999; -} -.navbar-inverse .navbar-link:hover, -.navbar-inverse .navbar-link:focus { - color: #fff; -} -.navbar-inverse .divider-vertical { - border-left-color: #111111; - border-right-color: #222222; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #111111; - color: #fff; -} -.navbar-inverse .nav li.dropdown > a:hover .caret, -.navbar-inverse .nav li.dropdown > a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #999; - border-bottom-color: #999; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .navbar-search .search-query { - color: #fff; - background-color: #515151; - border-color: #111111; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} -.navbar-inverse .navbar-search .search-query:-moz-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:focus, -.navbar-inverse .navbar-search .search-query.focused { - padding: 5px 15px; - color: #333; - text-shadow: 0 1px 0 #fff; - background-color: #fff; - border: 0; - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - outline: 0; -} -.navbar-inverse .btn-navbar { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e0e0e; - background-image: -moz-linear-gradient(top, #151515, #040404); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); - background-image: -webkit-linear-gradient(top, #151515, #040404); - background-image: -o-linear-gradient(top, #151515, #040404); - background-image: linear-gradient(to bottom, #151515, #040404); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); - border-color: #040404 #040404 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #040404; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.navbar-inverse .btn-navbar:hover, -.navbar-inverse .btn-navbar:focus, -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active, -.navbar-inverse .btn-navbar.disabled, -.navbar-inverse .btn-navbar[disabled] { - color: #fff; - background-color: #040404; - *background-color: #000000; -} -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active { - background-color: #000000 \9; -} -.breadcrumb { - padding: 8px 15px; - margin: 0 0 20px; - list-style: none; - background-color: #f5f5f5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - text-shadow: 0 1px 0 #fff; -} -.breadcrumb > li > .divider { - padding: 0 5px; - color: #ccc; -} -.breadcrumb > .active { - color: #999; -} -.pagination { - margin: 20px 0; -} -.pagination ul { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-left: 0; - margin-bottom: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -} -.pagination ul > li { - display: inline; -} -.pagination ul > li > a, -.pagination ul > li > span { - float: left; - padding: 4px 12px; - line-height: 20px; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; - border-left-width: 0; -} -.pagination ul > li > a:hover, -.pagination ul > li > a:focus, -.pagination ul > .active > a, -.pagination ul > .active > span { - background-color: #f5f5f5; -} -.pagination ul > .active > a, -.pagination ul > .active > span { - color: #999; - cursor: default; -} -.pagination ul > .disabled > span, -.pagination ul > .disabled > a, -.pagination ul > .disabled > a:hover, -.pagination ul > .disabled > a:focus { - color: #999; - background-color: transparent; - cursor: default; -} -.pagination ul > li:first-child > a, -.pagination ul > li:first-child > span { - border-left-width: 1px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.pagination ul > li:last-child > a, -.pagination ul > li:last-child > span { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.pagination-centered { - text-align: center; -} -.pagination-right { - text-align: right; -} -.pagination-large ul > li > a, -.pagination-large ul > li > span { - padding: 11px 19px; - font-size: 17.5px; -} -.pagination-large ul > li:first-child > a, -.pagination-large ul > li:first-child > span { - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.pagination-large ul > li:last-child > a, -.pagination-large ul > li:last-child > span { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.pagination-mini ul > li:first-child > a, -.pagination-small ul > li:first-child > a, -.pagination-mini ul > li:first-child > span, -.pagination-small ul > li:first-child > span { - -webkit-border-top-left-radius: 3px; - -moz-border-radius-topleft: 3px; - border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - border-bottom-left-radius: 3px; -} -.pagination-mini ul > li:last-child > a, -.pagination-small ul > li:last-child > a, -.pagination-mini ul > li:last-child > span, -.pagination-small ul > li:last-child > span { - -webkit-border-top-right-radius: 3px; - -moz-border-radius-topright: 3px; - border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - border-bottom-right-radius: 3px; -} -.pagination-small ul > li > a, -.pagination-small ul > li > span { - padding: 2px 10px; - font-size: 11.9px; -} -.pagination-mini ul > li > a, -.pagination-mini ul > li > span { - padding: 0 6px; - font-size: 10.5px; -} -.pager { - margin: 20px 0; - list-style: none; - text-align: center; - *zoom: 1; -} -.pager:before, -.pager:after { - display: table; - content: ""; - line-height: 0; -} -.pager:after { - clear: both; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #f5f5f5; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999; - background-color: #fff; - cursor: default; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop, -.modal-backdrop.fade.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.modal { - position: fixed; - top: 10%; - left: 50%; - z-index: 1050; - width: 560px; - margin-left: -280px; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.3); - *border: 1px solid #999; - /* IE6-7 */ - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; - outline: none; -} -.modal.fade { - -webkit-transition: opacity .3s linear, top .3s ease-out; - -moz-transition: opacity .3s linear, top .3s ease-out; - -o-transition: opacity .3s linear, top .3s ease-out; - transition: opacity .3s linear, top .3s ease-out; - top: -25%; -} -.modal.fade.in { - top: 10%; -} -.modal-header { - padding: 9px 15px; - border-bottom: 1px solid #eee; -} -.modal-header .close { - margin-top: 2px; -} -.modal-header h3 { - margin: 0; - line-height: 30px; -} -.modal-body { - position: relative; - overflow-y: auto; - max-height: 400px; - padding: 15px; -} -.modal-form { - margin-bottom: 0; -} -.modal-footer { - padding: 14px 15px 15px; - margin-bottom: 0; - text-align: right; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - -webkit-box-shadow: inset 0 1px 0 #fff; - -moz-box-shadow: inset 0 1px 0 #fff; - box-shadow: inset 0 1px 0 #fff; - *zoom: 1; -} -.modal-footer:before, -.modal-footer:after { - display: table; - content: ""; - line-height: 0; -} -.modal-footer:after { - clear: both; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - visibility: visible; - font-size: 11px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.thumbnails { - margin-left: -20px; - list-style: none; - *zoom: 1; -} -.thumbnails:before, -.thumbnails:after { - display: table; - content: ""; - line-height: 0; -} -.thumbnails:after { - clear: both; -} -.row-fluid .thumbnails { - margin-left: 0; -} -.thumbnails > li { - float: left; - margin-bottom: 20px; - margin-left: 20px; -} -.thumbnail { - display: block; - padding: 4px; - line-height: 20px; - border: 1px solid #ddd; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -a.thumbnail:hover, -a.thumbnail:focus { - border-color: #187794; - -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -} -.thumbnail > img { - display: block; - max-width: 100%; - margin-left: auto; - margin-right: auto; -} -.thumbnail .caption { - padding: 9px; - color: #555; -} -.label, -.badge { - display: inline-block; - padding: 2px 4px; - font-size: 11.844px; - font-weight: bold; - line-height: 14px; - color: #fff; - vertical-align: baseline; - white-space: nowrap; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #999; -} -.label { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.badge { - padding-left: 9px; - padding-right: 9px; - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} -.label:empty, -.badge:empty { - display: none; -} -a.label:hover, -a.label:focus, -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-important, -.badge-important { - background-color: #b55457; -} -.label-important[href], -.badge-important[href] { - background-color: #954143; -} -.label-warning, -.badge-warning { - background-color: #f89406; -} -.label-warning[href], -.badge-warning[href] { - background-color: #c67605; -} -.label-success, -.badge-success { - background-color: #468847; -} -.label-success[href], -.badge-success[href] { - background-color: #356635; -} -.label-info, -.badge-info { - background-color: #3a87ad; -} -.label-info[href], -.badge-info[href] { - background-color: #2d6987; -} -.label-inverse, -.badge-inverse { - background-color: #333; -} -.label-inverse[href], -.badge-inverse[href] { - background-color: #1a1a1a; -} -.btn .label, -.btn .badge { - position: relative; - top: -1px; -} -.btn-mini .label, -.btn-mini .badge { - top: 0; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-ms-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.progress .bar { - width: 0%; - height: 100%; - color: #fff; - float: left; - font-size: 12px; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e90d2; - background-image: -moz-linear-gradient(top, #149bdf, #0480be); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); - background-image: -webkit-linear-gradient(top, #149bdf, #0480be); - background-image: -o-linear-gradient(top, #149bdf, #0480be); - background-image: linear-gradient(to bottom, #149bdf, #0480be); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress .bar + .bar { - -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -} -.progress-striped .bar { - background-color: #149bdf; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-danger .bar, -.progress .bar-danger { - background-color: #dd514c; - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); -} -.progress-danger.progress-striped .bar, -.progress-striped .bar-danger { - background-color: #ee5f5b; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-success .bar, -.progress .bar-success { - background-color: #5eb95e; - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(to bottom, #62c462, #57a957); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); -} -.progress-success.progress-striped .bar, -.progress-striped .bar-success { - background-color: #62c462; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-info .bar, -.progress .bar-info { - background-color: #4bb1cf; - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); -} -.progress-info.progress-striped .bar, -.progress-striped .bar-info { - background-color: #5bc0de; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-warning .bar, -.progress .bar-warning { - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); -} -.progress-warning.progress-striped .bar, -.progress-striped .bar-warning { - background-color: #fbb450; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.accordion { - margin-bottom: 20px; -} -.accordion-group { - margin-bottom: 2px; - border: 1px solid #e5e5e5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.accordion-heading { - border-bottom: 0; -} -.accordion-heading .accordion-toggle { - display: block; - padding: 8px 15px; -} -.accordion-toggle { - cursor: pointer; -} -.accordion-inner { - padding: 9px 15px; - border-top: 1px solid #e5e5e5; -} -.carousel { - position: relative; - margin-bottom: 20px; - line-height: 1; -} -.carousel-inner { - overflow: hidden; - width: 100%; - position: relative; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 40%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -20px; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #fff; - text-align: center; - background: #222; - border: 3px solid #fff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - filter: alpha(opacity=50); -} -.carousel-control.right { - left: auto; - right: 15px; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-indicators { - position: absolute; - top: 15px; - right: 15px; - z-index: 5; - margin: 0; - list-style: none; -} -.carousel-indicators li { - display: block; - float: left; - width: 10px; - height: 10px; - margin-left: 5px; - text-indent: -999px; - background-color: #ccc; - background-color: rgba(255, 255, 255, 0.25); - border-radius: 5px; -} -.carousel-indicators .active { - background-color: #fff; -} -.carousel-caption { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 15px; - background: #333; - background: rgba(0, 0, 0, 0.75); -} -.carousel-caption h4, -.carousel-caption p { - color: #fff; - line-height: 20px; -} -.carousel-caption h4 { - margin: 0 0 5px; -} -.carousel-caption p { - margin-bottom: 0; -} -.hero-unit { - padding: 60px; - margin-bottom: 30px; - font-size: 18px; - font-weight: 200; - line-height: 30px; - color: inherit; - background-color: #eee; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.hero-unit h1 { - margin-bottom: 0; - font-size: 60px; - line-height: 1; - color: inherit; - letter-spacing: -1px; -} -.hero-unit li { - line-height: 30px; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - background-color: #fff; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.popover-title:empty { - display: none; -} -.popover-content { - padding: 9px 14px; -} -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover .arrow { - border-width: 11px; -} -.popover .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #fff; -} -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right .arrow:after { - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; -} -.popover.bottom .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left .arrow:after { - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.hide { - display: none; -} -.show { - display: block; -} -.invisible { - visibility: hidden; -} -.affix { - position: fixed; -} -/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ -@-ms-viewport { - width: device-width; -} -.hidden { - display: none; - visibility: hidden; -} -.visible-phone { - display: none !important; -} -.visible-tablet { - display: none !important; -} -.hidden-desktop { - display: none !important; -} -.visible-desktop { - display: inherit !important; -} -@media (min-width: 768px) and (max-width: 979px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important ; - } - .visible-tablet { - display: inherit !important; - } - .hidden-tablet { - display: none !important; - } -} -@media (max-width: 767px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important; - } - .visible-phone { - display: inherit !important; - } - .hidden-phone { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: inherit !important; - } - .hidden-print { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - content: ""; - line-height: 0; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; - } - .span3 { - width: 166px; - } - .span2 { - width: 104px; - } - .span1 { - width: 42px; - } - .offset12 { - margin-left: 764px; - } - .offset11 { - margin-left: 702px; - } - .offset10 { - margin-left: 640px; - } - .offset9 { - margin-left: 578px; - } - .offset8 { - margin-left: 516px; - } - .offset7 { - margin-left: 454px; - } - .offset6 { - margin-left: 392px; - } - .offset5 { - margin-left: 330px; - } - .offset4 { - margin-left: 268px; - } - .offset3 { - margin-left: 206px; - } - .offset2 { - margin-left: 144px; - } - .offset1 { - margin-left: 82px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - content: ""; - line-height: 0; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.76243094%; - *margin-left: 2.70923945%; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.76243094%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851%; - } - .row-fluid .span11 { - width: 91.43646409%; - *width: 91.3832726%; - } - .row-fluid .span10 { - width: 82.87292818%; - *width: 82.81973669%; - } - .row-fluid .span9 { - width: 74.30939227%; - *width: 74.25620078%; - } - .row-fluid .span8 { - width: 65.74585635%; - *width: 65.69266486%; - } - .row-fluid .span7 { - width: 57.18232044%; - *width: 57.12912895%; - } - .row-fluid .span6 { - width: 48.61878453%; - *width: 48.56559304%; - } - .row-fluid .span5 { - width: 40.05524862%; - *width: 40.00205713%; - } - .row-fluid .span4 { - width: 31.49171271%; - *width: 31.43852122%; - } - .row-fluid .span3 { - width: 22.9281768%; - *width: 22.87498531%; - } - .row-fluid .span2 { - width: 14.36464088%; - *width: 14.31144939%; - } - .row-fluid .span1 { - width: 5.80110497%; - *width: 5.74791348%; - } - .row-fluid .offset12 { - margin-left: 105.52486188%; - *margin-left: 105.4184789%; - } - .row-fluid .offset12:first-child { - margin-left: 102.76243094%; - *margin-left: 102.65604796%; - } - .row-fluid .offset11 { - margin-left: 96.96132597%; - *margin-left: 96.85494299%; - } - .row-fluid .offset11:first-child { - margin-left: 94.19889503%; - *margin-left: 94.09251205%; - } - .row-fluid .offset10 { - margin-left: 88.39779006%; - *margin-left: 88.29140708%; - } - .row-fluid .offset10:first-child { - margin-left: 85.63535912%; - *margin-left: 85.52897614%; - } - .row-fluid .offset9 { - margin-left: 79.83425414%; - *margin-left: 79.72787116%; - } - .row-fluid .offset9:first-child { - margin-left: 77.0718232%; - *margin-left: 76.96544023%; - } - .row-fluid .offset8 { - margin-left: 71.27071823%; - *margin-left: 71.16433525%; - } - .row-fluid .offset8:first-child { - margin-left: 68.50828729%; - *margin-left: 68.40190431%; - } - .row-fluid .offset7 { - margin-left: 62.70718232%; - *margin-left: 62.60079934%; - } - .row-fluid .offset7:first-child { - margin-left: 59.94475138%; - *margin-left: 59.8383684%; - } - .row-fluid .offset6 { - margin-left: 54.14364641%; - *margin-left: 54.03726343%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121547%; - *margin-left: 51.27483249%; - } - .row-fluid .offset5 { - margin-left: 45.5801105%; - *margin-left: 45.47372752%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767956%; - *margin-left: 42.71129658%; - } - .row-fluid .offset4 { - margin-left: 37.01657459%; - *margin-left: 36.91019161%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414365%; - *margin-left: 34.14776067%; - } - .row-fluid .offset3 { - margin-left: 28.45303867%; - *margin-left: 28.3466557%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773%; - *margin-left: 25.58422476%; - } - .row-fluid .offset2 { - margin-left: 19.88950276%; - *margin-left: 19.78311978%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182%; - *margin-left: 17.02068884%; - } - .row-fluid .offset1 { - margin-left: 11.32596685%; - *margin-left: 11.21958387%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591%; - *margin-left: 8.45715293%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 710px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 648px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 586px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 524px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 462px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 400px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 338px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 276px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 214px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 152px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 90px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 28px; - } -} -@media (max-width: 767px) { - body { - padding-left: 20px; - padding-right: 20px; - } - .navbar-fixed-top, - .navbar-fixed-bottom, - .navbar-static-top { - margin-left: -20px; - margin-right: -20px; - } - .container-fluid { - padding: 0; - } - .dl-horizontal dt { - float: none; - clear: none; - width: auto; - text-align: left; - } - .dl-horizontal dd { - margin-left: 0; - } - .container { - width: auto; - } - .row-fluid { - width: 100%; - } - .row, - .thumbnails { - margin-left: 0; - } - .thumbnails > li { - float: none; - margin-left: 0; - } - [class*="span"], - .uneditable-input[class*="span"], - .row-fluid [class*="span"] { - float: none; - display: block; - width: 100%; - margin-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .span12, - .row-fluid .span12 { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="offset"]:first-child { - margin-left: 0; - } - .input-large, - .input-xlarge, - .input-xxlarge, - input[class*="span"], - select[class*="span"], - textarea[class*="span"], - .uneditable-input { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .input-prepend input, - .input-append input, - .input-prepend input[class*="span"], - .input-append input[class*="span"] { - display: inline-block; - width: auto; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 0; - } - .modal { - position: fixed; - top: 20px; - left: 20px; - right: 20px; - width: auto; - margin: 0; - } - .modal.fade { - top: -100px; - } - .modal.fade.in { - top: 20px; - } -} -@media (max-width: 480px) { - .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); - } - .page-header h1 small { - display: block; - line-height: 20px; - } - input[type="checkbox"], - input[type="radio"] { - border: 1px solid #ccc; - } - .form-horizontal .control-label { - float: none; - width: auto; - padding-top: 0; - text-align: left; - } - .form-horizontal .controls { - margin-left: 0; - } - .form-horizontal .control-list { - padding-top: 0; - } - .form-horizontal .form-actions { - padding-left: 10px; - padding-right: 10px; - } - .media .pull-left, - .media .pull-right { - float: none; - display: block; - margin-bottom: 10px; - } - .media-object { - margin-right: 0; - margin-left: 0; - } - .modal { - top: 10px; - left: 10px; - right: 10px; - } - .modal-header .close { - padding: 10px; - margin: -10px; - } - .carousel-caption { - position: static; - } -} -@media (max-width: 979px) { - body { - padding-top: 0; - } - .navbar-fixed-top, - .navbar-fixed-bottom { - position: static; - } - .navbar-fixed-top { - margin-bottom: 20px; - } - .navbar-fixed-bottom { - margin-top: 20px; - } - .navbar-fixed-top .navbar-inner, - .navbar-fixed-bottom .navbar-inner { - padding: 5px; - } - .navbar .container { - width: auto; - padding: 0; - } - .navbar .brand { - padding-left: 10px; - padding-right: 10px; - margin: 0 0 0 -5px; - } - .nav-collapse { - clear: both; - } - .nav-collapse .nav { - float: none; - margin: 0 0 10px; - } - .nav-collapse .nav > li { - float: none; - } - .nav-collapse .nav > li > a { - margin-bottom: 2px; - } - .nav-collapse .nav > .divider-vertical { - display: none; - } - .nav-collapse .nav .nav-header { - color: #777; - text-shadow: none; - } - .nav-collapse .nav > li > a, - .nav-collapse .dropdown-menu a { - padding: 9px 15px; - font-weight: bold; - color: #777; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - } - .nav-collapse .btn { - padding: 4px 10px 4px; - font-weight: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .nav-collapse .dropdown-menu li + li a { - margin-bottom: 2px; - } - .nav-collapse .nav > li > a:hover, - .nav-collapse .nav > li > a:focus, - .nav-collapse .dropdown-menu a:hover, - .nav-collapse .dropdown-menu a:focus { - background-color: #f2f2f2; - } - .navbar-inverse .nav-collapse .nav > li > a, - .navbar-inverse .nav-collapse .dropdown-menu a { - color: #999; - } - .navbar-inverse .nav-collapse .nav > li > a:hover, - .navbar-inverse .nav-collapse .nav > li > a:focus, - .navbar-inverse .nav-collapse .dropdown-menu a:hover, - .navbar-inverse .nav-collapse .dropdown-menu a:focus { - background-color: #111111; - } - .nav-collapse.in .btn-group { - margin-top: 5px; - padding: 0; - } - .nav-collapse .dropdown-menu { - position: static; - top: auto; - left: auto; - float: none; - display: none; - max-width: none; - margin: 0 15px; - padding: 0; - background-color: transparent; - border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - } - .nav-collapse .open > .dropdown-menu { - display: block; - } - .nav-collapse .dropdown-menu:before, - .nav-collapse .dropdown-menu:after { - display: none; - } - .nav-collapse .dropdown-menu .divider { - display: none; - } - .nav-collapse .nav > li > .dropdown-menu:before, - .nav-collapse .nav > li > .dropdown-menu:after { - display: none; - } - .nav-collapse .navbar-form, - .nav-collapse .navbar-search { - float: none; - padding: 10px 15px; - margin: 10px 0; - border-top: 1px solid #f2f2f2; - border-bottom: 1px solid #f2f2f2; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - } - .navbar-inverse .nav-collapse .navbar-form, - .navbar-inverse .nav-collapse .navbar-search { - border-top-color: #111111; - border-bottom-color: #111111; - } - .navbar .nav-collapse .nav.pull-right { - float: none; - margin-left: 0; - } - .nav-collapse, - .nav-collapse.collapse { - overflow: hidden; - height: 0; - } - .navbar .btn-navbar { - display: block; - } - .navbar-static .navbar-inner { - padding-left: 10px; - padding-right: 10px; - } -} -@media (min-width: 979px + 1) { - .nav-collapse.collapse { - height: auto !important; - overflow: visible !important; - } -} -.break-word { - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.tag { - display: inline-block; - margin-bottom: 4px; - color: #111; - background-color: #f6f6f6; - padding: 1px 10px; - border: 1px solid #dddddd; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} -a.tag:hover { - text-decoration: none; - color: #fff; - background-color: #30778d; - border: 1px solid #235767; - -webkit-box-shadow: inset 0 1px 0 #3d97b3; - -moz-box-shadow: inset 0 1px 0 #3d97b3; - box-shadow: inset 0 1px 0 #3d97b3; -} -.pill { - display: inline-block; - background-color: #6f8890; - color: #FFF; - padding: 2px 10px 1px 10px; - margin-right: 5px; - font-weight: normal; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.pill a { - color: #FFF; -} -.pill a.remove { - font-size: 11px; -} -.unstyled { - margin: 0; - list-style: none; -} -.simple-item { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-item:last-of-type { - border-bottom: 0; -} -.simple-list { - *zoom: 1; - margin: 0; - list-style: none; -} -.simple-list:before, -.simple-list:after { - display: table; - content: ""; - line-height: 0; -} -.simple-list:after { - clear: both; -} -.simple-list > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-list > li:last-of-type { - border-bottom: 0; -} -.simple-list .ckan-icon { - position: relative; - top: 0px; -} -.module-narrow .simple-list > li { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.listing li { - text-align: right; - margin-bottom: 5px; -} -.listing .key { - clear: right; - font-weight: bold; -} -.js .tab-content { - display: none; -} -.js .tab-content.active { - display: block; -} -.box { - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); -} -.module { - margin: 20px 0; -} -.module-heading { - *zoom: 1; - margin: 0; - padding: 7px 25px; - font-size: 14px; - line-height: 1.3; - background-color: #f6f6f6; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} -.module-heading:before, -.module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.module-heading:after { - clear: both; -} -.module-content { - padding: 0 25px; - margin: 20px 0; -} -@media (min-width: 768px) { - .span9 div.module-content { - padding-left: 10px; - } -} -.module-content:first-child { - margin-top: 0; - padding-top: 20px; -} -.module-content:last-child { - margin-bottom: 0; - padding-bottom: 20px; -} -.module-content > :last-child { - margin-bottom: 0; -} -.module:first-child .module-heading { - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; - border-top-width: 0; -} -.module:last-child { - margin-bottom: 20px; -} -.module-footer { - padding: 7px 25px 7px; - margin: 0; - border-top: 1px dotted #ddd; -} -.module .read-more { - font-weight: bold; - color: #000; -} -.module-content .pagination { - margin-left: -25px; - margin-right: -25px; - margin-bottom: -20px; -} -.module .pagination > ul { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border: 0; -} -.module .pagination li a { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - padding-top: 7px; - padding-bottom: 7px; -} -.module .pagination li:first-child a, -.module .pagination li:last-child a { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.module-content-shallow { - padding: 0; - margin-top: 10px; - padding-bottom: 10px; -} -.module h1 { - margin-bottom: 20px; -} -.module-shallow .module-content { - padding: 10px; - margin: 0; -} -.module-shallow .module-tags { - margin-top: 0; - margin-bottom: 0; -} -.module-shallow .module-content:first-child { - padding-top: 10px; -} -.module-shallow .module-content:last-child { - padding-bottom: 10px; -} -.module-narrow .module-heading, -.module-narrow .module-content, -.module-narrow .module-footer { - padding-left: 15px; - padding-right: 15px; -} -.module-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.module-grid:before, -.module-grid:after { - display: table; - content: ""; - line-height: 0; -} -.module-grid:after { - clear: both; -} -.module-item { - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - float: left; - margin-left: 20px; - width: 460px; - padding-top: 10px; - padding-bottom: 10px; - padding-right: 50px; - overflow: hidden; - position: relative; -} -.module-item span.count { - color: #999; -} -.module-item .media-image { - margin-bottom: 5px; -} -.module-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.module-item:hover { - z-index: 1; -} -.module-item:hover .media-edit { - opacity: 1; -} -.module-item.first { - clear: left; -} -.group .content img { - margin: 0 -5px 5px; - max-width: initial; -} -.group .content h3 { - font-size: 14px; - line-height: 1.3; -} -.group-listing { - margin-left: -20px; -} -.ckanext-datapreview { - position: relative; - clear: both; - padding-top: 15px; - margin-top: 0; -} -.ckanext-datapreview > iframe { - min-height: 650px; -} -.ckanext-datapreview > img { - max-height: 500px; - max-width: 100%; - overflow: hidden; -} -.package-info h4 { - margin-bottom: 10px; -} -.module-resource { - background-color: #fff; - border-bottom: 1px solid #ddd; - margin-top: 0; - margin-bottom: 0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.module-resource .actions { - position: relative; - float: right; - top: -10px; - right: -15px; -} -.module .module-tags { - padding-bottom: 8px; -} -.secondary .module:first-child, -.primary .module:first-child { - margin-top: 0; -} -.no-nav .module:last-child { - margin-top: 0; -} -.module-image { - float: left; - width: 50px; - height: 50px; - line-height: 50px; - text-align: center; - margin-right: 15px; -} -.module-image img { - max-width: 50px; - max-height: 50px; - vertical-align: middle; -} -.banner { - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transform-origin: center center; - -moz-transform-origin: center center; - -ms-transform-origin: center center; - -o-transform-origin: center center; - transform-origin: center center; - position: absolute; - top: 15px; - right: -35px; - width: 80px; - color: #fff; - background-color: #005d7a; - padding: 1px 20px; - font-size: 11px; - text-align: center; - text-transform: uppercase; -} -.media-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.media-grid:before, -.media-grid:after { - display: table; - content: ""; - line-height: 0; -} -.media-grid:after { - clear: both; -} -@media (min-width: 768px) { - .media-grid { - margin-left: -27px; - } - .module-content .wide .media-grid { - margin-left: -25px; - } -} -.media-item { - position: relative; - float: left; - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-item span.count { - color: #999; -} -.media-item .media-image { - margin-bottom: 5px; -} -.media-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.media-item:hover { - z-index: 1; -} -.media-item:hover .media-edit { - opacity: 1; -} -.media-view { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid #ddd; - overflow: hidden; - -webkit-transition: all 0.2s ease-in; - -moz-transition: all 0.2s ease-in; - -o-transition: all 0.2s ease-in; - transition: all 0.2s ease-in; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-view:hover, -.media-view.hovered { - border-color: #005d7a; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); -} -.media-view:hover .banner, -.media-view.hovered .banner { - background-color: #005d7a; -} -.media-view span { - display: none; -} -.media-view .banner { - display: block; - background-color: #b7b7b7; - -webkit-transition: background-color 0.2s ease-in; - -moz-transition: background-color 0.2s ease-in; - -o-transition: background-color 0.2s ease-in; - transition: background-color 0.2s ease-in; -} -.media-image { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.media-heading { - font-size: 18px; - line-height: 1.3; - margin: 5px 0; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.media-overlay { - position: relative; - min-height: 35px; -} -.media-overlay .media-heading { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 12px 10px; - margin: 0; - background-color: #000; - background-color: rgba(0, 0, 0, 0.8); - font-size: 13px; - color: #fff; - z-index: 1; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.media-overlay .media-image { - float: none; - display: block; - margin-right: 0; -} -.media-item.is-expander .truncator-link { - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; - position: absolute; - z-index: 10; - left: 15px; - bottom: 15px; - opacity: 0; -} -.media-item.is-expander:hover { - padding-bottom: 35px; -} -.media-item.is-expander:hover .truncator-link { - opacity: 1; -} -.wide .media-item { - width: 186px; -} -.nav-simple, -.nav-aside { - *zoom: 1; - margin: 0; - list-style: none; - padding-bottom: 0; -} -.nav-simple:before, -.nav-aside:before, -.nav-simple:after, -.nav-aside:after { - display: table; - content: ""; - line-height: 0; -} -.nav-simple:after, -.nav-aside:after { - clear: both; -} -.nav-simple > li, -.nav-aside > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.nav-simple > li:last-of-type, -.nav-aside > li:last-of-type { - border-bottom: 0; -} -.nav-simple .ckan-icon, -.nav-aside .ckan-icon { - position: relative; - top: 0px; -} -.nav-aside { - border-top: 1px dotted #DDD; - border-bottom: 1px dotted #DDD; - margin-bottom: 15px; -} -.nav-item > a, -.nav-aside li a { - color: #333; - font-size: 14px; - line-height: 20px; - margin: -7px -25px; - padding: 7px 25px; -} -.nav-item.active, -.nav-aside li.active { - background-color: #f6f6f6; -} -.nav-item.active > a, -.nav-aside li.active a { - position: relative; - color: #FFF; - background-color: #8CA0A6; -} -.nav-item.active > a:hover, -.nav-aside li.active a:hover { - color: #FFF; - background-color: #8CA0A6; -} -@media (min-width: 768px) { - .nav-item.active > a:before, - .nav-aside li.active a:before { - content: ' '; - position: absolute; - top: 0; - right: -6px; - width: 6px; - height: 34px; - background-image: url("../../../base/images/nav-active.png?1"); - } -} -.nav-item.active > a span, -.nav-aside li.active a span { - white-space: nowrap; - overflow: hidden; - display: block; -} -.module-narrow .nav-item > a, -.module-narrow .nav-aside li a { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.module-narrow .nav-item.image, -.module-narrow .nav-aside li.image { - position: relative; -} -.module-narrow .nav-item.image > a, -.module-narrow .nav-aside li.image a { - padding-left: 42px; - padding-right: 42px; -} -.module-narrow .nav-item.image > img, -.module-narrow .nav-aside li.image img { - position: absolute; - top: 50%; - left: 15px; - width: 20px; - height: 20px; - margin-top: -10px; - z-index: 2; -} -.nav-facet .nav-item > a:hover:after, -.nav-facet .nav-item.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-facet .nav-item > a:hover:after { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.nav-facet .nav-item.active > a:after { - width: 17px; - height: 17px; - background-position: 0px -16px; - right: 3px; -} -.user-list { - margin: 0; - list-style: none; -} -.user-list li { - margin: 0 0 10px 0; -} -.user-list .gravatar { - vertical-align: -4px; - margin-right: 3px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.nav-facet-tertiary { - margin: 10px 0; -} -.nav-facet-tertiary .module-heading { - margin-bottom: 5px; - padding: 8px 12px; - border-bottom-width: 0; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-facet-tertiary .module-heading i { - display: none; -} -.nav-facet-tertiary .module-footer { - padding: 8px 12px; - border-top-width: 0; -} -.nav-facet-tertiary .module-footer a { - font-weight: normal; - color: #8C8C8C; -} -.nav-facet-tertiary .nav { - margin-bottom: 0; -} -.nav-facet-tertiary .module-content.empty { - padding: 8px 12px; - margin-top: 0; -} -.nav-facet-tertiary .nav li.active { - position: relative; -} -.nav-facet-tertiary .nav li.active > a:hover:after, -.nav-facet-tertiary .nav li.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - width: 17px; - height: 17px; - background-position: 0px -16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-simple > .nav-btn { - padding-left: 0; - padding-right: 0; - text-align: center; -} -.nav-simple > .nav-btn .btn { - display: inline-block; -} -.js .js-hide { - display: none; -} -.js .js-hide.active { - display: block; -} -.btn, -label { - font-weight: bold; -} -.btn-rounded { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - padding-left: 15px; - padding-right: 15px; -} -label { - cursor: pointer; - font-size: 14px; -} -label:after { - content: ":"; -} -label.radio:after, -label.checkbox:after { - content: ""; -} -input[type=radio], -input[type=checkbox] { - position: relative; - top: 7px; - padding: 0; - margin: 0; -} -input[type=radio].checkbox-onown, -input[type=checkbox].checkbox-onown { - top: 0; -} -select { - padding: 4px; -} -textarea { - max-width: 100%; -} -.control-group .btn { - position: relative; - top: -2px; -} -.control-full input, -.control-full select, -.control-full textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - height: auto; - width: 100%; -} -.control-medium input, -.control-medium select, -.control-medium textarea { - width: 320px; -} -@media (max-width: 768px) { - .control-medium input, - .control-medium select, - .control-medium textarea { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-large input, -.control-large .control-label { - font-size: 17.5px; - line-height: 30px; -} -.control-large input { - height: 41px; -} -.control-required { - color: #c6898b; -} -.form-actions .control-required-message { - float: left; - margin-left: 20px; - margin-bottom: 0; - line-height: 30px; -} -.form-actions .control-required-message:first-child { - margin-left: 0; -} -.form-actions { - background: none; - margin-left: -25px; - margin-right: -25px; - margin-bottom: 0; - padding-bottom: 0; -} -@media (min-width: 768px) { - .form-actions { - text-align: right; - } -} -.form-actions .action-info { - line-height: 2; - text-align: left; - color: #707070; - margin: 0; -} -@media (min-width: 768px) { - .form-actions .action-info { - float: left; - width: 50%; - } -} -.form-actions .action-info.small { - font-size: 11px; - line-height: 1.2; -} -@media (max-width: 768px) { - .form-actions .btn { - margin-top: 5px; - } -} -.form-horizontal .control-label { - width: 120px; -} -@media (min-width: 768px) { - .form-horizontal .controls { - margin-left: 130px; - } -} -.form-horizontal .info-block { - position: relative; - display: block; - font-size: 11px; - color: #aaa; - line-height: 1.3; - margin-top: 6px; -} -.form-horizontal .info-help { - padding: 6px 0; -} -.form-horizontal .info-help:before { - display: none; -} -.form-horizontal .info-help-tight { - margin-top: -10px; -} -@media (min-width: 980px) { - .form-horizontal .info-block { - padding: 6px 0 6px 0; - } - .form-horizontal .info-inline { - float: right; - width: 265px; - margin-top: 0; - padding-bottom: 0; - } -} -.form-horizontal .control-medium .info-block.info-inline { - width: 165px; -} -.form-horizontal .info-block:before { - font-size: 2.2em; - position: absolute; - left: 0; - top: 2px; -} -.form-horizontal .info-inline:before { - top: 8px; -} -.info-block .icon-large, -.info-inline .icon-large { - float: left; - font-size: 22px; - margin-right: 15px; -} -.form-horizontal .info-block a { - color: #aaa; - text-decoration: underline; -} -.form-horizontal .form-actions { - padding-left: 25px; - padding-right: 25px; -} -.form-inline input { - padding-bottom: 9px; -} -.form-inline select { - margin-top: 0; -} -.form-inline .btn { - margin-left: 5px; -} -.form-narrow label { - margin-bottom: 0; -} -.form-narrow select { - width: 100%; -} -.form-narrow .form-actions { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px 0; -} -.form-select label { - margin-right: 5px; -} -.simple-input label, -.simple-input button { - display: none; -} -.simple-input .field { - position: relative; -} -.simple-input .field-bordered { - border-bottom: 1px dotted #ddd; -} -.simple-input .field input { - width: 100%; - height: auto; - margin: 0 -7px; - padding: 7px 5px; -} -.simple-input .field .btn-search { - position: absolute; - display: block; - height: 17px; - width: 17px; - padding: 0; - top: 50%; - right: 0; - margin-top: -10px; - background-color: transparent; - border: none; - color: #999; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.simple-input .field .btn-search:hover { - color: #000; -} -.editor textarea { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - border-bottom: none; -} -.editor .editor-info-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - float: none; - padding: 4px 10px; - background: #ebebeb; - width: auto; - border: 1px solid #ccc; - border-top: none; - font-size: 11px; - color: #282828; -} -.editor .editor-info-block a { - color: #187794; - text-decoration: none; -} -@media (max-width: 768px) { - [data-module="custom-fields"] .input-prepend .add-on { - display: block; - } -} -@media (max-width: 480px) { - [data-module="custom-fields"] .input-prepend { - width: 100%; - } - [data-module="custom-fields"] .control-custom input { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-custom { - font-size: 0; -} -.control-custom label { - margin-bottom: 0; -} -.control-custom input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - width: 140px; -} -.control-custom input:last-of-type { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.control-custom .checkbox { - display: inline-block; - margin-left: 5px; -} -.control-custom .checkbox input { - width: auto; -} -.control-custom.disabled label, -.control-custom.disabled input { - color: #aaa; - text-decoration: line-through; - text-shadow: none; -} -.control-custom.disabled input { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - background-color: #f3f3f3; -} -.control-custom.disabled .checkbox { - color: #444; - text-decoration: none; -} -.control-custom .checkbox.btn { - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - position: relative; - top: 0; - left: 5px; - height: 1px; - width: 9px; - padding: 3px 8px; - line-height: 18px; -} -.control-custom .checkbox.btn span { - display: none; - width: 30px; -} -.control-custom .checkbox.btn:before { - position: relative; - top: 1px; - left: -1px; - color: #fff; -} -.control-custom .checkbox.btn input { - display: none; -} -.control-custom.disabled .checkbox.btn { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #206b82; - background-image: -moz-linear-gradient(top, #30778d, #085871); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#30778d), to(#085871)); - background-image: -webkit-linear-gradient(top, #30778d, #085871); - background-image: -o-linear-gradient(top, #30778d, #085871); - background-image: linear-gradient(to bottom, #30778d, #085871); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff30778d', endColorstr='#ff085871', GradientType=0); - border-color: #085871 #085871 #03202a; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #085871; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.control-custom.disabled .checkbox.btn:hover, -.control-custom.disabled .checkbox.btn:focus, -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active, -.control-custom.disabled .checkbox.btn.disabled, -.control-custom.disabled .checkbox.btn[disabled] { - color: #fff; - background-color: #085871; - *background-color: #064559; -} -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active { - background-color: #053341 \9; -} -.control-custom.disabled .checkbox.btn .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.alert-danger a, -.alert-error a { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea, -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - border-color: #c6898b; -} -.error-inline { - color: #b55457; -} -.error-block, -.error-inline { - font-size: 12px; -} -.error-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - padding: 6px 8px 3px; - background: #c6898b; - margin: -3px 0 0; - color: #fff; - width: 208px; -} -.control-medium .error-block { - width: 318px; -} -.control-full .error-block { - width: auto; -} -.control-group.error .input-prepend .error-block, -.control-custom.error .error-block { - width: auto; -} -.control-custom.error .error-block { - width: 401px; -} -.control-select.error .error-block { - width: 196px; -} -.stages { - margin: 0; - list-style: none; - *zoom: 1; - color: #aeaeae; - counter-reset: stage; - margin: -20px -25px 20px; - overflow: hidden; -} -.stages:before, -.stages:after { - display: table; - content: ""; - line-height: 0; -} -.stages:after { - clear: both; -} -.stages li { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - line-height: 27px; - counter-increment: stage; - width: 50%; - background-color: #EDEDED; - float: left; - padding: 10px 20px; - position: relative; - z-index: 0; -} -.stages li:before { - -webkit-border-radius: 14px; - -moz-border-radius: 14px; - border-radius: 14px; - content: counter(stage); - display: inline-block; - width: 27px; - height: 27px; - margin-right: 5px; - font-weight: bold; - text-align: center; - color: #fff; - background-color: #aeaeae; - z-index: 1; -} -.stages li:after { - left: 0; - border: solid rgba(237, 237, 237, 0); - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-top-color: #EDEDED; - border-bottom-color: #EDEDED; - border-width: 29px; - top: 50%; - margin-top: -29px; - margin-left: -30px; -} -.stages li.last { - position: relative; - right: -1px; -} -.stages li.last, -.stages li.last .highlight { - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.stages li.first:after { - content: none; - border: none; -} -.stages li.active:after { - border-color: rgba(140, 198, 138, 0); - border-top-color: #8cc68a; - border-bottom-color: #8cc68a; -} -.stages li.complete:after { - border-color: rgba(197, 226, 196, 0); - border-top-color: #c5e2c4; - border-bottom-color: #c5e2c4; -} -.stages.stage-3 li.complete:first-child:after { - content: none; -} -.stages li.active, -.stages li.complete { - background: none; -} -.stages li.active:before { - color: #8cc68a; - background: #fff; -} -.stages li.complete:before { - color: #c5e2c4; - background: #eef6ed; -} -.stages li .highlight { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - padding: 10px 52px; - border: none; - text-align: left; - text-decoration: none; - line-height: 27px; - z-index: -1; -} -@media (max-width: 768px) { - .stages li .highlight { - text-indent: -9999px; - } -} -.stages li.active .highlight { - color: #fff; - background: #8cc68a; -} -.stages li.complete .highlight { - color: #eef6ed; - background: #c5e2c4; -} -.alert > :last-child { - margin-bottom: 0; -} -.slug-preview { - font-size: 14px; - line-height: 1.5; - margin-top: 5px; - margin-left: 10px; -} -.slug-preview-value { - background-color: #faedcf; - margin-right: 3px; -} -.resource-upload-field { - position: relative; - overflow: hidden; - display: inline-block; - vertical-align: bottom; -} -.resource-upload-field label { - z-index: 0; -} -.resource-upload-field input { - opacity: 0; - filter: alpha(opacity=0); - position: absolute; - top: 0; - right: 0; - z-index: 1; - margin: 0; - border: solid transparent; - border-width: 100px 0 0 200px; - cursor: pointer; - direction: ltr; - -moz-transform: translate(-300px, 0) scale(4); -} -.resource-upload-field.loading { - display: inline-block; - background: url("../../../base/images/loading-spinner.gif") no-repeat center right; - padding-right: 5px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - font-size: 14px; -} -.select2-container-multi .select2-choices .select2-search-field input { - height: 29px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - padding-left: 10px; -} -.select2-container { - margin-top: 1px; -} -.select2-container-multi { - margin-top: 0; -} -.select2-container-multi .select2-choices .select2-search-choice { - padding: 5px 8px 5px 22px; -} -.select2-container-multi.select2-container .select2-choices { - padding-top: 3px; - padding-bottom: 3px; -} -.select2-search-choice-close, -.select2-container-multi .select2-search-choice-close { - top: 6px; - left: 5px; -} -.select2-container-multi .select2-choices { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; - background-color: #fff; - border: 1px solid #ccc; -} -.select2-container-active .select2-choices, -.select2-container-multi.select2-container-active .select2-choices { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -.select2-container-multi .select2-drop { - margin-top: -2px; -} -.select2-container .select2-results li { - line-height: 18px; - padding-top: 4px; - padding-bottom: 4px; -} -.control-full .select2-container { - max-width: 100%; -} -.control-group.error .select2-container input:focus, -.control-group.error .select2-container select:focus, -.control-group.error .select2-container textarea:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.js .image-upload #field-image-url { - padding-right: 90px; -} -.js .image-upload #field-image-upload { - cursor: pointer; - position: absolute; - z-index: 1; - opacity: 0; - filter: alpha(opacity=0); -} -.js .image-upload .controls { - position: relative; -} -.js .image-upload .btn { - position: relative; - top: 0; - margin-right: 10px; -} -.js .image-upload .btn.hover { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.js .image-upload .btn-remove-url { - position: absolute; - margin-right: 0; - top: 4px; - right: 5px; - padding: 0 12px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.js .image-upload .btn-remove-url .icon-remove { - margin-right: 0; -} -.add-member-form .control-label { - width: 100%; - text-align: left; -} -.add-member-form .controls { - margin-left: auto; -} -.add-member-or { - float: left; - margin-top: 75px; - width: 7%; - text-align: center; - text-transform: uppercase; - color: #999; - font-weight: bold; -} -.add-member-form .row-fluid .control-group { - float: left; - width: 45%; -} -.add-member-form .row-fluid .select2-container, -.add-member-form .row-fluid input { - width: 100% !important; -} -#recaptcha_table { - table-layout: inherit; - line-height: 1; -} -.dataset-item { - border-bottom: 1px dotted #ddd; - padding-bottom: 20px; - margin-bottom: 20px; -} -@media (max-width: 768px) { - .dataset-item { - word-wrap: break-word; - } -} -.dataset-item:last-of-type { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} -.dataset-heading { - font-size: 16px; - margin-top: 0; - margin-bottom: 8px; - line-height: 1.3; -} -.dataset-heading a { - color: #333; -} -.dataset-heading .label { - position: relative; - top: -1px; -} -.dataset-private { - margin-right: 10px; - text-transform: uppercase; -} -.dataset-private .icon-lock { - width: 9px; -} -.dataset-private.pull-right { - margin-right: 0; -} -.dataset-resources { - margin-top: 8px; -} -.dataset-resources li { - display: inline; -} -.dataset-resources li a { - background-color: #aaa; -} -.dataset-heading .popular { - top: 0; -} -.resource-list { - margin: 0; - list-style: none; - margin: -10px -10px 10px -10px; -} -.resource-item { - position: relative; - padding: 10px 10px 10px 60px; - margin-bottom: 0px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.resource-item:hover { - background-color: #eee; -} -.resource-item .heading { - color: #000; - font-size: 14px; - font-weight: bold; -} -.resource-item .format-label { - position: absolute; - top: 10px; - left: 10px; -} -.resource-item .description { - font-size: 12px; - margin-bottom: 0; - min-height: 12px; -} -.resource-item .btn-group { - position: absolute; - top: 14px; - right: 10px; -} -@media (max-width: 768px) { - .resource-item .btn-group { - display: none; - } -} -.resource-list.reordering .resource-item { - border: 1px solid #ddd; - margin-bottom: 10px; - cursor: move; -} -.resource-list.reordering .resource-item .handle { - display: block; - position: absolute; - color: #888; - left: -31px; - top: 50%; - margin-top: -15px; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - border: 1px solid #ddd; - border-width: 1px 0 1px 1px; - background-color: #fff; - -webkit-border-radius: 20px 0 0 20px; - -moz-border-radius: 20px 0 0 20px; - border-radius: 20px 0 0 20px; -} -.resource-list.reordering .resource-item .handle:hover { - text-decoration: none; -} -.resource-list.reordering .resource-item:hover .handle { - background-color: #eee; -} -.resource-list.reordering .resource-item.ui-sortable-helper { - background-color: #eee; - border: 1px solid #187794; -} -.resource-list.reordering .resource-item.ui-sortable-helper .handle { - background-color: #eee; - border-color: #187794; - color: #333; -} -.resource-item .handle { - display: none; -} -.tag-list { - margin: 0; - list-style: none; - padding: 10px 10px 5px 10px; -} -.tag-list li { - display: inline-block; - margin-right: 5px; -} -.tag-list li:last-child { - margin-right: 0; -} -.additional-info td, -.additional-info th { - width: 50%; -} -.label[data-format=html], -.label[data-format*=html] { - background-color: #55a1ce; -} -.label[data-format=json], -.label[data-format*=json] { - background-color: #ef7100; -} -.label[data-format=xml], -.label[data-format*=xml] { - background-color: #ef7100; -} -.label[data-format=text], -.label[data-format*=text] { - background-color: #74cbec; -} -.label[data-format=csv], -.label[data-format*=csv] { - background-color: #dfb100; -} -.label[data-format=xls], -.label[data-format*=xls] { - background-color: #2db55d; -} -.label[data-format=zip], -.label[data-format*=zip] { - background-color: #686868; -} -.label[data-format=api], -.label[data-format*=api] { - background-color: #ec96be; -} -.label[data-format=pdf], -.label[data-format*=pdf] { - background-color: #e0051e; -} -.label[data-format=rdf], -.label[data-format*=rdf], -.label[data-format*=nquad], -.label[data-format*=ntriples], -.label[data-format*=turtle] { - background-color: #0b4498; -} -.view-list { - margin: 0; - list-style: none; -} -.view-list li { - position: relative; - margin-bottom: 10px; -} -.view-list li a { - display: block; - min-height: 50px; - padding: 10px; - border: 1px solid #ddd; - overflow: hidden; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon { - float: left; - width: 50px; - height: 50px; - overflow: hidden; - margin-right: 10px; - color: #444; - background-color: #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon i { - display: block; - text-align: center; - font-size: 28px; - line-height: 50px; -} -.view-list li a h3 { - color: #000; - font-weight: bold; - font-size: 16px; - margin: 0 0 3px 0; -} -.view-list li a p { - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: #444; -} -.view-list li a.active, -.view-list li a:hover { - text-decoration: none; - border-color: #187794; -} -.view-list li a.active .icon, -.view-list li a:hover .icon { - background-color: #187794; - color: #f6f6f6; -} -.view-list li .arrow { - position: absolute; - display: none; - border: 8px solid transparent; - border-top-color: #187794; - left: 50%; - bottom: -15px; - margin-left: -4px; -} -.view-list li.active a { - text-decoration: none; - border-color: #187794; -} -.view-list li.active a .icon { - background-color: #187794; - color: #f6f6f6; -} -.view-list li.active .arrow { - display: block; -} -.view-list.stacked { - overflow-y: hidden; - overflow-x: auto; - height: 100px; - white-space: nowrap; -} -.view-list.stacked li { - display: inline-block; - width: 250px; - margin-right: 10px; -} -.view-list.stacked li:last-child { - margin-right: 0; -} -.view-list.stacked::-webkit-scrollbar { - width: 7px; - height: 7px; -} -.view-list.stacked::-webkit-scrollbar-track { - border-radius: 10px; - background-color: #f6f6f6; -} -.view-list.stacked::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #c3c3c3; -} -.view-list.stacked::-webkit-scrollbar-thumb:hover { - background-color: #187794; -} -.resource-view { - margin-top: 20px; -} -.search-form { - margin-bottom: 20px; - padding-bottom: 25px; - border-bottom: 1px dotted #ddd; -} -.search-form .search-input { - position: relative; - margin-bottom: 20px; -} -.search-form .search-input input { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - width: 100%; - height: auto; -} -.search-form .search-input button { - cursor: pointer; - display: block; - position: absolute; - top: 50%; - margin-top: 1px; - right: 10px; - height: 20px; - padding: 0; - border: none; - background: transparent; -} -.search-form .search-input button span { - display: none; -} -.search-form .search-input button i { - color: #ccc; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.search-form .search-input button:hover i { - color: #000; -} -.search-form .search-input.search-giant input { - font-size: 16px; - padding: 15px; -} -.search-form .search-input.search-giant button { - margin-top: -4px; - right: 15px; - height: 30px; -} -.search-form .search-input.search-giant button i { - font-size: 28px; - width: 28px; -} -.search-form .control-order-by label, -.search-form .control-order-by select { - display: inline; -} -.search-form .control-order-by select { - width: 160px; - margin: 0; -} -.search-form h2 { - font-size: 24px; - line-height: 1.3; - color: #000; - margin-bottom: 0; - margin-top: 20px; -} -.search-form .filter-list { - color: #444; - line-height: 32px; - margin: 10px 0 0 0; -} -.search-form .filter-list .pill { - line-height: 21px; -} -.search-form .filter-list .extra { - margin-top: 10px; - font-size: 18px; - font-weight: normal; - color: #000; -} -.search-form.no-bottom-border { - border-bottom-width: 0; - margin-bottom: 0; -} -.tertiary .control-order-by { - float: none; - margin: 0; -} -.tertiary .control-order-by label { - display: block; - margin-bottom: 5px; - font-weight: normal; - font-size: 12px; -} -.tertiary .control-order-by select { - display: block; - font-size: 12px; - width: 100%; -} -.tertiary .search-input { - margin-bottom: 10px; -} -@media (min-width: 980px) { - .search-form .control-order-by { - float: right; - margin-left: 15px; - } - .tertiary .search-form .control-order-by { - float: none; - margin: 0; - } -} -.group .media-vertical .image { - margin: 0 -5px 5px; -} -.group-list:nth-child(odd) { - clear: left; -} -.group-list .module-heading { - padding-top: 15px; - padding-bottom: 15px; -} -.group-list .dataset-content { - min-height: 54px; -} -.group-list .module-heading h3 { - margin-bottom: 2px; -} -.group-list .module-heading h3 a { - color: #333; -} -.group-list .module-heading .media-image { - overflow: hidden; - max-height: 60px; -} -.group-list .module-heading .media-image img { - max-width: 85px; -} -.toolbar { - *zoom: 1; - position: relative; - margin-bottom: 10px; - padding: 5px 0; -} -.toolbar:before, -.toolbar:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar:after { - clear: both; -} -.page_primary_action { - margin-bottom: 20px; -} -.toolbar .breadcrumb { - *zoom: 1; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - position: relative; - float: left; - margin: 0; - padding: 0; - border: none; - background: none; - font-size: 20px; - line-height: 1.3; -} -.toolbar .breadcrumb:before, -.toolbar .breadcrumb:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar .breadcrumb:after { - clear: both; -} -.toolbar .breadcrumb li:after { - content: " / "; -} -.toolbar .breadcrumb li.active:after { - content: ""; -} -.toolbar .breadcrumb li:last-of-type:after { - content: ""; -} -.toolbar .home a { - text-decoration: none; -} -.toolbar .home span { - display: none; -} -.toolbar .breadcrumb a { - color: #505050; -} -@media (max-width: 767px) { - .toolbar .breadcrumb { - color: #fff; - text-shadow: none; - } - .toolbar .breadcrumb .home { - display: none; - } - .toolbar .breadcrumb a { - color: #fff; - text-shadow: none; - } -} -.toolbar .breadcrumb .active a, -.toolbar .breadcrumb a.active { - font-weight: bold; -} -.actions { - margin: 0; - list-style: none; - position: absolute; - top: 10px; - right: 10px; - z-index: 1; -} -.actions li { - display: inline-block; - margin-right: 5px; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.actions li:last-of-type { - margin-right: 0; -} -.hide-heading { - display: none; -} -.page-header { - *zoom: 1; - border-bottom: 1px solid #ddd; - background-color: #f6f6f6; - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.page-header:before, -.page-header:after { - display: table; - content: ""; - line-height: 0; -} -.page-header:after { - clear: both; -} -.page-header .nav-tabs { - float: left; - margin-bottom: -1px; -} -.page-header .nav-tabs li.active a, -.page-header .nav-tabs a:hover { - background-color: #fff; -} -.page-header .content_action { - float: right; - margin-top: -5px; - margin-right: -7px; -} -.no-nav .page-header { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.nav-tabs-plain { - padding: 0 25px; -} -.nav-tabs-plain > .active > a, -.nav-tabs-plain > .active > a:hover { - background-color: #fff; -} -@media (min-width: 768px) { - .span9 .page-header { - margin-left: -17px; - } -} -@media (max-width: 768px) { - .page-header .nav-tabs { - margin: 5px 10px 10px -5px; - border: none; - } - .page-header .nav-tabs > li { - float: none; - } - .page-header .nav-tabs > li a { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .page-header .nav-tabs > .active > a, - .page-header .nav-tabs > .active > a:hover, - .page-header .nav-tabs > .active > a:focus { - border-bottom-color: #dddddd; - } -} -h1 { - font-size: 28px; -} -h2 { - font-size: 21px; -} -h3 { - font-size: 18px; -} -h4 { - font-size: 14px; -} -h1, -h2, -h3, -h4 { - line-height: 1.5; -} -h1 small, -h2 small, -h3 small, -h4 small { - font-size: 14px; -} -.prose h1, -.prose heading-1 h2, -.prose heading-2 { - margin-bottom: 15px; -} -.prose h3, -.prose heading-3 { - margin-bottom: 10px; -} -.table-chunky td, -.table-chunky th { - padding: 12px 15px; - font-size: 12px; -} -.table-chunky thead th, -.table-chunky thead td { - color: #fff; - background-color: #aaa; - padding-top: 10px; - padding-bottom: 10px; -} -.table-striped tbody tr:nth-child(odd) td, -.table-striped tbody tr:nth-child(odd) th { - background-color: transparent; -} -.table-striped tbody tr:nth-child(even) td, -.table-striped tbody tr:nth-child(even) th { - background-color: #f2f2f2; -} -.table-chunky.table-bordered { - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:first-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:first-child { - -webkit-border-top-left-radius: 2px; - -moz-border-radius-topleft: 2px; - border-top-left-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:last-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:last-child { - -webkit-border-top-right-radius: 2px; - -moz-border-radius-topright: 2px; - border-top-right-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:first-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:first-child { - -webkit-border-radius: 0 0 0 2px; - -moz-border-radius: 0 0 0 2px; - border-radius: 0 0 0 2px; - -webkit-border-bottom-left-radius: 2px; - -moz-border-radius-bottomleft: 2px; - border-bottom-left-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:last-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 2px; - -moz-border-radius-bottomright: 2px; - border-bottom-right-radius: 2px; -} -.ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.ckan-icon { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; -} -.ckan-icon-fb { - width: 16px; - height: 16px; - background-position: 0px 0; -} -.ckan-icon-gplus { - width: 16px; - height: 16px; - background-position: -16px 0; -} -.ckan-icon-twitter { - width: 16px; - height: 16px; - background-position: -32px 0; -} -.ckan-icon-email { - width: 16px; - height: 16px; - background-position: -48px 0; -} -.ckan-icon-share { - width: 16px; - height: 16px; - background-position: -64px 0; -} -.ckan-icon-feed { - width: 16px; - height: 16px; - background-position: -80px 0; -} -.ckan-icon-calendar { - width: 16px; - height: 16px; - background-position: -96px 0; -} -.ckan-icon-file { - width: 16px; - height: 16px; - background-position: -112px 0; -} -.ckan-icon-lock { - width: 16px; - height: 16px; - background-position: -128px 0; -} -.ckan-icon-link-file { - width: 16px; - height: 16px; - background-position: -144px 0; -} -.ckan-icon-link-plugin { - width: 16px; - height: 16px; - background-position: -160px 0; -} -.ckan-icon-upload-file { - width: 16px; - height: 16px; - background-position: -176px 0; -} -.ckan-icon-callout { - width: 16px; - height: 16px; - background-position: -192px 0; -} -.ckan-icon-circle-cross { - width: 17px; - height: 17px; - background-position: 0px -16px; -} -.ckan-icon-circle-add { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.ckan-icon-flame { - width: 17px; - height: 17px; - background-position: -34px -16px; -} -.ckan-icon-search { - width: 17px; - height: 17px; - background-position: -51px -16px; -} -.ckan-icon-large-lock { - width: 20px; - height: 20px; - background-position: 0px -33px; -} -.ckan-icon-photo { - width: 20px; - height: 20px; - background-position: -20px -33px; -} -.ckan-icon-add { - width: 20px; - height: 20px; - background-position: -40px -33px; -} -.ckan-icon-home { - width: 20px; - height: 20px; - background-position: -60px -33px; -} -.ckan-icon-rewind { - width: 20px; - height: 20px; - background-position: -80px -33px; -} -.ckan-icon-tools { - width: 20px; - height: 20px; - background-position: -100px -33px; -} -.ckan-icon-flag { - width: 20px; - height: 20px; - background-position: -120px -33px; -} -.ckan-icon-clipboard { - width: 20px; - height: 20px; - background-position: -140px -33px; -} -.ckan-icon-share { - width: 20px; - height: 20px; - background-position: -160px -33px; -} -.ckan-icon-info { - width: 20px; - height: 20px; - background-position: -180px -33px; -} -.ckan-icon-download { - width: 20px; - height: 20px; - background-position: -200px -33px; -} -.ckan-icon-star { - width: 20px; - height: 20px; - background-position: -220px -33px; -} -.ckan-icon-info-flat { - width: 20px; - height: 20px; - background-position: -240px -33px; -} -.ckan-icon-tag { - width: 20px; - height: 20px; - background-position: -260px -33px; -} -.ckan-icon-plus { - width: 20px; - height: 20px; - background-position: -280px -33px; - width: 16px; -} -.ckan-icon-head { - width: 20px; - height: 20px; - background-position: -300px -33px; -} -.ckan-icon-arrow-e { - width: 20px; - height: 20px; - background-position: -320px -33px; - width: 16px; -} -.ckan-icon-bookmark { - width: 25px; - height: 25px; - background-position: 0px -53px; -} -.format-label { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - text-indent: -900em; - background: url("../../../base/images/sprite-resource-icons.png") no-repeat 0 0; -} -.format-label { - width: 32px; - height: 35px; - background-position: 0px -62px; -} -.format-label[data-format=rdf], -.format-label[data-format*=rdf] { - width: 32px; - height: 35px; - background-position: -32px -62px; -} -.format-label[data-format=pdf], -.format-label[data-format*=pdf] { - width: 32px; - height: 35px; - background-position: -64px -62px; -} -.format-label[data-format=api], -.format-label[data-format*=api] { - width: 32px; - height: 35px; - background-position: -96px -62px; -} -.format-label[data-format=zip], -.format-label[data-format*=zip] { - width: 32px; - height: 35px; - background-position: -128px -62px; -} -.format-label[data-format=xls], -.format-label[data-format*=xls] { - width: 32px; - height: 35px; - background-position: -160px -62px; -} -.format-label[data-format=csv], -.format-label[data-format*=csv] { - width: 32px; - height: 35px; - background-position: -192px -62px; -} -.format-label[data-format=txt], -.format-label[data-format*=txt] { - width: 32px; - height: 35px; - background-position: -224px -62px; -} -.format-label[data-format=xml], -.format-label[data-format*=xml] { - width: 32px; - height: 35px; - background-position: -256px -62px; -} -.format-label[data-format=json], -.format-label[data-format*=json] { - width: 32px; - height: 35px; - background-position: -288px -62px; -} -.format-label[data-format=html], -.format-label[data-format*=html] { - width: 32px; - height: 35px; - background-position: -320px -62px; -} -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - text-align: right; - font-size: 14px; - line-height: 1; - width: 14px; -} -.btn [class^="icon-"], -.nav [class^="icon-"], -.module-heading [class^="icon-"], -.dropdown [class^="icon-"], -.btn [class*=" icon-"], -.nav [class*=" icon-"], -.module-heading [class*=" icon-"], -.dropdown [class*=" icon-"] { - margin-right: 4px; -} -.info-block [class^="icon-"], -.info-block [class*=" icon-"] { - float: left; - font-size: 28px; - width: 28px; - margin-right: 5px; - margin-top: 2px; -} -.breadcrumb .home .icon-home { - font-size: 24px; - width: 24px; - vertical-align: -1px; -} -.info-block-small [class^="icon-"], -.info-block-small [class*=" icon-"] { - font-size: 14px; - width: 14px; - margin-top: 1px; -} -.nav-tabs .fa:last-child, -.module-heading .fa:last-child, -.btn .fa:last-child { - margin-right: 3px; -} -.wrapper { - *zoom: 1; - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - position: relative; - background-color: #fff; - margin-bottom: 20px; - margin-left: 0; -} -.wrapper:before, -.wrapper:after { - display: table; - content: ""; - line-height: 0; -} -.wrapper:after { - clear: both; -} -@media (min-width: 768px) { - .wrapper { - background-image: url("../../../base/images/nav.png"); - background-repeat: repeat-y; - background-position: -54px 0px; - } -} -@media (min-width: 980px) { - .wrapper { - background-position: 0px 0px; - } -} -.wrapper.no-nav { - background-image: none; -} -[role=main], -.main { - position: relative; - padding-bottom: 20px; -} -@media (min-width: 768px) { - [role=main], - .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); - } -} -[role=main] { - min-height: 350px; -} -.main:after, -[role=main]:after { - bottom: 0; - border-top-width: 1px; -} -[role=main] .primary { - float: right; - margin-left: 0; -} -[role=main] .secondary { - margin-left: 0; -} -/* Filters modal */ -.no-text .text { - display: none; -} -.js body.filters-modal { - overflow: hidden; -} -.show-filters.btn, -.hide-filters { - display: none; -} -@media (max-width: 768px) { - .wrapper { - margin: 0 -20px; - border-width: 0; - -webkit-box-shadow: 0; - -moz-box-shadow: 0; - box-shadow: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - } - .js [role=main] .secondary .filters { - display: none; - position: fixed; - overflow: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 1; - padding: 10px; - background-color: #000000; - background-color: rgba(0, 0, 0, 0.5); - } - .js body.filters-modal .secondary .filters { - display: block; - } - .js [role=main] .secondary .filters > div { - background-color: #fff; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - overflow: hidden; - } - .js [role=main] .secondary .filters > div .module-footer { - display: none; - } - .js body.filters-modal .secondary .filters .hide-filters { - display: inline-block; - position: absolute; - top: 14px; - right: 17px; - opacity: 0.6; - } - .js body.filters-modal .secondary .filters .hide-filters i { - font-size: 18px; - } - .js .show-filters.btn { - display: inline-block; - } -} -.primary > :last-child, -.secondary > :last-child { - margin-bottom: 0; -} -.primary .primary { - float: left; - width: 467px; - margin-left: 0; - margin-bottom: 20px; -} -.primary .primary h1:first-child, -.primary .primary h2:first-child, -.primary .primary h3:first-child, -.primary .primary h4:first-child { - margin-top: 0; -} -.primary .tertiary { - float: left; - width: 180px; - margin-left: 18px; - margin-bottom: 20px; -} -@media (min-width: 768px) { - .hero { - background: url("../../../base/images/background-tile.png"); - } -} -.hero:after { - background-color: rgba(0, 0, 0, 0.09); - background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(0, 0, 0, 0))); - background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-repeat: repeat-x; - background-color: #f6f6f6; - border-bottom: 1px solid #d0d0d0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - -webkit-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - -moz-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); -} -.hero:after .back:hover { - text-decoration: none; -} -.hero:after .back:hover span { - text-decoration: underline; -} -.context-info .module-content { - padding: 15px; -} -.context-info .image { - margin-bottom: 10px; -} -.context-info .image img, -.context-info .image a { - display: block; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.context-info p { - overflow: auto; -} -.context-info code { - display: block; - font-weight: normal; - padding: 0; - margin: 0; - overflow: auto; -} -.context-info h1.heading { - margin: 0 0 5px 0; - font-size: 18px; - line-height: 1.3; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.context-info .info { - margin-top: 15px; - padding-top: 10px; - border-top: 1px dotted #DDD; - word-break: break-word; -} -.context-info .info dl dd { - margin-top: 3px; - margin-left: 0; -} -.context-info .nums { - *zoom: 1; - margin-top: 15px; - padding-top: 10px; - padding-bottom: 0; - border-top: 1px dotted #DDD; -} -.context-info .nums:before, -.context-info .nums:after { - display: table; - content: ""; - line-height: 0; -} -.context-info .nums:after { - clear: both; -} -.context-info .nums dl { - float: left; - width: 50%; - margin: 5px 0 0 0; - color: #444; -} -.context-info .nums dl dt { - display: block; - font-size: 13px; - font-weight: 300; -} -.context-info .nums dl dd { - display: block; - font-size: 30px; - font-weight: 700; - line-height: 36px; - margin-left: 0; -} -.context-info .nums dl dd .smallest { - font-size: 13px; -} -.context-info .nums dl dd .smaller { - font-size: 16px; -} -.context-info .nums dl dd .small { - font-size: 21px; -} -.context-info .follow_button { - margin-top: 15px; -} -.context-info.editing .module-content { - margin-top: 0; -} -.flash-messages .alert { - -webkit-box-shadow: 0 0 0 1px white; - -moz-box-shadow: 0 0 0 1px white; - box-shadow: 0 0 0 1px white; -} -.homepage .row { - position: relative; -} -.homepage .module-search { - padding: 5px; - margin: 20px 0 0 0; - color: #fff; - background: #fff; -} -.homepage .module-search .search-giant { - margin-bottom: 10px; -} -.homepage .module-search .search-giant input { - border-color: #003f52; -} -.homepage .module-search .module-content { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - background-color: #005d7a; - border-bottom: none; -} -.homepage .module-search .module-content .heading { - margin-top: 0; - margin-bottom: 7px; - font-size: 24px; - line-height: 40px; -} -.homepage .module-search .tags { - *zoom: 1; - padding: 5px 10px 10px 10px; - background-color: #003647; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.homepage .module-search .tags:before, -.homepage .module-search .tags:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .module-search .tags:after { - clear: both; -} -.homepage .module-search .tags h3, -.homepage .module-search .tags .tag { - display: block; - float: left; - margin: 5px 10px 0 0; -} -.homepage .module-search .tags h3 { - font-size: 14px; - line-height: 20px; - padding: 2px 8px; -} -.homepage .group-list { - margin: 0; -} -.homepage .box .inner { - padding: 20px 25px; -} -.homepage .stats h3 { - margin: 0 0 10px 0; -} -.homepage .stats ul { - margin: 0; - list-style: none; - *zoom: 1; -} -.homepage .stats ul:before, -.homepage .stats ul:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .stats ul:after { - clear: both; -} -.homepage .stats ul li { - float: left; - width: 25%; - font-weight: 300; -} -.homepage .stats ul li a { - display: block; -} -.homepage .stats ul li a b { - display: block; - font-size: 35px; - line-height: 1.5; -} -.homepage .stats ul li a:hover { - text-decoration: none; -} -.homepage.layout-2 .stats { - margin-top: 20px; -} -@media (min-width: 768px) { - .homepage [role=main] { - padding: 20px 0; - } - .homepage.layout-1 .row1 .col2 { - position: absolute; - bottom: 0; - right: 0; - } - .homepage.layout-1 .row1 .col2 .module-search { - bottom: 0; - left: 0; - right: 0; - } -} -.account-masthead { - *zoom: 1; - min-height: 30px; - color: #fff; - background: #003647 url("../../../base/images/bg.png"); -} -.account-masthead:before, -.account-masthead:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead:after { - clear: both; -} -.account-masthead .account { - float: right; -} -.account-masthead .account ul { - *zoom: 1; -} -.account-masthead .account ul:before, -.account-masthead .account ul:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead .account ul:after { - clear: both; -} -.account-masthead .account ul li { - display: block; - float: left; - border-left: 1px solid #00232e; -} -.account-masthead .account ul li a { - display: block; - color: #bfd7de; - font-size: 13px; - font-weight: bold; - padding: 0 10px; - line-height: 31px; -} -.account-masthead .account ul li a span.username, -.account-masthead .account ul li a span.text { - margin: 0 2px 0 4px; -} -.account-masthead .account ul li a span.text { - position: absolute; - top: -9999px; - left: -9999px; -} -.account-masthead .account ul li a:hover { - color: #d9e7eb; - background-color: #00232e; - text-decoration: none; -} -.account-masthead .account ul li a.sub { - font-weight: 300; -} -.account-masthead .account ul li a .btn { - vertical-align: 1px; - margin-left: 3px; -} -.account-masthead .account .notifications a span.badge { - font-size: 12px; - margin-left: 3px; - padding: 1px 6px; - background-color: #00232e; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - text-shadow: none; - color: #bfd7de; -} -.account-masthead .account .notifications a:hover span { - color: #fff; - background-color: #000f14; -} -.account-masthead .account .notifications.notifications-important a span.badge { - color: #fff; - background-color: #C9403A; -} -.account-masthead .account.authed .image { - padding: 0 6px; -} -.account-masthead .account.authed .image img { - vertical-align: -6px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.masthead { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #005d7a url("../../../base/images/bg.png"); -} -.masthead:before, -.masthead:after { - display: table; - content: ""; - line-height: 0; -} -.masthead:after { - clear: both; -} -.masthead .container { - position: relative; -} -.masthead a { - color: #fff; -} -.masthead hgroup h1, -.masthead hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.masthead hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.masthead hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.masthead .nav-collapse { - padding-top: 10px; -} -.masthead .section { - float: left; -} -.masthead input[type="text"] { - border-color: #004a61; -} -.masthead .navigation { - margin-right: 20px; -} -.masthead .navigation .nav-pills { - margin-bottom: 0; -} -.masthead .navigation .nav-pills li a:hover, -.masthead .navigation .nav-pills li.active a { - background-color: #003647; -} -.masthead .nav > li > a, -.masthead .nav > li > a:focus, -.masthead .nav > li > a:hover, -.masthead .nav > .active > a, -.masthead .nav > .active > a:hover, -.masthead .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.masthead .site-search { - margin: 2px 8px 2px 0; -} -.masthead .site-search input { - width: 200px; - padding: 4px 10px; -} -.masthead .btn-navbar, -.masthead .btn-navbar:hover, -.masthead .btn-navbar:focus, -.masthead .btn-navbar:active, -.masthead .btn-navbar.active, -.masthead .btn-navbar.disabled, -.masthead .btn-navbar[disabled] { - background-color: #003647; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.masthead .btn-navbar .icon-bar, -.masthead .btn-navbar:hover .icon-bar, -.masthead .btn-navbar:focus .icon-bar, -.masthead .btn-navbar:active .icon-bar, -.masthead .btn-navbar.active .icon-bar, -.masthead .btn-navbar.disabled .icon-bar, -.masthead .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.masthead .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -@media (min-width: 980px) { - .masthead .nav-collapse { - float: right; - } -} -@media (max-width: 767px) { - .account-masthead { - margin-left: -20px; - margin-right: -20px; - padding-left: 20px; - padding-right: 20px; - } - .masthead .section { - float: none; - } - .masthead .section .nav-collapse { - margin-bottom: 25px; - } -} -@media (max-width: 979px) { - .masthead .container { - padding-left: 20px; - padding-right: 20px; - } - .masthead .site-search { - display: none; - } -} -.site-footer { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #005d7a url("../../../base/images/bg.png"); - padding: 20px 0; -} -.site-footer:before, -.site-footer:after { - display: table; - content: ""; - line-height: 0; -} -.site-footer:after { - clear: both; -} -.site-footer .container { - position: relative; -} -.site-footer a { - color: #fff; -} -.site-footer hgroup h1, -.site-footer hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.site-footer hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.site-footer hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.site-footer .nav-collapse { - padding-top: 10px; -} -.site-footer .section { - float: left; -} -.site-footer input[type="text"] { - border-color: #004a61; -} -.site-footer .navigation { - margin-right: 20px; -} -.site-footer .navigation .nav-pills { - margin-bottom: 0; -} -.site-footer .navigation .nav-pills li a:hover, -.site-footer .navigation .nav-pills li.active a { - background-color: #003647; -} -.site-footer .nav > li > a, -.site-footer .nav > li > a:focus, -.site-footer .nav > li > a:hover, -.site-footer .nav > .active > a, -.site-footer .nav > .active > a:hover, -.site-footer .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.site-footer .site-search { - margin: 2px 8px 2px 0; -} -.site-footer .site-search input { - width: 200px; - padding: 4px 10px; -} -.site-footer .btn-navbar, -.site-footer .btn-navbar:hover, -.site-footer .btn-navbar:focus, -.site-footer .btn-navbar:active, -.site-footer .btn-navbar.active, -.site-footer .btn-navbar.disabled, -.site-footer .btn-navbar[disabled] { - background-color: #003647; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.site-footer .btn-navbar .icon-bar, -.site-footer .btn-navbar:hover .icon-bar, -.site-footer .btn-navbar:focus .icon-bar, -.site-footer .btn-navbar:active .icon-bar, -.site-footer .btn-navbar.active .icon-bar, -.site-footer .btn-navbar.disabled .icon-bar, -.site-footer .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.site-footer .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -.site-footer, -.site-footer label, -.site-footer small { - color: #CCDEE3; -} -.site-footer a { - color: #CCDEE3; -} -.footer-links ul li { - margin-bottom: 5px; -} -.attribution small { - color: #CCDEE3; - font-size: 12px; -} -.attribution .ckan-footer-logo { - display: block; - width: 68px; - height: 21px; - margin-top: 2px; - background: url("../../../base/images/ckan-logo-footer.png") no-repeat top left; - text-indent: -900em; -} -.lang-select { - *zoom: 1; -} -.lang-select:before, -.lang-select:after { - display: table; - content: ""; - line-height: 0; -} -.lang-select:after { - clear: both; -} -.lang-select label, -.lang-select select, -.lang-select .lang-container { - float: left; - margin-top: 0; -} -.lang-dropdown { - color: #000; -} -.lang-dropdown li { - width: auto; -} -.table-selected td { - background-color: #f5f5f5; -} -.table-selected td .edit { - display: block; -} -.table-bulk-edit th input { - top: -5px; -} -.table-bulk-edit .table-actions .btn-group { - float: left; - margin: 0 10px 0 0; -} -.table-bulk-edit .context p { - margin-bottom: 0; -} -.table-header thead th { - background-color: #f6f6f6; -} -.table-edit-hover .edit { - display: none; - float: right; -} -.table-edit-hover tr:hover .edit { - display: block; -} -.js .table-toggle-more .toggle-more { - display: none; -} -.js .table-toggle-more .show-more { - display: inline; -} -.js .table-toggle-more .show-less { - display: none; -} -.js .table-toggle-more .toggle-seperator { - display: table-row; -} -.js .table-toggle-more .toggle-seperator td { - height: 11px; - padding: 0; - background-image: url("../../../base/images/table-seperator.png"); -} -.js .table .toggle-show td { - background: none; - text-align: center; -} -.js .table-toggle-less .show-less { - display: inline; -} -.js .table-toggle-less .show-more { - display: none; -} -.js .table-toggle-less .toggle-seperator { - display: none; -} -.profile .empty, -.profile .dataset-list { - margin-bottom: 20px; -} -.activity { - margin: 10px 0; - padding: 0; - list-style-type: none; - background: transparent url('../../../base/images/dotted.png') 14px 0 repeat-y; -} -.activity .item { - position: relative; - margin: 0 0 15px 0; - padding: 0; - *zoom: 1; -} -.activity .item:before, -.activity .item:after { - display: table; - content: ""; - line-height: 0; -} -.activity .item:after { - clear: both; -} -.activity .item .icon { - display: block; - position: absolute; - top: 0; - left: 0; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - color: #FFFFFF; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - font-weight: normal; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item .gravatar { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.activity .item .actor .gravatar { - position: absolute; - top: 0; - left: 40px; -} -.activity .item p { - font-size: 14px; - line-height: 1.5; - margin: 5px 0 0 80px; -} -.activity .item .date { - color: #999; - font-size: 12px; - white-space: nowrap; -} -.activity .item .new { - display: block; - position: absolute; - overflow: hidden; - top: -3px; - left: -3px; - width: 10px; - height: 10px; - background-color: #A35647; - border: 1px solid #FFF; - text-indent: -1000px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item.no-avatar p { - margin-left: 40px; -} -.activity .load-less { - margin-bottom: 15px; -} -.popover { - width: 300px; -} -.popover .popover-title { - font-weight: bold; - margin-bottom: 0; -} -.popover p.about { - margin: 0 0 10px 0; -} -.popover .popover-close { - float: right; - text-decoration: none; -} -.popover .popover-content { - font-size: 14px; - line-height: 20px; - color: #444; - word-break: break-all; -} -.popover .popover-content dl { - margin: 0; -} -.popover .popover-content dl dd { - margin-left: 0; - margin-bottom: 10px; -} -.activity .item .icon { - background-color: #999999; -} -.activity .item.failure .icon { - background-color: #B95252; -} -.activity .item.success .icon { - background-color: #69A67A; -} -.activity .item.added-tag .icon { - background-color: #6995a6; -} -.activity .item.changed-group .icon { - background-color: #767DCE; -} -.activity .item.changed-package .icon { - background-color: #8c76ce; -} -.activity .item.changed-package_extra .icon { - background-color: #769ace; -} -.activity .item.changed-resource .icon { - background-color: #aa76ce; -} -.activity .item.changed-user .icon { - background-color: #76b8ce; -} -.activity .item.changed-organization .icon { - background-color: #699fa6; -} -.activity .item.deleted-group .icon { - background-color: #B95252; -} -.activity .item.deleted-package .icon { - background-color: #b97452; -} -.activity .item.deleted-package_extra .icon { - background-color: #b95274; -} -.activity .item.deleted-resource .icon { - background-color: #b99752; -} -.activity .item.deleted-organization .icon { - background-color: #b95297; -} -.activity .item.new-group .icon { - background-color: #69A67A; -} -.activity .item.new-package .icon { - background-color: #69a68e; -} -.activity .item.new-package_extra .icon { - background-color: #6ca669; -} -.activity .item.new-resource .icon { - background-color: #81a669; -} -.activity .item.new-user .icon { - background-color: #69a6a3; -} -.activity .item.new-organization .icon { - background-color: #81a669; -} -.activity .item.removed-tag .icon { - background-color: #b95297; -} -.activity .item.deleted-related-item .icon { - background-color: #b9b952; -} -.activity .item.follow-dataset .icon { - background-color: #767DCE; -} -.activity .item.follow-user .icon { - background-color: #8c76ce; -} -.activity .item.new-related-item .icon { - background-color: #95a669; -} -.activity .item.follow-group .icon { - background-color: #8ba669; -} -.dropdown:hover .dropdown-menu { - display: block; -} -.js .dropdown .dropdown-menu, -.js .dropdown:hover .dropdown-menu { - display: none; -} -.js .dropdown.open .dropdown-menu { - display: block; -} -#followee-filter .btn { - *zoom: 1; -} -#followee-filter .btn:before, -#followee-filter .btn:after { - display: table; - content: ""; - line-height: 0; -} -#followee-filter .btn:after { - clear: both; -} -#followee-filter .btn span, -#followee-filter .btn strong { - display: block; - float: left; - line-height: 1.5; -} -#followee-filter .btn span { - font-weight: normal; -} -#followee-filter .btn strong { - margin: 0 5px; - white-space: nowrap; - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; -} -.dashboard-context { - position: relative; - margin-bottom: 20px; - padding: 20px; - border-bottom: 1px solid #DCDCDC; - background-color: #f6f6f6; - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; -} -.dashboard-context h2 { - margin-bottom: 10px; -} -.dashboard-context .arrow { - position: absolute; - content: ' '; - top: 30px; - right: -10px; - width: 10px; - height: 21px; - background: transparent url("../../../base/images/dashboard-followee-related.png"); -} -.popover-followee .popover-title { - display: none; -} -.popover-followee .popover-content { - padding: 0; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.popover-followee .empty { - padding: 10px; -} -.popover-followee .popover-header { - *zoom: 1; - background-color: whiteSmoke; - padding: 5px; - border-bottom: 1px solid #ccc; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.popover-followee .popover-header:before, -.popover-followee .popover-header:after { - display: table; - content: ""; - line-height: 0; -} -.popover-followee .popover-header:after { - clear: both; -} -.popover-followee .popover-header .input-prepend { - margin-bottom: 0; -} -.popover-followee .popover-header .add-on, -.popover-followee .popover-header input { - float: left; - margin: 0; -} -.popover-followee .popover-header .add-on { - padding: 4px 8px 4px 12px; - border-right-width: 0; - -webkit-border-radius: 100px 0 0 100px; - -moz-border-radius: 100px 0 0 100px; - border-radius: 100px 0 0 100px; -} -.popover-followee .popover-header input { - padding: 4px 12px 4px 8px; - font-size: 13px; - width: 207px; - -webkit-border-radius: 0 100px 100px 0; - -moz-border-radius: 0 100px 100px 0; - border-radius: 0 100px 100px 0; -} -.popover-followee .nav { - padding: 0; - margin: 0; - max-height: 205px; - overflow: auto; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.popover-followee .nav li a { - display: block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: 7px 10px 7px 15px; - margin: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.popover-followee .nav li a i { - background-color: #187794; - color: #fff; - margin-right: 11px; - padding: 3px 5px; - line-height: 1; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); -} -.popover-followee .nav li a:hover i { - background-color: #000; -} -.popover-followee .nav li.active a i { - color: #187794; - background-color: #fff; -} -.dashboard-me { - *zoom: 1; - padding: 15px 15px 0 15px; -} -.dashboard-me:before, -.dashboard-me:after { - display: table; - content: ""; - line-height: 0; -} -.dashboard-me:after { - clear: both; -} -.dashboard-me img { - float: left; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.dashboard-me strong { - display: block; - font-size: 16px; - margin: 3px 0; -} -.resource-view-filters { - margin-bottom: 1em; -} -.resource-view-filters .resource-view-filter { - margin-bottom: 1.0em; -} -.resource-view-filters .resource-view-remove-filter { - cursor: pointer; - color: #b55457; -} -.resource-view-filters .resource-view-filter-values .select2-container { - margin-right: 0.3em; - margin-bottom: 0.2em; - width: 24% !important; -} -.resource-view-filters .resource-view-filter-values .select2-container .select2-search-choice-close { - left: auto; -} -.datapusher-status-link:hover { - text-decoration: none; -} -.datapusher-status.status-unknown { - color: #bbb; -} -.datapusher-status.status-pending { - color: #FFCC00; -} -.datapusher-status.status-error { - color: red; -} -.datapusher-status.status-complete { - color: #009900; -} -body { - background: #005d7a url("../../../base/images/bg.png"); -} -[hidden] { - display: none; -} -table { - table-layout: fixed; -} -thead th { - vertical-align: top; -} -td, -th { - word-wrap: break-word; -} -table .metric { - width: 140px; -} -code { - color: #000; - border: none; - background: none; - white-space: normal; -} -pre { - border: none; - background: none; - padding-left: 0; - padding-right: 0; -} -mark { - background: #fdf7e9; -} -blockquote p { - font-size: 1em; -} -iframe { - border: none; -} -.embedded-content h1 { - font-size: 1.4em; -} -.embedded-content h2 { - font-size: 1.4em; -} -.embedded-content h3 { - font-size: 1.2em; -} -.popular { - text-indent: -999em; -} -.empty { - color: #aaa; - font-style: italic; -} -.page-heading { - margin-top: 0; - margin-bottom: 16px; -} -.m-top { - margin-top: 15px; -} -.m-left { - margin-left: 15px; -} -.m-right { - margin-right: 15px; -} -.m-bottom { - margin-bottom: 15px; -} -.no-margin { - margin: 0; -} -.reduced-margin { - margin: 3px 5px; -} -.p-top { - padding-top: 15px; -} -.p-left { - padding-left: 15px; -} -.p-right { - padding-right: 15px; -} -.p-bottom { - padding-bottom: 15px; -} -.no-padding { - padding: 0; -} -.reduced-padding { - padding: 3px 5px; -} -.ie .lang-dropdown { - position: relative; - top: -20px; -} -.ie .module-popup { - border-bottom: none; -} -.ie .banner { - top: 0; - right: 0; - width: auto; -} -.ie .group-listing { - margin-left: -24px; -} -.ie .toolbar .breadcrumb { - filter: none; -} -.ie .toolbar .breadcrumb li { - float: left; -} -.ie .toolbar .breadcrumb li:after { - margin: 0 0.2em; -} -.ie9 .control-large input { - height: 56px; -} -.ie8 .account-masthead a.image, -.ie8 .account-masthead .username { - white-space: nowrap; -} -.ie9 .homepage .media.module-heading .media-image img, -.ie8 .homepage .media.module-heading .media-image img, -.ie7 .homepage .media.module-heading .media-image img { - width: 85px !important; -} -.ie8 .masthead .nav-collapse, -.ie7 .masthead .nav-collapse { - float: right; -} -.ie8 [role=main], -.ie7 [role=main], -.ie8 .main, -.ie7 .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); -} -.ie8 .hero, -.ie7 .hero { - background: url("../../../base/images/background-tile.png"); -} -.ie8 .hero .hero-primary.module-popup .box, -.ie7 .hero .hero-primary.module-popup .box { - padding-bottom: 20px !important; - margin-bottom: 0 !important; -} -.ie8 .lang-dropdown, -.ie7 .lang-dropdown { - position: relative !important; - top: -90px !important; -} -.ie7 .alert { - position: relative; -} -.ie7 .alert .close { - position: absolute; - top: 6px !important; - right: 20px; -} -.ie7 .media-item { - width: 30%; -} -.ie7 .tags .tag-list { - *zoom: 1; -} -.ie7 .tags .tag-list:before, -.ie7 .tags .tag-list:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .tags .tag-list:after { - clear: both; -} -.ie7 .tags .tag-list li { - display: block; - float: left; -} -.ie7 .tags h3 { - float: left; -} -.ie7 .tags .tag { - display: block; -} -.ie7 .search-giant input { - width: 95%; -} -.ie7 .control-full input, -.ie7 .control-full select, -.ie7 .control-full textarea { - width: 95%; -} -.ie7 .control-full.control-large .controls input { - padding-bottom: 20px; -} -.ie7 .controls { - position: relative; -} -.ie7 .controls .info-block, -.ie7 .controls .info-inline { - position: absolute; - top: 0; - right: 0; -} -.ie7 .form-horizontal .controls { - margin-left: 0; -} -.ie7 .control-custom .checkbox { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .stages { - overflow: hidden; - background-color: #EDEDED; -} -.ie7 .stages li { - height: 30px; - width: 27.5%; -} -.ie7 .stages li button, -.ie7 .stages li span { - display: block; - height: 30px; - padding-left: 20px; -} -.ie7 .stages li button { - height: 50px; -} -.ie7 .stages li .highlight { - width: auto; -} -.ie7 .account-masthead .account a i { - line-height: 31px; -} -.ie7 .masthead { - position: relative; - z-index: 1; -} -.ie7 .masthead .logo img, -.ie7 .masthead nav { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .masthead .header-image { - display: block; -} -.ie7 .masthead .account .dropdown-menu { - z-index: 10000; -} -.ie7 .module-narrow .nav-item.image { - *zoom: 1; -} -.ie7 .module-narrow .nav-item.image:before, -.ie7 .module-narrow .nav-item.image:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-narrow .nav-item.image:after { - clear: both; -} -.ie7 .nav-facet .nav-item.active a { - content: 'x'; -} -.ie7 .toolbar .breadcrumb li { - padding-right: 10px; - margin-right: 5px; - background: transparent url("../../../base/images/breadcrumb-slash-ie7.png") 100% 50% no-repeat; -} -.ie7 .toolbar .breadcrumb li.active { - background-image: none; -} -.ie7 .module-heading { - *zoom: 1; - position: relative; -} -.ie7 .module-heading:before, -.ie7 .module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-heading:after { - clear: both; -} -.ie7 .module-heading .media-content { - position: relative; -} -.ie7 .module-heading .media-image img { - float: left; -} -.ie7 .group-listing { - position: relative; - zoom: 1; -} -.ie7 .resource-item { - position: static; - padding-bottom: 1px; -} -.ie7 .resource-item .heading { - position: relative; -} -.ie7 .resource-item .format-label { - left: -48px; -} -.ie7 .resource-item .btn-group { - position: relative; - float: right; - top: -35px; - right: 0; -} -.ie7 .media-overlay .media-heading { - background-color: #000; -} diff --git a/ckan/public-bs2/base/css/maroon.css b/ckan/public-bs2/base/css/maroon.css deleted file mode 100644 index 821fe83029c..00000000000 --- a/ckan/public-bs2/base/css/maroon.css +++ /dev/null @@ -1,9520 +0,0 @@ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} -audio:not([controls]) { - display: none; -} -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -a:hover, -a:active { - outline: 0; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - /* Responsive images (ensure images don't scale beyond their parents) */ - max-width: 100%; - /* Part 1: Set a maxium relative to the parent */ - width: auto\9; - /* IE7-8 need help adjusting responsive images */ - height: auto; - /* Part 2: Scale the height according to the width, otherwise you get stretching */ - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} -#map_canvas img, -.google-maps img { - max-width: none; -} -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} -button, -input { - *overflow: visible; - line-height: normal; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; -} -textarea { - overflow: auto; - vertical-align: top; -} -@media print { - * { - text-shadow: none !important; - color: #000 !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 0.5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } -} -.clearfix { - *zoom: 1; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; - line-height: 0; -} -.clearfix:after { - clear: both; -} -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -body { - margin: 0; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 20px; - color: #444; - background-color: #eee; -} -a { - color: #810606; - text-decoration: none; -} -a:hover, -a:focus { - color: #380303; - text-decoration: underline; -} -.img-rounded { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.img-polaroid { - padding: 4px; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} -.img-circle { - -webkit-border-radius: 500px; - -moz-border-radius: 500px; - border-radius: 500px; -} -.row { - margin-left: -20px; - *zoom: 1; -} -.row:before, -.row:after { - display: table; - content: ""; - line-height: 0; -} -.row:after { - clear: both; -} -[class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; -} -.container, -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} -.span12 { - width: 940px; -} -.span11 { - width: 860px; -} -.span10 { - width: 780px; -} -.span9 { - width: 700px; -} -.span8 { - width: 620px; -} -.span7 { - width: 540px; -} -.span6 { - width: 460px; -} -.span5 { - width: 380px; -} -.span4 { - width: 300px; -} -.span3 { - width: 220px; -} -.span2 { - width: 140px; -} -.span1 { - width: 60px; -} -.offset12 { - margin-left: 980px; -} -.offset11 { - margin-left: 900px; -} -.offset10 { - margin-left: 820px; -} -.offset9 { - margin-left: 740px; -} -.offset8 { - margin-left: 660px; -} -.offset7 { - margin-left: 580px; -} -.offset6 { - margin-left: 500px; -} -.offset5 { - margin-left: 420px; -} -.offset4 { - margin-left: 340px; -} -.offset3 { - margin-left: 260px; -} -.offset2 { - margin-left: 180px; -} -.offset1 { - margin-left: 100px; -} -.row-fluid { - width: 100%; - *zoom: 1; -} -.row-fluid:before, -.row-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.row-fluid:after { - clear: both; -} -.row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.12765957%; - *margin-left: 2.07446809%; -} -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} -.row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.12765957%; -} -.row-fluid .span12 { - width: 100%; - *width: 99.94680851%; -} -.row-fluid .span11 { - width: 91.4893617%; - *width: 91.43617021%; -} -.row-fluid .span10 { - width: 82.9787234%; - *width: 82.92553191%; -} -.row-fluid .span9 { - width: 74.46808511%; - *width: 74.41489362%; -} -.row-fluid .span8 { - width: 65.95744681%; - *width: 65.90425532%; -} -.row-fluid .span7 { - width: 57.44680851%; - *width: 57.39361702%; -} -.row-fluid .span6 { - width: 48.93617021%; - *width: 48.88297872%; -} -.row-fluid .span5 { - width: 40.42553191%; - *width: 40.37234043%; -} -.row-fluid .span4 { - width: 31.91489362%; - *width: 31.86170213%; -} -.row-fluid .span3 { - width: 23.40425532%; - *width: 23.35106383%; -} -.row-fluid .span2 { - width: 14.89361702%; - *width: 14.84042553%; -} -.row-fluid .span1 { - width: 6.38297872%; - *width: 6.32978723%; -} -.row-fluid .offset12 { - margin-left: 104.25531915%; - *margin-left: 104.14893617%; -} -.row-fluid .offset12:first-child { - margin-left: 102.12765957%; - *margin-left: 102.0212766%; -} -.row-fluid .offset11 { - margin-left: 95.74468085%; - *margin-left: 95.63829787%; -} -.row-fluid .offset11:first-child { - margin-left: 93.61702128%; - *margin-left: 93.5106383%; -} -.row-fluid .offset10 { - margin-left: 87.23404255%; - *margin-left: 87.12765957%; -} -.row-fluid .offset10:first-child { - margin-left: 85.10638298%; - *margin-left: 85%; -} -.row-fluid .offset9 { - margin-left: 78.72340426%; - *margin-left: 78.61702128%; -} -.row-fluid .offset9:first-child { - margin-left: 76.59574468%; - *margin-left: 76.4893617%; -} -.row-fluid .offset8 { - margin-left: 70.21276596%; - *margin-left: 70.10638298%; -} -.row-fluid .offset8:first-child { - margin-left: 68.08510638%; - *margin-left: 67.9787234%; -} -.row-fluid .offset7 { - margin-left: 61.70212766%; - *margin-left: 61.59574468%; -} -.row-fluid .offset7:first-child { - margin-left: 59.57446809%; - *margin-left: 59.46808511%; -} -.row-fluid .offset6 { - margin-left: 53.19148936%; - *margin-left: 53.08510638%; -} -.row-fluid .offset6:first-child { - margin-left: 51.06382979%; - *margin-left: 50.95744681%; -} -.row-fluid .offset5 { - margin-left: 44.68085106%; - *margin-left: 44.57446809%; -} -.row-fluid .offset5:first-child { - margin-left: 42.55319149%; - *margin-left: 42.44680851%; -} -.row-fluid .offset4 { - margin-left: 36.17021277%; - *margin-left: 36.06382979%; -} -.row-fluid .offset4:first-child { - margin-left: 34.04255319%; - *margin-left: 33.93617021%; -} -.row-fluid .offset3 { - margin-left: 27.65957447%; - *margin-left: 27.55319149%; -} -.row-fluid .offset3:first-child { - margin-left: 25.53191489%; - *margin-left: 25.42553191%; -} -.row-fluid .offset2 { - margin-left: 19.14893617%; - *margin-left: 19.04255319%; -} -.row-fluid .offset2:first-child { - margin-left: 17.0212766%; - *margin-left: 16.91489362%; -} -.row-fluid .offset1 { - margin-left: 10.63829787%; - *margin-left: 10.53191489%; -} -.row-fluid .offset1:first-child { - margin-left: 8.5106383%; - *margin-left: 8.40425532%; -} -[class*="span"].hide, -.row-fluid [class*="span"].hide { - display: none; -} -[class*="span"].pull-right, -.row-fluid [class*="span"].pull-right { - float: right; -} -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} -.container:before, -.container:after { - display: table; - content: ""; - line-height: 0; -} -.container:after { - clear: both; -} -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} -.container-fluid:before, -.container-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.container-fluid:after { - clear: both; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 21px; - font-weight: 200; - line-height: 30px; -} -small { - font-size: 85%; -} -strong { - font-weight: bold; -} -em { - font-style: italic; -} -cite { - font-style: normal; -} -.muted { - color: #999; -} -a.muted:hover, -a.muted:focus { - color: #808080; -} -.text-warning { - color: #c09853; -} -a.text-warning:hover, -a.text-warning:focus { - color: #a47e3c; -} -.text-error { - color: #b55457; -} -a.text-error:hover, -a.text-error:focus { - color: #954143; -} -.text-info { - color: #3a87ad; -} -a.text-info:hover, -a.text-info:focus { - color: #2d6987; -} -.text-success { - color: #468847; -} -a.text-success:hover, -a.text-success:focus { - color: #356635; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 10px 0; - font-family: inherit; - font-weight: bold; - line-height: 20px; - color: inherit; - text-rendering: optimizelegibility; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-weight: normal; - line-height: 1; - color: #999; -} -h1, -h2, -h3 { - line-height: 40px; -} -h1 { - font-size: 38.5px; -} -h2 { - font-size: 31.5px; -} -h3 { - font-size: 24.5px; -} -h4 { - font-size: 17.5px; -} -h5 { - font-size: 14px; -} -h6 { - font-size: 11.9px; -} -h1 small { - font-size: 24.5px; -} -h2 small { - font-size: 17.5px; -} -h3 small { - font-size: 14px; -} -h4 small { - font-size: 14px; -} -.page-header { - padding-bottom: 9px; - margin: 20px 0 30px; - border-bottom: 1px solid #eee; -} -ul, -ol { - padding: 0; - margin: 0 0 10px 25px; -} -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} -li { - line-height: 20px; -} -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} -ul.inline, -ol.inline { - margin-left: 0; - list-style: none; -} -ul.inline > li, -ol.inline > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-bottom: 20px; -} -dt, -dd { - line-height: 20px; -} -dt { - font-weight: bold; -} -dd { - margin-left: 10px; -} -.dl-horizontal { - *zoom: 1; -} -.dl-horizontal:before, -.dl-horizontal:after { - display: table; - content: ""; - line-height: 0; -} -.dl-horizontal:after { - clear: both; -} -.dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dl-horizontal dd { - margin-left: 180px; -} -hr { - margin: 20px 0; - border: 0; - border-top: 1px solid #eee; - border-bottom: 1px solid #fff; -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 0 0 0 15px; - margin: 0 0 20px; - border-left: 5px solid #eee; -} -blockquote p { - margin-bottom: 0; - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} -blockquote small { - display: block; - line-height: 20px; - color: #999; -} -blockquote small:before { - content: '\2014 \00A0'; -} -blockquote.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eee; - border-left: 0; -} -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} -blockquote.pull-right small:before { - content: ''; -} -blockquote.pull-right small:after { - content: '\00A0 \2014'; -} -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} -address { - display: block; - margin-bottom: 20px; - font-style: normal; - line-height: 20px; -} -code, -pre { - padding: 0 3px 2px; - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; - font-size: 12px; - color: #333; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -code { - padding: 2px 4px; - color: #d14; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; - white-space: nowrap; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 20px; - word-break: break-all; - word-wrap: break-word; - white-space: pre; - white-space: pre-wrap; - background-color: #f5f5f5; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -pre.prettyprint { - margin-bottom: 20px; -} -pre code { - padding: 0; - color: inherit; - white-space: pre; - white-space: pre-wrap; - background-color: transparent; - border: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -form { - margin: 0 0 20px; -} -fieldset { - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: 40px; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -legend small { - font-size: 15px; - color: #999; -} -label, -input, -button, -select, -textarea { - font-size: 14px; - font-weight: normal; - line-height: 20px; -} -input, -button, -select, -textarea { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} -label { - display: block; - margin-bottom: 5px; -} -select, -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - display: inline-block; - height: 20px; - padding: 4px 6px; - margin-bottom: 10px; - font-size: 14px; - line-height: 20px; - color: #555; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - vertical-align: middle; -} -input, -textarea, -.uneditable-input { - width: 206px; -} -textarea { - height: auto; -} -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - background-color: #fff; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear .2s, box-shadow linear .2s; - -moz-transition: border linear .2s, box-shadow linear .2s; - -o-transition: border linear .2s, box-shadow linear .2s; - transition: border linear .2s, box-shadow linear .2s; -} -textarea:focus, -input[type="text"]:focus, -input[type="password"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="date"]:focus, -input[type="month"]:focus, -input[type="time"]:focus, -input[type="week"]:focus, -input[type="number"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="color"]:focus, -.uneditable-input:focus { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - *margin-top: 0; - /* IE7 */ - margin-top: 1px \9; - /* IE8-9 */ - line-height: normal; -} -input[type="file"], -input[type="image"], -input[type="submit"], -input[type="reset"], -input[type="button"], -input[type="radio"], -input[type="checkbox"] { - width: auto; -} -select, -input[type="file"] { - height: 30px; - /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ - line-height: 30px; -} -select { - width: 220px; - border: 1px solid #ccc; - background-color: #fff; -} -select[multiple], -select[size] { - height: auto; -} -select:focus, -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.uneditable-input, -.uneditable-textarea { - color: #999; - background-color: #fcfcfc; - border-color: #ccc; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - cursor: not-allowed; -} -.uneditable-input { - overflow: hidden; - white-space: nowrap; -} -.uneditable-textarea { - width: auto; - height: auto; -} -input:-moz-placeholder, -textarea:-moz-placeholder { - color: #999; -} -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #999; -} -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #999; -} -.radio, -.checkbox { - min-height: 20px; - padding-left: 20px; -} -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.controls > .radio:first-child, -.controls > .checkbox:first-child { - padding-top: 5px; -} -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left: 10px; -} -.input-mini { - width: 60px; -} -.input-small { - width: 90px; -} -.input-medium { - width: 150px; -} -.input-large { - width: 210px; -} -.input-xlarge { - width: 270px; -} -.input-xxlarge { - width: 530px; -} -input[class*="span"], -select[class*="span"], -textarea[class*="span"], -.uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"] { - float: none; - margin-left: 0; -} -.input-append input[class*="span"], -.input-append .uneditable-input[class*="span"], -.input-prepend input[class*="span"], -.input-prepend .uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"], -.row-fluid .input-prepend [class*="span"], -.row-fluid .input-append [class*="span"] { - display: inline-block; -} -input, -textarea, -.uneditable-input { - margin-left: 0; -} -.controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; -} -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 926px; -} -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 846px; -} -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 766px; -} -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 686px; -} -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 606px; -} -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 526px; -} -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 446px; -} -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 366px; -} -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 286px; -} -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 206px; -} -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 126px; -} -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 46px; -} -.controls-row { - *zoom: 1; -} -.controls-row:before, -.controls-row:after { - display: table; - content: ""; - line-height: 0; -} -.controls-row:after { - clear: both; -} -.controls-row [class*="span"], -.row-fluid .controls-row [class*="span"] { - float: left; -} -.controls-row .checkbox[class*="span"], -.controls-row .radio[class*="span"] { - padding-top: 5px; -} -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eee; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"][readonly], -input[type="checkbox"][readonly] { - background-color: transparent; -} -.control-group.warning .control-label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} -.control-group.warning .checkbox, -.control-group.warning .radio, -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; -} -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} -.control-group.error .control-label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b55457; -} -.control-group.error .checkbox, -.control-group.error .radio, -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - border-color: #b55457; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #954143; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; -} -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b55457; - background-color: #f8f0f0; - border-color: #b55457; -} -.control-group.success .control-label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} -.control-group.success .checkbox, -.control-group.success .radio, -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; -} -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} -.control-group.info .control-label, -.control-group.info .help-block, -.control-group.info .help-inline { - color: #3a87ad; -} -.control-group.info .checkbox, -.control-group.info .radio, -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - color: #3a87ad; -} -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - border-color: #3a87ad; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.info input:focus, -.control-group.info select:focus, -.control-group.info textarea:focus { - border-color: #2d6987; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -} -.control-group.info .input-prepend .add-on, -.control-group.info .input-append .add-on { - color: #3a87ad; - background-color: #d9edf7; - border-color: #3a87ad; -} -input:focus:invalid, -textarea:focus:invalid, -select:focus:invalid { - color: #b94a48; - border-color: #ee5f5b; -} -input:focus:invalid:focus, -textarea:focus:invalid:focus, -select:focus:invalid:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} -.form-actions { - padding: 19px 20px 20px; - margin-top: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-top: 1px solid #e5e5e5; - *zoom: 1; -} -.form-actions:before, -.form-actions:after { - display: table; - content: ""; - line-height: 0; -} -.form-actions:after { - clear: both; -} -.help-block, -.help-inline { - color: #6a6a6a; -} -.help-block { - display: block; - margin-bottom: 10px; -} -.help-inline { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - vertical-align: middle; - padding-left: 5px; -} -.input-append, -.input-prepend { - display: inline-block; - margin-bottom: 10px; - vertical-align: middle; - font-size: 0; - white-space: nowrap; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input, -.input-append .dropdown-menu, -.input-prepend .dropdown-menu, -.input-append .popover, -.input-prepend .popover { - font-size: 14px; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: top; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append input:focus, -.input-prepend input:focus, -.input-append select:focus, -.input-prepend select:focus, -.input-append .uneditable-input:focus, -.input-prepend .uneditable-input:focus { - z-index: 2; -} -.input-append .add-on, -.input-prepend .add-on { - display: inline-block; - width: auto; - height: 20px; - min-width: 16px; - padding: 4px 5px; - font-size: 14px; - font-weight: normal; - line-height: 20px; - text-align: center; - text-shadow: 0 1px 0 #fff; - background-color: #eee; - border: 1px solid #ccc; -} -.input-append .add-on, -.input-prepend .add-on, -.input-append .btn, -.input-prepend .btn, -.input-append .btn-group > .dropdown-toggle, -.input-prepend .btn-group > .dropdown-toggle { - vertical-align: top; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-append .active, -.input-prepend .active { - background-color: #a9dba9; - border-color: #46a546; -} -.input-prepend .add-on, -.input-prepend .btn { - margin-right: -1px; -} -.input-prepend .add-on:first-child, -.input-prepend .btn:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input, -.input-append select, -.input-append .uneditable-input { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input + .btn-group .btn:last-child, -.input-append select + .btn-group .btn:last-child, -.input-append .uneditable-input + .btn-group .btn:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append .add-on, -.input-append .btn, -.input-append .btn-group { - margin-left: -1px; -} -.input-append .add-on:last-child, -.input-append .btn:last-child, -.input-append .btn-group:last-child > .dropdown-toggle { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append input, -.input-prepend.input-append select, -.input-prepend.input-append .uneditable-input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-prepend.input-append input + .btn-group .btn, -.input-prepend.input-append select + .btn-group .btn, -.input-prepend.input-append .uneditable-input + .btn-group .btn { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .add-on:first-child, -.input-prepend.input-append .btn:first-child { - margin-right: -1px; - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { - margin-left: -1px; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .btn-group:first-child { - margin-left: 0; -} -input.search-query { - padding-right: 14px; - padding-right: 4px \9; - padding-left: 14px; - padding-left: 4px \9; - /* IE7-8 doesn't have border-radius, so don't indent the padding */ - margin-bottom: 0; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -/* Allow for input prepend/append in search forms */ -.form-search .input-append .search-query, -.form-search .input-prepend .search-query { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.form-search .input-append .search-query { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search .input-append .btn { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .search-query { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .btn { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search input, -.form-inline input, -.form-horizontal input, -.form-search textarea, -.form-inline textarea, -.form-horizontal textarea, -.form-search select, -.form-inline select, -.form-horizontal select, -.form-search .help-inline, -.form-inline .help-inline, -.form-horizontal .help-inline, -.form-search .uneditable-input, -.form-inline .uneditable-input, -.form-horizontal .uneditable-input, -.form-search .input-prepend, -.form-inline .input-prepend, -.form-horizontal .input-prepend, -.form-search .input-append, -.form-inline .input-append, -.form-horizontal .input-append { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { - display: none; -} -.form-search label, -.form-inline label, -.form-search .btn-group, -.form-inline .btn-group { - display: inline-block; -} -.form-search .input-append, -.form-inline .input-append, -.form-search .input-prepend, -.form-inline .input-prepend { - margin-bottom: 0; -} -.form-search .radio, -.form-search .checkbox, -.form-inline .radio, -.form-inline .checkbox { - padding-left: 0; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"], -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: left; - margin-right: 3px; - margin-left: 0; -} -.control-group { - margin-bottom: 10px; -} -legend + .control-group { - margin-top: 20px; - -webkit-margin-top-collapse: separate; -} -.form-horizontal .control-group { - margin-bottom: 20px; - *zoom: 1; -} -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; - content: ""; - line-height: 0; -} -.form-horizontal .control-group:after { - clear: both; -} -.form-horizontal .control-label { - float: left; - width: 160px; - padding-top: 5px; - text-align: right; -} -.form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; - margin-left: 180px; - *margin-left: 0; -} -.form-horizontal .controls:first-child { - *padding-left: 180px; -} -.form-horizontal .help-block { - margin-bottom: 0; -} -.form-horizontal input + .help-block, -.form-horizontal select + .help-block, -.form-horizontal textarea + .help-block, -.form-horizontal .uneditable-input + .help-block, -.form-horizontal .input-prepend + .help-block, -.form-horizontal .input-append + .help-block { - margin-top: 10px; -} -.form-horizontal .form-actions { - padding-left: 180px; -} -table { - max-width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; -} -.table { - width: 100%; - margin-bottom: 20px; -} -.table th, -.table td { - padding: 8px; - line-height: 20px; - text-align: left; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table th { - font-weight: bold; -} -.table thead th { - vertical-align: bottom; -} -.table caption + thead tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child th, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child th, -.table thead:first-child tr:first-child td { - border-top: 0; -} -.table tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #eee; -} -.table-condensed th, -.table-condensed td { - padding: 4px 5px; -} -.table-bordered { - border: 1px solid #ddd; - border-collapse: separate; - *border-collapse: collapse; - border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.table-bordered th, -.table-bordered td { - border-left: 1px solid #ddd; -} -.table-bordered caption + thead tr:first-child th, -.table-bordered caption + tbody tr:first-child th, -.table-bordered caption + tbody tr:first-child td, -.table-bordered colgroup + thead tr:first-child th, -.table-bordered colgroup + tbody tr:first-child th, -.table-bordered colgroup + tbody tr:first-child td, -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { - border-top: 0; -} -.table-bordered thead:first-child tr:first-child > th:first-child, -.table-bordered tbody:first-child tr:first-child > td:first-child, -.table-bordered tbody:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered thead:first-child tr:first-child > th:last-child, -.table-bordered tbody:first-child tr:first-child > td:last-child, -.table-bordered tbody:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:first-child, -.table-bordered tbody:last-child tr:last-child > td:first-child, -.table-bordered tbody:last-child tr:last-child > th:first-child, -.table-bordered tfoot:last-child tr:last-child > td:first-child, -.table-bordered tfoot:last-child tr:last-child > th:first-child { - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:last-child, -.table-bordered tbody:last-child tr:last-child > td:last-child, -.table-bordered tbody:last-child tr:last-child > th:last-child, -.table-bordered tfoot:last-child tr:last-child > td:last-child, -.table-bordered tfoot:last-child tr:last-child > th:last-child { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomright: 0; - border-bottom-right-radius: 0; -} -.table-bordered caption + thead tr:first-child th:first-child, -.table-bordered caption + tbody tr:first-child td:first-child, -.table-bordered colgroup + thead tr:first-child th:first-child, -.table-bordered colgroup + tbody tr:first-child td:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered caption + thead tr:first-child th:last-child, -.table-bordered caption + tbody tr:first-child td:last-child, -.table-bordered colgroup + thead tr:first-child th:last-child, -.table-bordered colgroup + tbody tr:first-child td:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-striped tbody > tr:nth-child(odd) > td, -.table-striped tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.table-hover tbody tr:hover > td, -.table-hover tbody tr:hover > th { - background-color: #f5f5f5; -} -table td[class*="span"], -table th[class*="span"], -.row-fluid table td[class*="span"], -.row-fluid table th[class*="span"] { - display: table-cell; - float: none; - margin-left: 0; -} -.table td.span1, -.table th.span1 { - float: none; - width: 44px; - margin-left: 0; -} -.table td.span2, -.table th.span2 { - float: none; - width: 124px; - margin-left: 0; -} -.table td.span3, -.table th.span3 { - float: none; - width: 204px; - margin-left: 0; -} -.table td.span4, -.table th.span4 { - float: none; - width: 284px; - margin-left: 0; -} -.table td.span5, -.table th.span5 { - float: none; - width: 364px; - margin-left: 0; -} -.table td.span6, -.table th.span6 { - float: none; - width: 444px; - margin-left: 0; -} -.table td.span7, -.table th.span7 { - float: none; - width: 524px; - margin-left: 0; -} -.table td.span8, -.table th.span8 { - float: none; - width: 604px; - margin-left: 0; -} -.table td.span9, -.table th.span9 { - float: none; - width: 684px; - margin-left: 0; -} -.table td.span10, -.table th.span10 { - float: none; - width: 764px; - margin-left: 0; -} -.table td.span11, -.table th.span11 { - float: none; - width: 844px; - margin-left: 0; -} -.table td.span12, -.table th.span12 { - float: none; - width: 924px; - margin-left: 0; -} -.table tbody tr.success > td { - background-color: #dff0d8; -} -.table tbody tr.error > td { - background-color: #f8f0f0; -} -.table tbody tr.warning > td { - background-color: #fcf8e3; -} -.table tbody tr.info > td { - background-color: #d9edf7; -} -.table-hover tbody tr.success:hover > td { - background-color: #d0e9c6; -} -.table-hover tbody tr.error:hover > td { - background-color: #f0dfe0; -} -.table-hover tbody tr.warning:hover > td { - background-color: #faf2cc; -} -.table-hover tbody tr.info:hover > td { - background-color: #c4e3f3; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle { - *margin-bottom: -3px; -} -.dropdown-toggle:active, -.open .dropdown-toggle { - outline: 0; -} -.caret { - display: inline-block; - width: 0; - height: 0; - vertical-align: top; - border-top: 4px solid #000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - content: ""; -} -.dropdown .caret { - margin-top: 8px; - margin-left: 2px; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 20px; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus, -.dropdown-submenu:hover > a, -.dropdown-submenu:focus > a { - text-decoration: none; - color: #fff; - background-color: #770606; - background-image: -moz-linear-gradient(top, #810606, #690505); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#810606), to(#690505)); - background-image: -webkit-linear-gradient(top, #810606, #690505); - background-image: -o-linear-gradient(top, #810606, #690505); - background-image: linear-gradient(to bottom, #810606, #690505); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff810606', endColorstr='#ff690505', GradientType=0); -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #770606; - background-image: -moz-linear-gradient(top, #810606, #690505); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#810606), to(#690505)); - background-image: -webkit-linear-gradient(top, #810606, #690505); - background-image: -o-linear-gradient(top, #810606, #690505); - background-image: linear-gradient(to bottom, #810606, #690505); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff810606', endColorstr='#ff690505', GradientType=0); -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: default; -} -.open { - *z-index: 1000; -} -.open > .dropdown-menu { - display: block; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid #000; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -.dropdown-submenu { - position: relative; -} -.dropdown-submenu > .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} -.dropdown-submenu:hover > .dropdown-menu { - display: block; -} -.dropup .dropdown-submenu > .dropdown-menu { - top: auto; - bottom: 0; - margin-top: 0; - margin-bottom: -2px; - -webkit-border-radius: 5px 5px 5px 0; - -moz-border-radius: 5px 5px 5px 0; - border-radius: 5px 5px 5px 0; -} -.dropdown-submenu > a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} -.dropdown-submenu:hover > a:after { - border-left-color: #fff; -} -.dropdown-submenu.pull-left { - float: none; -} -.dropdown-submenu.pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.dropdown .dropdown-menu .nav-header { - padding-left: 20px; - padding-right: 20px; -} -.typeahead { - z-index: 1051; - margin-top: 2px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-large { - padding: 24px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.well-small { - padding: 9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} -.collapse.in { - height: auto; -} -.close { - float: right; - font-size: 20px; - font-weight: bold; - line-height: 20px; - color: #000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.btn { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding: 4px 12px; - margin-bottom: 0; - font-size: 14px; - line-height: 20px; - text-align: center; - vertical-align: middle; - cursor: pointer; - color: #333; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #ffffff, #eaeaea); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#eaeaea)); - background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea); - background-image: -o-linear-gradient(top, #ffffff, #eaeaea); - background-image: linear-gradient(to bottom, #ffffff, #eaeaea); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeaeaea', GradientType=0); - border-color: #eaeaea #eaeaea #c4c4c4; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #eaeaea; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border: 1px solid #ccc; - *border: 0; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *margin-left: .3em; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -} -.btn:hover, -.btn:focus, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - color: #333; - background-color: #eaeaea; - *background-color: #dddddd; -} -.btn:active, -.btn.active { - background-color: #d1d1d1 \9; -} -.btn:first-child { - *margin-left: 0; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn.active, -.btn:active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn.disabled, -.btn[disabled] { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-large { - padding: 11px 19px; - font-size: 17.5px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.btn-large [class^="icon-"], -.btn-large [class*=" icon-"] { - margin-top: 4px; -} -.btn-small { - padding: 2px 10px; - font-size: 11.9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-small [class^="icon-"], -.btn-small [class*=" icon-"] { - margin-top: 0; -} -.btn-mini [class^="icon-"], -.btn-mini [class*=" icon-"] { - margin-top: -1px; -} -.btn-mini { - padding: 0 6px; - font-size: 10.5px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} -.btn-primary { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #9e0707; - background-image: -moz-linear-gradient(top, #b20808, #810606); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b20808), to(#810606)); - background-image: -webkit-linear-gradient(top, #b20808, #810606); - background-image: -o-linear-gradient(top, #b20808, #810606); - background-image: linear-gradient(to bottom, #b20808, #810606); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb20808', endColorstr='#ff810606', GradientType=0); - border-color: #810606 #810606 #380303; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #810606; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - color: #fff; - background-color: #810606; - *background-color: #690505; -} -.btn-primary:active, -.btn-primary.active { - background-color: #500404 \9; -} -.btn-warning { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #f89406; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - color: #fff; - background-color: #f89406; - *background-color: #df8505; -} -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} -.btn-danger { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #da4f49; - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #bd362f; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - color: #fff; - background-color: #bd362f; - *background-color: #a9302a; -} -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} -.btn-success { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #5bb75b; - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(to bottom, #62c462, #51a351); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #51a351; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - color: #fff; - background-color: #51a351; - *background-color: #499249; -} -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} -.btn-info { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #49afcd; - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #2f96b4; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - color: #fff; - background-color: #2f96b4; - *background-color: #2a85a0; -} -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} -.btn-inverse { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #363636; - background-image: -moz-linear-gradient(top, #444, #222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444), to(#222)); - background-image: -webkit-linear-gradient(top, #444, #222); - background-image: -o-linear-gradient(top, #444, #222); - background-image: linear-gradient(to bottom, #444, #222); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); - border-color: #222 #222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #222; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-inverse:hover, -.btn-inverse:focus, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - color: #fff; - background-color: #222; - *background-color: #151515; -} -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} -button.btn, -input[type="submit"].btn { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn::-moz-focus-inner, -input[type="submit"].btn::-moz-focus-inner { - padding: 0; - border: 0; -} -button.btn.btn-large, -input[type="submit"].btn.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; -} -button.btn.btn-small, -input[type="submit"].btn.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn.btn-mini, -input[type="submit"].btn.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; -} -.btn-link, -.btn-link:active, -.btn-link[disabled] { - background-color: transparent; - background-image: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-link { - border-color: transparent; - cursor: pointer; - color: #810606; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-link:hover, -.btn-link:focus { - color: #380303; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -.btn-link[disabled]:focus { - color: #333; - text-decoration: none; -} -.btn-group { - position: relative; - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - font-size: 0; - vertical-align: middle; - white-space: nowrap; - *margin-left: .3em; -} -.btn-group:first-child { - *margin-left: 0; -} -.btn-group + .btn-group { - margin-left: 5px; -} -.btn-toolbar { - font-size: 0; - margin-top: 10px; - margin-bottom: 10px; -} -.btn-toolbar > .btn + .btn, -.btn-toolbar > .btn-group + .btn, -.btn-toolbar > .btn + .btn-group { - margin-left: 5px; -} -.btn-group > .btn { - position: relative; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group > .btn + .btn { - margin-left: -1px; -} -.btn-group > .btn, -.btn-group > .dropdown-menu, -.btn-group > .popover { - font-size: 14px; -} -.btn-group > .btn-mini { - font-size: 10.5px; -} -.btn-group > .btn-small { - font-size: 11.9px; -} -.btn-group > .btn-large { - font-size: 17.5px; -} -.btn-group > .btn:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.btn-group > .btn:last-child, -.btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.btn-group > .btn.large:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.btn-group > .btn.large:last-child, -.btn-group > .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active { - z-index: 2; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - *padding-top: 5px; - *padding-bottom: 5px; -} -.btn-group > .btn-mini + .dropdown-toggle { - padding-left: 5px; - padding-right: 5px; - *padding-top: 2px; - *padding-bottom: 2px; -} -.btn-group > .btn-small + .dropdown-toggle { - *padding-top: 5px; - *padding-bottom: 4px; -} -.btn-group > .btn-large + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; - *padding-top: 7px; - *padding-bottom: 7px; -} -.btn-group.open .dropdown-toggle { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn-group.open .btn.dropdown-toggle { - background-color: #eaeaea; -} -.btn-group.open .btn-primary.dropdown-toggle { - background-color: #810606; -} -.btn-group.open .btn-warning.dropdown-toggle { - background-color: #f89406; -} -.btn-group.open .btn-danger.dropdown-toggle { - background-color: #bd362f; -} -.btn-group.open .btn-success.dropdown-toggle { - background-color: #51a351; -} -.btn-group.open .btn-info.dropdown-toggle { - background-color: #2f96b4; -} -.btn-group.open .btn-inverse.dropdown-toggle { - background-color: #222; -} -.btn .caret { - margin-top: 8px; - margin-left: 0; -} -.btn-large .caret { - margin-top: 6px; -} -.btn-large .caret { - border-left-width: 5px; - border-right-width: 5px; - border-top-width: 5px; -} -.btn-mini .caret, -.btn-small .caret { - margin-top: 8px; -} -.dropup .btn-large .caret { - border-bottom-width: 5px; -} -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.btn-group-vertical { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.btn-group-vertical > .btn { - display: block; - float: none; - max-width: 100%; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group-vertical > .btn + .btn { - margin-left: 0; - margin-top: -1px; -} -.btn-group-vertical > .btn:first-child { - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.btn-group-vertical > .btn:last-child { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.btn-group-vertical > .btn-large:first-child { - -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; -} -.btn-group-vertical > .btn-large:last-child { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.alert { - padding: 8px 35px 8px 14px; - margin-bottom: 20px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - background-color: #fcf8e3; - border: 1px solid #fbeed5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.alert, -.alert h4 { - color: #c09853; -} -.alert h4 { - margin: 0; -} -.alert .close { - position: relative; - top: -2px; - right: -21px; - line-height: 20px; -} -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #468847; -} -.alert-success h4 { - color: #468847; -} -.alert-danger, -.alert-error { - background-color: #f8f0f0; - border-color: #c6898b; - color: #b55457; -} -.alert-danger h4, -.alert-error h4 { - color: #b55457; -} -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #3a87ad; -} -.alert-info h4 { - color: #3a87ad; -} -.alert-block { - padding-top: 14px; - padding-bottom: 14px; -} -.alert-block > p, -.alert-block > ul { - margin-bottom: 0; -} -.alert-block p + p { - margin-top: 5px; -} -.nav { - margin-left: 0; - margin-bottom: 20px; - list-style: none; -} -.nav > li > a { - display: block; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li > a > img { - max-width: none; -} -.nav > .pull-right { - float: right; -} -.nav-header { - display: block; - padding: 3px 15px; - font-size: 11px; - font-weight: bold; - line-height: 20px; - color: #999; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-transform: uppercase; -} -.nav li + .nav-header { - margin-top: 9px; -} -.nav-list { - padding-left: 15px; - padding-right: 15px; - margin-bottom: 0; -} -.nav-list > li > a, -.nav-list .nav-header { - margin-left: -15px; - margin-right: -15px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.nav-list > li > a { - padding: 3px 15px; -} -.nav-list > .active > a, -.nav-list > .active > a:hover, -.nav-list > .active > a:focus { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - background-color: #810606; -} -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - margin-right: 2px; -} -.nav-list .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.nav-tabs, -.nav-pills { - *zoom: 1; -} -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; - content: ""; - line-height: 0; -} -.nav-tabs:after, -.nav-pills:after { - clear: both; -} -.nav-tabs > li, -.nav-pills > li { - float: left; -} -.nav-tabs > li > a, -.nav-pills > li > a { - padding-right: 12px; - padding-left: 12px; - margin-right: 2px; - line-height: 14px; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - margin-bottom: -1px; -} -.nav-tabs > li > a { - padding-top: 8px; - padding-bottom: 8px; - line-height: 20px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - border-color: #eee #eee #ddd; -} -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover, -.nav-tabs > .active > a:focus { - color: #555; - background-color: #eee; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-pills > li > a { - padding-top: 8px; - padding-bottom: 8px; - margin-top: 2px; - margin-bottom: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-pills > .active > a, -.nav-pills > .active > a:hover, -.nav-pills > .active > a:focus { - color: #fff; - background-color: #810606; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li > a { - margin-right: 0; -} -.nav-tabs.nav-stacked { - border-bottom: 0; -} -.nav-tabs.nav-stacked > li > a { - border: 1px solid #ddd; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.nav-tabs.nav-stacked > li:first-child > a { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.nav-tabs.nav-stacked > li:last-child > a { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.nav-tabs.nav-stacked > li > a:hover, -.nav-tabs.nav-stacked > li > a:focus { - border-color: #ddd; - z-index: 2; -} -.nav-pills.nav-stacked > li > a { - margin-bottom: 3px; -} -.nav-pills.nav-stacked > li:last-child > a { - margin-bottom: 1px; -} -.nav-tabs .dropdown-menu { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.nav-pills .dropdown-menu { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.nav .dropdown-toggle .caret { - border-top-color: #810606; - border-bottom-color: #810606; - margin-top: 6px; -} -.nav .dropdown-toggle:hover .caret, -.nav .dropdown-toggle:focus .caret { - border-top-color: #380303; - border-bottom-color: #380303; -} -/* move down carets for tabs */ -.nav-tabs .dropdown-toggle .caret { - margin-top: 8px; -} -.nav .active .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.nav-tabs .active .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.nav > .dropdown.active > a:hover, -.nav > .dropdown.active > a:focus { - cursor: pointer; -} -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover, -.nav > li.dropdown.open.active > a:focus { - color: #fff; - background-color: #999; - border-color: #999; -} -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret, -.nav li.dropdown.open a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; - opacity: 1; - filter: alpha(opacity=100); -} -.tabs-stacked .open > a:hover, -.tabs-stacked .open > a:focus { - border-color: #999; -} -.tabbable { - *zoom: 1; -} -.tabbable:before, -.tabbable:after { - display: table; - content: ""; - line-height: 0; -} -.tabbable:after { - clear: both; -} -.tab-content { - overflow: auto; -} -.tabs-below > .nav-tabs, -.tabs-right > .nav-tabs, -.tabs-left > .nav-tabs { - border-bottom: 0; -} -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} -.tab-content > .active, -.pill-content > .active { - display: block; -} -.tabs-below > .nav-tabs { - border-top: 1px solid #ddd; -} -.tabs-below > .nav-tabs > li { - margin-top: -1px; - margin-bottom: 0; -} -.tabs-below > .nav-tabs > li > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.tabs-below > .nav-tabs > li > a:hover, -.tabs-below > .nav-tabs > li > a:focus { - border-bottom-color: transparent; - border-top-color: #ddd; -} -.tabs-below > .nav-tabs > .active > a, -.tabs-below > .nav-tabs > .active > a:hover, -.tabs-below > .nav-tabs > .active > a:focus { - border-color: transparent #ddd #ddd #ddd; -} -.tabs-left > .nav-tabs > li, -.tabs-right > .nav-tabs > li { - float: none; -} -.tabs-left > .nav-tabs > li > a, -.tabs-right > .nav-tabs > li > a { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; -} -.tabs-left > .nav-tabs { - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} -.tabs-left > .nav-tabs > li > a { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} -.tabs-left > .nav-tabs > li > a:hover, -.tabs-left > .nav-tabs > li > a:focus { - border-color: #eee #ddd #eee #eee; -} -.tabs-left > .nav-tabs .active > a, -.tabs-left > .nav-tabs .active > a:hover, -.tabs-left > .nav-tabs .active > a:focus { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #fff; -} -.tabs-right > .nav-tabs { - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} -.tabs-right > .nav-tabs > li > a { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} -.tabs-right > .nav-tabs > li > a:hover, -.tabs-right > .nav-tabs > li > a:focus { - border-color: #eee #eee #eee #ddd; -} -.tabs-right > .nav-tabs .active > a, -.tabs-right > .nav-tabs .active > a:hover, -.tabs-right > .nav-tabs .active > a:focus { - border-color: #ddd #ddd #ddd transparent; - *border-left-color: #fff; -} -.nav > .disabled > a { - color: #999; -} -.nav > .disabled > a:hover, -.nav > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - cursor: default; -} -.navbar { - overflow: visible; - margin-bottom: 20px; - *position: relative; - *z-index: 2; -} -.navbar-inner { - min-height: 40px; - padding-left: 20px; - padding-right: 20px; - background-color: #fafafa; - background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); - background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); - background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - border: 1px solid #d4d4d4; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - *zoom: 1; -} -.navbar-inner:before, -.navbar-inner:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-inner:after { - clear: both; -} -.navbar .container { - width: auto; -} -.nav-collapse.collapse { - height: auto; - overflow: visible; -} -.navbar .brand { - float: left; - display: block; - padding: 10px 20px 10px; - margin-left: -20px; - font-size: 20px; - font-weight: 200; - color: #777; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .brand:hover, -.navbar .brand:focus { - text-decoration: none; -} -.navbar-text { - margin-bottom: 0; - line-height: 40px; - color: #777; -} -.navbar-link { - color: #777; -} -.navbar-link:hover, -.navbar-link:focus { - color: #333; -} -.navbar .divider-vertical { - height: 40px; - margin: 0 9px; - border-left: 1px solid #f2f2f2; - border-right: 1px solid #ffffff; -} -.navbar .btn, -.navbar .btn-group { - margin-top: 5px; -} -.navbar .btn-group .btn, -.navbar .input-prepend .btn, -.navbar .input-append .btn, -.navbar .input-prepend .btn-group, -.navbar .input-append .btn-group { - margin-top: 0; -} -.navbar-form { - margin-bottom: 0; - *zoom: 1; -} -.navbar-form:before, -.navbar-form:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-form:after { - clear: both; -} -.navbar-form input, -.navbar-form select, -.navbar-form .radio, -.navbar-form .checkbox { - margin-top: 5px; -} -.navbar-form input, -.navbar-form select, -.navbar-form .btn { - display: inline-block; - margin-bottom: 0; -} -.navbar-form input[type="image"], -.navbar-form input[type="checkbox"], -.navbar-form input[type="radio"] { - margin-top: 3px; -} -.navbar-form .input-append, -.navbar-form .input-prepend { - margin-top: 5px; - white-space: nowrap; -} -.navbar-form .input-append input, -.navbar-form .input-prepend input { - margin-top: 0; -} -.navbar-search { - position: relative; - float: left; - margin-top: 5px; - margin-bottom: 0; -} -.navbar-search .search-query { - margin-bottom: 0; - padding: 4px 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 1; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.navbar-static-top { - position: static; - margin-bottom: 0; -} -.navbar-static-top .navbar-inner { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; - margin-bottom: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - border-width: 0 0 1px; -} -.navbar-fixed-bottom .navbar-inner { - border-width: 1px 0 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-left: 0; - padding-right: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; - width: 100%; - *width: 99.94680851%; - width: 926px; -} -.navbar-fixed-top { - top: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); - box-shadow: 0 1px 10px rgba(0,0,0,.1); -} -.navbar-fixed-bottom { - bottom: 0; -} -.navbar-fixed-bottom .navbar-inner { - -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - box-shadow: 0 -1px 10px rgba(0,0,0,.1); -} -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} -.navbar .nav.pull-right { - float: right; - margin-right: 0; -} -.navbar .nav > li { - float: left; -} -.navbar .nav > li > a { - float: none; - padding: 10px 15px 10px; - color: #777; - text-decoration: none; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .nav .dropdown-toggle .caret { - margin-top: 8px; -} -.navbar .nav > li > a:focus, -.navbar .nav > li > a:hover { - background-color: transparent; - color: #333; - text-decoration: none; -} -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: #555; - text-decoration: none; - background-color: #e5e5e5; - -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -} -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-left: 5px; - margin-right: 5px; - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ededed; - background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); - background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); - border-color: #e5e5e5 #e5e5e5 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #e5e5e5; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -} -.navbar .btn-navbar:hover, -.navbar .btn-navbar:focus, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - color: #fff; - background-color: #e5e5e5; - *background-color: #d9d9d9; -} -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #cccccc \9; -} -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -} -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} -.navbar .nav > li > .dropdown-menu:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; - top: -7px; - left: 9px; -} -.navbar .nav > li > .dropdown-menu:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - position: absolute; - top: -6px; - left: 10px; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:before { - border-top: 7px solid #ccc; - border-top-color: rgba(0, 0, 0, 0.2); - border-bottom: 0; - bottom: -7px; - top: auto; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:after { - border-top: 6px solid #fff; - border-bottom: 0; - bottom: -6px; - top: auto; -} -.navbar .nav li.dropdown > a:hover .caret, -.navbar .nav li.dropdown > a:focus .caret { - border-top-color: #333; - border-bottom-color: #333; -} -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #e5e5e5; - color: #555; -} -.navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #777; - border-bottom-color: #777; -} -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.navbar .pull-right > li > .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right { - left: auto; - right: 0; -} -.navbar .pull-right > li > .dropdown-menu:before, -.navbar .nav > li > .dropdown-menu.pull-right:before { - left: auto; - right: 12px; -} -.navbar .pull-right > li > .dropdown-menu:after, -.navbar .nav > li > .dropdown-menu.pull-right:after { - left: auto; - right: 13px; -} -.navbar .pull-right > li > .dropdown-menu .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { - left: auto; - right: 100%; - margin-left: 0; - margin-right: -1px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.navbar-inverse .navbar-inner { - background-color: #1b1b1b; - background-image: -moz-linear-gradient(top, #222222, #111111); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); - background-image: -webkit-linear-gradient(top, #222222, #111111); - background-image: -o-linear-gradient(top, #222222, #111111); - background-image: linear-gradient(to bottom, #222222, #111111); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); - border-color: #252525; -} -.navbar-inverse .brand, -.navbar-inverse .nav > li > a { - color: #999; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.navbar-inverse .brand:hover, -.navbar-inverse .nav > li > a:hover, -.navbar-inverse .brand:focus, -.navbar-inverse .nav > li > a:focus { - color: #fff; -} -.navbar-inverse .brand { - color: #999; -} -.navbar-inverse .navbar-text { - color: #999; -} -.navbar-inverse .nav > li > a:focus, -.navbar-inverse .nav > li > a:hover { - background-color: transparent; - color: #fff; -} -.navbar-inverse .nav .active > a, -.navbar-inverse .nav .active > a:hover, -.navbar-inverse .nav .active > a:focus { - color: #fff; - background-color: #111111; -} -.navbar-inverse .navbar-link { - color: #999; -} -.navbar-inverse .navbar-link:hover, -.navbar-inverse .navbar-link:focus { - color: #fff; -} -.navbar-inverse .divider-vertical { - border-left-color: #111111; - border-right-color: #222222; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #111111; - color: #fff; -} -.navbar-inverse .nav li.dropdown > a:hover .caret, -.navbar-inverse .nav li.dropdown > a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #999; - border-bottom-color: #999; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .navbar-search .search-query { - color: #fff; - background-color: #515151; - border-color: #111111; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} -.navbar-inverse .navbar-search .search-query:-moz-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:focus, -.navbar-inverse .navbar-search .search-query.focused { - padding: 5px 15px; - color: #333; - text-shadow: 0 1px 0 #fff; - background-color: #fff; - border: 0; - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - outline: 0; -} -.navbar-inverse .btn-navbar { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e0e0e; - background-image: -moz-linear-gradient(top, #151515, #040404); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); - background-image: -webkit-linear-gradient(top, #151515, #040404); - background-image: -o-linear-gradient(top, #151515, #040404); - background-image: linear-gradient(to bottom, #151515, #040404); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); - border-color: #040404 #040404 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #040404; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.navbar-inverse .btn-navbar:hover, -.navbar-inverse .btn-navbar:focus, -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active, -.navbar-inverse .btn-navbar.disabled, -.navbar-inverse .btn-navbar[disabled] { - color: #fff; - background-color: #040404; - *background-color: #000000; -} -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active { - background-color: #000000 \9; -} -.breadcrumb { - padding: 8px 15px; - margin: 0 0 20px; - list-style: none; - background-color: #f5f5f5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - text-shadow: 0 1px 0 #fff; -} -.breadcrumb > li > .divider { - padding: 0 5px; - color: #ccc; -} -.breadcrumb > .active { - color: #999; -} -.pagination { - margin: 20px 0; -} -.pagination ul { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-left: 0; - margin-bottom: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -} -.pagination ul > li { - display: inline; -} -.pagination ul > li > a, -.pagination ul > li > span { - float: left; - padding: 4px 12px; - line-height: 20px; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; - border-left-width: 0; -} -.pagination ul > li > a:hover, -.pagination ul > li > a:focus, -.pagination ul > .active > a, -.pagination ul > .active > span { - background-color: #f5f5f5; -} -.pagination ul > .active > a, -.pagination ul > .active > span { - color: #999; - cursor: default; -} -.pagination ul > .disabled > span, -.pagination ul > .disabled > a, -.pagination ul > .disabled > a:hover, -.pagination ul > .disabled > a:focus { - color: #999; - background-color: transparent; - cursor: default; -} -.pagination ul > li:first-child > a, -.pagination ul > li:first-child > span { - border-left-width: 1px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.pagination ul > li:last-child > a, -.pagination ul > li:last-child > span { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.pagination-centered { - text-align: center; -} -.pagination-right { - text-align: right; -} -.pagination-large ul > li > a, -.pagination-large ul > li > span { - padding: 11px 19px; - font-size: 17.5px; -} -.pagination-large ul > li:first-child > a, -.pagination-large ul > li:first-child > span { - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.pagination-large ul > li:last-child > a, -.pagination-large ul > li:last-child > span { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.pagination-mini ul > li:first-child > a, -.pagination-small ul > li:first-child > a, -.pagination-mini ul > li:first-child > span, -.pagination-small ul > li:first-child > span { - -webkit-border-top-left-radius: 3px; - -moz-border-radius-topleft: 3px; - border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - border-bottom-left-radius: 3px; -} -.pagination-mini ul > li:last-child > a, -.pagination-small ul > li:last-child > a, -.pagination-mini ul > li:last-child > span, -.pagination-small ul > li:last-child > span { - -webkit-border-top-right-radius: 3px; - -moz-border-radius-topright: 3px; - border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - border-bottom-right-radius: 3px; -} -.pagination-small ul > li > a, -.pagination-small ul > li > span { - padding: 2px 10px; - font-size: 11.9px; -} -.pagination-mini ul > li > a, -.pagination-mini ul > li > span { - padding: 0 6px; - font-size: 10.5px; -} -.pager { - margin: 20px 0; - list-style: none; - text-align: center; - *zoom: 1; -} -.pager:before, -.pager:after { - display: table; - content: ""; - line-height: 0; -} -.pager:after { - clear: both; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #f5f5f5; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999; - background-color: #fff; - cursor: default; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop, -.modal-backdrop.fade.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.modal { - position: fixed; - top: 10%; - left: 50%; - z-index: 1050; - width: 560px; - margin-left: -280px; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.3); - *border: 1px solid #999; - /* IE6-7 */ - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; - outline: none; -} -.modal.fade { - -webkit-transition: opacity .3s linear, top .3s ease-out; - -moz-transition: opacity .3s linear, top .3s ease-out; - -o-transition: opacity .3s linear, top .3s ease-out; - transition: opacity .3s linear, top .3s ease-out; - top: -25%; -} -.modal.fade.in { - top: 10%; -} -.modal-header { - padding: 9px 15px; - border-bottom: 1px solid #eee; -} -.modal-header .close { - margin-top: 2px; -} -.modal-header h3 { - margin: 0; - line-height: 30px; -} -.modal-body { - position: relative; - overflow-y: auto; - max-height: 400px; - padding: 15px; -} -.modal-form { - margin-bottom: 0; -} -.modal-footer { - padding: 14px 15px 15px; - margin-bottom: 0; - text-align: right; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - -webkit-box-shadow: inset 0 1px 0 #fff; - -moz-box-shadow: inset 0 1px 0 #fff; - box-shadow: inset 0 1px 0 #fff; - *zoom: 1; -} -.modal-footer:before, -.modal-footer:after { - display: table; - content: ""; - line-height: 0; -} -.modal-footer:after { - clear: both; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - visibility: visible; - font-size: 11px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.thumbnails { - margin-left: -20px; - list-style: none; - *zoom: 1; -} -.thumbnails:before, -.thumbnails:after { - display: table; - content: ""; - line-height: 0; -} -.thumbnails:after { - clear: both; -} -.row-fluid .thumbnails { - margin-left: 0; -} -.thumbnails > li { - float: left; - margin-bottom: 20px; - margin-left: 20px; -} -.thumbnail { - display: block; - padding: 4px; - line-height: 20px; - border: 1px solid #ddd; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -a.thumbnail:hover, -a.thumbnail:focus { - border-color: #810606; - -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -} -.thumbnail > img { - display: block; - max-width: 100%; - margin-left: auto; - margin-right: auto; -} -.thumbnail .caption { - padding: 9px; - color: #555; -} -.label, -.badge { - display: inline-block; - padding: 2px 4px; - font-size: 11.844px; - font-weight: bold; - line-height: 14px; - color: #fff; - vertical-align: baseline; - white-space: nowrap; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #999; -} -.label { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.badge { - padding-left: 9px; - padding-right: 9px; - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} -.label:empty, -.badge:empty { - display: none; -} -a.label:hover, -a.label:focus, -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-important, -.badge-important { - background-color: #b55457; -} -.label-important[href], -.badge-important[href] { - background-color: #954143; -} -.label-warning, -.badge-warning { - background-color: #f89406; -} -.label-warning[href], -.badge-warning[href] { - background-color: #c67605; -} -.label-success, -.badge-success { - background-color: #468847; -} -.label-success[href], -.badge-success[href] { - background-color: #356635; -} -.label-info, -.badge-info { - background-color: #3a87ad; -} -.label-info[href], -.badge-info[href] { - background-color: #2d6987; -} -.label-inverse, -.badge-inverse { - background-color: #333; -} -.label-inverse[href], -.badge-inverse[href] { - background-color: #1a1a1a; -} -.btn .label, -.btn .badge { - position: relative; - top: -1px; -} -.btn-mini .label, -.btn-mini .badge { - top: 0; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-ms-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.progress .bar { - width: 0%; - height: 100%; - color: #fff; - float: left; - font-size: 12px; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e90d2; - background-image: -moz-linear-gradient(top, #149bdf, #0480be); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); - background-image: -webkit-linear-gradient(top, #149bdf, #0480be); - background-image: -o-linear-gradient(top, #149bdf, #0480be); - background-image: linear-gradient(to bottom, #149bdf, #0480be); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress .bar + .bar { - -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -} -.progress-striped .bar { - background-color: #149bdf; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-danger .bar, -.progress .bar-danger { - background-color: #dd514c; - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); -} -.progress-danger.progress-striped .bar, -.progress-striped .bar-danger { - background-color: #ee5f5b; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-success .bar, -.progress .bar-success { - background-color: #5eb95e; - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(to bottom, #62c462, #57a957); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); -} -.progress-success.progress-striped .bar, -.progress-striped .bar-success { - background-color: #62c462; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-info .bar, -.progress .bar-info { - background-color: #4bb1cf; - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); -} -.progress-info.progress-striped .bar, -.progress-striped .bar-info { - background-color: #5bc0de; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-warning .bar, -.progress .bar-warning { - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); -} -.progress-warning.progress-striped .bar, -.progress-striped .bar-warning { - background-color: #fbb450; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.accordion { - margin-bottom: 20px; -} -.accordion-group { - margin-bottom: 2px; - border: 1px solid #e5e5e5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.accordion-heading { - border-bottom: 0; -} -.accordion-heading .accordion-toggle { - display: block; - padding: 8px 15px; -} -.accordion-toggle { - cursor: pointer; -} -.accordion-inner { - padding: 9px 15px; - border-top: 1px solid #e5e5e5; -} -.carousel { - position: relative; - margin-bottom: 20px; - line-height: 1; -} -.carousel-inner { - overflow: hidden; - width: 100%; - position: relative; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 40%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -20px; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #fff; - text-align: center; - background: #222; - border: 3px solid #fff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - filter: alpha(opacity=50); -} -.carousel-control.right { - left: auto; - right: 15px; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-indicators { - position: absolute; - top: 15px; - right: 15px; - z-index: 5; - margin: 0; - list-style: none; -} -.carousel-indicators li { - display: block; - float: left; - width: 10px; - height: 10px; - margin-left: 5px; - text-indent: -999px; - background-color: #ccc; - background-color: rgba(255, 255, 255, 0.25); - border-radius: 5px; -} -.carousel-indicators .active { - background-color: #fff; -} -.carousel-caption { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 15px; - background: #333; - background: rgba(0, 0, 0, 0.75); -} -.carousel-caption h4, -.carousel-caption p { - color: #fff; - line-height: 20px; -} -.carousel-caption h4 { - margin: 0 0 5px; -} -.carousel-caption p { - margin-bottom: 0; -} -.hero-unit { - padding: 60px; - margin-bottom: 30px; - font-size: 18px; - font-weight: 200; - line-height: 30px; - color: inherit; - background-color: #eee; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.hero-unit h1 { - margin-bottom: 0; - font-size: 60px; - line-height: 1; - color: inherit; - letter-spacing: -1px; -} -.hero-unit li { - line-height: 30px; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - background-color: #fff; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.popover-title:empty { - display: none; -} -.popover-content { - padding: 9px 14px; -} -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover .arrow { - border-width: 11px; -} -.popover .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #fff; -} -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right .arrow:after { - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; -} -.popover.bottom .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left .arrow:after { - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.hide { - display: none; -} -.show { - display: block; -} -.invisible { - visibility: hidden; -} -.affix { - position: fixed; -} -/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ -@-ms-viewport { - width: device-width; -} -.hidden { - display: none; - visibility: hidden; -} -.visible-phone { - display: none !important; -} -.visible-tablet { - display: none !important; -} -.hidden-desktop { - display: none !important; -} -.visible-desktop { - display: inherit !important; -} -@media (min-width: 768px) and (max-width: 979px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important ; - } - .visible-tablet { - display: inherit !important; - } - .hidden-tablet { - display: none !important; - } -} -@media (max-width: 767px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important; - } - .visible-phone { - display: inherit !important; - } - .hidden-phone { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: inherit !important; - } - .hidden-print { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - content: ""; - line-height: 0; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; - } - .span3 { - width: 166px; - } - .span2 { - width: 104px; - } - .span1 { - width: 42px; - } - .offset12 { - margin-left: 764px; - } - .offset11 { - margin-left: 702px; - } - .offset10 { - margin-left: 640px; - } - .offset9 { - margin-left: 578px; - } - .offset8 { - margin-left: 516px; - } - .offset7 { - margin-left: 454px; - } - .offset6 { - margin-left: 392px; - } - .offset5 { - margin-left: 330px; - } - .offset4 { - margin-left: 268px; - } - .offset3 { - margin-left: 206px; - } - .offset2 { - margin-left: 144px; - } - .offset1 { - margin-left: 82px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - content: ""; - line-height: 0; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.76243094%; - *margin-left: 2.70923945%; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.76243094%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851%; - } - .row-fluid .span11 { - width: 91.43646409%; - *width: 91.3832726%; - } - .row-fluid .span10 { - width: 82.87292818%; - *width: 82.81973669%; - } - .row-fluid .span9 { - width: 74.30939227%; - *width: 74.25620078%; - } - .row-fluid .span8 { - width: 65.74585635%; - *width: 65.69266486%; - } - .row-fluid .span7 { - width: 57.18232044%; - *width: 57.12912895%; - } - .row-fluid .span6 { - width: 48.61878453%; - *width: 48.56559304%; - } - .row-fluid .span5 { - width: 40.05524862%; - *width: 40.00205713%; - } - .row-fluid .span4 { - width: 31.49171271%; - *width: 31.43852122%; - } - .row-fluid .span3 { - width: 22.9281768%; - *width: 22.87498531%; - } - .row-fluid .span2 { - width: 14.36464088%; - *width: 14.31144939%; - } - .row-fluid .span1 { - width: 5.80110497%; - *width: 5.74791348%; - } - .row-fluid .offset12 { - margin-left: 105.52486188%; - *margin-left: 105.4184789%; - } - .row-fluid .offset12:first-child { - margin-left: 102.76243094%; - *margin-left: 102.65604796%; - } - .row-fluid .offset11 { - margin-left: 96.96132597%; - *margin-left: 96.85494299%; - } - .row-fluid .offset11:first-child { - margin-left: 94.19889503%; - *margin-left: 94.09251205%; - } - .row-fluid .offset10 { - margin-left: 88.39779006%; - *margin-left: 88.29140708%; - } - .row-fluid .offset10:first-child { - margin-left: 85.63535912%; - *margin-left: 85.52897614%; - } - .row-fluid .offset9 { - margin-left: 79.83425414%; - *margin-left: 79.72787116%; - } - .row-fluid .offset9:first-child { - margin-left: 77.0718232%; - *margin-left: 76.96544023%; - } - .row-fluid .offset8 { - margin-left: 71.27071823%; - *margin-left: 71.16433525%; - } - .row-fluid .offset8:first-child { - margin-left: 68.50828729%; - *margin-left: 68.40190431%; - } - .row-fluid .offset7 { - margin-left: 62.70718232%; - *margin-left: 62.60079934%; - } - .row-fluid .offset7:first-child { - margin-left: 59.94475138%; - *margin-left: 59.8383684%; - } - .row-fluid .offset6 { - margin-left: 54.14364641%; - *margin-left: 54.03726343%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121547%; - *margin-left: 51.27483249%; - } - .row-fluid .offset5 { - margin-left: 45.5801105%; - *margin-left: 45.47372752%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767956%; - *margin-left: 42.71129658%; - } - .row-fluid .offset4 { - margin-left: 37.01657459%; - *margin-left: 36.91019161%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414365%; - *margin-left: 34.14776067%; - } - .row-fluid .offset3 { - margin-left: 28.45303867%; - *margin-left: 28.3466557%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773%; - *margin-left: 25.58422476%; - } - .row-fluid .offset2 { - margin-left: 19.88950276%; - *margin-left: 19.78311978%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182%; - *margin-left: 17.02068884%; - } - .row-fluid .offset1 { - margin-left: 11.32596685%; - *margin-left: 11.21958387%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591%; - *margin-left: 8.45715293%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 710px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 648px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 586px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 524px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 462px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 400px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 338px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 276px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 214px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 152px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 90px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 28px; - } -} -@media (max-width: 767px) { - body { - padding-left: 20px; - padding-right: 20px; - } - .navbar-fixed-top, - .navbar-fixed-bottom, - .navbar-static-top { - margin-left: -20px; - margin-right: -20px; - } - .container-fluid { - padding: 0; - } - .dl-horizontal dt { - float: none; - clear: none; - width: auto; - text-align: left; - } - .dl-horizontal dd { - margin-left: 0; - } - .container { - width: auto; - } - .row-fluid { - width: 100%; - } - .row, - .thumbnails { - margin-left: 0; - } - .thumbnails > li { - float: none; - margin-left: 0; - } - [class*="span"], - .uneditable-input[class*="span"], - .row-fluid [class*="span"] { - float: none; - display: block; - width: 100%; - margin-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .span12, - .row-fluid .span12 { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="offset"]:first-child { - margin-left: 0; - } - .input-large, - .input-xlarge, - .input-xxlarge, - input[class*="span"], - select[class*="span"], - textarea[class*="span"], - .uneditable-input { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .input-prepend input, - .input-append input, - .input-prepend input[class*="span"], - .input-append input[class*="span"] { - display: inline-block; - width: auto; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 0; - } - .modal { - position: fixed; - top: 20px; - left: 20px; - right: 20px; - width: auto; - margin: 0; - } - .modal.fade { - top: -100px; - } - .modal.fade.in { - top: 20px; - } -} -@media (max-width: 480px) { - .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); - } - .page-header h1 small { - display: block; - line-height: 20px; - } - input[type="checkbox"], - input[type="radio"] { - border: 1px solid #ccc; - } - .form-horizontal .control-label { - float: none; - width: auto; - padding-top: 0; - text-align: left; - } - .form-horizontal .controls { - margin-left: 0; - } - .form-horizontal .control-list { - padding-top: 0; - } - .form-horizontal .form-actions { - padding-left: 10px; - padding-right: 10px; - } - .media .pull-left, - .media .pull-right { - float: none; - display: block; - margin-bottom: 10px; - } - .media-object { - margin-right: 0; - margin-left: 0; - } - .modal { - top: 10px; - left: 10px; - right: 10px; - } - .modal-header .close { - padding: 10px; - margin: -10px; - } - .carousel-caption { - position: static; - } -} -@media (max-width: 979px) { - body { - padding-top: 0; - } - .navbar-fixed-top, - .navbar-fixed-bottom { - position: static; - } - .navbar-fixed-top { - margin-bottom: 20px; - } - .navbar-fixed-bottom { - margin-top: 20px; - } - .navbar-fixed-top .navbar-inner, - .navbar-fixed-bottom .navbar-inner { - padding: 5px; - } - .navbar .container { - width: auto; - padding: 0; - } - .navbar .brand { - padding-left: 10px; - padding-right: 10px; - margin: 0 0 0 -5px; - } - .nav-collapse { - clear: both; - } - .nav-collapse .nav { - float: none; - margin: 0 0 10px; - } - .nav-collapse .nav > li { - float: none; - } - .nav-collapse .nav > li > a { - margin-bottom: 2px; - } - .nav-collapse .nav > .divider-vertical { - display: none; - } - .nav-collapse .nav .nav-header { - color: #777; - text-shadow: none; - } - .nav-collapse .nav > li > a, - .nav-collapse .dropdown-menu a { - padding: 9px 15px; - font-weight: bold; - color: #777; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - } - .nav-collapse .btn { - padding: 4px 10px 4px; - font-weight: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .nav-collapse .dropdown-menu li + li a { - margin-bottom: 2px; - } - .nav-collapse .nav > li > a:hover, - .nav-collapse .nav > li > a:focus, - .nav-collapse .dropdown-menu a:hover, - .nav-collapse .dropdown-menu a:focus { - background-color: #f2f2f2; - } - .navbar-inverse .nav-collapse .nav > li > a, - .navbar-inverse .nav-collapse .dropdown-menu a { - color: #999; - } - .navbar-inverse .nav-collapse .nav > li > a:hover, - .navbar-inverse .nav-collapse .nav > li > a:focus, - .navbar-inverse .nav-collapse .dropdown-menu a:hover, - .navbar-inverse .nav-collapse .dropdown-menu a:focus { - background-color: #111111; - } - .nav-collapse.in .btn-group { - margin-top: 5px; - padding: 0; - } - .nav-collapse .dropdown-menu { - position: static; - top: auto; - left: auto; - float: none; - display: none; - max-width: none; - margin: 0 15px; - padding: 0; - background-color: transparent; - border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - } - .nav-collapse .open > .dropdown-menu { - display: block; - } - .nav-collapse .dropdown-menu:before, - .nav-collapse .dropdown-menu:after { - display: none; - } - .nav-collapse .dropdown-menu .divider { - display: none; - } - .nav-collapse .nav > li > .dropdown-menu:before, - .nav-collapse .nav > li > .dropdown-menu:after { - display: none; - } - .nav-collapse .navbar-form, - .nav-collapse .navbar-search { - float: none; - padding: 10px 15px; - margin: 10px 0; - border-top: 1px solid #f2f2f2; - border-bottom: 1px solid #f2f2f2; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - } - .navbar-inverse .nav-collapse .navbar-form, - .navbar-inverse .nav-collapse .navbar-search { - border-top-color: #111111; - border-bottom-color: #111111; - } - .navbar .nav-collapse .nav.pull-right { - float: none; - margin-left: 0; - } - .nav-collapse, - .nav-collapse.collapse { - overflow: hidden; - height: 0; - } - .navbar .btn-navbar { - display: block; - } - .navbar-static .navbar-inner { - padding-left: 10px; - padding-right: 10px; - } -} -@media (min-width: 979px + 1) { - .nav-collapse.collapse { - height: auto !important; - overflow: visible !important; - } -} -.break-word { - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.tag { - display: inline-block; - margin-bottom: 4px; - color: #111; - background-color: #f6f6f6; - padding: 1px 10px; - border: 1px solid #dddddd; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} -a.tag:hover { - text-decoration: none; - color: #fff; - background-color: #b20808; - border: 1px solid #810606; - -webkit-box-shadow: inset 0 1px 0 #e20b0b; - -moz-box-shadow: inset 0 1px 0 #e20b0b; - box-shadow: inset 0 1px 0 #e20b0b; -} -.pill { - display: inline-block; - background-color: #6f8890; - color: #FFF; - padding: 2px 10px 1px 10px; - margin-right: 5px; - font-weight: normal; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.pill a { - color: #FFF; -} -.pill a.remove { - font-size: 11px; -} -.unstyled { - margin: 0; - list-style: none; -} -.simple-item { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-item:last-of-type { - border-bottom: 0; -} -.simple-list { - *zoom: 1; - margin: 0; - list-style: none; -} -.simple-list:before, -.simple-list:after { - display: table; - content: ""; - line-height: 0; -} -.simple-list:after { - clear: both; -} -.simple-list > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-list > li:last-of-type { - border-bottom: 0; -} -.simple-list .ckan-icon { - position: relative; - top: 0px; -} -.module-narrow .simple-list > li { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.listing li { - text-align: right; - margin-bottom: 5px; -} -.listing .key { - clear: right; - font-weight: bold; -} -.js .tab-content { - display: none; -} -.js .tab-content.active { - display: block; -} -.box { - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); -} -.module { - margin: 20px 0; -} -.module-heading { - *zoom: 1; - margin: 0; - padding: 7px 25px; - font-size: 14px; - line-height: 1.3; - background-color: #f6f6f6; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} -.module-heading:before, -.module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.module-heading:after { - clear: both; -} -.module-content { - padding: 0 25px; - margin: 20px 0; -} -@media (min-width: 768px) { - .span9 div.module-content { - padding-left: 10px; - } -} -.module-content:first-child { - margin-top: 0; - padding-top: 20px; -} -.module-content:last-child { - margin-bottom: 0; - padding-bottom: 20px; -} -.module-content > :last-child { - margin-bottom: 0; -} -.module:first-child .module-heading { - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; - border-top-width: 0; -} -.module:last-child { - margin-bottom: 20px; -} -.module-footer { - padding: 7px 25px 7px; - margin: 0; - border-top: 1px dotted #ddd; -} -.module .read-more { - font-weight: bold; - color: #000; -} -.module-content .pagination { - margin-left: -25px; - margin-right: -25px; - margin-bottom: -20px; -} -.module .pagination > ul { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border: 0; -} -.module .pagination li a { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - padding-top: 7px; - padding-bottom: 7px; -} -.module .pagination li:first-child a, -.module .pagination li:last-child a { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.module-content-shallow { - padding: 0; - margin-top: 10px; - padding-bottom: 10px; -} -.module h1 { - margin-bottom: 20px; -} -.module-shallow .module-content { - padding: 10px; - margin: 0; -} -.module-shallow .module-tags { - margin-top: 0; - margin-bottom: 0; -} -.module-shallow .module-content:first-child { - padding-top: 10px; -} -.module-shallow .module-content:last-child { - padding-bottom: 10px; -} -.module-narrow .module-heading, -.module-narrow .module-content, -.module-narrow .module-footer { - padding-left: 15px; - padding-right: 15px; -} -.module-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.module-grid:before, -.module-grid:after { - display: table; - content: ""; - line-height: 0; -} -.module-grid:after { - clear: both; -} -.module-item { - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - float: left; - margin-left: 20px; - width: 460px; - padding-top: 10px; - padding-bottom: 10px; - padding-right: 50px; - overflow: hidden; - position: relative; -} -.module-item span.count { - color: #999; -} -.module-item .media-image { - margin-bottom: 5px; -} -.module-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.module-item:hover { - z-index: 1; -} -.module-item:hover .media-edit { - opacity: 1; -} -.module-item.first { - clear: left; -} -.group .content img { - margin: 0 -5px 5px; - max-width: initial; -} -.group .content h3 { - font-size: 14px; - line-height: 1.3; -} -.group-listing { - margin-left: -20px; -} -.ckanext-datapreview { - position: relative; - clear: both; - padding-top: 15px; - margin-top: 0; -} -.ckanext-datapreview > iframe { - min-height: 650px; -} -.ckanext-datapreview > img { - max-height: 500px; - max-width: 100%; - overflow: hidden; -} -.package-info h4 { - margin-bottom: 10px; -} -.module-resource { - background-color: #fff; - border-bottom: 1px solid #ddd; - margin-top: 0; - margin-bottom: 0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.module-resource .actions { - position: relative; - float: right; - top: -10px; - right: -15px; -} -.module .module-tags { - padding-bottom: 8px; -} -.secondary .module:first-child, -.primary .module:first-child { - margin-top: 0; -} -.no-nav .module:last-child { - margin-top: 0; -} -.module-image { - float: left; - width: 50px; - height: 50px; - line-height: 50px; - text-align: center; - margin-right: 15px; -} -.module-image img { - max-width: 50px; - max-height: 50px; - vertical-align: middle; -} -.banner { - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transform-origin: center center; - -moz-transform-origin: center center; - -ms-transform-origin: center center; - -o-transform-origin: center center; - transform-origin: center center; - position: absolute; - top: 15px; - right: -35px; - width: 80px; - color: #fff; - background-color: #810606; - padding: 1px 20px; - font-size: 11px; - text-align: center; - text-transform: uppercase; -} -.media-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.media-grid:before, -.media-grid:after { - display: table; - content: ""; - line-height: 0; -} -.media-grid:after { - clear: both; -} -@media (min-width: 768px) { - .media-grid { - margin-left: -27px; - } - .module-content .wide .media-grid { - margin-left: -25px; - } -} -.media-item { - position: relative; - float: left; - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-item span.count { - color: #999; -} -.media-item .media-image { - margin-bottom: 5px; -} -.media-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.media-item:hover { - z-index: 1; -} -.media-item:hover .media-edit { - opacity: 1; -} -.media-view { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid #ddd; - overflow: hidden; - -webkit-transition: all 0.2s ease-in; - -moz-transition: all 0.2s ease-in; - -o-transition: all 0.2s ease-in; - transition: all 0.2s ease-in; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-view:hover, -.media-view.hovered { - border-color: #810606; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); -} -.media-view:hover .banner, -.media-view.hovered .banner { - background-color: #810606; -} -.media-view span { - display: none; -} -.media-view .banner { - display: block; - background-color: #b7b7b7; - -webkit-transition: background-color 0.2s ease-in; - -moz-transition: background-color 0.2s ease-in; - -o-transition: background-color 0.2s ease-in; - transition: background-color 0.2s ease-in; -} -.media-image { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.media-heading { - font-size: 18px; - line-height: 1.3; - margin: 5px 0; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.media-overlay { - position: relative; - min-height: 35px; -} -.media-overlay .media-heading { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 12px 10px; - margin: 0; - background-color: #000; - background-color: rgba(0, 0, 0, 0.8); - font-size: 13px; - color: #fff; - z-index: 1; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.media-overlay .media-image { - float: none; - display: block; - margin-right: 0; -} -.media-item.is-expander .truncator-link { - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; - position: absolute; - z-index: 10; - left: 15px; - bottom: 15px; - opacity: 0; -} -.media-item.is-expander:hover { - padding-bottom: 35px; -} -.media-item.is-expander:hover .truncator-link { - opacity: 1; -} -.wide .media-item { - width: 186px; -} -.nav-simple, -.nav-aside { - *zoom: 1; - margin: 0; - list-style: none; - padding-bottom: 0; -} -.nav-simple:before, -.nav-aside:before, -.nav-simple:after, -.nav-aside:after { - display: table; - content: ""; - line-height: 0; -} -.nav-simple:after, -.nav-aside:after { - clear: both; -} -.nav-simple > li, -.nav-aside > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.nav-simple > li:last-of-type, -.nav-aside > li:last-of-type { - border-bottom: 0; -} -.nav-simple .ckan-icon, -.nav-aside .ckan-icon { - position: relative; - top: 0px; -} -.nav-aside { - border-top: 1px dotted #DDD; - border-bottom: 1px dotted #DDD; - margin-bottom: 15px; -} -.nav-item > a, -.nav-aside li a { - color: #333; - font-size: 14px; - line-height: 20px; - margin: -7px -25px; - padding: 7px 25px; -} -.nav-item.active, -.nav-aside li.active { - background-color: #f6f6f6; -} -.nav-item.active > a, -.nav-aside li.active a { - position: relative; - color: #FFF; - background-color: #8CA0A6; -} -.nav-item.active > a:hover, -.nav-aside li.active a:hover { - color: #FFF; - background-color: #8CA0A6; -} -@media (min-width: 768px) { - .nav-item.active > a:before, - .nav-aside li.active a:before { - content: ' '; - position: absolute; - top: 0; - right: -6px; - width: 6px; - height: 34px; - background-image: url("../../../base/images/nav-active.png?1"); - } -} -.nav-item.active > a span, -.nav-aside li.active a span { - white-space: nowrap; - overflow: hidden; - display: block; -} -.module-narrow .nav-item > a, -.module-narrow .nav-aside li a { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.module-narrow .nav-item.image, -.module-narrow .nav-aside li.image { - position: relative; -} -.module-narrow .nav-item.image > a, -.module-narrow .nav-aside li.image a { - padding-left: 42px; - padding-right: 42px; -} -.module-narrow .nav-item.image > img, -.module-narrow .nav-aside li.image img { - position: absolute; - top: 50%; - left: 15px; - width: 20px; - height: 20px; - margin-top: -10px; - z-index: 2; -} -.nav-facet .nav-item > a:hover:after, -.nav-facet .nav-item.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-facet .nav-item > a:hover:after { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.nav-facet .nav-item.active > a:after { - width: 17px; - height: 17px; - background-position: 0px -16px; - right: 3px; -} -.user-list { - margin: 0; - list-style: none; -} -.user-list li { - margin: 0 0 10px 0; -} -.user-list .gravatar { - vertical-align: -4px; - margin-right: 3px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.nav-facet-tertiary { - margin: 10px 0; -} -.nav-facet-tertiary .module-heading { - margin-bottom: 5px; - padding: 8px 12px; - border-bottom-width: 0; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-facet-tertiary .module-heading i { - display: none; -} -.nav-facet-tertiary .module-footer { - padding: 8px 12px; - border-top-width: 0; -} -.nav-facet-tertiary .module-footer a { - font-weight: normal; - color: #8C8C8C; -} -.nav-facet-tertiary .nav { - margin-bottom: 0; -} -.nav-facet-tertiary .module-content.empty { - padding: 8px 12px; - margin-top: 0; -} -.nav-facet-tertiary .nav li.active { - position: relative; -} -.nav-facet-tertiary .nav li.active > a:hover:after, -.nav-facet-tertiary .nav li.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - width: 17px; - height: 17px; - background-position: 0px -16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-simple > .nav-btn { - padding-left: 0; - padding-right: 0; - text-align: center; -} -.nav-simple > .nav-btn .btn { - display: inline-block; -} -.js .js-hide { - display: none; -} -.js .js-hide.active { - display: block; -} -.btn, -label { - font-weight: bold; -} -.btn-rounded { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - padding-left: 15px; - padding-right: 15px; -} -label { - cursor: pointer; - font-size: 14px; -} -label:after { - content: ":"; -} -label.radio:after, -label.checkbox:after { - content: ""; -} -input[type=radio], -input[type=checkbox] { - position: relative; - top: 7px; - padding: 0; - margin: 0; -} -input[type=radio].checkbox-onown, -input[type=checkbox].checkbox-onown { - top: 0; -} -select { - padding: 4px; -} -textarea { - max-width: 100%; -} -.control-group .btn { - position: relative; - top: -2px; -} -.control-full input, -.control-full select, -.control-full textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - height: auto; - width: 100%; -} -.control-medium input, -.control-medium select, -.control-medium textarea { - width: 320px; -} -@media (max-width: 768px) { - .control-medium input, - .control-medium select, - .control-medium textarea { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-large input, -.control-large .control-label { - font-size: 17.5px; - line-height: 30px; -} -.control-large input { - height: 41px; -} -.control-required { - color: #c6898b; -} -.form-actions .control-required-message { - float: left; - margin-left: 20px; - margin-bottom: 0; - line-height: 30px; -} -.form-actions .control-required-message:first-child { - margin-left: 0; -} -.form-actions { - background: none; - margin-left: -25px; - margin-right: -25px; - margin-bottom: 0; - padding-bottom: 0; -} -@media (min-width: 768px) { - .form-actions { - text-align: right; - } -} -.form-actions .action-info { - line-height: 2; - text-align: left; - color: #707070; - margin: 0; -} -@media (min-width: 768px) { - .form-actions .action-info { - float: left; - width: 50%; - } -} -.form-actions .action-info.small { - font-size: 11px; - line-height: 1.2; -} -@media (max-width: 768px) { - .form-actions .btn { - margin-top: 5px; - } -} -.form-horizontal .control-label { - width: 120px; -} -@media (min-width: 768px) { - .form-horizontal .controls { - margin-left: 130px; - } -} -.form-horizontal .info-block { - position: relative; - display: block; - font-size: 11px; - color: #aaa; - line-height: 1.3; - margin-top: 6px; -} -.form-horizontal .info-help { - padding: 6px 0; -} -.form-horizontal .info-help:before { - display: none; -} -.form-horizontal .info-help-tight { - margin-top: -10px; -} -@media (min-width: 980px) { - .form-horizontal .info-block { - padding: 6px 0 6px 0; - } - .form-horizontal .info-inline { - float: right; - width: 265px; - margin-top: 0; - padding-bottom: 0; - } -} -.form-horizontal .control-medium .info-block.info-inline { - width: 165px; -} -.form-horizontal .info-block:before { - font-size: 2.2em; - position: absolute; - left: 0; - top: 2px; -} -.form-horizontal .info-inline:before { - top: 8px; -} -.info-block .icon-large, -.info-inline .icon-large { - float: left; - font-size: 22px; - margin-right: 15px; -} -.form-horizontal .info-block a { - color: #aaa; - text-decoration: underline; -} -.form-horizontal .form-actions { - padding-left: 25px; - padding-right: 25px; -} -.form-inline input { - padding-bottom: 9px; -} -.form-inline select { - margin-top: 0; -} -.form-inline .btn { - margin-left: 5px; -} -.form-narrow label { - margin-bottom: 0; -} -.form-narrow select { - width: 100%; -} -.form-narrow .form-actions { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px 0; -} -.form-select label { - margin-right: 5px; -} -.simple-input label, -.simple-input button { - display: none; -} -.simple-input .field { - position: relative; -} -.simple-input .field-bordered { - border-bottom: 1px dotted #ddd; -} -.simple-input .field input { - width: 100%; - height: auto; - margin: 0 -7px; - padding: 7px 5px; -} -.simple-input .field .btn-search { - position: absolute; - display: block; - height: 17px; - width: 17px; - padding: 0; - top: 50%; - right: 0; - margin-top: -10px; - background-color: transparent; - border: none; - color: #999; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.simple-input .field .btn-search:hover { - color: #000; -} -.editor textarea { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - border-bottom: none; -} -.editor .editor-info-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - float: none; - padding: 4px 10px; - background: #ebebeb; - width: auto; - border: 1px solid #ccc; - border-top: none; - font-size: 11px; - color: #282828; -} -.editor .editor-info-block a { - color: #810606; - text-decoration: none; -} -@media (max-width: 768px) { - [data-module="custom-fields"] .input-prepend .add-on { - display: block; - } -} -@media (max-width: 480px) { - [data-module="custom-fields"] .input-prepend { - width: 100%; - } - [data-module="custom-fields"] .control-custom input { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-custom { - font-size: 0; -} -.control-custom label { - margin-bottom: 0; -} -.control-custom input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - width: 140px; -} -.control-custom input:last-of-type { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.control-custom .checkbox { - display: inline-block; - margin-left: 5px; -} -.control-custom .checkbox input { - width: auto; -} -.control-custom.disabled label, -.control-custom.disabled input { - color: #aaa; - text-decoration: line-through; - text-shadow: none; -} -.control-custom.disabled input { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - background-color: #f3f3f3; -} -.control-custom.disabled .checkbox { - color: #444; - text-decoration: none; -} -.control-custom .checkbox.btn { - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - position: relative; - top: 0; - left: 5px; - height: 1px; - width: 9px; - padding: 3px 8px; - line-height: 18px; -} -.control-custom .checkbox.btn span { - display: none; - width: 30px; -} -.control-custom .checkbox.btn:before { - position: relative; - top: 1px; - left: -1px; - color: #fff; -} -.control-custom .checkbox.btn input { - display: none; -} -.control-custom.disabled .checkbox.btn { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #9e0707; - background-image: -moz-linear-gradient(top, #b20808, #810606); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b20808), to(#810606)); - background-image: -webkit-linear-gradient(top, #b20808, #810606); - background-image: -o-linear-gradient(top, #b20808, #810606); - background-image: linear-gradient(to bottom, #b20808, #810606); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb20808', endColorstr='#ff810606', GradientType=0); - border-color: #810606 #810606 #380303; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #810606; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.control-custom.disabled .checkbox.btn:hover, -.control-custom.disabled .checkbox.btn:focus, -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active, -.control-custom.disabled .checkbox.btn.disabled, -.control-custom.disabled .checkbox.btn[disabled] { - color: #fff; - background-color: #810606; - *background-color: #690505; -} -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active { - background-color: #500404 \9; -} -.control-custom.disabled .checkbox.btn .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.alert-danger a, -.alert-error a { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea, -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - border-color: #c6898b; -} -.error-inline { - color: #b55457; -} -.error-block, -.error-inline { - font-size: 12px; -} -.error-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - padding: 6px 8px 3px; - background: #c6898b; - margin: -3px 0 0; - color: #fff; - width: 208px; -} -.control-medium .error-block { - width: 318px; -} -.control-full .error-block { - width: auto; -} -.control-group.error .input-prepend .error-block, -.control-custom.error .error-block { - width: auto; -} -.control-custom.error .error-block { - width: 401px; -} -.control-select.error .error-block { - width: 196px; -} -.stages { - margin: 0; - list-style: none; - *zoom: 1; - color: #aeaeae; - counter-reset: stage; - margin: -20px -25px 20px; - overflow: hidden; -} -.stages:before, -.stages:after { - display: table; - content: ""; - line-height: 0; -} -.stages:after { - clear: both; -} -.stages li { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - line-height: 27px; - counter-increment: stage; - width: 50%; - background-color: #EDEDED; - float: left; - padding: 10px 20px; - position: relative; - z-index: 0; -} -.stages li:before { - -webkit-border-radius: 14px; - -moz-border-radius: 14px; - border-radius: 14px; - content: counter(stage); - display: inline-block; - width: 27px; - height: 27px; - margin-right: 5px; - font-weight: bold; - text-align: center; - color: #fff; - background-color: #aeaeae; - z-index: 1; -} -.stages li:after { - left: 0; - border: solid rgba(237, 237, 237, 0); - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-top-color: #EDEDED; - border-bottom-color: #EDEDED; - border-width: 29px; - top: 50%; - margin-top: -29px; - margin-left: -30px; -} -.stages li.last { - position: relative; - right: -1px; -} -.stages li.last, -.stages li.last .highlight { - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.stages li.first:after { - content: none; - border: none; -} -.stages li.active:after { - border-color: rgba(140, 198, 138, 0); - border-top-color: #8cc68a; - border-bottom-color: #8cc68a; -} -.stages li.complete:after { - border-color: rgba(197, 226, 196, 0); - border-top-color: #c5e2c4; - border-bottom-color: #c5e2c4; -} -.stages.stage-3 li.complete:first-child:after { - content: none; -} -.stages li.active, -.stages li.complete { - background: none; -} -.stages li.active:before { - color: #8cc68a; - background: #fff; -} -.stages li.complete:before { - color: #c5e2c4; - background: #eef6ed; -} -.stages li .highlight { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - padding: 10px 52px; - border: none; - text-align: left; - text-decoration: none; - line-height: 27px; - z-index: -1; -} -@media (max-width: 768px) { - .stages li .highlight { - text-indent: -9999px; - } -} -.stages li.active .highlight { - color: #fff; - background: #8cc68a; -} -.stages li.complete .highlight { - color: #eef6ed; - background: #c5e2c4; -} -.alert > :last-child { - margin-bottom: 0; -} -.slug-preview { - font-size: 14px; - line-height: 1.5; - margin-top: 5px; - margin-left: 10px; -} -.slug-preview-value { - background-color: #faedcf; - margin-right: 3px; -} -.resource-upload-field { - position: relative; - overflow: hidden; - display: inline-block; - vertical-align: bottom; -} -.resource-upload-field label { - z-index: 0; -} -.resource-upload-field input { - opacity: 0; - filter: alpha(opacity=0); - position: absolute; - top: 0; - right: 0; - z-index: 1; - margin: 0; - border: solid transparent; - border-width: 100px 0 0 200px; - cursor: pointer; - direction: ltr; - -moz-transform: translate(-300px, 0) scale(4); -} -.resource-upload-field.loading { - display: inline-block; - background: url("../../../base/images/loading-spinner.gif") no-repeat center right; - padding-right: 5px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - font-size: 14px; -} -.select2-container-multi .select2-choices .select2-search-field input { - height: 29px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - padding-left: 10px; -} -.select2-container { - margin-top: 1px; -} -.select2-container-multi { - margin-top: 0; -} -.select2-container-multi .select2-choices .select2-search-choice { - padding: 5px 8px 5px 22px; -} -.select2-container-multi.select2-container .select2-choices { - padding-top: 3px; - padding-bottom: 3px; -} -.select2-search-choice-close, -.select2-container-multi .select2-search-choice-close { - top: 6px; - left: 5px; -} -.select2-container-multi .select2-choices { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; - background-color: #fff; - border: 1px solid #ccc; -} -.select2-container-active .select2-choices, -.select2-container-multi.select2-container-active .select2-choices { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -.select2-container-multi .select2-drop { - margin-top: -2px; -} -.select2-container .select2-results li { - line-height: 18px; - padding-top: 4px; - padding-bottom: 4px; -} -.control-full .select2-container { - max-width: 100%; -} -.control-group.error .select2-container input:focus, -.control-group.error .select2-container select:focus, -.control-group.error .select2-container textarea:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.js .image-upload #field-image-url { - padding-right: 90px; -} -.js .image-upload #field-image-upload { - cursor: pointer; - position: absolute; - z-index: 1; - opacity: 0; - filter: alpha(opacity=0); -} -.js .image-upload .controls { - position: relative; -} -.js .image-upload .btn { - position: relative; - top: 0; - margin-right: 10px; -} -.js .image-upload .btn.hover { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.js .image-upload .btn-remove-url { - position: absolute; - margin-right: 0; - top: 4px; - right: 5px; - padding: 0 12px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.js .image-upload .btn-remove-url .icon-remove { - margin-right: 0; -} -.add-member-form .control-label { - width: 100%; - text-align: left; -} -.add-member-form .controls { - margin-left: auto; -} -.add-member-or { - float: left; - margin-top: 75px; - width: 7%; - text-align: center; - text-transform: uppercase; - color: #999; - font-weight: bold; -} -.add-member-form .row-fluid .control-group { - float: left; - width: 45%; -} -.add-member-form .row-fluid .select2-container, -.add-member-form .row-fluid input { - width: 100% !important; -} -#recaptcha_table { - table-layout: inherit; - line-height: 1; -} -.dataset-item { - border-bottom: 1px dotted #ddd; - padding-bottom: 20px; - margin-bottom: 20px; -} -@media (max-width: 768px) { - .dataset-item { - word-wrap: break-word; - } -} -.dataset-item:last-of-type { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} -.dataset-heading { - font-size: 16px; - margin-top: 0; - margin-bottom: 8px; - line-height: 1.3; -} -.dataset-heading a { - color: #333; -} -.dataset-heading .label { - position: relative; - top: -1px; -} -.dataset-private { - margin-right: 10px; - text-transform: uppercase; -} -.dataset-private .icon-lock { - width: 9px; -} -.dataset-private.pull-right { - margin-right: 0; -} -.dataset-resources { - margin-top: 8px; -} -.dataset-resources li { - display: inline; -} -.dataset-resources li a { - background-color: #aaa; -} -.dataset-heading .popular { - top: 0; -} -.resource-list { - margin: 0; - list-style: none; - margin: -10px -10px 10px -10px; -} -.resource-item { - position: relative; - padding: 10px 10px 10px 60px; - margin-bottom: 0px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.resource-item:hover { - background-color: #eee; -} -.resource-item .heading { - color: #000; - font-size: 14px; - font-weight: bold; -} -.resource-item .format-label { - position: absolute; - top: 10px; - left: 10px; -} -.resource-item .description { - font-size: 12px; - margin-bottom: 0; - min-height: 12px; -} -.resource-item .btn-group { - position: absolute; - top: 14px; - right: 10px; -} -@media (max-width: 768px) { - .resource-item .btn-group { - display: none; - } -} -.resource-list.reordering .resource-item { - border: 1px solid #ddd; - margin-bottom: 10px; - cursor: move; -} -.resource-list.reordering .resource-item .handle { - display: block; - position: absolute; - color: #888; - left: -31px; - top: 50%; - margin-top: -15px; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - border: 1px solid #ddd; - border-width: 1px 0 1px 1px; - background-color: #fff; - -webkit-border-radius: 20px 0 0 20px; - -moz-border-radius: 20px 0 0 20px; - border-radius: 20px 0 0 20px; -} -.resource-list.reordering .resource-item .handle:hover { - text-decoration: none; -} -.resource-list.reordering .resource-item:hover .handle { - background-color: #eee; -} -.resource-list.reordering .resource-item.ui-sortable-helper { - background-color: #eee; - border: 1px solid #810606; -} -.resource-list.reordering .resource-item.ui-sortable-helper .handle { - background-color: #eee; - border-color: #810606; - color: #333; -} -.resource-item .handle { - display: none; -} -.tag-list { - margin: 0; - list-style: none; - padding: 10px 10px 5px 10px; -} -.tag-list li { - display: inline-block; - margin-right: 5px; -} -.tag-list li:last-child { - margin-right: 0; -} -.additional-info td, -.additional-info th { - width: 50%; -} -.label[data-format=html], -.label[data-format*=html] { - background-color: #55a1ce; -} -.label[data-format=json], -.label[data-format*=json] { - background-color: #ef7100; -} -.label[data-format=xml], -.label[data-format*=xml] { - background-color: #ef7100; -} -.label[data-format=text], -.label[data-format*=text] { - background-color: #74cbec; -} -.label[data-format=csv], -.label[data-format*=csv] { - background-color: #dfb100; -} -.label[data-format=xls], -.label[data-format*=xls] { - background-color: #2db55d; -} -.label[data-format=zip], -.label[data-format*=zip] { - background-color: #686868; -} -.label[data-format=api], -.label[data-format*=api] { - background-color: #ec96be; -} -.label[data-format=pdf], -.label[data-format*=pdf] { - background-color: #e0051e; -} -.label[data-format=rdf], -.label[data-format*=rdf], -.label[data-format*=nquad], -.label[data-format*=ntriples], -.label[data-format*=turtle] { - background-color: #0b4498; -} -.view-list { - margin: 0; - list-style: none; -} -.view-list li { - position: relative; - margin-bottom: 10px; -} -.view-list li a { - display: block; - min-height: 50px; - padding: 10px; - border: 1px solid #ddd; - overflow: hidden; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon { - float: left; - width: 50px; - height: 50px; - overflow: hidden; - margin-right: 10px; - color: #444; - background-color: #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon i { - display: block; - text-align: center; - font-size: 28px; - line-height: 50px; -} -.view-list li a h3 { - color: #000; - font-weight: bold; - font-size: 16px; - margin: 0 0 3px 0; -} -.view-list li a p { - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: #444; -} -.view-list li a.active, -.view-list li a:hover { - text-decoration: none; - border-color: #810606; -} -.view-list li a.active .icon, -.view-list li a:hover .icon { - background-color: #810606; - color: #f6f6f6; -} -.view-list li .arrow { - position: absolute; - display: none; - border: 8px solid transparent; - border-top-color: #810606; - left: 50%; - bottom: -15px; - margin-left: -4px; -} -.view-list li.active a { - text-decoration: none; - border-color: #810606; -} -.view-list li.active a .icon { - background-color: #810606; - color: #f6f6f6; -} -.view-list li.active .arrow { - display: block; -} -.view-list.stacked { - overflow-y: hidden; - overflow-x: auto; - height: 100px; - white-space: nowrap; -} -.view-list.stacked li { - display: inline-block; - width: 250px; - margin-right: 10px; -} -.view-list.stacked li:last-child { - margin-right: 0; -} -.view-list.stacked::-webkit-scrollbar { - width: 7px; - height: 7px; -} -.view-list.stacked::-webkit-scrollbar-track { - border-radius: 10px; - background-color: #f6f6f6; -} -.view-list.stacked::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #c3c3c3; -} -.view-list.stacked::-webkit-scrollbar-thumb:hover { - background-color: #810606; -} -.resource-view { - margin-top: 20px; -} -.search-form { - margin-bottom: 20px; - padding-bottom: 25px; - border-bottom: 1px dotted #ddd; -} -.search-form .search-input { - position: relative; - margin-bottom: 20px; -} -.search-form .search-input input { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - width: 100%; - height: auto; -} -.search-form .search-input button { - cursor: pointer; - display: block; - position: absolute; - top: 50%; - margin-top: 1px; - right: 10px; - height: 20px; - padding: 0; - border: none; - background: transparent; -} -.search-form .search-input button span { - display: none; -} -.search-form .search-input button i { - color: #ccc; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.search-form .search-input button:hover i { - color: #000; -} -.search-form .search-input.search-giant input { - font-size: 16px; - padding: 15px; -} -.search-form .search-input.search-giant button { - margin-top: -4px; - right: 15px; - height: 30px; -} -.search-form .search-input.search-giant button i { - font-size: 28px; - width: 28px; -} -.search-form .control-order-by label, -.search-form .control-order-by select { - display: inline; -} -.search-form .control-order-by select { - width: 160px; - margin: 0; -} -.search-form h2 { - font-size: 24px; - line-height: 1.3; - color: #000; - margin-bottom: 0; - margin-top: 20px; -} -.search-form .filter-list { - color: #444; - line-height: 32px; - margin: 10px 0 0 0; -} -.search-form .filter-list .pill { - line-height: 21px; -} -.search-form .filter-list .extra { - margin-top: 10px; - font-size: 18px; - font-weight: normal; - color: #000; -} -.search-form.no-bottom-border { - border-bottom-width: 0; - margin-bottom: 0; -} -.tertiary .control-order-by { - float: none; - margin: 0; -} -.tertiary .control-order-by label { - display: block; - margin-bottom: 5px; - font-weight: normal; - font-size: 12px; -} -.tertiary .control-order-by select { - display: block; - font-size: 12px; - width: 100%; -} -.tertiary .search-input { - margin-bottom: 10px; -} -@media (min-width: 980px) { - .search-form .control-order-by { - float: right; - margin-left: 15px; - } - .tertiary .search-form .control-order-by { - float: none; - margin: 0; - } -} -.group .media-vertical .image { - margin: 0 -5px 5px; -} -.group-list:nth-child(odd) { - clear: left; -} -.group-list .module-heading { - padding-top: 15px; - padding-bottom: 15px; -} -.group-list .dataset-content { - min-height: 54px; -} -.group-list .module-heading h3 { - margin-bottom: 2px; -} -.group-list .module-heading h3 a { - color: #333; -} -.group-list .module-heading .media-image { - overflow: hidden; - max-height: 60px; -} -.group-list .module-heading .media-image img { - max-width: 85px; -} -.toolbar { - *zoom: 1; - position: relative; - margin-bottom: 10px; - padding: 5px 0; -} -.toolbar:before, -.toolbar:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar:after { - clear: both; -} -.page_primary_action { - margin-bottom: 20px; -} -.toolbar .breadcrumb { - *zoom: 1; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - position: relative; - float: left; - margin: 0; - padding: 0; - border: none; - background: none; - font-size: 20px; - line-height: 1.3; -} -.toolbar .breadcrumb:before, -.toolbar .breadcrumb:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar .breadcrumb:after { - clear: both; -} -.toolbar .breadcrumb li:after { - content: " / "; -} -.toolbar .breadcrumb li.active:after { - content: ""; -} -.toolbar .breadcrumb li:last-of-type:after { - content: ""; -} -.toolbar .home a { - text-decoration: none; -} -.toolbar .home span { - display: none; -} -.toolbar .breadcrumb a { - color: #505050; -} -@media (max-width: 767px) { - .toolbar .breadcrumb { - color: #fff; - text-shadow: none; - } - .toolbar .breadcrumb .home { - display: none; - } - .toolbar .breadcrumb a { - color: #fff; - text-shadow: none; - } -} -.toolbar .breadcrumb .active a, -.toolbar .breadcrumb a.active { - font-weight: bold; -} -.actions { - margin: 0; - list-style: none; - position: absolute; - top: 10px; - right: 10px; - z-index: 1; -} -.actions li { - display: inline-block; - margin-right: 5px; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.actions li:last-of-type { - margin-right: 0; -} -.hide-heading { - display: none; -} -.page-header { - *zoom: 1; - border-bottom: 1px solid #ddd; - background-color: #f6f6f6; - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.page-header:before, -.page-header:after { - display: table; - content: ""; - line-height: 0; -} -.page-header:after { - clear: both; -} -.page-header .nav-tabs { - float: left; - margin-bottom: -1px; -} -.page-header .nav-tabs li.active a, -.page-header .nav-tabs a:hover { - background-color: #fff; -} -.page-header .content_action { - float: right; - margin-top: -5px; - margin-right: -7px; -} -.no-nav .page-header { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.nav-tabs-plain { - padding: 0 25px; -} -.nav-tabs-plain > .active > a, -.nav-tabs-plain > .active > a:hover { - background-color: #fff; -} -@media (min-width: 768px) { - .span9 .page-header { - margin-left: -17px; - } -} -@media (max-width: 768px) { - .page-header .nav-tabs { - margin: 5px 10px 10px -5px; - border: none; - } - .page-header .nav-tabs > li { - float: none; - } - .page-header .nav-tabs > li a { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .page-header .nav-tabs > .active > a, - .page-header .nav-tabs > .active > a:hover, - .page-header .nav-tabs > .active > a:focus { - border-bottom-color: #dddddd; - } -} -h1 { - font-size: 28px; -} -h2 { - font-size: 21px; -} -h3 { - font-size: 18px; -} -h4 { - font-size: 14px; -} -h1, -h2, -h3, -h4 { - line-height: 1.5; -} -h1 small, -h2 small, -h3 small, -h4 small { - font-size: 14px; -} -.prose h1, -.prose heading-1 h2, -.prose heading-2 { - margin-bottom: 15px; -} -.prose h3, -.prose heading-3 { - margin-bottom: 10px; -} -.table-chunky td, -.table-chunky th { - padding: 12px 15px; - font-size: 12px; -} -.table-chunky thead th, -.table-chunky thead td { - color: #fff; - background-color: #aaa; - padding-top: 10px; - padding-bottom: 10px; -} -.table-striped tbody tr:nth-child(odd) td, -.table-striped tbody tr:nth-child(odd) th { - background-color: transparent; -} -.table-striped tbody tr:nth-child(even) td, -.table-striped tbody tr:nth-child(even) th { - background-color: #f2f2f2; -} -.table-chunky.table-bordered { - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:first-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:first-child { - -webkit-border-top-left-radius: 2px; - -moz-border-radius-topleft: 2px; - border-top-left-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:last-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:last-child { - -webkit-border-top-right-radius: 2px; - -moz-border-radius-topright: 2px; - border-top-right-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:first-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:first-child { - -webkit-border-radius: 0 0 0 2px; - -moz-border-radius: 0 0 0 2px; - border-radius: 0 0 0 2px; - -webkit-border-bottom-left-radius: 2px; - -moz-border-radius-bottomleft: 2px; - border-bottom-left-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:last-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 2px; - -moz-border-radius-bottomright: 2px; - border-bottom-right-radius: 2px; -} -.ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.ckan-icon { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; -} -.ckan-icon-fb { - width: 16px; - height: 16px; - background-position: 0px 0; -} -.ckan-icon-gplus { - width: 16px; - height: 16px; - background-position: -16px 0; -} -.ckan-icon-twitter { - width: 16px; - height: 16px; - background-position: -32px 0; -} -.ckan-icon-email { - width: 16px; - height: 16px; - background-position: -48px 0; -} -.ckan-icon-share { - width: 16px; - height: 16px; - background-position: -64px 0; -} -.ckan-icon-feed { - width: 16px; - height: 16px; - background-position: -80px 0; -} -.ckan-icon-calendar { - width: 16px; - height: 16px; - background-position: -96px 0; -} -.ckan-icon-file { - width: 16px; - height: 16px; - background-position: -112px 0; -} -.ckan-icon-lock { - width: 16px; - height: 16px; - background-position: -128px 0; -} -.ckan-icon-link-file { - width: 16px; - height: 16px; - background-position: -144px 0; -} -.ckan-icon-link-plugin { - width: 16px; - height: 16px; - background-position: -160px 0; -} -.ckan-icon-upload-file { - width: 16px; - height: 16px; - background-position: -176px 0; -} -.ckan-icon-callout { - width: 16px; - height: 16px; - background-position: -192px 0; -} -.ckan-icon-circle-cross { - width: 17px; - height: 17px; - background-position: 0px -16px; -} -.ckan-icon-circle-add { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.ckan-icon-flame { - width: 17px; - height: 17px; - background-position: -34px -16px; -} -.ckan-icon-search { - width: 17px; - height: 17px; - background-position: -51px -16px; -} -.ckan-icon-large-lock { - width: 20px; - height: 20px; - background-position: 0px -33px; -} -.ckan-icon-photo { - width: 20px; - height: 20px; - background-position: -20px -33px; -} -.ckan-icon-add { - width: 20px; - height: 20px; - background-position: -40px -33px; -} -.ckan-icon-home { - width: 20px; - height: 20px; - background-position: -60px -33px; -} -.ckan-icon-rewind { - width: 20px; - height: 20px; - background-position: -80px -33px; -} -.ckan-icon-tools { - width: 20px; - height: 20px; - background-position: -100px -33px; -} -.ckan-icon-flag { - width: 20px; - height: 20px; - background-position: -120px -33px; -} -.ckan-icon-clipboard { - width: 20px; - height: 20px; - background-position: -140px -33px; -} -.ckan-icon-share { - width: 20px; - height: 20px; - background-position: -160px -33px; -} -.ckan-icon-info { - width: 20px; - height: 20px; - background-position: -180px -33px; -} -.ckan-icon-download { - width: 20px; - height: 20px; - background-position: -200px -33px; -} -.ckan-icon-star { - width: 20px; - height: 20px; - background-position: -220px -33px; -} -.ckan-icon-info-flat { - width: 20px; - height: 20px; - background-position: -240px -33px; -} -.ckan-icon-tag { - width: 20px; - height: 20px; - background-position: -260px -33px; -} -.ckan-icon-plus { - width: 20px; - height: 20px; - background-position: -280px -33px; - width: 16px; -} -.ckan-icon-head { - width: 20px; - height: 20px; - background-position: -300px -33px; -} -.ckan-icon-arrow-e { - width: 20px; - height: 20px; - background-position: -320px -33px; - width: 16px; -} -.ckan-icon-bookmark { - width: 25px; - height: 25px; - background-position: 0px -53px; -} -.format-label { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - text-indent: -900em; - background: url("../../../base/images/sprite-resource-icons.png") no-repeat 0 0; -} -.format-label { - width: 32px; - height: 35px; - background-position: 0px -62px; -} -.format-label[data-format=rdf], -.format-label[data-format*=rdf] { - width: 32px; - height: 35px; - background-position: -32px -62px; -} -.format-label[data-format=pdf], -.format-label[data-format*=pdf] { - width: 32px; - height: 35px; - background-position: -64px -62px; -} -.format-label[data-format=api], -.format-label[data-format*=api] { - width: 32px; - height: 35px; - background-position: -96px -62px; -} -.format-label[data-format=zip], -.format-label[data-format*=zip] { - width: 32px; - height: 35px; - background-position: -128px -62px; -} -.format-label[data-format=xls], -.format-label[data-format*=xls] { - width: 32px; - height: 35px; - background-position: -160px -62px; -} -.format-label[data-format=csv], -.format-label[data-format*=csv] { - width: 32px; - height: 35px; - background-position: -192px -62px; -} -.format-label[data-format=txt], -.format-label[data-format*=txt] { - width: 32px; - height: 35px; - background-position: -224px -62px; -} -.format-label[data-format=xml], -.format-label[data-format*=xml] { - width: 32px; - height: 35px; - background-position: -256px -62px; -} -.format-label[data-format=json], -.format-label[data-format*=json] { - width: 32px; - height: 35px; - background-position: -288px -62px; -} -.format-label[data-format=html], -.format-label[data-format*=html] { - width: 32px; - height: 35px; - background-position: -320px -62px; -} -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - text-align: right; - font-size: 14px; - line-height: 1; - width: 14px; -} -.btn [class^="icon-"], -.nav [class^="icon-"], -.module-heading [class^="icon-"], -.dropdown [class^="icon-"], -.btn [class*=" icon-"], -.nav [class*=" icon-"], -.module-heading [class*=" icon-"], -.dropdown [class*=" icon-"] { - margin-right: 4px; -} -.info-block [class^="icon-"], -.info-block [class*=" icon-"] { - float: left; - font-size: 28px; - width: 28px; - margin-right: 5px; - margin-top: 2px; -} -.breadcrumb .home .icon-home { - font-size: 24px; - width: 24px; - vertical-align: -1px; -} -.info-block-small [class^="icon-"], -.info-block-small [class*=" icon-"] { - font-size: 14px; - width: 14px; - margin-top: 1px; -} -.nav-tabs .fa:last-child, -.module-heading .fa:last-child, -.btn .fa:last-child { - margin-right: 3px; -} -.wrapper { - *zoom: 1; - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - position: relative; - background-color: #fff; - margin-bottom: 20px; - margin-left: 0; -} -.wrapper:before, -.wrapper:after { - display: table; - content: ""; - line-height: 0; -} -.wrapper:after { - clear: both; -} -@media (min-width: 768px) { - .wrapper { - background-image: url("../../../base/images/nav.png"); - background-repeat: repeat-y; - background-position: -54px 0px; - } -} -@media (min-width: 980px) { - .wrapper { - background-position: 0px 0px; - } -} -.wrapper.no-nav { - background-image: none; -} -[role=main], -.main { - position: relative; - padding-bottom: 20px; -} -@media (min-width: 768px) { - [role=main], - .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); - } -} -[role=main] { - min-height: 350px; -} -.main:after, -[role=main]:after { - bottom: 0; - border-top-width: 1px; -} -[role=main] .primary { - float: right; - margin-left: 0; -} -[role=main] .secondary { - margin-left: 0; -} -/* Filters modal */ -.no-text .text { - display: none; -} -.js body.filters-modal { - overflow: hidden; -} -.show-filters.btn, -.hide-filters { - display: none; -} -@media (max-width: 768px) { - .wrapper { - margin: 0 -20px; - border-width: 0; - -webkit-box-shadow: 0; - -moz-box-shadow: 0; - box-shadow: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - } - .js [role=main] .secondary .filters { - display: none; - position: fixed; - overflow: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 1; - padding: 10px; - background-color: #000000; - background-color: rgba(0, 0, 0, 0.5); - } - .js body.filters-modal .secondary .filters { - display: block; - } - .js [role=main] .secondary .filters > div { - background-color: #fff; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - overflow: hidden; - } - .js [role=main] .secondary .filters > div .module-footer { - display: none; - } - .js body.filters-modal .secondary .filters .hide-filters { - display: inline-block; - position: absolute; - top: 14px; - right: 17px; - opacity: 0.6; - } - .js body.filters-modal .secondary .filters .hide-filters i { - font-size: 18px; - } - .js .show-filters.btn { - display: inline-block; - } -} -.primary > :last-child, -.secondary > :last-child { - margin-bottom: 0; -} -.primary .primary { - float: left; - width: 467px; - margin-left: 0; - margin-bottom: 20px; -} -.primary .primary h1:first-child, -.primary .primary h2:first-child, -.primary .primary h3:first-child, -.primary .primary h4:first-child { - margin-top: 0; -} -.primary .tertiary { - float: left; - width: 180px; - margin-left: 18px; - margin-bottom: 20px; -} -@media (min-width: 768px) { - .hero { - background: url("../../../base/images/background-tile.png"); - } -} -.hero:after { - background-color: rgba(0, 0, 0, 0.09); - background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(0, 0, 0, 0))); - background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-repeat: repeat-x; - background-color: #f6f6f6; - border-bottom: 1px solid #d0d0d0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - -webkit-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - -moz-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); -} -.hero:after .back:hover { - text-decoration: none; -} -.hero:after .back:hover span { - text-decoration: underline; -} -.context-info .module-content { - padding: 15px; -} -.context-info .image { - margin-bottom: 10px; -} -.context-info .image img, -.context-info .image a { - display: block; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.context-info p { - overflow: auto; -} -.context-info code { - display: block; - font-weight: normal; - padding: 0; - margin: 0; - overflow: auto; -} -.context-info h1.heading { - margin: 0 0 5px 0; - font-size: 18px; - line-height: 1.3; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.context-info .info { - margin-top: 15px; - padding-top: 10px; - border-top: 1px dotted #DDD; - word-break: break-word; -} -.context-info .info dl dd { - margin-top: 3px; - margin-left: 0; -} -.context-info .nums { - *zoom: 1; - margin-top: 15px; - padding-top: 10px; - padding-bottom: 0; - border-top: 1px dotted #DDD; -} -.context-info .nums:before, -.context-info .nums:after { - display: table; - content: ""; - line-height: 0; -} -.context-info .nums:after { - clear: both; -} -.context-info .nums dl { - float: left; - width: 50%; - margin: 5px 0 0 0; - color: #444; -} -.context-info .nums dl dt { - display: block; - font-size: 13px; - font-weight: 300; -} -.context-info .nums dl dd { - display: block; - font-size: 30px; - font-weight: 700; - line-height: 36px; - margin-left: 0; -} -.context-info .nums dl dd .smallest { - font-size: 13px; -} -.context-info .nums dl dd .smaller { - font-size: 16px; -} -.context-info .nums dl dd .small { - font-size: 21px; -} -.context-info .follow_button { - margin-top: 15px; -} -.context-info.editing .module-content { - margin-top: 0; -} -.flash-messages .alert { - -webkit-box-shadow: 0 0 0 1px white; - -moz-box-shadow: 0 0 0 1px white; - box-shadow: 0 0 0 1px white; -} -.homepage .row { - position: relative; -} -.homepage .module-search { - padding: 5px; - margin: 20px 0 0 0; - color: #fff; - background: #fff; -} -.homepage .module-search .search-giant { - margin-bottom: 10px; -} -.homepage .module-search .search-giant input { - border-color: #003f52; -} -.homepage .module-search .module-content { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - background-color: #810606; - border-bottom: none; -} -.homepage .module-search .module-content .heading { - margin-top: 0; - margin-bottom: 7px; - font-size: 24px; - line-height: 40px; -} -.homepage .module-search .tags { - *zoom: 1; - padding: 5px 10px 10px 10px; - background-color: #500404; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.homepage .module-search .tags:before, -.homepage .module-search .tags:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .module-search .tags:after { - clear: both; -} -.homepage .module-search .tags h3, -.homepage .module-search .tags .tag { - display: block; - float: left; - margin: 5px 10px 0 0; -} -.homepage .module-search .tags h3 { - font-size: 14px; - line-height: 20px; - padding: 2px 8px; -} -.homepage .group-list { - margin: 0; -} -.homepage .box .inner { - padding: 20px 25px; -} -.homepage .stats h3 { - margin: 0 0 10px 0; -} -.homepage .stats ul { - margin: 0; - list-style: none; - *zoom: 1; -} -.homepage .stats ul:before, -.homepage .stats ul:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .stats ul:after { - clear: both; -} -.homepage .stats ul li { - float: left; - width: 25%; - font-weight: 300; -} -.homepage .stats ul li a { - display: block; -} -.homepage .stats ul li a b { - display: block; - font-size: 35px; - line-height: 1.5; -} -.homepage .stats ul li a:hover { - text-decoration: none; -} -.homepage.layout-2 .stats { - margin-top: 20px; -} -@media (min-width: 768px) { - .homepage [role=main] { - padding: 20px 0; - } - .homepage.layout-1 .row1 .col2 { - position: absolute; - bottom: 0; - right: 0; - } - .homepage.layout-1 .row1 .col2 .module-search { - bottom: 0; - left: 0; - right: 0; - } -} -.account-masthead { - *zoom: 1; - min-height: 30px; - color: #fff; - background: #500404 url("../../../base/images/bg.png"); -} -.account-masthead:before, -.account-masthead:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead:after { - clear: both; -} -.account-masthead .account { - float: right; -} -.account-masthead .account ul { - *zoom: 1; -} -.account-masthead .account ul:before, -.account-masthead .account ul:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead .account ul:after { - clear: both; -} -.account-masthead .account ul li { - display: block; - float: left; - border-left: 1px solid #380303; -} -.account-masthead .account ul li a { - display: block; - color: #e0c1c1; - font-size: 13px; - font-weight: bold; - padding: 0 10px; - line-height: 31px; -} -.account-masthead .account ul li a span.username, -.account-masthead .account ul li a span.text { - margin: 0 2px 0 4px; -} -.account-masthead .account ul li a span.text { - position: absolute; - top: -9999px; - left: -9999px; -} -.account-masthead .account ul li a:hover { - color: #ecdada; - background-color: #380303; - text-decoration: none; -} -.account-masthead .account ul li a.sub { - font-weight: 300; -} -.account-masthead .account ul li a .btn { - vertical-align: 1px; - margin-left: 3px; -} -.account-masthead .account .notifications a span.badge { - font-size: 12px; - margin-left: 3px; - padding: 1px 6px; - background-color: #380303; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - text-shadow: none; - color: #e0c1c1; -} -.account-masthead .account .notifications a:hover span { - color: #fff; - background-color: #200101; -} -.account-masthead .account .notifications.notifications-important a span.badge { - color: #fff; - background-color: #C9403A; -} -.account-masthead .account.authed .image { - padding: 0 6px; -} -.account-masthead .account.authed .image img { - vertical-align: -6px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.masthead { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #810606 url("../../../base/images/bg.png"); -} -.masthead:before, -.masthead:after { - display: table; - content: ""; - line-height: 0; -} -.masthead:after { - clear: both; -} -.masthead .container { - position: relative; -} -.masthead a { - color: #fff; -} -.masthead hgroup h1, -.masthead hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.masthead hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.masthead hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.masthead .nav-collapse { - padding-top: 10px; -} -.masthead .section { - float: left; -} -.masthead input[type="text"] { - border-color: #690505; -} -.masthead .navigation { - margin-right: 20px; -} -.masthead .navigation .nav-pills { - margin-bottom: 0; -} -.masthead .navigation .nav-pills li a:hover, -.masthead .navigation .nav-pills li.active a { - background-color: #500404; -} -.masthead .nav > li > a, -.masthead .nav > li > a:focus, -.masthead .nav > li > a:hover, -.masthead .nav > .active > a, -.masthead .nav > .active > a:hover, -.masthead .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.masthead .site-search { - margin: 2px 8px 2px 0; -} -.masthead .site-search input { - width: 200px; - padding: 4px 10px; -} -.masthead .btn-navbar, -.masthead .btn-navbar:hover, -.masthead .btn-navbar:focus, -.masthead .btn-navbar:active, -.masthead .btn-navbar.active, -.masthead .btn-navbar.disabled, -.masthead .btn-navbar[disabled] { - background-color: #500404; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.masthead .btn-navbar .icon-bar, -.masthead .btn-navbar:hover .icon-bar, -.masthead .btn-navbar:focus .icon-bar, -.masthead .btn-navbar:active .icon-bar, -.masthead .btn-navbar.active .icon-bar, -.masthead .btn-navbar.disabled .icon-bar, -.masthead .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.masthead .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -@media (min-width: 980px) { - .masthead .nav-collapse { - float: right; - } -} -@media (max-width: 767px) { - .account-masthead { - margin-left: -20px; - margin-right: -20px; - padding-left: 20px; - padding-right: 20px; - } - .masthead .section { - float: none; - } - .masthead .section .nav-collapse { - margin-bottom: 25px; - } -} -@media (max-width: 979px) { - .masthead .container { - padding-left: 20px; - padding-right: 20px; - } - .masthead .site-search { - display: none; - } -} -.site-footer { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #810606 url("../../../base/images/bg.png"); - padding: 20px 0; -} -.site-footer:before, -.site-footer:after { - display: table; - content: ""; - line-height: 0; -} -.site-footer:after { - clear: both; -} -.site-footer .container { - position: relative; -} -.site-footer a { - color: #fff; -} -.site-footer hgroup h1, -.site-footer hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.site-footer hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.site-footer hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.site-footer .nav-collapse { - padding-top: 10px; -} -.site-footer .section { - float: left; -} -.site-footer input[type="text"] { - border-color: #690505; -} -.site-footer .navigation { - margin-right: 20px; -} -.site-footer .navigation .nav-pills { - margin-bottom: 0; -} -.site-footer .navigation .nav-pills li a:hover, -.site-footer .navigation .nav-pills li.active a { - background-color: #500404; -} -.site-footer .nav > li > a, -.site-footer .nav > li > a:focus, -.site-footer .nav > li > a:hover, -.site-footer .nav > .active > a, -.site-footer .nav > .active > a:hover, -.site-footer .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.site-footer .site-search { - margin: 2px 8px 2px 0; -} -.site-footer .site-search input { - width: 200px; - padding: 4px 10px; -} -.site-footer .btn-navbar, -.site-footer .btn-navbar:hover, -.site-footer .btn-navbar:focus, -.site-footer .btn-navbar:active, -.site-footer .btn-navbar.active, -.site-footer .btn-navbar.disabled, -.site-footer .btn-navbar[disabled] { - background-color: #500404; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.site-footer .btn-navbar .icon-bar, -.site-footer .btn-navbar:hover .icon-bar, -.site-footer .btn-navbar:focus .icon-bar, -.site-footer .btn-navbar:active .icon-bar, -.site-footer .btn-navbar.active .icon-bar, -.site-footer .btn-navbar.disabled .icon-bar, -.site-footer .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.site-footer .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -.site-footer, -.site-footer label, -.site-footer small { - color: #cd9b9b; -} -.site-footer a { - color: #cd9b9b; -} -.footer-links ul li { - margin-bottom: 5px; -} -.attribution small { - color: #cd9b9b; - font-size: 12px; -} -.attribution .ckan-footer-logo { - display: block; - width: 68px; - height: 21px; - margin-top: 2px; - background: url("../../../base/images/ckan-logo-footer.png") no-repeat top left; - text-indent: -900em; -} -.lang-select { - *zoom: 1; -} -.lang-select:before, -.lang-select:after { - display: table; - content: ""; - line-height: 0; -} -.lang-select:after { - clear: both; -} -.lang-select label, -.lang-select select, -.lang-select .lang-container { - float: left; - margin-top: 0; -} -.lang-dropdown { - color: #000; -} -.lang-dropdown li { - width: auto; -} -.table-selected td { - background-color: #f5f5f5; -} -.table-selected td .edit { - display: block; -} -.table-bulk-edit th input { - top: -5px; -} -.table-bulk-edit .table-actions .btn-group { - float: left; - margin: 0 10px 0 0; -} -.table-bulk-edit .context p { - margin-bottom: 0; -} -.table-header thead th { - background-color: #f6f6f6; -} -.table-edit-hover .edit { - display: none; - float: right; -} -.table-edit-hover tr:hover .edit { - display: block; -} -.js .table-toggle-more .toggle-more { - display: none; -} -.js .table-toggle-more .show-more { - display: inline; -} -.js .table-toggle-more .show-less { - display: none; -} -.js .table-toggle-more .toggle-seperator { - display: table-row; -} -.js .table-toggle-more .toggle-seperator td { - height: 11px; - padding: 0; - background-image: url("../../../base/images/table-seperator.png"); -} -.js .table .toggle-show td { - background: none; - text-align: center; -} -.js .table-toggle-less .show-less { - display: inline; -} -.js .table-toggle-less .show-more { - display: none; -} -.js .table-toggle-less .toggle-seperator { - display: none; -} -.profile .empty, -.profile .dataset-list { - margin-bottom: 20px; -} -.activity { - margin: 10px 0; - padding: 0; - list-style-type: none; - background: transparent url('../../../base/images/dotted.png') 14px 0 repeat-y; -} -.activity .item { - position: relative; - margin: 0 0 15px 0; - padding: 0; - *zoom: 1; -} -.activity .item:before, -.activity .item:after { - display: table; - content: ""; - line-height: 0; -} -.activity .item:after { - clear: both; -} -.activity .item .icon { - display: block; - position: absolute; - top: 0; - left: 0; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - color: #FFFFFF; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - font-weight: normal; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item .gravatar { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.activity .item .actor .gravatar { - position: absolute; - top: 0; - left: 40px; -} -.activity .item p { - font-size: 14px; - line-height: 1.5; - margin: 5px 0 0 80px; -} -.activity .item .date { - color: #999; - font-size: 12px; - white-space: nowrap; -} -.activity .item .new { - display: block; - position: absolute; - overflow: hidden; - top: -3px; - left: -3px; - width: 10px; - height: 10px; - background-color: #A35647; - border: 1px solid #FFF; - text-indent: -1000px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item.no-avatar p { - margin-left: 40px; -} -.activity .load-less { - margin-bottom: 15px; -} -.popover { - width: 300px; -} -.popover .popover-title { - font-weight: bold; - margin-bottom: 0; -} -.popover p.about { - margin: 0 0 10px 0; -} -.popover .popover-close { - float: right; - text-decoration: none; -} -.popover .popover-content { - font-size: 14px; - line-height: 20px; - color: #444; - word-break: break-all; -} -.popover .popover-content dl { - margin: 0; -} -.popover .popover-content dl dd { - margin-left: 0; - margin-bottom: 10px; -} -.activity .item .icon { - background-color: #999999; -} -.activity .item.failure .icon { - background-color: #B95252; -} -.activity .item.success .icon { - background-color: #69A67A; -} -.activity .item.added-tag .icon { - background-color: #6995a6; -} -.activity .item.changed-group .icon { - background-color: #767DCE; -} -.activity .item.changed-package .icon { - background-color: #8c76ce; -} -.activity .item.changed-package_extra .icon { - background-color: #769ace; -} -.activity .item.changed-resource .icon { - background-color: #aa76ce; -} -.activity .item.changed-user .icon { - background-color: #76b8ce; -} -.activity .item.changed-organization .icon { - background-color: #699fa6; -} -.activity .item.deleted-group .icon { - background-color: #B95252; -} -.activity .item.deleted-package .icon { - background-color: #b97452; -} -.activity .item.deleted-package_extra .icon { - background-color: #b95274; -} -.activity .item.deleted-resource .icon { - background-color: #b99752; -} -.activity .item.deleted-organization .icon { - background-color: #b95297; -} -.activity .item.new-group .icon { - background-color: #69A67A; -} -.activity .item.new-package .icon { - background-color: #69a68e; -} -.activity .item.new-package_extra .icon { - background-color: #6ca669; -} -.activity .item.new-resource .icon { - background-color: #81a669; -} -.activity .item.new-user .icon { - background-color: #69a6a3; -} -.activity .item.new-organization .icon { - background-color: #81a669; -} -.activity .item.removed-tag .icon { - background-color: #b95297; -} -.activity .item.deleted-related-item .icon { - background-color: #b9b952; -} -.activity .item.follow-dataset .icon { - background-color: #767DCE; -} -.activity .item.follow-user .icon { - background-color: #8c76ce; -} -.activity .item.new-related-item .icon { - background-color: #95a669; -} -.activity .item.follow-group .icon { - background-color: #8ba669; -} -.dropdown:hover .dropdown-menu { - display: block; -} -.js .dropdown .dropdown-menu, -.js .dropdown:hover .dropdown-menu { - display: none; -} -.js .dropdown.open .dropdown-menu { - display: block; -} -#followee-filter .btn { - *zoom: 1; -} -#followee-filter .btn:before, -#followee-filter .btn:after { - display: table; - content: ""; - line-height: 0; -} -#followee-filter .btn:after { - clear: both; -} -#followee-filter .btn span, -#followee-filter .btn strong { - display: block; - float: left; - line-height: 1.5; -} -#followee-filter .btn span { - font-weight: normal; -} -#followee-filter .btn strong { - margin: 0 5px; - white-space: nowrap; - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; -} -.dashboard-context { - position: relative; - margin-bottom: 20px; - padding: 20px; - border-bottom: 1px solid #DCDCDC; - background-color: #f6f6f6; - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; -} -.dashboard-context h2 { - margin-bottom: 10px; -} -.dashboard-context .arrow { - position: absolute; - content: ' '; - top: 30px; - right: -10px; - width: 10px; - height: 21px; - background: transparent url("../../../base/images/dashboard-followee-related.png"); -} -.popover-followee .popover-title { - display: none; -} -.popover-followee .popover-content { - padding: 0; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.popover-followee .empty { - padding: 10px; -} -.popover-followee .popover-header { - *zoom: 1; - background-color: whiteSmoke; - padding: 5px; - border-bottom: 1px solid #ccc; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.popover-followee .popover-header:before, -.popover-followee .popover-header:after { - display: table; - content: ""; - line-height: 0; -} -.popover-followee .popover-header:after { - clear: both; -} -.popover-followee .popover-header .input-prepend { - margin-bottom: 0; -} -.popover-followee .popover-header .add-on, -.popover-followee .popover-header input { - float: left; - margin: 0; -} -.popover-followee .popover-header .add-on { - padding: 4px 8px 4px 12px; - border-right-width: 0; - -webkit-border-radius: 100px 0 0 100px; - -moz-border-radius: 100px 0 0 100px; - border-radius: 100px 0 0 100px; -} -.popover-followee .popover-header input { - padding: 4px 12px 4px 8px; - font-size: 13px; - width: 207px; - -webkit-border-radius: 0 100px 100px 0; - -moz-border-radius: 0 100px 100px 0; - border-radius: 0 100px 100px 0; -} -.popover-followee .nav { - padding: 0; - margin: 0; - max-height: 205px; - overflow: auto; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.popover-followee .nav li a { - display: block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: 7px 10px 7px 15px; - margin: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.popover-followee .nav li a i { - background-color: #810606; - color: #fff; - margin-right: 11px; - padding: 3px 5px; - line-height: 1; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); -} -.popover-followee .nav li a:hover i { - background-color: #000; -} -.popover-followee .nav li.active a i { - color: #810606; - background-color: #fff; -} -.dashboard-me { - *zoom: 1; - padding: 15px 15px 0 15px; -} -.dashboard-me:before, -.dashboard-me:after { - display: table; - content: ""; - line-height: 0; -} -.dashboard-me:after { - clear: both; -} -.dashboard-me img { - float: left; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.dashboard-me strong { - display: block; - font-size: 16px; - margin: 3px 0; -} -.resource-view-filters { - margin-bottom: 1em; -} -.resource-view-filters .resource-view-filter { - margin-bottom: 1.0em; -} -.resource-view-filters .resource-view-remove-filter { - cursor: pointer; - color: #b55457; -} -.resource-view-filters .resource-view-filter-values .select2-container { - margin-right: 0.3em; - margin-bottom: 0.2em; - width: 24% !important; -} -.resource-view-filters .resource-view-filter-values .select2-container .select2-search-choice-close { - left: auto; -} -.datapusher-status-link:hover { - text-decoration: none; -} -.datapusher-status.status-unknown { - color: #bbb; -} -.datapusher-status.status-pending { - color: #FFCC00; -} -.datapusher-status.status-error { - color: red; -} -.datapusher-status.status-complete { - color: #009900; -} -body { - background: #810606 url("../../../base/images/bg.png"); -} -[hidden] { - display: none; -} -table { - table-layout: fixed; -} -thead th { - vertical-align: top; -} -td, -th { - word-wrap: break-word; -} -table .metric { - width: 140px; -} -code { - color: #000; - border: none; - background: none; - white-space: normal; -} -pre { - border: none; - background: none; - padding-left: 0; - padding-right: 0; -} -mark { - background: #fdf7e9; -} -blockquote p { - font-size: 1em; -} -iframe { - border: none; -} -.embedded-content h1 { - font-size: 1.4em; -} -.embedded-content h2 { - font-size: 1.4em; -} -.embedded-content h3 { - font-size: 1.2em; -} -.popular { - text-indent: -999em; -} -.empty { - color: #aaa; - font-style: italic; -} -.page-heading { - margin-top: 0; - margin-bottom: 16px; -} -.m-top { - margin-top: 15px; -} -.m-left { - margin-left: 15px; -} -.m-right { - margin-right: 15px; -} -.m-bottom { - margin-bottom: 15px; -} -.no-margin { - margin: 0; -} -.reduced-margin { - margin: 3px 5px; -} -.p-top { - padding-top: 15px; -} -.p-left { - padding-left: 15px; -} -.p-right { - padding-right: 15px; -} -.p-bottom { - padding-bottom: 15px; -} -.no-padding { - padding: 0; -} -.reduced-padding { - padding: 3px 5px; -} -.ie .lang-dropdown { - position: relative; - top: -20px; -} -.ie .module-popup { - border-bottom: none; -} -.ie .banner { - top: 0; - right: 0; - width: auto; -} -.ie .group-listing { - margin-left: -24px; -} -.ie .toolbar .breadcrumb { - filter: none; -} -.ie .toolbar .breadcrumb li { - float: left; -} -.ie .toolbar .breadcrumb li:after { - margin: 0 0.2em; -} -.ie9 .control-large input { - height: 56px; -} -.ie8 .account-masthead a.image, -.ie8 .account-masthead .username { - white-space: nowrap; -} -.ie9 .homepage .media.module-heading .media-image img, -.ie8 .homepage .media.module-heading .media-image img, -.ie7 .homepage .media.module-heading .media-image img { - width: 85px !important; -} -.ie8 .masthead .nav-collapse, -.ie7 .masthead .nav-collapse { - float: right; -} -.ie8 [role=main], -.ie7 [role=main], -.ie8 .main, -.ie7 .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); -} -.ie8 .hero, -.ie7 .hero { - background: url("../../../base/images/background-tile.png"); -} -.ie8 .hero .hero-primary.module-popup .box, -.ie7 .hero .hero-primary.module-popup .box { - padding-bottom: 20px !important; - margin-bottom: 0 !important; -} -.ie8 .lang-dropdown, -.ie7 .lang-dropdown { - position: relative !important; - top: -90px !important; -} -.ie7 .alert { - position: relative; -} -.ie7 .alert .close { - position: absolute; - top: 6px !important; - right: 20px; -} -.ie7 .media-item { - width: 30%; -} -.ie7 .tags .tag-list { - *zoom: 1; -} -.ie7 .tags .tag-list:before, -.ie7 .tags .tag-list:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .tags .tag-list:after { - clear: both; -} -.ie7 .tags .tag-list li { - display: block; - float: left; -} -.ie7 .tags h3 { - float: left; -} -.ie7 .tags .tag { - display: block; -} -.ie7 .search-giant input { - width: 95%; -} -.ie7 .control-full input, -.ie7 .control-full select, -.ie7 .control-full textarea { - width: 95%; -} -.ie7 .control-full.control-large .controls input { - padding-bottom: 20px; -} -.ie7 .controls { - position: relative; -} -.ie7 .controls .info-block, -.ie7 .controls .info-inline { - position: absolute; - top: 0; - right: 0; -} -.ie7 .form-horizontal .controls { - margin-left: 0; -} -.ie7 .control-custom .checkbox { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .stages { - overflow: hidden; - background-color: #EDEDED; -} -.ie7 .stages li { - height: 30px; - width: 27.5%; -} -.ie7 .stages li button, -.ie7 .stages li span { - display: block; - height: 30px; - padding-left: 20px; -} -.ie7 .stages li button { - height: 50px; -} -.ie7 .stages li .highlight { - width: auto; -} -.ie7 .account-masthead .account a i { - line-height: 31px; -} -.ie7 .masthead { - position: relative; - z-index: 1; -} -.ie7 .masthead .logo img, -.ie7 .masthead nav { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .masthead .header-image { - display: block; -} -.ie7 .masthead .account .dropdown-menu { - z-index: 10000; -} -.ie7 .module-narrow .nav-item.image { - *zoom: 1; -} -.ie7 .module-narrow .nav-item.image:before, -.ie7 .module-narrow .nav-item.image:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-narrow .nav-item.image:after { - clear: both; -} -.ie7 .nav-facet .nav-item.active a { - content: 'x'; -} -.ie7 .toolbar .breadcrumb li { - padding-right: 10px; - margin-right: 5px; - background: transparent url("../../../base/images/breadcrumb-slash-ie7.png") 100% 50% no-repeat; -} -.ie7 .toolbar .breadcrumb li.active { - background-image: none; -} -.ie7 .module-heading { - *zoom: 1; - position: relative; -} -.ie7 .module-heading:before, -.ie7 .module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-heading:after { - clear: both; -} -.ie7 .module-heading .media-content { - position: relative; -} -.ie7 .module-heading .media-image img { - float: left; -} -.ie7 .group-listing { - position: relative; - zoom: 1; -} -.ie7 .resource-item { - position: static; - padding-bottom: 1px; -} -.ie7 .resource-item .heading { - position: relative; -} -.ie7 .resource-item .format-label { - left: -48px; -} -.ie7 .resource-item .btn-group { - position: relative; - float: right; - top: -35px; - right: 0; -} -.ie7 .media-overlay .media-heading { - background-color: #000; -} diff --git a/ckan/public-bs2/base/css/red.css b/ckan/public-bs2/base/css/red.css deleted file mode 100644 index a6363ef2ea2..00000000000 --- a/ckan/public-bs2/base/css/red.css +++ /dev/null @@ -1,9520 +0,0 @@ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} -audio:not([controls]) { - display: none; -} -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -a:hover, -a:active { - outline: 0; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - /* Responsive images (ensure images don't scale beyond their parents) */ - max-width: 100%; - /* Part 1: Set a maxium relative to the parent */ - width: auto\9; - /* IE7-8 need help adjusting responsive images */ - height: auto; - /* Part 2: Scale the height according to the width, otherwise you get stretching */ - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} -#map_canvas img, -.google-maps img { - max-width: none; -} -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} -button, -input { - *overflow: visible; - line-height: normal; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; -} -textarea { - overflow: auto; - vertical-align: top; -} -@media print { - * { - text-shadow: none !important; - color: #000 !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 0.5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } -} -.clearfix { - *zoom: 1; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; - line-height: 0; -} -.clearfix:after { - clear: both; -} -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -body { - margin: 0; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 20px; - color: #444; - background-color: #eee; -} -a { - color: #C14531; - text-decoration: none; -} -a:hover, -a:focus { - color: #842f22; - text-decoration: underline; -} -.img-rounded { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.img-polaroid { - padding: 4px; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} -.img-circle { - -webkit-border-radius: 500px; - -moz-border-radius: 500px; - border-radius: 500px; -} -.row { - margin-left: -20px; - *zoom: 1; -} -.row:before, -.row:after { - display: table; - content: ""; - line-height: 0; -} -.row:after { - clear: both; -} -[class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; -} -.container, -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} -.span12 { - width: 940px; -} -.span11 { - width: 860px; -} -.span10 { - width: 780px; -} -.span9 { - width: 700px; -} -.span8 { - width: 620px; -} -.span7 { - width: 540px; -} -.span6 { - width: 460px; -} -.span5 { - width: 380px; -} -.span4 { - width: 300px; -} -.span3 { - width: 220px; -} -.span2 { - width: 140px; -} -.span1 { - width: 60px; -} -.offset12 { - margin-left: 980px; -} -.offset11 { - margin-left: 900px; -} -.offset10 { - margin-left: 820px; -} -.offset9 { - margin-left: 740px; -} -.offset8 { - margin-left: 660px; -} -.offset7 { - margin-left: 580px; -} -.offset6 { - margin-left: 500px; -} -.offset5 { - margin-left: 420px; -} -.offset4 { - margin-left: 340px; -} -.offset3 { - margin-left: 260px; -} -.offset2 { - margin-left: 180px; -} -.offset1 { - margin-left: 100px; -} -.row-fluid { - width: 100%; - *zoom: 1; -} -.row-fluid:before, -.row-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.row-fluid:after { - clear: both; -} -.row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.12765957%; - *margin-left: 2.07446809%; -} -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} -.row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.12765957%; -} -.row-fluid .span12 { - width: 100%; - *width: 99.94680851%; -} -.row-fluid .span11 { - width: 91.4893617%; - *width: 91.43617021%; -} -.row-fluid .span10 { - width: 82.9787234%; - *width: 82.92553191%; -} -.row-fluid .span9 { - width: 74.46808511%; - *width: 74.41489362%; -} -.row-fluid .span8 { - width: 65.95744681%; - *width: 65.90425532%; -} -.row-fluid .span7 { - width: 57.44680851%; - *width: 57.39361702%; -} -.row-fluid .span6 { - width: 48.93617021%; - *width: 48.88297872%; -} -.row-fluid .span5 { - width: 40.42553191%; - *width: 40.37234043%; -} -.row-fluid .span4 { - width: 31.91489362%; - *width: 31.86170213%; -} -.row-fluid .span3 { - width: 23.40425532%; - *width: 23.35106383%; -} -.row-fluid .span2 { - width: 14.89361702%; - *width: 14.84042553%; -} -.row-fluid .span1 { - width: 6.38297872%; - *width: 6.32978723%; -} -.row-fluid .offset12 { - margin-left: 104.25531915%; - *margin-left: 104.14893617%; -} -.row-fluid .offset12:first-child { - margin-left: 102.12765957%; - *margin-left: 102.0212766%; -} -.row-fluid .offset11 { - margin-left: 95.74468085%; - *margin-left: 95.63829787%; -} -.row-fluid .offset11:first-child { - margin-left: 93.61702128%; - *margin-left: 93.5106383%; -} -.row-fluid .offset10 { - margin-left: 87.23404255%; - *margin-left: 87.12765957%; -} -.row-fluid .offset10:first-child { - margin-left: 85.10638298%; - *margin-left: 85%; -} -.row-fluid .offset9 { - margin-left: 78.72340426%; - *margin-left: 78.61702128%; -} -.row-fluid .offset9:first-child { - margin-left: 76.59574468%; - *margin-left: 76.4893617%; -} -.row-fluid .offset8 { - margin-left: 70.21276596%; - *margin-left: 70.10638298%; -} -.row-fluid .offset8:first-child { - margin-left: 68.08510638%; - *margin-left: 67.9787234%; -} -.row-fluid .offset7 { - margin-left: 61.70212766%; - *margin-left: 61.59574468%; -} -.row-fluid .offset7:first-child { - margin-left: 59.57446809%; - *margin-left: 59.46808511%; -} -.row-fluid .offset6 { - margin-left: 53.19148936%; - *margin-left: 53.08510638%; -} -.row-fluid .offset6:first-child { - margin-left: 51.06382979%; - *margin-left: 50.95744681%; -} -.row-fluid .offset5 { - margin-left: 44.68085106%; - *margin-left: 44.57446809%; -} -.row-fluid .offset5:first-child { - margin-left: 42.55319149%; - *margin-left: 42.44680851%; -} -.row-fluid .offset4 { - margin-left: 36.17021277%; - *margin-left: 36.06382979%; -} -.row-fluid .offset4:first-child { - margin-left: 34.04255319%; - *margin-left: 33.93617021%; -} -.row-fluid .offset3 { - margin-left: 27.65957447%; - *margin-left: 27.55319149%; -} -.row-fluid .offset3:first-child { - margin-left: 25.53191489%; - *margin-left: 25.42553191%; -} -.row-fluid .offset2 { - margin-left: 19.14893617%; - *margin-left: 19.04255319%; -} -.row-fluid .offset2:first-child { - margin-left: 17.0212766%; - *margin-left: 16.91489362%; -} -.row-fluid .offset1 { - margin-left: 10.63829787%; - *margin-left: 10.53191489%; -} -.row-fluid .offset1:first-child { - margin-left: 8.5106383%; - *margin-left: 8.40425532%; -} -[class*="span"].hide, -.row-fluid [class*="span"].hide { - display: none; -} -[class*="span"].pull-right, -.row-fluid [class*="span"].pull-right { - float: right; -} -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} -.container:before, -.container:after { - display: table; - content: ""; - line-height: 0; -} -.container:after { - clear: both; -} -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} -.container-fluid:before, -.container-fluid:after { - display: table; - content: ""; - line-height: 0; -} -.container-fluid:after { - clear: both; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 21px; - font-weight: 200; - line-height: 30px; -} -small { - font-size: 85%; -} -strong { - font-weight: bold; -} -em { - font-style: italic; -} -cite { - font-style: normal; -} -.muted { - color: #999; -} -a.muted:hover, -a.muted:focus { - color: #808080; -} -.text-warning { - color: #c09853; -} -a.text-warning:hover, -a.text-warning:focus { - color: #a47e3c; -} -.text-error { - color: #b55457; -} -a.text-error:hover, -a.text-error:focus { - color: #954143; -} -.text-info { - color: #3a87ad; -} -a.text-info:hover, -a.text-info:focus { - color: #2d6987; -} -.text-success { - color: #468847; -} -a.text-success:hover, -a.text-success:focus { - color: #356635; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 10px 0; - font-family: inherit; - font-weight: bold; - line-height: 20px; - color: inherit; - text-rendering: optimizelegibility; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-weight: normal; - line-height: 1; - color: #999; -} -h1, -h2, -h3 { - line-height: 40px; -} -h1 { - font-size: 38.5px; -} -h2 { - font-size: 31.5px; -} -h3 { - font-size: 24.5px; -} -h4 { - font-size: 17.5px; -} -h5 { - font-size: 14px; -} -h6 { - font-size: 11.9px; -} -h1 small { - font-size: 24.5px; -} -h2 small { - font-size: 17.5px; -} -h3 small { - font-size: 14px; -} -h4 small { - font-size: 14px; -} -.page-header { - padding-bottom: 9px; - margin: 20px 0 30px; - border-bottom: 1px solid #eee; -} -ul, -ol { - padding: 0; - margin: 0 0 10px 25px; -} -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} -li { - line-height: 20px; -} -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} -ul.inline, -ol.inline { - margin-left: 0; - list-style: none; -} -ul.inline > li, -ol.inline > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-bottom: 20px; -} -dt, -dd { - line-height: 20px; -} -dt { - font-weight: bold; -} -dd { - margin-left: 10px; -} -.dl-horizontal { - *zoom: 1; -} -.dl-horizontal:before, -.dl-horizontal:after { - display: table; - content: ""; - line-height: 0; -} -.dl-horizontal:after { - clear: both; -} -.dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dl-horizontal dd { - margin-left: 180px; -} -hr { - margin: 20px 0; - border: 0; - border-top: 1px solid #eee; - border-bottom: 1px solid #fff; -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 0 0 0 15px; - margin: 0 0 20px; - border-left: 5px solid #eee; -} -blockquote p { - margin-bottom: 0; - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} -blockquote small { - display: block; - line-height: 20px; - color: #999; -} -blockquote small:before { - content: '\2014 \00A0'; -} -blockquote.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eee; - border-left: 0; -} -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} -blockquote.pull-right small:before { - content: ''; -} -blockquote.pull-right small:after { - content: '\00A0 \2014'; -} -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} -address { - display: block; - margin-bottom: 20px; - font-style: normal; - line-height: 20px; -} -code, -pre { - padding: 0 3px 2px; - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; - font-size: 12px; - color: #333; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -code { - padding: 2px 4px; - color: #d14; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; - white-space: nowrap; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 20px; - word-break: break-all; - word-wrap: break-word; - white-space: pre; - white-space: pre-wrap; - background-color: #f5f5f5; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -pre.prettyprint { - margin-bottom: 20px; -} -pre code { - padding: 0; - color: inherit; - white-space: pre; - white-space: pre-wrap; - background-color: transparent; - border: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -form { - margin: 0 0 20px; -} -fieldset { - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: 40px; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -legend small { - font-size: 15px; - color: #999; -} -label, -input, -button, -select, -textarea { - font-size: 14px; - font-weight: normal; - line-height: 20px; -} -input, -button, -select, -textarea { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} -label { - display: block; - margin-bottom: 5px; -} -select, -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - display: inline-block; - height: 20px; - padding: 4px 6px; - margin-bottom: 10px; - font-size: 14px; - line-height: 20px; - color: #555; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - vertical-align: middle; -} -input, -textarea, -.uneditable-input { - width: 206px; -} -textarea { - height: auto; -} -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - background-color: #fff; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear .2s, box-shadow linear .2s; - -moz-transition: border linear .2s, box-shadow linear .2s; - -o-transition: border linear .2s, box-shadow linear .2s; - transition: border linear .2s, box-shadow linear .2s; -} -textarea:focus, -input[type="text"]:focus, -input[type="password"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="date"]:focus, -input[type="month"]:focus, -input[type="time"]:focus, -input[type="week"]:focus, -input[type="number"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="color"]:focus, -.uneditable-input:focus { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - *margin-top: 0; - /* IE7 */ - margin-top: 1px \9; - /* IE8-9 */ - line-height: normal; -} -input[type="file"], -input[type="image"], -input[type="submit"], -input[type="reset"], -input[type="button"], -input[type="radio"], -input[type="checkbox"] { - width: auto; -} -select, -input[type="file"] { - height: 30px; - /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ - line-height: 30px; -} -select { - width: 220px; - border: 1px solid #ccc; - background-color: #fff; -} -select[multiple], -select[size] { - height: auto; -} -select:focus, -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.uneditable-input, -.uneditable-textarea { - color: #999; - background-color: #fcfcfc; - border-color: #ccc; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - cursor: not-allowed; -} -.uneditable-input { - overflow: hidden; - white-space: nowrap; -} -.uneditable-textarea { - width: auto; - height: auto; -} -input:-moz-placeholder, -textarea:-moz-placeholder { - color: #999; -} -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #999; -} -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #999; -} -.radio, -.checkbox { - min-height: 20px; - padding-left: 20px; -} -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.controls > .radio:first-child, -.controls > .checkbox:first-child { - padding-top: 5px; -} -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left: 10px; -} -.input-mini { - width: 60px; -} -.input-small { - width: 90px; -} -.input-medium { - width: 150px; -} -.input-large { - width: 210px; -} -.input-xlarge { - width: 270px; -} -.input-xxlarge { - width: 530px; -} -input[class*="span"], -select[class*="span"], -textarea[class*="span"], -.uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"] { - float: none; - margin-left: 0; -} -.input-append input[class*="span"], -.input-append .uneditable-input[class*="span"], -.input-prepend input[class*="span"], -.input-prepend .uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"], -.row-fluid .input-prepend [class*="span"], -.row-fluid .input-append [class*="span"] { - display: inline-block; -} -input, -textarea, -.uneditable-input { - margin-left: 0; -} -.controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; -} -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 926px; -} -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 846px; -} -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 766px; -} -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 686px; -} -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 606px; -} -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 526px; -} -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 446px; -} -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 366px; -} -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 286px; -} -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 206px; -} -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 126px; -} -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 46px; -} -.controls-row { - *zoom: 1; -} -.controls-row:before, -.controls-row:after { - display: table; - content: ""; - line-height: 0; -} -.controls-row:after { - clear: both; -} -.controls-row [class*="span"], -.row-fluid .controls-row [class*="span"] { - float: left; -} -.controls-row .checkbox[class*="span"], -.controls-row .radio[class*="span"] { - padding-top: 5px; -} -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eee; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"][readonly], -input[type="checkbox"][readonly] { - background-color: transparent; -} -.control-group.warning .control-label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} -.control-group.warning .checkbox, -.control-group.warning .radio, -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; -} -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} -.control-group.error .control-label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b55457; -} -.control-group.error .checkbox, -.control-group.error .radio, -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - border-color: #b55457; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #954143; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d49b9d; -} -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b55457; - background-color: #f8f0f0; - border-color: #b55457; -} -.control-group.success .control-label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} -.control-group.success .checkbox, -.control-group.success .radio, -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; -} -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} -.control-group.info .control-label, -.control-group.info .help-block, -.control-group.info .help-inline { - color: #3a87ad; -} -.control-group.info .checkbox, -.control-group.info .radio, -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - color: #3a87ad; -} -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - border-color: #3a87ad; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.control-group.info input:focus, -.control-group.info select:focus, -.control-group.info textarea:focus { - border-color: #2d6987; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -} -.control-group.info .input-prepend .add-on, -.control-group.info .input-append .add-on { - color: #3a87ad; - background-color: #d9edf7; - border-color: #3a87ad; -} -input:focus:invalid, -textarea:focus:invalid, -select:focus:invalid { - color: #b94a48; - border-color: #ee5f5b; -} -input:focus:invalid:focus, -textarea:focus:invalid:focus, -select:focus:invalid:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} -.form-actions { - padding: 19px 20px 20px; - margin-top: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-top: 1px solid #e5e5e5; - *zoom: 1; -} -.form-actions:before, -.form-actions:after { - display: table; - content: ""; - line-height: 0; -} -.form-actions:after { - clear: both; -} -.help-block, -.help-inline { - color: #6a6a6a; -} -.help-block { - display: block; - margin-bottom: 10px; -} -.help-inline { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - vertical-align: middle; - padding-left: 5px; -} -.input-append, -.input-prepend { - display: inline-block; - margin-bottom: 10px; - vertical-align: middle; - font-size: 0; - white-space: nowrap; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input, -.input-append .dropdown-menu, -.input-prepend .dropdown-menu, -.input-append .popover, -.input-prepend .popover { - font-size: 14px; -} -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: top; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append input:focus, -.input-prepend input:focus, -.input-append select:focus, -.input-prepend select:focus, -.input-append .uneditable-input:focus, -.input-prepend .uneditable-input:focus { - z-index: 2; -} -.input-append .add-on, -.input-prepend .add-on { - display: inline-block; - width: auto; - height: 20px; - min-width: 16px; - padding: 4px 5px; - font-size: 14px; - font-weight: normal; - line-height: 20px; - text-align: center; - text-shadow: 0 1px 0 #fff; - background-color: #eee; - border: 1px solid #ccc; -} -.input-append .add-on, -.input-prepend .add-on, -.input-append .btn, -.input-prepend .btn, -.input-append .btn-group > .dropdown-toggle, -.input-prepend .btn-group > .dropdown-toggle { - vertical-align: top; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-append .active, -.input-prepend .active { - background-color: #a9dba9; - border-color: #46a546; -} -.input-prepend .add-on, -.input-prepend .btn { - margin-right: -1px; -} -.input-prepend .add-on:first-child, -.input-prepend .btn:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input, -.input-append select, -.input-append .uneditable-input { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-append input + .btn-group .btn:last-child, -.input-append select + .btn-group .btn:last-child, -.input-append .uneditable-input + .btn-group .btn:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-append .add-on, -.input-append .btn, -.input-append .btn-group { - margin-left: -1px; -} -.input-append .add-on:last-child, -.input-append .btn:last-child, -.input-append .btn-group:last-child > .dropdown-toggle { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append input, -.input-prepend.input-append select, -.input-prepend.input-append .uneditable-input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.input-prepend.input-append input + .btn-group .btn, -.input-prepend.input-append select + .btn-group .btn, -.input-prepend.input-append .uneditable-input + .btn-group .btn { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .add-on:first-child, -.input-prepend.input-append .btn:first-child { - margin-right: -1px; - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { - margin-left: -1px; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-prepend.input-append .btn-group:first-child { - margin-left: 0; -} -input.search-query { - padding-right: 14px; - padding-right: 4px \9; - padding-left: 14px; - padding-left: 4px \9; - /* IE7-8 doesn't have border-radius, so don't indent the padding */ - margin-bottom: 0; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -/* Allow for input prepend/append in search forms */ -.form-search .input-append .search-query, -.form-search .input-prepend .search-query { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.form-search .input-append .search-query { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search .input-append .btn { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .search-query { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} -.form-search .input-prepend .btn { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} -.form-search input, -.form-inline input, -.form-horizontal input, -.form-search textarea, -.form-inline textarea, -.form-horizontal textarea, -.form-search select, -.form-inline select, -.form-horizontal select, -.form-search .help-inline, -.form-inline .help-inline, -.form-horizontal .help-inline, -.form-search .uneditable-input, -.form-inline .uneditable-input, -.form-horizontal .uneditable-input, -.form-search .input-prepend, -.form-inline .input-prepend, -.form-horizontal .input-prepend, -.form-search .input-append, -.form-inline .input-append, -.form-horizontal .input-append { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { - display: none; -} -.form-search label, -.form-inline label, -.form-search .btn-group, -.form-inline .btn-group { - display: inline-block; -} -.form-search .input-append, -.form-inline .input-append, -.form-search .input-prepend, -.form-inline .input-prepend { - margin-bottom: 0; -} -.form-search .radio, -.form-search .checkbox, -.form-inline .radio, -.form-inline .checkbox { - padding-left: 0; - margin-bottom: 0; - vertical-align: middle; -} -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"], -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: left; - margin-right: 3px; - margin-left: 0; -} -.control-group { - margin-bottom: 10px; -} -legend + .control-group { - margin-top: 20px; - -webkit-margin-top-collapse: separate; -} -.form-horizontal .control-group { - margin-bottom: 20px; - *zoom: 1; -} -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; - content: ""; - line-height: 0; -} -.form-horizontal .control-group:after { - clear: both; -} -.form-horizontal .control-label { - float: left; - width: 160px; - padding-top: 5px; - text-align: right; -} -.form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; - margin-left: 180px; - *margin-left: 0; -} -.form-horizontal .controls:first-child { - *padding-left: 180px; -} -.form-horizontal .help-block { - margin-bottom: 0; -} -.form-horizontal input + .help-block, -.form-horizontal select + .help-block, -.form-horizontal textarea + .help-block, -.form-horizontal .uneditable-input + .help-block, -.form-horizontal .input-prepend + .help-block, -.form-horizontal .input-append + .help-block { - margin-top: 10px; -} -.form-horizontal .form-actions { - padding-left: 180px; -} -table { - max-width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; -} -.table { - width: 100%; - margin-bottom: 20px; -} -.table th, -.table td { - padding: 8px; - line-height: 20px; - text-align: left; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table th { - font-weight: bold; -} -.table thead th { - vertical-align: bottom; -} -.table caption + thead tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child th, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child th, -.table thead:first-child tr:first-child td { - border-top: 0; -} -.table tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #eee; -} -.table-condensed th, -.table-condensed td { - padding: 4px 5px; -} -.table-bordered { - border: 1px solid #ddd; - border-collapse: separate; - *border-collapse: collapse; - border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.table-bordered th, -.table-bordered td { - border-left: 1px solid #ddd; -} -.table-bordered caption + thead tr:first-child th, -.table-bordered caption + tbody tr:first-child th, -.table-bordered caption + tbody tr:first-child td, -.table-bordered colgroup + thead tr:first-child th, -.table-bordered colgroup + tbody tr:first-child th, -.table-bordered colgroup + tbody tr:first-child td, -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { - border-top: 0; -} -.table-bordered thead:first-child tr:first-child > th:first-child, -.table-bordered tbody:first-child tr:first-child > td:first-child, -.table-bordered tbody:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered thead:first-child tr:first-child > th:last-child, -.table-bordered tbody:first-child tr:first-child > td:last-child, -.table-bordered tbody:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:first-child, -.table-bordered tbody:last-child tr:last-child > td:first-child, -.table-bordered tbody:last-child tr:last-child > th:first-child, -.table-bordered tfoot:last-child tr:last-child > td:first-child, -.table-bordered tfoot:last-child tr:last-child > th:first-child { - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.table-bordered thead:last-child tr:last-child > th:last-child, -.table-bordered tbody:last-child tr:last-child > td:last-child, -.table-bordered tbody:last-child tr:last-child > th:last-child, -.table-bordered tfoot:last-child tr:last-child > td:last-child, -.table-bordered tfoot:last-child tr:last-child > th:last-child { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; -} -.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-bottomright: 0; - border-bottom-right-radius: 0; -} -.table-bordered caption + thead tr:first-child th:first-child, -.table-bordered caption + tbody tr:first-child td:first-child, -.table-bordered colgroup + thead tr:first-child th:first-child, -.table-bordered colgroup + tbody tr:first-child td:first-child { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.table-bordered caption + thead tr:first-child th:last-child, -.table-bordered caption + tbody tr:first-child td:last-child, -.table-bordered colgroup + thead tr:first-child th:last-child, -.table-bordered colgroup + tbody tr:first-child td:last-child { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; -} -.table-striped tbody > tr:nth-child(odd) > td, -.table-striped tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.table-hover tbody tr:hover > td, -.table-hover tbody tr:hover > th { - background-color: #f5f5f5; -} -table td[class*="span"], -table th[class*="span"], -.row-fluid table td[class*="span"], -.row-fluid table th[class*="span"] { - display: table-cell; - float: none; - margin-left: 0; -} -.table td.span1, -.table th.span1 { - float: none; - width: 44px; - margin-left: 0; -} -.table td.span2, -.table th.span2 { - float: none; - width: 124px; - margin-left: 0; -} -.table td.span3, -.table th.span3 { - float: none; - width: 204px; - margin-left: 0; -} -.table td.span4, -.table th.span4 { - float: none; - width: 284px; - margin-left: 0; -} -.table td.span5, -.table th.span5 { - float: none; - width: 364px; - margin-left: 0; -} -.table td.span6, -.table th.span6 { - float: none; - width: 444px; - margin-left: 0; -} -.table td.span7, -.table th.span7 { - float: none; - width: 524px; - margin-left: 0; -} -.table td.span8, -.table th.span8 { - float: none; - width: 604px; - margin-left: 0; -} -.table td.span9, -.table th.span9 { - float: none; - width: 684px; - margin-left: 0; -} -.table td.span10, -.table th.span10 { - float: none; - width: 764px; - margin-left: 0; -} -.table td.span11, -.table th.span11 { - float: none; - width: 844px; - margin-left: 0; -} -.table td.span12, -.table th.span12 { - float: none; - width: 924px; - margin-left: 0; -} -.table tbody tr.success > td { - background-color: #dff0d8; -} -.table tbody tr.error > td { - background-color: #f8f0f0; -} -.table tbody tr.warning > td { - background-color: #fcf8e3; -} -.table tbody tr.info > td { - background-color: #d9edf7; -} -.table-hover tbody tr.success:hover > td { - background-color: #d0e9c6; -} -.table-hover tbody tr.error:hover > td { - background-color: #f0dfe0; -} -.table-hover tbody tr.warning:hover > td { - background-color: #faf2cc; -} -.table-hover tbody tr.info:hover > td { - background-color: #c4e3f3; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle { - *margin-bottom: -3px; -} -.dropdown-toggle:active, -.open .dropdown-toggle { - outline: 0; -} -.caret { - display: inline-block; - width: 0; - height: 0; - vertical-align: top; - border-top: 4px solid #000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - content: ""; -} -.dropdown .caret { - margin-top: 8px; - margin-left: 2px; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 20px; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus, -.dropdown-submenu:hover > a, -.dropdown-submenu:focus > a { - text-decoration: none; - color: #fff; - background-color: #b9422f; - background-image: -moz-linear-gradient(top, #C14531, #ad3e2c); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#C14531), to(#ad3e2c)); - background-image: -webkit-linear-gradient(top, #C14531, #ad3e2c); - background-image: -o-linear-gradient(top, #C14531, #ad3e2c); - background-image: linear-gradient(to bottom, #C14531, #ad3e2c); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc14531', endColorstr='#ffad3e2c', GradientType=0); -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #b9422f; - background-image: -moz-linear-gradient(top, #C14531, #ad3e2c); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#C14531), to(#ad3e2c)); - background-image: -webkit-linear-gradient(top, #C14531, #ad3e2c); - background-image: -o-linear-gradient(top, #C14531, #ad3e2c); - background-image: linear-gradient(to bottom, #C14531, #ad3e2c); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc14531', endColorstr='#ffad3e2c', GradientType=0); -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: default; -} -.open { - *z-index: 1000; -} -.open > .dropdown-menu { - display: block; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid #000; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -.dropdown-submenu { - position: relative; -} -.dropdown-submenu > .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} -.dropdown-submenu:hover > .dropdown-menu { - display: block; -} -.dropup .dropdown-submenu > .dropdown-menu { - top: auto; - bottom: 0; - margin-top: 0; - margin-bottom: -2px; - -webkit-border-radius: 5px 5px 5px 0; - -moz-border-radius: 5px 5px 5px 0; - border-radius: 5px 5px 5px 0; -} -.dropdown-submenu > a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} -.dropdown-submenu:hover > a:after { - border-left-color: #fff; -} -.dropdown-submenu.pull-left { - float: none; -} -.dropdown-submenu.pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.dropdown .dropdown-menu .nav-header { - padding-left: 20px; - padding-right: 20px; -} -.typeahead { - z-index: 1051; - margin-top: 2px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-large { - padding: 24px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.well-small { - padding: 9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} -.collapse.in { - height: auto; -} -.close { - float: right; - font-size: 20px; - font-weight: bold; - line-height: 20px; - color: #000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.btn { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - padding: 4px 12px; - margin-bottom: 0; - font-size: 14px; - line-height: 20px; - text-align: center; - vertical-align: middle; - cursor: pointer; - color: #333; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #ffffff, #eaeaea); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#eaeaea)); - background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea); - background-image: -o-linear-gradient(top, #ffffff, #eaeaea); - background-image: linear-gradient(to bottom, #ffffff, #eaeaea); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeaeaea', GradientType=0); - border-color: #eaeaea #eaeaea #c4c4c4; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #eaeaea; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border: 1px solid #ccc; - *border: 0; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *margin-left: .3em; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -} -.btn:hover, -.btn:focus, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - color: #333; - background-color: #eaeaea; - *background-color: #dddddd; -} -.btn:active, -.btn.active { - background-color: #d1d1d1 \9; -} -.btn:first-child { - *margin-left: 0; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn.active, -.btn:active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn.disabled, -.btn[disabled] { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-large { - padding: 11px 19px; - font-size: 17.5px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.btn-large [class^="icon-"], -.btn-large [class*=" icon-"] { - margin-top: 4px; -} -.btn-small { - padding: 2px 10px; - font-size: 11.9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-small [class^="icon-"], -.btn-small [class*=" icon-"] { - margin-top: 0; -} -.btn-mini [class^="icon-"], -.btn-mini [class*=" icon-"] { - margin-top: -1px; -} -.btn-mini { - padding: 0 6px; - font-size: 10.5px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} -.btn-primary { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #cc5845; - background-image: -moz-linear-gradient(top, #d36452, #C14531); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d36452), to(#C14531)); - background-image: -webkit-linear-gradient(top, #d36452, #C14531); - background-image: -o-linear-gradient(top, #d36452, #C14531); - background-image: linear-gradient(to bottom, #d36452, #C14531); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd36452', endColorstr='#ffc14531', GradientType=0); - border-color: #C14531 #C14531 #842f22; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #C14531; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - color: #fff; - background-color: #C14531; - *background-color: #ad3e2c; -} -.btn-primary:active, -.btn-primary.active { - background-color: #983627 \9; -} -.btn-warning { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #f89406; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - color: #fff; - background-color: #f89406; - *background-color: #df8505; -} -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} -.btn-danger { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #da4f49; - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #bd362f; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - color: #fff; - background-color: #bd362f; - *background-color: #a9302a; -} -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} -.btn-success { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #5bb75b; - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(to bottom, #62c462, #51a351); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #51a351; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - color: #fff; - background-color: #51a351; - *background-color: #499249; -} -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} -.btn-info { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #49afcd; - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #2f96b4; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - color: #fff; - background-color: #2f96b4; - *background-color: #2a85a0; -} -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} -.btn-inverse { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #363636; - background-image: -moz-linear-gradient(top, #444, #222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444), to(#222)); - background-image: -webkit-linear-gradient(top, #444, #222); - background-image: -o-linear-gradient(top, #444, #222); - background-image: linear-gradient(to bottom, #444, #222); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); - border-color: #222 #222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #222; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn-inverse:hover, -.btn-inverse:focus, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - color: #fff; - background-color: #222; - *background-color: #151515; -} -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} -button.btn, -input[type="submit"].btn { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn::-moz-focus-inner, -input[type="submit"].btn::-moz-focus-inner { - padding: 0; - border: 0; -} -button.btn.btn-large, -input[type="submit"].btn.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; -} -button.btn.btn-small, -input[type="submit"].btn.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; -} -button.btn.btn-mini, -input[type="submit"].btn.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; -} -.btn-link, -.btn-link:active, -.btn-link[disabled] { - background-color: transparent; - background-image: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.btn-link { - border-color: transparent; - cursor: pointer; - color: #C14531; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-link:hover, -.btn-link:focus { - color: #842f22; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -.btn-link[disabled]:focus { - color: #333; - text-decoration: none; -} -.btn-group { - position: relative; - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - font-size: 0; - vertical-align: middle; - white-space: nowrap; - *margin-left: .3em; -} -.btn-group:first-child { - *margin-left: 0; -} -.btn-group + .btn-group { - margin-left: 5px; -} -.btn-toolbar { - font-size: 0; - margin-top: 10px; - margin-bottom: 10px; -} -.btn-toolbar > .btn + .btn, -.btn-toolbar > .btn-group + .btn, -.btn-toolbar > .btn + .btn-group { - margin-left: 5px; -} -.btn-group > .btn { - position: relative; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group > .btn + .btn { - margin-left: -1px; -} -.btn-group > .btn, -.btn-group > .dropdown-menu, -.btn-group > .popover { - font-size: 14px; -} -.btn-group > .btn-mini { - font-size: 10.5px; -} -.btn-group > .btn-small { - font-size: 11.9px; -} -.btn-group > .btn-large { - font-size: 17.5px; -} -.btn-group > .btn:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.btn-group > .btn:last-child, -.btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.btn-group > .btn.large:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.btn-group > .btn.large:last-child, -.btn-group > .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active { - z-index: 2; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - *padding-top: 5px; - *padding-bottom: 5px; -} -.btn-group > .btn-mini + .dropdown-toggle { - padding-left: 5px; - padding-right: 5px; - *padding-top: 2px; - *padding-bottom: 2px; -} -.btn-group > .btn-small + .dropdown-toggle { - *padding-top: 5px; - *padding-bottom: 4px; -} -.btn-group > .btn-large + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; - *padding-top: 7px; - *padding-bottom: 7px; -} -.btn-group.open .dropdown-toggle { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -} -.btn-group.open .btn.dropdown-toggle { - background-color: #eaeaea; -} -.btn-group.open .btn-primary.dropdown-toggle { - background-color: #C14531; -} -.btn-group.open .btn-warning.dropdown-toggle { - background-color: #f89406; -} -.btn-group.open .btn-danger.dropdown-toggle { - background-color: #bd362f; -} -.btn-group.open .btn-success.dropdown-toggle { - background-color: #51a351; -} -.btn-group.open .btn-info.dropdown-toggle { - background-color: #2f96b4; -} -.btn-group.open .btn-inverse.dropdown-toggle { - background-color: #222; -} -.btn .caret { - margin-top: 8px; - margin-left: 0; -} -.btn-large .caret { - margin-top: 6px; -} -.btn-large .caret { - border-left-width: 5px; - border-right-width: 5px; - border-top-width: 5px; -} -.btn-mini .caret, -.btn-small .caret { - margin-top: 8px; -} -.dropup .btn-large .caret { - border-bottom-width: 5px; -} -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.btn-group-vertical { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.btn-group-vertical > .btn { - display: block; - float: none; - max-width: 100%; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group-vertical > .btn + .btn { - margin-left: 0; - margin-top: -1px; -} -.btn-group-vertical > .btn:first-child { - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.btn-group-vertical > .btn:last-child { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.btn-group-vertical > .btn-large:first-child { - -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; -} -.btn-group-vertical > .btn-large:last-child { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.alert { - padding: 8px 35px 8px 14px; - margin-bottom: 20px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - background-color: #fcf8e3; - border: 1px solid #fbeed5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.alert, -.alert h4 { - color: #c09853; -} -.alert h4 { - margin: 0; -} -.alert .close { - position: relative; - top: -2px; - right: -21px; - line-height: 20px; -} -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #468847; -} -.alert-success h4 { - color: #468847; -} -.alert-danger, -.alert-error { - background-color: #f8f0f0; - border-color: #c6898b; - color: #b55457; -} -.alert-danger h4, -.alert-error h4 { - color: #b55457; -} -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #3a87ad; -} -.alert-info h4 { - color: #3a87ad; -} -.alert-block { - padding-top: 14px; - padding-bottom: 14px; -} -.alert-block > p, -.alert-block > ul { - margin-bottom: 0; -} -.alert-block p + p { - margin-top: 5px; -} -.nav { - margin-left: 0; - margin-bottom: 20px; - list-style: none; -} -.nav > li > a { - display: block; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li > a > img { - max-width: none; -} -.nav > .pull-right { - float: right; -} -.nav-header { - display: block; - padding: 3px 15px; - font-size: 11px; - font-weight: bold; - line-height: 20px; - color: #999; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-transform: uppercase; -} -.nav li + .nav-header { - margin-top: 9px; -} -.nav-list { - padding-left: 15px; - padding-right: 15px; - margin-bottom: 0; -} -.nav-list > li > a, -.nav-list .nav-header { - margin-left: -15px; - margin-right: -15px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.nav-list > li > a { - padding: 3px 15px; -} -.nav-list > .active > a, -.nav-list > .active > a:hover, -.nav-list > .active > a:focus { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - background-color: #C14531; -} -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - margin-right: 2px; -} -.nav-list .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #fff; -} -.nav-tabs, -.nav-pills { - *zoom: 1; -} -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; - content: ""; - line-height: 0; -} -.nav-tabs:after, -.nav-pills:after { - clear: both; -} -.nav-tabs > li, -.nav-pills > li { - float: left; -} -.nav-tabs > li > a, -.nav-pills > li > a { - padding-right: 12px; - padding-left: 12px; - margin-right: 2px; - line-height: 14px; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - margin-bottom: -1px; -} -.nav-tabs > li > a { - padding-top: 8px; - padding-bottom: 8px; - line-height: 20px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - border-color: #eee #eee #ddd; -} -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover, -.nav-tabs > .active > a:focus { - color: #555; - background-color: #eee; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-pills > li > a { - padding-top: 8px; - padding-bottom: 8px; - margin-top: 2px; - margin-bottom: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-pills > .active > a, -.nav-pills > .active > a:hover, -.nav-pills > .active > a:focus { - color: #fff; - background-color: #C14531; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li > a { - margin-right: 0; -} -.nav-tabs.nav-stacked { - border-bottom: 0; -} -.nav-tabs.nav-stacked > li > a { - border: 1px solid #ddd; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.nav-tabs.nav-stacked > li:first-child > a { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; -} -.nav-tabs.nav-stacked > li:last-child > a { - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.nav-tabs.nav-stacked > li > a:hover, -.nav-tabs.nav-stacked > li > a:focus { - border-color: #ddd; - z-index: 2; -} -.nav-pills.nav-stacked > li > a { - margin-bottom: 3px; -} -.nav-pills.nav-stacked > li:last-child > a { - margin-bottom: 1px; -} -.nav-tabs .dropdown-menu { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} -.nav-pills .dropdown-menu { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.nav .dropdown-toggle .caret { - border-top-color: #C14531; - border-bottom-color: #C14531; - margin-top: 6px; -} -.nav .dropdown-toggle:hover .caret, -.nav .dropdown-toggle:focus .caret { - border-top-color: #842f22; - border-bottom-color: #842f22; -} -/* move down carets for tabs */ -.nav-tabs .dropdown-toggle .caret { - margin-top: 8px; -} -.nav .active .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.nav-tabs .active .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.nav > .dropdown.active > a:hover, -.nav > .dropdown.active > a:focus { - cursor: pointer; -} -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover, -.nav > li.dropdown.open.active > a:focus { - color: #fff; - background-color: #999; - border-color: #999; -} -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret, -.nav li.dropdown.open a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; - opacity: 1; - filter: alpha(opacity=100); -} -.tabs-stacked .open > a:hover, -.tabs-stacked .open > a:focus { - border-color: #999; -} -.tabbable { - *zoom: 1; -} -.tabbable:before, -.tabbable:after { - display: table; - content: ""; - line-height: 0; -} -.tabbable:after { - clear: both; -} -.tab-content { - overflow: auto; -} -.tabs-below > .nav-tabs, -.tabs-right > .nav-tabs, -.tabs-left > .nav-tabs { - border-bottom: 0; -} -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} -.tab-content > .active, -.pill-content > .active { - display: block; -} -.tabs-below > .nav-tabs { - border-top: 1px solid #ddd; -} -.tabs-below > .nav-tabs > li { - margin-top: -1px; - margin-bottom: 0; -} -.tabs-below > .nav-tabs > li > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} -.tabs-below > .nav-tabs > li > a:hover, -.tabs-below > .nav-tabs > li > a:focus { - border-bottom-color: transparent; - border-top-color: #ddd; -} -.tabs-below > .nav-tabs > .active > a, -.tabs-below > .nav-tabs > .active > a:hover, -.tabs-below > .nav-tabs > .active > a:focus { - border-color: transparent #ddd #ddd #ddd; -} -.tabs-left > .nav-tabs > li, -.tabs-right > .nav-tabs > li { - float: none; -} -.tabs-left > .nav-tabs > li > a, -.tabs-right > .nav-tabs > li > a { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; -} -.tabs-left > .nav-tabs { - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} -.tabs-left > .nav-tabs > li > a { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} -.tabs-left > .nav-tabs > li > a:hover, -.tabs-left > .nav-tabs > li > a:focus { - border-color: #eee #ddd #eee #eee; -} -.tabs-left > .nav-tabs .active > a, -.tabs-left > .nav-tabs .active > a:hover, -.tabs-left > .nav-tabs .active > a:focus { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #fff; -} -.tabs-right > .nav-tabs { - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} -.tabs-right > .nav-tabs > li > a { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} -.tabs-right > .nav-tabs > li > a:hover, -.tabs-right > .nav-tabs > li > a:focus { - border-color: #eee #eee #eee #ddd; -} -.tabs-right > .nav-tabs .active > a, -.tabs-right > .nav-tabs .active > a:hover, -.tabs-right > .nav-tabs .active > a:focus { - border-color: #ddd #ddd #ddd transparent; - *border-left-color: #fff; -} -.nav > .disabled > a { - color: #999; -} -.nav > .disabled > a:hover, -.nav > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - cursor: default; -} -.navbar { - overflow: visible; - margin-bottom: 20px; - *position: relative; - *z-index: 2; -} -.navbar-inner { - min-height: 40px; - padding-left: 20px; - padding-right: 20px; - background-color: #fafafa; - background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); - background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); - background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - border: 1px solid #d4d4d4; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - *zoom: 1; -} -.navbar-inner:before, -.navbar-inner:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-inner:after { - clear: both; -} -.navbar .container { - width: auto; -} -.nav-collapse.collapse { - height: auto; - overflow: visible; -} -.navbar .brand { - float: left; - display: block; - padding: 10px 20px 10px; - margin-left: -20px; - font-size: 20px; - font-weight: 200; - color: #777; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .brand:hover, -.navbar .brand:focus { - text-decoration: none; -} -.navbar-text { - margin-bottom: 0; - line-height: 40px; - color: #777; -} -.navbar-link { - color: #777; -} -.navbar-link:hover, -.navbar-link:focus { - color: #333; -} -.navbar .divider-vertical { - height: 40px; - margin: 0 9px; - border-left: 1px solid #f2f2f2; - border-right: 1px solid #ffffff; -} -.navbar .btn, -.navbar .btn-group { - margin-top: 5px; -} -.navbar .btn-group .btn, -.navbar .input-prepend .btn, -.navbar .input-append .btn, -.navbar .input-prepend .btn-group, -.navbar .input-append .btn-group { - margin-top: 0; -} -.navbar-form { - margin-bottom: 0; - *zoom: 1; -} -.navbar-form:before, -.navbar-form:after { - display: table; - content: ""; - line-height: 0; -} -.navbar-form:after { - clear: both; -} -.navbar-form input, -.navbar-form select, -.navbar-form .radio, -.navbar-form .checkbox { - margin-top: 5px; -} -.navbar-form input, -.navbar-form select, -.navbar-form .btn { - display: inline-block; - margin-bottom: 0; -} -.navbar-form input[type="image"], -.navbar-form input[type="checkbox"], -.navbar-form input[type="radio"] { - margin-top: 3px; -} -.navbar-form .input-append, -.navbar-form .input-prepend { - margin-top: 5px; - white-space: nowrap; -} -.navbar-form .input-append input, -.navbar-form .input-prepend input { - margin-top: 0; -} -.navbar-search { - position: relative; - float: left; - margin-top: 5px; - margin-bottom: 0; -} -.navbar-search .search-query { - margin-bottom: 0; - padding: 4px 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 1; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.navbar-static-top { - position: static; - margin-bottom: 0; -} -.navbar-static-top .navbar-inner { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; - margin-bottom: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - border-width: 0 0 1px; -} -.navbar-fixed-bottom .navbar-inner { - border-width: 1px 0 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-left: 0; - padding-right: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; - width: 100%; - *width: 99.94680851%; - width: 926px; -} -.navbar-fixed-top { - top: 0; -} -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); - box-shadow: 0 1px 10px rgba(0,0,0,.1); -} -.navbar-fixed-bottom { - bottom: 0; -} -.navbar-fixed-bottom .navbar-inner { - -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); - box-shadow: 0 -1px 10px rgba(0,0,0,.1); -} -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} -.navbar .nav.pull-right { - float: right; - margin-right: 0; -} -.navbar .nav > li { - float: left; -} -.navbar .nav > li > a { - float: none; - padding: 10px 15px 10px; - color: #777; - text-decoration: none; - text-shadow: 0 1px 0 #ffffff; -} -.navbar .nav .dropdown-toggle .caret { - margin-top: 8px; -} -.navbar .nav > li > a:focus, -.navbar .nav > li > a:hover { - background-color: transparent; - color: #333; - text-decoration: none; -} -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: #555; - text-decoration: none; - background-color: #e5e5e5; - -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -} -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-left: 5px; - margin-right: 5px; - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ededed; - background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); - background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); - border-color: #e5e5e5 #e5e5e5 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #e5e5e5; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -} -.navbar .btn-navbar:hover, -.navbar .btn-navbar:focus, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - color: #fff; - background-color: #e5e5e5; - *background-color: #d9d9d9; -} -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #cccccc \9; -} -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -} -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} -.navbar .nav > li > .dropdown-menu:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; - top: -7px; - left: 9px; -} -.navbar .nav > li > .dropdown-menu:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - position: absolute; - top: -6px; - left: 10px; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:before { - border-top: 7px solid #ccc; - border-top-color: rgba(0, 0, 0, 0.2); - border-bottom: 0; - bottom: -7px; - top: auto; -} -.navbar-fixed-bottom .nav > li > .dropdown-menu:after { - border-top: 6px solid #fff; - border-bottom: 0; - bottom: -6px; - top: auto; -} -.navbar .nav li.dropdown > a:hover .caret, -.navbar .nav li.dropdown > a:focus .caret { - border-top-color: #333; - border-bottom-color: #333; -} -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #e5e5e5; - color: #555; -} -.navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #777; - border-bottom-color: #777; -} -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.navbar .pull-right > li > .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right { - left: auto; - right: 0; -} -.navbar .pull-right > li > .dropdown-menu:before, -.navbar .nav > li > .dropdown-menu.pull-right:before { - left: auto; - right: 12px; -} -.navbar .pull-right > li > .dropdown-menu:after, -.navbar .nav > li > .dropdown-menu.pull-right:after { - left: auto; - right: 13px; -} -.navbar .pull-right > li > .dropdown-menu .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { - left: auto; - right: 100%; - margin-left: 0; - margin-right: -1px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} -.navbar-inverse .navbar-inner { - background-color: #1b1b1b; - background-image: -moz-linear-gradient(top, #222222, #111111); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); - background-image: -webkit-linear-gradient(top, #222222, #111111); - background-image: -o-linear-gradient(top, #222222, #111111); - background-image: linear-gradient(to bottom, #222222, #111111); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); - border-color: #252525; -} -.navbar-inverse .brand, -.navbar-inverse .nav > li > a { - color: #999; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.navbar-inverse .brand:hover, -.navbar-inverse .nav > li > a:hover, -.navbar-inverse .brand:focus, -.navbar-inverse .nav > li > a:focus { - color: #fff; -} -.navbar-inverse .brand { - color: #999; -} -.navbar-inverse .navbar-text { - color: #999; -} -.navbar-inverse .nav > li > a:focus, -.navbar-inverse .nav > li > a:hover { - background-color: transparent; - color: #fff; -} -.navbar-inverse .nav .active > a, -.navbar-inverse .nav .active > a:hover, -.navbar-inverse .nav .active > a:focus { - color: #fff; - background-color: #111111; -} -.navbar-inverse .navbar-link { - color: #999; -} -.navbar-inverse .navbar-link:hover, -.navbar-inverse .navbar-link:focus { - color: #fff; -} -.navbar-inverse .divider-vertical { - border-left-color: #111111; - border-right-color: #222222; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { - background-color: #111111; - color: #fff; -} -.navbar-inverse .nav li.dropdown > a:hover .caret, -.navbar-inverse .nav li.dropdown > a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #999; - border-bottom-color: #999; -} -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navbar-inverse .navbar-search .search-query { - color: #fff; - background-color: #515151; - border-color: #111111; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} -.navbar-inverse .navbar-search .search-query:-moz-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { - color: #ccc; -} -.navbar-inverse .navbar-search .search-query:focus, -.navbar-inverse .navbar-search .search-query.focused { - padding: 5px 15px; - color: #333; - text-shadow: 0 1px 0 #fff; - background-color: #fff; - border: 0; - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - outline: 0; -} -.navbar-inverse .btn-navbar { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e0e0e; - background-image: -moz-linear-gradient(top, #151515, #040404); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); - background-image: -webkit-linear-gradient(top, #151515, #040404); - background-image: -o-linear-gradient(top, #151515, #040404); - background-image: linear-gradient(to bottom, #151515, #040404); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); - border-color: #040404 #040404 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #040404; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.navbar-inverse .btn-navbar:hover, -.navbar-inverse .btn-navbar:focus, -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active, -.navbar-inverse .btn-navbar.disabled, -.navbar-inverse .btn-navbar[disabled] { - color: #fff; - background-color: #040404; - *background-color: #000000; -} -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active { - background-color: #000000 \9; -} -.breadcrumb { - padding: 8px 15px; - margin: 0 0 20px; - list-style: none; - background-color: #f5f5f5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - text-shadow: 0 1px 0 #fff; -} -.breadcrumb > li > .divider { - padding: 0 5px; - color: #ccc; -} -.breadcrumb > .active { - color: #999; -} -.pagination { - margin: 20px 0; -} -.pagination ul { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; - margin-left: 0; - margin-bottom: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -} -.pagination ul > li { - display: inline; -} -.pagination ul > li > a, -.pagination ul > li > span { - float: left; - padding: 4px 12px; - line-height: 20px; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; - border-left-width: 0; -} -.pagination ul > li > a:hover, -.pagination ul > li > a:focus, -.pagination ul > .active > a, -.pagination ul > .active > span { - background-color: #f5f5f5; -} -.pagination ul > .active > a, -.pagination ul > .active > span { - color: #999; - cursor: default; -} -.pagination ul > .disabled > span, -.pagination ul > .disabled > a, -.pagination ul > .disabled > a:hover, -.pagination ul > .disabled > a:focus { - color: #999; - background-color: transparent; - cursor: default; -} -.pagination ul > li:first-child > a, -.pagination ul > li:first-child > span { - border-left-width: 1px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.pagination ul > li:last-child > a, -.pagination ul > li:last-child > span { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.pagination-centered { - text-align: center; -} -.pagination-right { - text-align: right; -} -.pagination-large ul > li > a, -.pagination-large ul > li > span { - padding: 11px 19px; - font-size: 17.5px; -} -.pagination-large ul > li:first-child > a, -.pagination-large ul > li:first-child > span { - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.pagination-large ul > li:last-child > a, -.pagination-large ul > li:last-child > span { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.pagination-mini ul > li:first-child > a, -.pagination-small ul > li:first-child > a, -.pagination-mini ul > li:first-child > span, -.pagination-small ul > li:first-child > span { - -webkit-border-top-left-radius: 3px; - -moz-border-radius-topleft: 3px; - border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - border-bottom-left-radius: 3px; -} -.pagination-mini ul > li:last-child > a, -.pagination-small ul > li:last-child > a, -.pagination-mini ul > li:last-child > span, -.pagination-small ul > li:last-child > span { - -webkit-border-top-right-radius: 3px; - -moz-border-radius-topright: 3px; - border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - border-bottom-right-radius: 3px; -} -.pagination-small ul > li > a, -.pagination-small ul > li > span { - padding: 2px 10px; - font-size: 11.9px; -} -.pagination-mini ul > li > a, -.pagination-mini ul > li > span { - padding: 0 6px; - font-size: 10.5px; -} -.pager { - margin: 20px 0; - list-style: none; - text-align: center; - *zoom: 1; -} -.pager:before, -.pager:after { - display: table; - content: ""; - line-height: 0; -} -.pager:after { - clear: both; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #f5f5f5; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999; - background-color: #fff; - cursor: default; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop, -.modal-backdrop.fade.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.modal { - position: fixed; - top: 10%; - left: 50%; - z-index: 1050; - width: 560px; - margin-left: -280px; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.3); - *border: 1px solid #999; - /* IE6-7 */ - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; - outline: none; -} -.modal.fade { - -webkit-transition: opacity .3s linear, top .3s ease-out; - -moz-transition: opacity .3s linear, top .3s ease-out; - -o-transition: opacity .3s linear, top .3s ease-out; - transition: opacity .3s linear, top .3s ease-out; - top: -25%; -} -.modal.fade.in { - top: 10%; -} -.modal-header { - padding: 9px 15px; - border-bottom: 1px solid #eee; -} -.modal-header .close { - margin-top: 2px; -} -.modal-header h3 { - margin: 0; - line-height: 30px; -} -.modal-body { - position: relative; - overflow-y: auto; - max-height: 400px; - padding: 15px; -} -.modal-form { - margin-bottom: 0; -} -.modal-footer { - padding: 14px 15px 15px; - margin-bottom: 0; - text-align: right; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - -webkit-box-shadow: inset 0 1px 0 #fff; - -moz-box-shadow: inset 0 1px 0 #fff; - box-shadow: inset 0 1px 0 #fff; - *zoom: 1; -} -.modal-footer:before, -.modal-footer:after { - display: table; - content: ""; - line-height: 0; -} -.modal-footer:after { - clear: both; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - visibility: visible; - font-size: 11px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.8; - filter: alpha(opacity=80); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.thumbnails { - margin-left: -20px; - list-style: none; - *zoom: 1; -} -.thumbnails:before, -.thumbnails:after { - display: table; - content: ""; - line-height: 0; -} -.thumbnails:after { - clear: both; -} -.row-fluid .thumbnails { - margin-left: 0; -} -.thumbnails > li { - float: left; - margin-bottom: 20px; - margin-left: 20px; -} -.thumbnail { - display: block; - padding: 4px; - line-height: 20px; - border: 1px solid #ddd; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -a.thumbnail:hover, -a.thumbnail:focus { - border-color: #C14531; - -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -} -.thumbnail > img { - display: block; - max-width: 100%; - margin-left: auto; - margin-right: auto; -} -.thumbnail .caption { - padding: 9px; - color: #555; -} -.label, -.badge { - display: inline-block; - padding: 2px 4px; - font-size: 11.844px; - font-weight: bold; - line-height: 14px; - color: #fff; - vertical-align: baseline; - white-space: nowrap; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #999; -} -.label { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.badge { - padding-left: 9px; - padding-right: 9px; - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} -.label:empty, -.badge:empty { - display: none; -} -a.label:hover, -a.label:focus, -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-important, -.badge-important { - background-color: #b55457; -} -.label-important[href], -.badge-important[href] { - background-color: #954143; -} -.label-warning, -.badge-warning { - background-color: #f89406; -} -.label-warning[href], -.badge-warning[href] { - background-color: #c67605; -} -.label-success, -.badge-success { - background-color: #468847; -} -.label-success[href], -.badge-success[href] { - background-color: #356635; -} -.label-info, -.badge-info { - background-color: #3a87ad; -} -.label-info[href], -.badge-info[href] { - background-color: #2d6987; -} -.label-inverse, -.badge-inverse { - background-color: #333; -} -.label-inverse[href], -.badge-inverse[href] { - background-color: #1a1a1a; -} -.btn .label, -.btn .badge { - position: relative; - top: -1px; -} -.btn-mini .label, -.btn-mini .badge { - top: 0; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-ms-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.progress .bar { - width: 0%; - height: 100%; - color: #fff; - float: left; - font-size: 12px; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e90d2; - background-image: -moz-linear-gradient(top, #149bdf, #0480be); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); - background-image: -webkit-linear-gradient(top, #149bdf, #0480be); - background-image: -o-linear-gradient(top, #149bdf, #0480be); - background-image: linear-gradient(to bottom, #149bdf, #0480be); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress .bar + .bar { - -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); - box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -} -.progress-striped .bar { - background-color: #149bdf; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-danger .bar, -.progress .bar-danger { - background-color: #dd514c; - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); -} -.progress-danger.progress-striped .bar, -.progress-striped .bar-danger { - background-color: #ee5f5b; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-success .bar, -.progress .bar-success { - background-color: #5eb95e; - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(to bottom, #62c462, #57a957); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); -} -.progress-success.progress-striped .bar, -.progress-striped .bar-success { - background-color: #62c462; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-info .bar, -.progress .bar-info { - background-color: #4bb1cf; - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); -} -.progress-info.progress-striped .bar, -.progress-striped .bar-info { - background-color: #5bc0de; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-warning .bar, -.progress .bar-warning { - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); -} -.progress-warning.progress-striped .bar, -.progress-striped .bar-warning { - background-color: #fbb450; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.accordion { - margin-bottom: 20px; -} -.accordion-group { - margin-bottom: 2px; - border: 1px solid #e5e5e5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.accordion-heading { - border-bottom: 0; -} -.accordion-heading .accordion-toggle { - display: block; - padding: 8px 15px; -} -.accordion-toggle { - cursor: pointer; -} -.accordion-inner { - padding: 9px 15px; - border-top: 1px solid #e5e5e5; -} -.carousel { - position: relative; - margin-bottom: 20px; - line-height: 1; -} -.carousel-inner { - overflow: hidden; - width: 100%; - position: relative; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 40%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -20px; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #fff; - text-align: center; - background: #222; - border: 3px solid #fff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - filter: alpha(opacity=50); -} -.carousel-control.right { - left: auto; - right: 15px; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-indicators { - position: absolute; - top: 15px; - right: 15px; - z-index: 5; - margin: 0; - list-style: none; -} -.carousel-indicators li { - display: block; - float: left; - width: 10px; - height: 10px; - margin-left: 5px; - text-indent: -999px; - background-color: #ccc; - background-color: rgba(255, 255, 255, 0.25); - border-radius: 5px; -} -.carousel-indicators .active { - background-color: #fff; -} -.carousel-caption { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 15px; - background: #333; - background: rgba(0, 0, 0, 0.75); -} -.carousel-caption h4, -.carousel-caption p { - color: #fff; - line-height: 20px; -} -.carousel-caption h4 { - margin: 0 0 5px; -} -.carousel-caption p { - margin-bottom: 0; -} -.hero-unit { - padding: 60px; - margin-bottom: 30px; - font-size: 18px; - font-weight: 200; - line-height: 30px; - color: inherit; - background-color: #eee; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} -.hero-unit h1 { - margin-bottom: 0; - font-size: 60px; - line-height: 1; - color: inherit; - letter-spacing: -1px; -} -.hero-unit li { - line-height: 30px; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - background-color: #fff; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.popover-title:empty { - display: none; -} -.popover-content { - padding: 9px 14px; -} -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover .arrow { - border-width: 11px; -} -.popover .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #fff; -} -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right .arrow:after { - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; -} -.popover.bottom .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left .arrow:after { - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.hide { - display: none; -} -.show { - display: block; -} -.invisible { - visibility: hidden; -} -.affix { - position: fixed; -} -/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ -@-ms-viewport { - width: device-width; -} -.hidden { - display: none; - visibility: hidden; -} -.visible-phone { - display: none !important; -} -.visible-tablet { - display: none !important; -} -.hidden-desktop { - display: none !important; -} -.visible-desktop { - display: inherit !important; -} -@media (min-width: 768px) and (max-width: 979px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important ; - } - .visible-tablet { - display: inherit !important; - } - .hidden-tablet { - display: none !important; - } -} -@media (max-width: 767px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important; - } - .visible-phone { - display: inherit !important; - } - .hidden-phone { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: inherit !important; - } - .hidden-print { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - content: ""; - line-height: 0; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; - } - .span3 { - width: 166px; - } - .span2 { - width: 104px; - } - .span1 { - width: 42px; - } - .offset12 { - margin-left: 764px; - } - .offset11 { - margin-left: 702px; - } - .offset10 { - margin-left: 640px; - } - .offset9 { - margin-left: 578px; - } - .offset8 { - margin-left: 516px; - } - .offset7 { - margin-left: 454px; - } - .offset6 { - margin-left: 392px; - } - .offset5 { - margin-left: 330px; - } - .offset4 { - margin-left: 268px; - } - .offset3 { - margin-left: 206px; - } - .offset2 { - margin-left: 144px; - } - .offset1 { - margin-left: 82px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - content: ""; - line-height: 0; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - margin-left: 2.76243094%; - *margin-left: 2.70923945%; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.76243094%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851%; - } - .row-fluid .span11 { - width: 91.43646409%; - *width: 91.3832726%; - } - .row-fluid .span10 { - width: 82.87292818%; - *width: 82.81973669%; - } - .row-fluid .span9 { - width: 74.30939227%; - *width: 74.25620078%; - } - .row-fluid .span8 { - width: 65.74585635%; - *width: 65.69266486%; - } - .row-fluid .span7 { - width: 57.18232044%; - *width: 57.12912895%; - } - .row-fluid .span6 { - width: 48.61878453%; - *width: 48.56559304%; - } - .row-fluid .span5 { - width: 40.05524862%; - *width: 40.00205713%; - } - .row-fluid .span4 { - width: 31.49171271%; - *width: 31.43852122%; - } - .row-fluid .span3 { - width: 22.9281768%; - *width: 22.87498531%; - } - .row-fluid .span2 { - width: 14.36464088%; - *width: 14.31144939%; - } - .row-fluid .span1 { - width: 5.80110497%; - *width: 5.74791348%; - } - .row-fluid .offset12 { - margin-left: 105.52486188%; - *margin-left: 105.4184789%; - } - .row-fluid .offset12:first-child { - margin-left: 102.76243094%; - *margin-left: 102.65604796%; - } - .row-fluid .offset11 { - margin-left: 96.96132597%; - *margin-left: 96.85494299%; - } - .row-fluid .offset11:first-child { - margin-left: 94.19889503%; - *margin-left: 94.09251205%; - } - .row-fluid .offset10 { - margin-left: 88.39779006%; - *margin-left: 88.29140708%; - } - .row-fluid .offset10:first-child { - margin-left: 85.63535912%; - *margin-left: 85.52897614%; - } - .row-fluid .offset9 { - margin-left: 79.83425414%; - *margin-left: 79.72787116%; - } - .row-fluid .offset9:first-child { - margin-left: 77.0718232%; - *margin-left: 76.96544023%; - } - .row-fluid .offset8 { - margin-left: 71.27071823%; - *margin-left: 71.16433525%; - } - .row-fluid .offset8:first-child { - margin-left: 68.50828729%; - *margin-left: 68.40190431%; - } - .row-fluid .offset7 { - margin-left: 62.70718232%; - *margin-left: 62.60079934%; - } - .row-fluid .offset7:first-child { - margin-left: 59.94475138%; - *margin-left: 59.8383684%; - } - .row-fluid .offset6 { - margin-left: 54.14364641%; - *margin-left: 54.03726343%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121547%; - *margin-left: 51.27483249%; - } - .row-fluid .offset5 { - margin-left: 45.5801105%; - *margin-left: 45.47372752%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767956%; - *margin-left: 42.71129658%; - } - .row-fluid .offset4 { - margin-left: 37.01657459%; - *margin-left: 36.91019161%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414365%; - *margin-left: 34.14776067%; - } - .row-fluid .offset3 { - margin-left: 28.45303867%; - *margin-left: 28.3466557%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773%; - *margin-left: 25.58422476%; - } - .row-fluid .offset2 { - margin-left: 19.88950276%; - *margin-left: 19.78311978%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182%; - *margin-left: 17.02068884%; - } - .row-fluid .offset1 { - margin-left: 11.32596685%; - *margin-left: 11.21958387%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591%; - *margin-left: 8.45715293%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 710px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 648px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 586px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 524px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 462px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 400px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 338px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 276px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 214px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 152px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 90px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 28px; - } -} -@media (max-width: 767px) { - body { - padding-left: 20px; - padding-right: 20px; - } - .navbar-fixed-top, - .navbar-fixed-bottom, - .navbar-static-top { - margin-left: -20px; - margin-right: -20px; - } - .container-fluid { - padding: 0; - } - .dl-horizontal dt { - float: none; - clear: none; - width: auto; - text-align: left; - } - .dl-horizontal dd { - margin-left: 0; - } - .container { - width: auto; - } - .row-fluid { - width: 100%; - } - .row, - .thumbnails { - margin-left: 0; - } - .thumbnails > li { - float: none; - margin-left: 0; - } - [class*="span"], - .uneditable-input[class*="span"], - .row-fluid [class*="span"] { - float: none; - display: block; - width: 100%; - margin-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .span12, - .row-fluid .span12 { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="offset"]:first-child { - margin-left: 0; - } - .input-large, - .input-xlarge, - .input-xxlarge, - input[class*="span"], - select[class*="span"], - textarea[class*="span"], - .uneditable-input { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .input-prepend input, - .input-append input, - .input-prepend input[class*="span"], - .input-append input[class*="span"] { - display: inline-block; - width: auto; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 0; - } - .modal { - position: fixed; - top: 20px; - left: 20px; - right: 20px; - width: auto; - margin: 0; - } - .modal.fade { - top: -100px; - } - .modal.fade.in { - top: 20px; - } -} -@media (max-width: 480px) { - .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); - } - .page-header h1 small { - display: block; - line-height: 20px; - } - input[type="checkbox"], - input[type="radio"] { - border: 1px solid #ccc; - } - .form-horizontal .control-label { - float: none; - width: auto; - padding-top: 0; - text-align: left; - } - .form-horizontal .controls { - margin-left: 0; - } - .form-horizontal .control-list { - padding-top: 0; - } - .form-horizontal .form-actions { - padding-left: 10px; - padding-right: 10px; - } - .media .pull-left, - .media .pull-right { - float: none; - display: block; - margin-bottom: 10px; - } - .media-object { - margin-right: 0; - margin-left: 0; - } - .modal { - top: 10px; - left: 10px; - right: 10px; - } - .modal-header .close { - padding: 10px; - margin: -10px; - } - .carousel-caption { - position: static; - } -} -@media (max-width: 979px) { - body { - padding-top: 0; - } - .navbar-fixed-top, - .navbar-fixed-bottom { - position: static; - } - .navbar-fixed-top { - margin-bottom: 20px; - } - .navbar-fixed-bottom { - margin-top: 20px; - } - .navbar-fixed-top .navbar-inner, - .navbar-fixed-bottom .navbar-inner { - padding: 5px; - } - .navbar .container { - width: auto; - padding: 0; - } - .navbar .brand { - padding-left: 10px; - padding-right: 10px; - margin: 0 0 0 -5px; - } - .nav-collapse { - clear: both; - } - .nav-collapse .nav { - float: none; - margin: 0 0 10px; - } - .nav-collapse .nav > li { - float: none; - } - .nav-collapse .nav > li > a { - margin-bottom: 2px; - } - .nav-collapse .nav > .divider-vertical { - display: none; - } - .nav-collapse .nav .nav-header { - color: #777; - text-shadow: none; - } - .nav-collapse .nav > li > a, - .nav-collapse .dropdown-menu a { - padding: 9px 15px; - font-weight: bold; - color: #777; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - } - .nav-collapse .btn { - padding: 4px 10px 4px; - font-weight: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .nav-collapse .dropdown-menu li + li a { - margin-bottom: 2px; - } - .nav-collapse .nav > li > a:hover, - .nav-collapse .nav > li > a:focus, - .nav-collapse .dropdown-menu a:hover, - .nav-collapse .dropdown-menu a:focus { - background-color: #f2f2f2; - } - .navbar-inverse .nav-collapse .nav > li > a, - .navbar-inverse .nav-collapse .dropdown-menu a { - color: #999; - } - .navbar-inverse .nav-collapse .nav > li > a:hover, - .navbar-inverse .nav-collapse .nav > li > a:focus, - .navbar-inverse .nav-collapse .dropdown-menu a:hover, - .navbar-inverse .nav-collapse .dropdown-menu a:focus { - background-color: #111111; - } - .nav-collapse.in .btn-group { - margin-top: 5px; - padding: 0; - } - .nav-collapse .dropdown-menu { - position: static; - top: auto; - left: auto; - float: none; - display: none; - max-width: none; - margin: 0 15px; - padding: 0; - background-color: transparent; - border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - } - .nav-collapse .open > .dropdown-menu { - display: block; - } - .nav-collapse .dropdown-menu:before, - .nav-collapse .dropdown-menu:after { - display: none; - } - .nav-collapse .dropdown-menu .divider { - display: none; - } - .nav-collapse .nav > li > .dropdown-menu:before, - .nav-collapse .nav > li > .dropdown-menu:after { - display: none; - } - .nav-collapse .navbar-form, - .nav-collapse .navbar-search { - float: none; - padding: 10px 15px; - margin: 10px 0; - border-top: 1px solid #f2f2f2; - border-bottom: 1px solid #f2f2f2; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - } - .navbar-inverse .nav-collapse .navbar-form, - .navbar-inverse .nav-collapse .navbar-search { - border-top-color: #111111; - border-bottom-color: #111111; - } - .navbar .nav-collapse .nav.pull-right { - float: none; - margin-left: 0; - } - .nav-collapse, - .nav-collapse.collapse { - overflow: hidden; - height: 0; - } - .navbar .btn-navbar { - display: block; - } - .navbar-static .navbar-inner { - padding-left: 10px; - padding-right: 10px; - } -} -@media (min-width: 979px + 1) { - .nav-collapse.collapse { - height: auto !important; - overflow: visible !important; - } -} -.break-word { - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.tag { - display: inline-block; - margin-bottom: 4px; - color: #111; - background-color: #f6f6f6; - padding: 1px 10px; - border: 1px solid #dddddd; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} -a.tag:hover { - text-decoration: none; - color: #fff; - background-color: #d36452; - border: 1px solid #c14531; - -webkit-box-shadow: inset 0 1px 0 #dd887b; - -moz-box-shadow: inset 0 1px 0 #dd887b; - box-shadow: inset 0 1px 0 #dd887b; -} -.pill { - display: inline-block; - background-color: #6f8890; - color: #FFF; - padding: 2px 10px 1px 10px; - margin-right: 5px; - font-weight: normal; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.pill a { - color: #FFF; -} -.pill a.remove { - font-size: 11px; -} -.unstyled { - margin: 0; - list-style: none; -} -.simple-item { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-item:last-of-type { - border-bottom: 0; -} -.simple-list { - *zoom: 1; - margin: 0; - list-style: none; -} -.simple-list:before, -.simple-list:after { - display: table; - content: ""; - line-height: 0; -} -.simple-list:after { - clear: both; -} -.simple-list > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.simple-list > li:last-of-type { - border-bottom: 0; -} -.simple-list .ckan-icon { - position: relative; - top: 0px; -} -.module-narrow .simple-list > li { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.listing li { - text-align: right; - margin-bottom: 5px; -} -.listing .key { - clear: right; - font-weight: bold; -} -.js .tab-content { - display: none; -} -.js .tab-content.active { - display: block; -} -.box { - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); -} -.module { - margin: 20px 0; -} -.module-heading { - *zoom: 1; - margin: 0; - padding: 7px 25px; - font-size: 14px; - line-height: 1.3; - background-color: #f6f6f6; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} -.module-heading:before, -.module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.module-heading:after { - clear: both; -} -.module-content { - padding: 0 25px; - margin: 20px 0; -} -@media (min-width: 768px) { - .span9 div.module-content { - padding-left: 10px; - } -} -.module-content:first-child { - margin-top: 0; - padding-top: 20px; -} -.module-content:last-child { - margin-bottom: 0; - padding-bottom: 20px; -} -.module-content > :last-child { - margin-bottom: 0; -} -.module:first-child .module-heading { - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; - border-top-width: 0; -} -.module:last-child { - margin-bottom: 20px; -} -.module-footer { - padding: 7px 25px 7px; - margin: 0; - border-top: 1px dotted #ddd; -} -.module .read-more { - font-weight: bold; - color: #000; -} -.module-content .pagination { - margin-left: -25px; - margin-right: -25px; - margin-bottom: -20px; -} -.module .pagination > ul { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border: 0; -} -.module .pagination li a { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - padding-top: 7px; - padding-bottom: 7px; -} -.module .pagination li:first-child a, -.module .pagination li:last-child a { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.module-content-shallow { - padding: 0; - margin-top: 10px; - padding-bottom: 10px; -} -.module h1 { - margin-bottom: 20px; -} -.module-shallow .module-content { - padding: 10px; - margin: 0; -} -.module-shallow .module-tags { - margin-top: 0; - margin-bottom: 0; -} -.module-shallow .module-content:first-child { - padding-top: 10px; -} -.module-shallow .module-content:last-child { - padding-bottom: 10px; -} -.module-narrow .module-heading, -.module-narrow .module-content, -.module-narrow .module-footer { - padding-left: 15px; - padding-right: 15px; -} -.module-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.module-grid:before, -.module-grid:after { - display: table; - content: ""; - line-height: 0; -} -.module-grid:after { - clear: both; -} -.module-item { - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - float: left; - margin-left: 20px; - width: 460px; - padding-top: 10px; - padding-bottom: 10px; - padding-right: 50px; - overflow: hidden; - position: relative; -} -.module-item span.count { - color: #999; -} -.module-item .media-image { - margin-bottom: 5px; -} -.module-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.module-item:hover { - z-index: 1; -} -.module-item:hover .media-edit { - opacity: 1; -} -.module-item.first { - clear: left; -} -.group .content img { - margin: 0 -5px 5px; - max-width: initial; -} -.group .content h3 { - font-size: 14px; - line-height: 1.3; -} -.group-listing { - margin-left: -20px; -} -.ckanext-datapreview { - position: relative; - clear: both; - padding-top: 15px; - margin-top: 0; -} -.ckanext-datapreview > iframe { - min-height: 650px; -} -.ckanext-datapreview > img { - max-height: 500px; - max-width: 100%; - overflow: hidden; -} -.package-info h4 { - margin-bottom: 10px; -} -.module-resource { - background-color: #fff; - border-bottom: 1px solid #ddd; - margin-top: 0; - margin-bottom: 0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.module-resource .actions { - position: relative; - float: right; - top: -10px; - right: -15px; -} -.module .module-tags { - padding-bottom: 8px; -} -.secondary .module:first-child, -.primary .module:first-child { - margin-top: 0; -} -.no-nav .module:last-child { - margin-top: 0; -} -.module-image { - float: left; - width: 50px; - height: 50px; - line-height: 50px; - text-align: center; - margin-right: 15px; -} -.module-image img { - max-width: 50px; - max-height: 50px; - vertical-align: middle; -} -.banner { - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transform-origin: center center; - -moz-transform-origin: center center; - -ms-transform-origin: center center; - -o-transform-origin: center center; - transform-origin: center center; - position: absolute; - top: 15px; - right: -35px; - width: 80px; - color: #fff; - background-color: #C14531; - padding: 1px 20px; - font-size: 11px; - text-align: center; - text-transform: uppercase; -} -.media-grid { - margin: 0; - list-style: none; - *zoom: 1; - margin: 0 -25px; - padding-bottom: 15px; - background: #fbfbfb url("../../../base/images/bg.png"); - border: 1px solid #ddd; - border-width: 1px 0; -} -.media-grid:before, -.media-grid:after { - display: table; - content: ""; - line-height: 0; -} -.media-grid:after { - clear: both; -} -@media (min-width: 768px) { - .media-grid { - margin-left: -27px; - } - .module-content .wide .media-grid { - margin-left: -25px; - } -} -.media-item { - position: relative; - float: left; - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-item span.count { - color: #999; -} -.media-item .media-image { - margin-bottom: 5px; -} -.media-item .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; -} -.media-item:hover { - z-index: 1; -} -.media-item:hover .media-edit { - opacity: 1; -} -.media-view { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid #ddd; - overflow: hidden; - -webkit-transition: all 0.2s ease-in; - -moz-transition: all 0.2s ease-in; - -o-transition: all 0.2s ease-in; - transition: all 0.2s ease-in; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.media-view:hover, -.media-view.hovered { - border-color: #C14531; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); -} -.media-view:hover .banner, -.media-view.hovered .banner { - background-color: #C14531; -} -.media-view span { - display: none; -} -.media-view .banner { - display: block; - background-color: #b7b7b7; - -webkit-transition: background-color 0.2s ease-in; - -moz-transition: background-color 0.2s ease-in; - -o-transition: background-color 0.2s ease-in; - transition: background-color 0.2s ease-in; -} -.media-image { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.media-heading { - font-size: 18px; - line-height: 1.3; - margin: 5px 0; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.media-overlay { - position: relative; - min-height: 35px; -} -.media-overlay .media-heading { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 12px 10px; - margin: 0; - background-color: #000; - background-color: rgba(0, 0, 0, 0.8); - font-size: 13px; - color: #fff; - z-index: 1; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.media-overlay .media-image { - float: none; - display: block; - margin-right: 0; -} -.media-item.is-expander .truncator-link { - -webkit-transition: opacity 0.2s ease-in; - -moz-transition: opacity 0.2s ease-in; - -o-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; - position: absolute; - z-index: 10; - left: 15px; - bottom: 15px; - opacity: 0; -} -.media-item.is-expander:hover { - padding-bottom: 35px; -} -.media-item.is-expander:hover .truncator-link { - opacity: 1; -} -.wide .media-item { - width: 186px; -} -.nav-simple, -.nav-aside { - *zoom: 1; - margin: 0; - list-style: none; - padding-bottom: 0; -} -.nav-simple:before, -.nav-aside:before, -.nav-simple:after, -.nav-aside:after { - display: table; - content: ""; - line-height: 0; -} -.nav-simple:after, -.nav-aside:after { - clear: both; -} -.nav-simple > li, -.nav-aside > li { - font-size: 12px; - line-height: 1.16666667em; - padding: 7px 25px; - border-bottom: 1px dotted #ddd; -} -.nav-simple > li:last-of-type, -.nav-aside > li:last-of-type { - border-bottom: 0; -} -.nav-simple .ckan-icon, -.nav-aside .ckan-icon { - position: relative; - top: 0px; -} -.nav-aside { - border-top: 1px dotted #DDD; - border-bottom: 1px dotted #DDD; - margin-bottom: 15px; -} -.nav-item > a, -.nav-aside li a { - color: #333; - font-size: 14px; - line-height: 20px; - margin: -7px -25px; - padding: 7px 25px; -} -.nav-item.active, -.nav-aside li.active { - background-color: #f6f6f6; -} -.nav-item.active > a, -.nav-aside li.active a { - position: relative; - color: #FFF; - background-color: #8CA0A6; -} -.nav-item.active > a:hover, -.nav-aside li.active a:hover { - color: #FFF; - background-color: #8CA0A6; -} -@media (min-width: 768px) { - .nav-item.active > a:before, - .nav-aside li.active a:before { - content: ' '; - position: absolute; - top: 0; - right: -6px; - width: 6px; - height: 34px; - background-image: url("../../../base/images/nav-active.png?1"); - } -} -.nav-item.active > a span, -.nav-aside li.active a span { - white-space: nowrap; - overflow: hidden; - display: block; -} -.module-narrow .nav-item > a, -.module-narrow .nav-aside li a { - padding-left: 15px; - padding-right: 15px; - position: relative; -} -.module-narrow .nav-item.image, -.module-narrow .nav-aside li.image { - position: relative; -} -.module-narrow .nav-item.image > a, -.module-narrow .nav-aside li.image a { - padding-left: 42px; - padding-right: 42px; -} -.module-narrow .nav-item.image > img, -.module-narrow .nav-aside li.image img { - position: absolute; - top: 50%; - left: 15px; - width: 20px; - height: 20px; - margin-top: -10px; - z-index: 2; -} -.nav-facet .nav-item > a:hover:after, -.nav-facet .nav-item.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-facet .nav-item > a:hover:after { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.nav-facet .nav-item.active > a:after { - width: 17px; - height: 17px; - background-position: 0px -16px; - right: 3px; -} -.user-list { - margin: 0; - list-style: none; -} -.user-list li { - margin: 0 0 10px 0; -} -.user-list .gravatar { - vertical-align: -4px; - margin-right: 3px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.nav-facet-tertiary { - margin: 10px 0; -} -.nav-facet-tertiary .module-heading { - margin-bottom: 5px; - padding: 8px 12px; - border-bottom-width: 0; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.nav-facet-tertiary .module-heading i { - display: none; -} -.nav-facet-tertiary .module-footer { - padding: 8px 12px; - border-top-width: 0; -} -.nav-facet-tertiary .module-footer a { - font-weight: normal; - color: #8C8C8C; -} -.nav-facet-tertiary .nav { - margin-bottom: 0; -} -.nav-facet-tertiary .module-content.empty { - padding: 8px 12px; - margin-top: 0; -} -.nav-facet-tertiary .nav li.active { - position: relative; -} -.nav-facet-tertiary .nav li.active > a:hover:after, -.nav-facet-tertiary .nav li.active > a:after { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - width: 17px; - height: 17px; - background-position: 0px -16px; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} -.nav-simple > .nav-btn { - padding-left: 0; - padding-right: 0; - text-align: center; -} -.nav-simple > .nav-btn .btn { - display: inline-block; -} -.js .js-hide { - display: none; -} -.js .js-hide.active { - display: block; -} -.btn, -label { - font-weight: bold; -} -.btn-rounded { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - padding-left: 15px; - padding-right: 15px; -} -label { - cursor: pointer; - font-size: 14px; -} -label:after { - content: ":"; -} -label.radio:after, -label.checkbox:after { - content: ""; -} -input[type=radio], -input[type=checkbox] { - position: relative; - top: 7px; - padding: 0; - margin: 0; -} -input[type=radio].checkbox-onown, -input[type=checkbox].checkbox-onown { - top: 0; -} -select { - padding: 4px; -} -textarea { - max-width: 100%; -} -.control-group .btn { - position: relative; - top: -2px; -} -.control-full input, -.control-full select, -.control-full textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - height: auto; - width: 100%; -} -.control-medium input, -.control-medium select, -.control-medium textarea { - width: 320px; -} -@media (max-width: 768px) { - .control-medium input, - .control-medium select, - .control-medium textarea { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-large input, -.control-large .control-label { - font-size: 17.5px; - line-height: 30px; -} -.control-large input { - height: 41px; -} -.control-required { - color: #c6898b; -} -.form-actions .control-required-message { - float: left; - margin-left: 20px; - margin-bottom: 0; - line-height: 30px; -} -.form-actions .control-required-message:first-child { - margin-left: 0; -} -.form-actions { - background: none; - margin-left: -25px; - margin-right: -25px; - margin-bottom: 0; - padding-bottom: 0; -} -@media (min-width: 768px) { - .form-actions { - text-align: right; - } -} -.form-actions .action-info { - line-height: 2; - text-align: left; - color: #707070; - margin: 0; -} -@media (min-width: 768px) { - .form-actions .action-info { - float: left; - width: 50%; - } -} -.form-actions .action-info.small { - font-size: 11px; - line-height: 1.2; -} -@media (max-width: 768px) { - .form-actions .btn { - margin-top: 5px; - } -} -.form-horizontal .control-label { - width: 120px; -} -@media (min-width: 768px) { - .form-horizontal .controls { - margin-left: 130px; - } -} -.form-horizontal .info-block { - position: relative; - display: block; - font-size: 11px; - color: #aaa; - line-height: 1.3; - margin-top: 6px; -} -.form-horizontal .info-help { - padding: 6px 0; -} -.form-horizontal .info-help:before { - display: none; -} -.form-horizontal .info-help-tight { - margin-top: -10px; -} -@media (min-width: 980px) { - .form-horizontal .info-block { - padding: 6px 0 6px 0; - } - .form-horizontal .info-inline { - float: right; - width: 265px; - margin-top: 0; - padding-bottom: 0; - } -} -.form-horizontal .control-medium .info-block.info-inline { - width: 165px; -} -.form-horizontal .info-block:before { - font-size: 2.2em; - position: absolute; - left: 0; - top: 2px; -} -.form-horizontal .info-inline:before { - top: 8px; -} -.info-block .icon-large, -.info-inline .icon-large { - float: left; - font-size: 22px; - margin-right: 15px; -} -.form-horizontal .info-block a { - color: #aaa; - text-decoration: underline; -} -.form-horizontal .form-actions { - padding-left: 25px; - padding-right: 25px; -} -.form-inline input { - padding-bottom: 9px; -} -.form-inline select { - margin-top: 0; -} -.form-inline .btn { - margin-left: 5px; -} -.form-narrow label { - margin-bottom: 0; -} -.form-narrow select { - width: 100%; -} -.form-narrow .form-actions { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px 0; -} -.form-select label { - margin-right: 5px; -} -.simple-input label, -.simple-input button { - display: none; -} -.simple-input .field { - position: relative; -} -.simple-input .field-bordered { - border-bottom: 1px dotted #ddd; -} -.simple-input .field input { - width: 100%; - height: auto; - margin: 0 -7px; - padding: 7px 5px; -} -.simple-input .field .btn-search { - position: absolute; - display: block; - height: 17px; - width: 17px; - padding: 0; - top: 50%; - right: 0; - margin-top: -10px; - background-color: transparent; - border: none; - color: #999; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.simple-input .field .btn-search:hover { - color: #000; -} -.editor textarea { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - border-bottom: none; -} -.editor .editor-info-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - float: none; - padding: 4px 10px; - background: #ebebeb; - width: auto; - border: 1px solid #ccc; - border-top: none; - font-size: 11px; - color: #282828; -} -.editor .editor-info-block a { - color: #C14531; - text-decoration: none; -} -@media (max-width: 768px) { - [data-module="custom-fields"] .input-prepend .add-on { - display: block; - } -} -@media (max-width: 480px) { - [data-module="custom-fields"] .input-prepend { - width: 100%; - } - [data-module="custom-fields"] .control-custom input { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 28px; - } -} -.control-custom { - font-size: 0; -} -.control-custom label { - margin-bottom: 0; -} -.control-custom input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - width: 140px; -} -.control-custom input:last-of-type { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.control-custom .checkbox { - display: inline-block; - margin-left: 5px; -} -.control-custom .checkbox input { - width: auto; -} -.control-custom.disabled label, -.control-custom.disabled input { - color: #aaa; - text-decoration: line-through; - text-shadow: none; -} -.control-custom.disabled input { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - background-color: #f3f3f3; -} -.control-custom.disabled .checkbox { - color: #444; - text-decoration: none; -} -.control-custom .checkbox.btn { - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - position: relative; - top: 0; - left: 5px; - height: 1px; - width: 9px; - padding: 3px 8px; - line-height: 18px; -} -.control-custom .checkbox.btn span { - display: none; - width: 30px; -} -.control-custom .checkbox.btn:before { - position: relative; - top: 1px; - left: -1px; - color: #fff; -} -.control-custom .checkbox.btn input { - display: none; -} -.control-custom.disabled .checkbox.btn { - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #cc5845; - background-image: -moz-linear-gradient(top, #d36452, #C14531); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d36452), to(#C14531)); - background-image: -webkit-linear-gradient(top, #d36452, #C14531); - background-image: -o-linear-gradient(top, #d36452, #C14531); - background-image: linear-gradient(to bottom, #d36452, #C14531); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd36452', endColorstr='#ffc14531', GradientType=0); - border-color: #C14531 #C14531 #842f22; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - *background-color: #C14531; - /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.control-custom.disabled .checkbox.btn:hover, -.control-custom.disabled .checkbox.btn:focus, -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active, -.control-custom.disabled .checkbox.btn.disabled, -.control-custom.disabled .checkbox.btn[disabled] { - color: #fff; - background-color: #C14531; - *background-color: #ad3e2c; -} -.control-custom.disabled .checkbox.btn:active, -.control-custom.disabled .checkbox.btn.active { - background-color: #983627 \9; -} -.control-custom.disabled .checkbox.btn .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.alert-danger a, -.alert-error a { - color: #b55457; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea, -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - border-color: #c6898b; -} -.error-inline { - color: #b55457; -} -.error-block, -.error-inline { - font-size: 12px; -} -.error-block { - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - display: block; - padding: 6px 8px 3px; - background: #c6898b; - margin: -3px 0 0; - color: #fff; - width: 208px; -} -.control-medium .error-block { - width: 318px; -} -.control-full .error-block { - width: auto; -} -.control-group.error .input-prepend .error-block, -.control-custom.error .error-block { - width: auto; -} -.control-custom.error .error-block { - width: 401px; -} -.control-select.error .error-block { - width: 196px; -} -.stages { - margin: 0; - list-style: none; - *zoom: 1; - color: #aeaeae; - counter-reset: stage; - margin: -20px -25px 20px; - overflow: hidden; -} -.stages:before, -.stages:after { - display: table; - content: ""; - line-height: 0; -} -.stages:after { - clear: both; -} -.stages li { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - line-height: 27px; - counter-increment: stage; - width: 50%; - background-color: #EDEDED; - float: left; - padding: 10px 20px; - position: relative; - z-index: 0; -} -.stages li:before { - -webkit-border-radius: 14px; - -moz-border-radius: 14px; - border-radius: 14px; - content: counter(stage); - display: inline-block; - width: 27px; - height: 27px; - margin-right: 5px; - font-weight: bold; - text-align: center; - color: #fff; - background-color: #aeaeae; - z-index: 1; -} -.stages li:after { - left: 0; - border: solid rgba(237, 237, 237, 0); - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-top-color: #EDEDED; - border-bottom-color: #EDEDED; - border-width: 29px; - top: 50%; - margin-top: -29px; - margin-left: -30px; -} -.stages li.last { - position: relative; - right: -1px; -} -.stages li.last, -.stages li.last .highlight { - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.stages li.first:after { - content: none; - border: none; -} -.stages li.active:after { - border-color: rgba(140, 198, 138, 0); - border-top-color: #8cc68a; - border-bottom-color: #8cc68a; -} -.stages li.complete:after { - border-color: rgba(197, 226, 196, 0); - border-top-color: #c5e2c4; - border-bottom-color: #c5e2c4; -} -.stages.stage-3 li.complete:first-child:after { - content: none; -} -.stages li.active, -.stages li.complete { - background: none; -} -.stages li.active:before { - color: #8cc68a; - background: #fff; -} -.stages li.complete:before { - color: #c5e2c4; - background: #eef6ed; -} -.stages li .highlight { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - padding: 10px 52px; - border: none; - text-align: left; - text-decoration: none; - line-height: 27px; - z-index: -1; -} -@media (max-width: 768px) { - .stages li .highlight { - text-indent: -9999px; - } -} -.stages li.active .highlight { - color: #fff; - background: #8cc68a; -} -.stages li.complete .highlight { - color: #eef6ed; - background: #c5e2c4; -} -.alert > :last-child { - margin-bottom: 0; -} -.slug-preview { - font-size: 14px; - line-height: 1.5; - margin-top: 5px; - margin-left: 10px; -} -.slug-preview-value { - background-color: #faedcf; - margin-right: 3px; -} -.resource-upload-field { - position: relative; - overflow: hidden; - display: inline-block; - vertical-align: bottom; -} -.resource-upload-field label { - z-index: 0; -} -.resource-upload-field input { - opacity: 0; - filter: alpha(opacity=0); - position: absolute; - top: 0; - right: 0; - z-index: 1; - margin: 0; - border: solid transparent; - border-width: 100px 0 0 200px; - cursor: pointer; - direction: ltr; - -moz-transform: translate(-300px, 0) scale(4); -} -.resource-upload-field.loading { - display: inline-block; - background: url("../../../base/images/loading-spinner.gif") no-repeat center right; - padding-right: 5px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - font-size: 14px; -} -.select2-container-multi .select2-choices .select2-search-field input { - height: 29px; -} -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - padding-left: 10px; -} -.select2-container { - margin-top: 1px; -} -.select2-container-multi { - margin-top: 0; -} -.select2-container-multi .select2-choices .select2-search-choice { - padding: 5px 8px 5px 22px; -} -.select2-container-multi.select2-container .select2-choices { - padding-top: 3px; - padding-bottom: 3px; -} -.select2-search-choice-close, -.select2-container-multi .select2-search-choice-close { - top: 6px; - left: 5px; -} -.select2-container-multi .select2-choices { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; - background-color: #fff; - border: 1px solid #ccc; -} -.select2-container-active .select2-choices, -.select2-container-multi.select2-container-active .select2-choices { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -} -.select2-container-multi .select2-drop { - margin-top: -2px; -} -.select2-container .select2-results li { - line-height: 18px; - padding-top: 4px; - padding-bottom: 4px; -} -.control-full .select2-container { - max-width: 100%; -} -.control-group.error .select2-container input:focus, -.control-group.error .select2-container select:focus, -.control-group.error .select2-container textarea:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.js .image-upload #field-image-url { - padding-right: 90px; -} -.js .image-upload #field-image-upload { - cursor: pointer; - position: absolute; - z-index: 1; - opacity: 0; - filter: alpha(opacity=0); -} -.js .image-upload .controls { - position: relative; -} -.js .image-upload .btn { - position: relative; - top: 0; - margin-right: 10px; -} -.js .image-upload .btn.hover { - color: #333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.js .image-upload .btn-remove-url { - position: absolute; - margin-right: 0; - top: 4px; - right: 5px; - padding: 0 12px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.js .image-upload .btn-remove-url .icon-remove { - margin-right: 0; -} -.add-member-form .control-label { - width: 100%; - text-align: left; -} -.add-member-form .controls { - margin-left: auto; -} -.add-member-or { - float: left; - margin-top: 75px; - width: 7%; - text-align: center; - text-transform: uppercase; - color: #999; - font-weight: bold; -} -.add-member-form .row-fluid .control-group { - float: left; - width: 45%; -} -.add-member-form .row-fluid .select2-container, -.add-member-form .row-fluid input { - width: 100% !important; -} -#recaptcha_table { - table-layout: inherit; - line-height: 1; -} -.dataset-item { - border-bottom: 1px dotted #ddd; - padding-bottom: 20px; - margin-bottom: 20px; -} -@media (max-width: 768px) { - .dataset-item { - word-wrap: break-word; - } -} -.dataset-item:last-of-type { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} -.dataset-heading { - font-size: 16px; - margin-top: 0; - margin-bottom: 8px; - line-height: 1.3; -} -.dataset-heading a { - color: #333; -} -.dataset-heading .label { - position: relative; - top: -1px; -} -.dataset-private { - margin-right: 10px; - text-transform: uppercase; -} -.dataset-private .icon-lock { - width: 9px; -} -.dataset-private.pull-right { - margin-right: 0; -} -.dataset-resources { - margin-top: 8px; -} -.dataset-resources li { - display: inline; -} -.dataset-resources li a { - background-color: #aaa; -} -.dataset-heading .popular { - top: 0; -} -.resource-list { - margin: 0; - list-style: none; - margin: -10px -10px 10px -10px; -} -.resource-item { - position: relative; - padding: 10px 10px 10px 60px; - margin-bottom: 0px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.resource-item:hover { - background-color: #eee; -} -.resource-item .heading { - color: #000; - font-size: 14px; - font-weight: bold; -} -.resource-item .format-label { - position: absolute; - top: 10px; - left: 10px; -} -.resource-item .description { - font-size: 12px; - margin-bottom: 0; - min-height: 12px; -} -.resource-item .btn-group { - position: absolute; - top: 14px; - right: 10px; -} -@media (max-width: 768px) { - .resource-item .btn-group { - display: none; - } -} -.resource-list.reordering .resource-item { - border: 1px solid #ddd; - margin-bottom: 10px; - cursor: move; -} -.resource-list.reordering .resource-item .handle { - display: block; - position: absolute; - color: #888; - left: -31px; - top: 50%; - margin-top: -15px; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - border: 1px solid #ddd; - border-width: 1px 0 1px 1px; - background-color: #fff; - -webkit-border-radius: 20px 0 0 20px; - -moz-border-radius: 20px 0 0 20px; - border-radius: 20px 0 0 20px; -} -.resource-list.reordering .resource-item .handle:hover { - text-decoration: none; -} -.resource-list.reordering .resource-item:hover .handle { - background-color: #eee; -} -.resource-list.reordering .resource-item.ui-sortable-helper { - background-color: #eee; - border: 1px solid #C14531; -} -.resource-list.reordering .resource-item.ui-sortable-helper .handle { - background-color: #eee; - border-color: #C14531; - color: #333; -} -.resource-item .handle { - display: none; -} -.tag-list { - margin: 0; - list-style: none; - padding: 10px 10px 5px 10px; -} -.tag-list li { - display: inline-block; - margin-right: 5px; -} -.tag-list li:last-child { - margin-right: 0; -} -.additional-info td, -.additional-info th { - width: 50%; -} -.label[data-format=html], -.label[data-format*=html] { - background-color: #55a1ce; -} -.label[data-format=json], -.label[data-format*=json] { - background-color: #ef7100; -} -.label[data-format=xml], -.label[data-format*=xml] { - background-color: #ef7100; -} -.label[data-format=text], -.label[data-format*=text] { - background-color: #74cbec; -} -.label[data-format=csv], -.label[data-format*=csv] { - background-color: #dfb100; -} -.label[data-format=xls], -.label[data-format*=xls] { - background-color: #2db55d; -} -.label[data-format=zip], -.label[data-format*=zip] { - background-color: #686868; -} -.label[data-format=api], -.label[data-format*=api] { - background-color: #ec96be; -} -.label[data-format=pdf], -.label[data-format*=pdf] { - background-color: #e0051e; -} -.label[data-format=rdf], -.label[data-format*=rdf], -.label[data-format*=nquad], -.label[data-format*=ntriples], -.label[data-format*=turtle] { - background-color: #0b4498; -} -.view-list { - margin: 0; - list-style: none; -} -.view-list li { - position: relative; - margin-bottom: 10px; -} -.view-list li a { - display: block; - min-height: 50px; - padding: 10px; - border: 1px solid #ddd; - overflow: hidden; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon { - float: left; - width: 50px; - height: 50px; - overflow: hidden; - margin-right: 10px; - color: #444; - background-color: #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.view-list li a .icon i { - display: block; - text-align: center; - font-size: 28px; - line-height: 50px; -} -.view-list li a h3 { - color: #000; - font-weight: bold; - font-size: 16px; - margin: 0 0 3px 0; -} -.view-list li a p { - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: #444; -} -.view-list li a.active, -.view-list li a:hover { - text-decoration: none; - border-color: #C14531; -} -.view-list li a.active .icon, -.view-list li a:hover .icon { - background-color: #C14531; - color: #f6f6f6; -} -.view-list li .arrow { - position: absolute; - display: none; - border: 8px solid transparent; - border-top-color: #C14531; - left: 50%; - bottom: -15px; - margin-left: -4px; -} -.view-list li.active a { - text-decoration: none; - border-color: #C14531; -} -.view-list li.active a .icon { - background-color: #C14531; - color: #f6f6f6; -} -.view-list li.active .arrow { - display: block; -} -.view-list.stacked { - overflow-y: hidden; - overflow-x: auto; - height: 100px; - white-space: nowrap; -} -.view-list.stacked li { - display: inline-block; - width: 250px; - margin-right: 10px; -} -.view-list.stacked li:last-child { - margin-right: 0; -} -.view-list.stacked::-webkit-scrollbar { - width: 7px; - height: 7px; -} -.view-list.stacked::-webkit-scrollbar-track { - border-radius: 10px; - background-color: #f6f6f6; -} -.view-list.stacked::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #c3c3c3; -} -.view-list.stacked::-webkit-scrollbar-thumb:hover { - background-color: #C14531; -} -.resource-view { - margin-top: 20px; -} -.search-form { - margin-bottom: 20px; - padding-bottom: 25px; - border-bottom: 1px dotted #ddd; -} -.search-form .search-input { - position: relative; - margin-bottom: 20px; -} -.search-form .search-input input { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - width: 100%; - height: auto; -} -.search-form .search-input button { - cursor: pointer; - display: block; - position: absolute; - top: 50%; - margin-top: 1px; - right: 10px; - height: 20px; - padding: 0; - border: none; - background: transparent; -} -.search-form .search-input button span { - display: none; -} -.search-form .search-input button i { - color: #ccc; - -webkit-transition: color 0.2s ease-in; - -moz-transition: color 0.2s ease-in; - -o-transition: color 0.2s ease-in; - transition: color 0.2s ease-in; -} -.search-form .search-input button:hover i { - color: #000; -} -.search-form .search-input.search-giant input { - font-size: 16px; - padding: 15px; -} -.search-form .search-input.search-giant button { - margin-top: -4px; - right: 15px; - height: 30px; -} -.search-form .search-input.search-giant button i { - font-size: 28px; - width: 28px; -} -.search-form .control-order-by label, -.search-form .control-order-by select { - display: inline; -} -.search-form .control-order-by select { - width: 160px; - margin: 0; -} -.search-form h2 { - font-size: 24px; - line-height: 1.3; - color: #000; - margin-bottom: 0; - margin-top: 20px; -} -.search-form .filter-list { - color: #444; - line-height: 32px; - margin: 10px 0 0 0; -} -.search-form .filter-list .pill { - line-height: 21px; -} -.search-form .filter-list .extra { - margin-top: 10px; - font-size: 18px; - font-weight: normal; - color: #000; -} -.search-form.no-bottom-border { - border-bottom-width: 0; - margin-bottom: 0; -} -.tertiary .control-order-by { - float: none; - margin: 0; -} -.tertiary .control-order-by label { - display: block; - margin-bottom: 5px; - font-weight: normal; - font-size: 12px; -} -.tertiary .control-order-by select { - display: block; - font-size: 12px; - width: 100%; -} -.tertiary .search-input { - margin-bottom: 10px; -} -@media (min-width: 980px) { - .search-form .control-order-by { - float: right; - margin-left: 15px; - } - .tertiary .search-form .control-order-by { - float: none; - margin: 0; - } -} -.group .media-vertical .image { - margin: 0 -5px 5px; -} -.group-list:nth-child(odd) { - clear: left; -} -.group-list .module-heading { - padding-top: 15px; - padding-bottom: 15px; -} -.group-list .dataset-content { - min-height: 54px; -} -.group-list .module-heading h3 { - margin-bottom: 2px; -} -.group-list .module-heading h3 a { - color: #333; -} -.group-list .module-heading .media-image { - overflow: hidden; - max-height: 60px; -} -.group-list .module-heading .media-image img { - max-width: 85px; -} -.toolbar { - *zoom: 1; - position: relative; - margin-bottom: 10px; - padding: 5px 0; -} -.toolbar:before, -.toolbar:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar:after { - clear: both; -} -.page_primary_action { - margin-bottom: 20px; -} -.toolbar .breadcrumb { - *zoom: 1; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - position: relative; - float: left; - margin: 0; - padding: 0; - border: none; - background: none; - font-size: 20px; - line-height: 1.3; -} -.toolbar .breadcrumb:before, -.toolbar .breadcrumb:after { - display: table; - content: ""; - line-height: 0; -} -.toolbar .breadcrumb:after { - clear: both; -} -.toolbar .breadcrumb li:after { - content: " / "; -} -.toolbar .breadcrumb li.active:after { - content: ""; -} -.toolbar .breadcrumb li:last-of-type:after { - content: ""; -} -.toolbar .home a { - text-decoration: none; -} -.toolbar .home span { - display: none; -} -.toolbar .breadcrumb a { - color: #505050; -} -@media (max-width: 767px) { - .toolbar .breadcrumb { - color: #fff; - text-shadow: none; - } - .toolbar .breadcrumb .home { - display: none; - } - .toolbar .breadcrumb a { - color: #fff; - text-shadow: none; - } -} -.toolbar .breadcrumb .active a, -.toolbar .breadcrumb a.active { - font-weight: bold; -} -.actions { - margin: 0; - list-style: none; - position: absolute; - top: 10px; - right: 10px; - z-index: 1; -} -.actions li { - display: inline-block; - margin-right: 5px; - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.actions li:last-of-type { - margin-right: 0; -} -.hide-heading { - display: none; -} -.page-header { - *zoom: 1; - border-bottom: 1px solid #ddd; - background-color: #f6f6f6; - -webkit-border-radius: 0 3px 0 0; - -moz-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0; -} -.page-header:before, -.page-header:after { - display: table; - content: ""; - line-height: 0; -} -.page-header:after { - clear: both; -} -.page-header .nav-tabs { - float: left; - margin-bottom: -1px; -} -.page-header .nav-tabs li.active a, -.page-header .nav-tabs a:hover { - background-color: #fff; -} -.page-header .content_action { - float: right; - margin-top: -5px; - margin-right: -7px; -} -.no-nav .page-header { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.nav-tabs-plain { - padding: 0 25px; -} -.nav-tabs-plain > .active > a, -.nav-tabs-plain > .active > a:hover { - background-color: #fff; -} -@media (min-width: 768px) { - .span9 .page-header { - margin-left: -17px; - } -} -@media (max-width: 768px) { - .page-header .nav-tabs { - margin: 5px 10px 10px -5px; - border: none; - } - .page-header .nav-tabs > li { - float: none; - } - .page-header .nav-tabs > li a { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .page-header .nav-tabs > .active > a, - .page-header .nav-tabs > .active > a:hover, - .page-header .nav-tabs > .active > a:focus { - border-bottom-color: #dddddd; - } -} -h1 { - font-size: 28px; -} -h2 { - font-size: 21px; -} -h3 { - font-size: 18px; -} -h4 { - font-size: 14px; -} -h1, -h2, -h3, -h4 { - line-height: 1.5; -} -h1 small, -h2 small, -h3 small, -h4 small { - font-size: 14px; -} -.prose h1, -.prose heading-1 h2, -.prose heading-2 { - margin-bottom: 15px; -} -.prose h3, -.prose heading-3 { - margin-bottom: 10px; -} -.table-chunky td, -.table-chunky th { - padding: 12px 15px; - font-size: 12px; -} -.table-chunky thead th, -.table-chunky thead td { - color: #fff; - background-color: #aaa; - padding-top: 10px; - padding-bottom: 10px; -} -.table-striped tbody tr:nth-child(odd) td, -.table-striped tbody tr:nth-child(odd) th { - background-color: transparent; -} -.table-striped tbody tr:nth-child(even) td, -.table-striped tbody tr:nth-child(even) th { - background-color: #f2f2f2; -} -.table-chunky.table-bordered { - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:first-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:first-child { - -webkit-border-top-left-radius: 2px; - -moz-border-radius-topleft: 2px; - border-top-left-radius: 2px; -} -.table-chunky.table-bordered thead:first-child tr:first-child th:last-child, -.table-chunky.table-bordered tbody:first-child tr:first-child td:last-child { - -webkit-border-top-right-radius: 2px; - -moz-border-radius-topright: 2px; - border-top-right-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:first-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:first-child { - -webkit-border-radius: 0 0 0 2px; - -moz-border-radius: 0 0 0 2px; - border-radius: 0 0 0 2px; - -webkit-border-bottom-left-radius: 2px; - -moz-border-radius-bottomleft: 2px; - border-bottom-left-radius: 2px; -} -.table-chunky.table-bordered thead:last-child tr:last-child th:last-child, -.table-chunky.table-bordered tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 2px; - -moz-border-radius-bottomright: 2px; - border-bottom-right-radius: 2px; -} -.ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.ckan-icon { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; -} -.ckan-icon-fb { - width: 16px; - height: 16px; - background-position: 0px 0; -} -.ckan-icon-gplus { - width: 16px; - height: 16px; - background-position: -16px 0; -} -.ckan-icon-twitter { - width: 16px; - height: 16px; - background-position: -32px 0; -} -.ckan-icon-email { - width: 16px; - height: 16px; - background-position: -48px 0; -} -.ckan-icon-share { - width: 16px; - height: 16px; - background-position: -64px 0; -} -.ckan-icon-feed { - width: 16px; - height: 16px; - background-position: -80px 0; -} -.ckan-icon-calendar { - width: 16px; - height: 16px; - background-position: -96px 0; -} -.ckan-icon-file { - width: 16px; - height: 16px; - background-position: -112px 0; -} -.ckan-icon-lock { - width: 16px; - height: 16px; - background-position: -128px 0; -} -.ckan-icon-link-file { - width: 16px; - height: 16px; - background-position: -144px 0; -} -.ckan-icon-link-plugin { - width: 16px; - height: 16px; - background-position: -160px 0; -} -.ckan-icon-upload-file { - width: 16px; - height: 16px; - background-position: -176px 0; -} -.ckan-icon-callout { - width: 16px; - height: 16px; - background-position: -192px 0; -} -.ckan-icon-circle-cross { - width: 17px; - height: 17px; - background-position: 0px -16px; -} -.ckan-icon-circle-add { - width: 17px; - height: 17px; - background-position: -17px -16px; -} -.ckan-icon-flame { - width: 17px; - height: 17px; - background-position: -34px -16px; -} -.ckan-icon-search { - width: 17px; - height: 17px; - background-position: -51px -16px; -} -.ckan-icon-large-lock { - width: 20px; - height: 20px; - background-position: 0px -33px; -} -.ckan-icon-photo { - width: 20px; - height: 20px; - background-position: -20px -33px; -} -.ckan-icon-add { - width: 20px; - height: 20px; - background-position: -40px -33px; -} -.ckan-icon-home { - width: 20px; - height: 20px; - background-position: -60px -33px; -} -.ckan-icon-rewind { - width: 20px; - height: 20px; - background-position: -80px -33px; -} -.ckan-icon-tools { - width: 20px; - height: 20px; - background-position: -100px -33px; -} -.ckan-icon-flag { - width: 20px; - height: 20px; - background-position: -120px -33px; -} -.ckan-icon-clipboard { - width: 20px; - height: 20px; - background-position: -140px -33px; -} -.ckan-icon-share { - width: 20px; - height: 20px; - background-position: -160px -33px; -} -.ckan-icon-info { - width: 20px; - height: 20px; - background-position: -180px -33px; -} -.ckan-icon-download { - width: 20px; - height: 20px; - background-position: -200px -33px; -} -.ckan-icon-star { - width: 20px; - height: 20px; - background-position: -220px -33px; -} -.ckan-icon-info-flat { - width: 20px; - height: 20px; - background-position: -240px -33px; -} -.ckan-icon-tag { - width: 20px; - height: 20px; - background-position: -260px -33px; -} -.ckan-icon-plus { - width: 20px; - height: 20px; - background-position: -280px -33px; - width: 16px; -} -.ckan-icon-head { - width: 20px; - height: 20px; - background-position: -300px -33px; -} -.ckan-icon-arrow-e { - width: 20px; - height: 20px; - background-position: -320px -33px; - width: 16px; -} -.ckan-icon-bookmark { - width: 25px; - height: 25px; - background-position: 0px -53px; -} -.format-label { - *margin-right: .3em; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("../../../base/images/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; - text-indent: -900em; - background: url("../../../base/images/sprite-resource-icons.png") no-repeat 0 0; -} -.format-label { - width: 32px; - height: 35px; - background-position: 0px -62px; -} -.format-label[data-format=rdf], -.format-label[data-format*=rdf] { - width: 32px; - height: 35px; - background-position: -32px -62px; -} -.format-label[data-format=pdf], -.format-label[data-format*=pdf] { - width: 32px; - height: 35px; - background-position: -64px -62px; -} -.format-label[data-format=api], -.format-label[data-format*=api] { - width: 32px; - height: 35px; - background-position: -96px -62px; -} -.format-label[data-format=zip], -.format-label[data-format*=zip] { - width: 32px; - height: 35px; - background-position: -128px -62px; -} -.format-label[data-format=xls], -.format-label[data-format*=xls] { - width: 32px; - height: 35px; - background-position: -160px -62px; -} -.format-label[data-format=csv], -.format-label[data-format*=csv] { - width: 32px; - height: 35px; - background-position: -192px -62px; -} -.format-label[data-format=txt], -.format-label[data-format*=txt] { - width: 32px; - height: 35px; - background-position: -224px -62px; -} -.format-label[data-format=xml], -.format-label[data-format*=xml] { - width: 32px; - height: 35px; - background-position: -256px -62px; -} -.format-label[data-format=json], -.format-label[data-format*=json] { - width: 32px; - height: 35px; - background-position: -288px -62px; -} -.format-label[data-format=html], -.format-label[data-format*=html] { - width: 32px; - height: 35px; - background-position: -320px -62px; -} -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - text-align: right; - font-size: 14px; - line-height: 1; - width: 14px; -} -.btn [class^="icon-"], -.nav [class^="icon-"], -.module-heading [class^="icon-"], -.dropdown [class^="icon-"], -.btn [class*=" icon-"], -.nav [class*=" icon-"], -.module-heading [class*=" icon-"], -.dropdown [class*=" icon-"] { - margin-right: 4px; -} -.info-block [class^="icon-"], -.info-block [class*=" icon-"] { - float: left; - font-size: 28px; - width: 28px; - margin-right: 5px; - margin-top: 2px; -} -.breadcrumb .home .icon-home { - font-size: 24px; - width: 24px; - vertical-align: -1px; -} -.info-block-small [class^="icon-"], -.info-block-small [class*=" icon-"] { - font-size: 14px; - width: 14px; - margin-top: 1px; -} -.nav-tabs .fa:last-child, -.module-heading .fa:last-child, -.btn .fa:last-child { - margin-right: 3px; -} -.wrapper { - *zoom: 1; - background-color: #FFF; - border: 1px solid #ccc; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); - position: relative; - background-color: #fff; - margin-bottom: 20px; - margin-left: 0; -} -.wrapper:before, -.wrapper:after { - display: table; - content: ""; - line-height: 0; -} -.wrapper:after { - clear: both; -} -@media (min-width: 768px) { - .wrapper { - background-image: url("../../../base/images/nav.png"); - background-repeat: repeat-y; - background-position: -54px 0px; - } -} -@media (min-width: 980px) { - .wrapper { - background-position: 0px 0px; - } -} -.wrapper.no-nav { - background-image: none; -} -[role=main], -.main { - position: relative; - padding-bottom: 20px; -} -@media (min-width: 768px) { - [role=main], - .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); - } -} -[role=main] { - min-height: 350px; -} -.main:after, -[role=main]:after { - bottom: 0; - border-top-width: 1px; -} -[role=main] .primary { - float: right; - margin-left: 0; -} -[role=main] .secondary { - margin-left: 0; -} -/* Filters modal */ -.no-text .text { - display: none; -} -.js body.filters-modal { - overflow: hidden; -} -.show-filters.btn, -.hide-filters { - display: none; -} -@media (max-width: 768px) { - .wrapper { - margin: 0 -20px; - border-width: 0; - -webkit-box-shadow: 0; - -moz-box-shadow: 0; - box-shadow: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - } - .js [role=main] .secondary .filters { - display: none; - position: fixed; - overflow: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 1; - padding: 10px; - background-color: #000000; - background-color: rgba(0, 0, 0, 0.5); - } - .js body.filters-modal .secondary .filters { - display: block; - } - .js [role=main] .secondary .filters > div { - background-color: #fff; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - overflow: hidden; - } - .js [role=main] .secondary .filters > div .module-footer { - display: none; - } - .js body.filters-modal .secondary .filters .hide-filters { - display: inline-block; - position: absolute; - top: 14px; - right: 17px; - opacity: 0.6; - } - .js body.filters-modal .secondary .filters .hide-filters i { - font-size: 18px; - } - .js .show-filters.btn { - display: inline-block; - } -} -.primary > :last-child, -.secondary > :last-child { - margin-bottom: 0; -} -.primary .primary { - float: left; - width: 467px; - margin-left: 0; - margin-bottom: 20px; -} -.primary .primary h1:first-child, -.primary .primary h2:first-child, -.primary .primary h3:first-child, -.primary .primary h4:first-child { - margin-top: 0; -} -.primary .tertiary { - float: left; - width: 180px; - margin-left: 18px; - margin-bottom: 20px; -} -@media (min-width: 768px) { - .hero { - background: url("../../../base/images/background-tile.png"); - } -} -.hero:after { - background-color: rgba(0, 0, 0, 0.09); - background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(0, 0, 0, 0))); - background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-image: linear-gradient(top, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-repeat: repeat-x; - background-color: #f6f6f6; - border-bottom: 1px solid #d0d0d0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - -webkit-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - -moz-box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); - box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.03); -} -.hero:after .back:hover { - text-decoration: none; -} -.hero:after .back:hover span { - text-decoration: underline; -} -.context-info .module-content { - padding: 15px; -} -.context-info .image { - margin-bottom: 10px; -} -.context-info .image img, -.context-info .image a { - display: block; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.context-info p { - overflow: auto; -} -.context-info code { - display: block; - font-weight: normal; - padding: 0; - margin: 0; - overflow: auto; -} -.context-info h1.heading { - margin: 0 0 5px 0; - font-size: 18px; - line-height: 1.3; - -ms-word-break: break-all; - word-break: break-all; - /* Non standard for webkit */ - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} -.context-info .info { - margin-top: 15px; - padding-top: 10px; - border-top: 1px dotted #DDD; - word-break: break-word; -} -.context-info .info dl dd { - margin-top: 3px; - margin-left: 0; -} -.context-info .nums { - *zoom: 1; - margin-top: 15px; - padding-top: 10px; - padding-bottom: 0; - border-top: 1px dotted #DDD; -} -.context-info .nums:before, -.context-info .nums:after { - display: table; - content: ""; - line-height: 0; -} -.context-info .nums:after { - clear: both; -} -.context-info .nums dl { - float: left; - width: 50%; - margin: 5px 0 0 0; - color: #444; -} -.context-info .nums dl dt { - display: block; - font-size: 13px; - font-weight: 300; -} -.context-info .nums dl dd { - display: block; - font-size: 30px; - font-weight: 700; - line-height: 36px; - margin-left: 0; -} -.context-info .nums dl dd .smallest { - font-size: 13px; -} -.context-info .nums dl dd .smaller { - font-size: 16px; -} -.context-info .nums dl dd .small { - font-size: 21px; -} -.context-info .follow_button { - margin-top: 15px; -} -.context-info.editing .module-content { - margin-top: 0; -} -.flash-messages .alert { - -webkit-box-shadow: 0 0 0 1px white; - -moz-box-shadow: 0 0 0 1px white; - box-shadow: 0 0 0 1px white; -} -.homepage .row { - position: relative; -} -.homepage .module-search { - padding: 5px; - margin: 20px 0 0 0; - color: #fff; - background: #fff; -} -.homepage .module-search .search-giant { - margin-bottom: 10px; -} -.homepage .module-search .search-giant input { - border-color: #003f52; -} -.homepage .module-search .module-content { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - background-color: #C14531; - border-bottom: none; -} -.homepage .module-search .module-content .heading { - margin-top: 0; - margin-bottom: 7px; - font-size: 24px; - line-height: 40px; -} -.homepage .module-search .tags { - *zoom: 1; - padding: 5px 10px 10px 10px; - background-color: #983627; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.homepage .module-search .tags:before, -.homepage .module-search .tags:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .module-search .tags:after { - clear: both; -} -.homepage .module-search .tags h3, -.homepage .module-search .tags .tag { - display: block; - float: left; - margin: 5px 10px 0 0; -} -.homepage .module-search .tags h3 { - font-size: 14px; - line-height: 20px; - padding: 2px 8px; -} -.homepage .group-list { - margin: 0; -} -.homepage .box .inner { - padding: 20px 25px; -} -.homepage .stats h3 { - margin: 0 0 10px 0; -} -.homepage .stats ul { - margin: 0; - list-style: none; - *zoom: 1; -} -.homepage .stats ul:before, -.homepage .stats ul:after { - display: table; - content: ""; - line-height: 0; -} -.homepage .stats ul:after { - clear: both; -} -.homepage .stats ul li { - float: left; - width: 25%; - font-weight: 300; -} -.homepage .stats ul li a { - display: block; -} -.homepage .stats ul li a b { - display: block; - font-size: 35px; - line-height: 1.5; -} -.homepage .stats ul li a:hover { - text-decoration: none; -} -.homepage.layout-2 .stats { - margin-top: 20px; -} -@media (min-width: 768px) { - .homepage [role=main] { - padding: 20px 0; - } - .homepage.layout-1 .row1 .col2 { - position: absolute; - bottom: 0; - right: 0; - } - .homepage.layout-1 .row1 .col2 .module-search { - bottom: 0; - left: 0; - right: 0; - } -} -.account-masthead { - *zoom: 1; - min-height: 30px; - color: #fff; - background: #983627 url("../../../base/images/bg.png"); -} -.account-masthead:before, -.account-masthead:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead:after { - clear: both; -} -.account-masthead .account { - float: right; -} -.account-masthead .account ul { - *zoom: 1; -} -.account-masthead .account ul:before, -.account-masthead .account ul:after { - display: table; - content: ""; - line-height: 0; -} -.account-masthead .account ul:after { - clear: both; -} -.account-masthead .account ul li { - display: block; - float: left; - border-left: 1px solid #842f22; -} -.account-masthead .account ul li a { - display: block; - color: #f0d1cc; - font-size: 13px; - font-weight: bold; - padding: 0 10px; - line-height: 31px; -} -.account-masthead .account ul li a span.username, -.account-masthead .account ul li a span.text { - margin: 0 2px 0 4px; -} -.account-masthead .account ul li a span.text { - position: absolute; - top: -9999px; - left: -9999px; -} -.account-masthead .account ul li a:hover { - color: #f6e3e0; - background-color: #842f22; - text-decoration: none; -} -.account-masthead .account ul li a.sub { - font-weight: 300; -} -.account-masthead .account ul li a .btn { - vertical-align: 1px; - margin-left: 3px; -} -.account-masthead .account .notifications a span.badge { - font-size: 12px; - margin-left: 3px; - padding: 1px 6px; - background-color: #842f22; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - text-shadow: none; - color: #f0d1cc; -} -.account-masthead .account .notifications a:hover span { - color: #fff; - background-color: #70281c; -} -.account-masthead .account .notifications.notifications-important a span.badge { - color: #fff; - background-color: #C9403A; -} -.account-masthead .account.authed .image { - padding: 0 6px; -} -.account-masthead .account.authed .image img { - vertical-align: -6px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.masthead { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #C14531 url("../../../base/images/bg.png"); -} -.masthead:before, -.masthead:after { - display: table; - content: ""; - line-height: 0; -} -.masthead:after { - clear: both; -} -.masthead .container { - position: relative; -} -.masthead a { - color: #fff; -} -.masthead hgroup h1, -.masthead hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.masthead hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.masthead hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.masthead .nav-collapse { - padding-top: 10px; -} -.masthead .section { - float: left; -} -.masthead input[type="text"] { - border-color: #ad3e2c; -} -.masthead .navigation { - margin-right: 20px; -} -.masthead .navigation .nav-pills { - margin-bottom: 0; -} -.masthead .navigation .nav-pills li a:hover, -.masthead .navigation .nav-pills li.active a { - background-color: #983627; -} -.masthead .nav > li > a, -.masthead .nav > li > a:focus, -.masthead .nav > li > a:hover, -.masthead .nav > .active > a, -.masthead .nav > .active > a:hover, -.masthead .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.masthead .site-search { - margin: 2px 8px 2px 0; -} -.masthead .site-search input { - width: 200px; - padding: 4px 10px; -} -.masthead .btn-navbar, -.masthead .btn-navbar:hover, -.masthead .btn-navbar:focus, -.masthead .btn-navbar:active, -.masthead .btn-navbar.active, -.masthead .btn-navbar.disabled, -.masthead .btn-navbar[disabled] { - background-color: #983627; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.masthead .btn-navbar .icon-bar, -.masthead .btn-navbar:hover .icon-bar, -.masthead .btn-navbar:focus .icon-bar, -.masthead .btn-navbar:active .icon-bar, -.masthead .btn-navbar.active .icon-bar, -.masthead .btn-navbar.disabled .icon-bar, -.masthead .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.masthead .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -@media (min-width: 980px) { - .masthead .nav-collapse { - float: right; - } -} -@media (max-width: 767px) { - .account-masthead { - margin-left: -20px; - margin-right: -20px; - padding-left: 20px; - padding-right: 20px; - } - .masthead .section { - float: none; - } - .masthead .section .nav-collapse { - margin-bottom: 25px; - } -} -@media (max-width: 979px) { - .masthead .container { - padding-left: 20px; - padding-right: 20px; - } - .masthead .site-search { - display: none; - } -} -.site-footer { - *zoom: 1; - min-height: 55px; - color: #fff; - background: #C14531 url("../../../base/images/bg.png"); - padding: 20px 0; -} -.site-footer:before, -.site-footer:after { - display: table; - content: ""; - line-height: 0; -} -.site-footer:after { - clear: both; -} -.site-footer .container { - position: relative; -} -.site-footer a { - color: #fff; -} -.site-footer hgroup h1, -.site-footer hgroup h2 { - float: left; - font-size: 30px; - line-height: 1.5; -} -.site-footer hgroup h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; -} -.site-footer hgroup h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; -} -.site-footer .nav-collapse { - padding-top: 10px; -} -.site-footer .section { - float: left; -} -.site-footer input[type="text"] { - border-color: #ad3e2c; -} -.site-footer .navigation { - margin-right: 20px; -} -.site-footer .navigation .nav-pills { - margin-bottom: 0; -} -.site-footer .navigation .nav-pills li a:hover, -.site-footer .navigation .nav-pills li.active a { - background-color: #983627; -} -.site-footer .nav > li > a, -.site-footer .nav > li > a:focus, -.site-footer .nav > li > a:hover, -.site-footer .nav > .active > a, -.site-footer .nav > .active > a:hover, -.site-footer .nav > .active > a:focus { - color: #fff; - text-shadow: none; -} -.site-footer .site-search { - margin: 2px 8px 2px 0; -} -.site-footer .site-search input { - width: 200px; - padding: 4px 10px; -} -.site-footer .btn-navbar, -.site-footer .btn-navbar:hover, -.site-footer .btn-navbar:focus, -.site-footer .btn-navbar:active, -.site-footer .btn-navbar.active, -.site-footer .btn-navbar.disabled, -.site-footer .btn-navbar[disabled] { - background-color: #983627; - background-image: none; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - margin-top: 15px; -} -.site-footer .btn-navbar .icon-bar, -.site-footer .btn-navbar:hover .icon-bar, -.site-footer .btn-navbar:focus .icon-bar, -.site-footer .btn-navbar:active .icon-bar, -.site-footer .btn-navbar.active .icon-bar, -.site-footer .btn-navbar.disabled .icon-bar, -.site-footer .btn-navbar[disabled] .icon-bar { - margin-right: 0; -} -.site-footer .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); -} -.site-footer, -.site-footer label, -.site-footer small { - color: #e6b5ad; -} -.site-footer a { - color: #e6b5ad; -} -.footer-links ul li { - margin-bottom: 5px; -} -.attribution small { - color: #e6b5ad; - font-size: 12px; -} -.attribution .ckan-footer-logo { - display: block; - width: 68px; - height: 21px; - margin-top: 2px; - background: url("../../../base/images/ckan-logo-footer.png") no-repeat top left; - text-indent: -900em; -} -.lang-select { - *zoom: 1; -} -.lang-select:before, -.lang-select:after { - display: table; - content: ""; - line-height: 0; -} -.lang-select:after { - clear: both; -} -.lang-select label, -.lang-select select, -.lang-select .lang-container { - float: left; - margin-top: 0; -} -.lang-dropdown { - color: #000; -} -.lang-dropdown li { - width: auto; -} -.table-selected td { - background-color: #f5f5f5; -} -.table-selected td .edit { - display: block; -} -.table-bulk-edit th input { - top: -5px; -} -.table-bulk-edit .table-actions .btn-group { - float: left; - margin: 0 10px 0 0; -} -.table-bulk-edit .context p { - margin-bottom: 0; -} -.table-header thead th { - background-color: #f6f6f6; -} -.table-edit-hover .edit { - display: none; - float: right; -} -.table-edit-hover tr:hover .edit { - display: block; -} -.js .table-toggle-more .toggle-more { - display: none; -} -.js .table-toggle-more .show-more { - display: inline; -} -.js .table-toggle-more .show-less { - display: none; -} -.js .table-toggle-more .toggle-seperator { - display: table-row; -} -.js .table-toggle-more .toggle-seperator td { - height: 11px; - padding: 0; - background-image: url("../../../base/images/table-seperator.png"); -} -.js .table .toggle-show td { - background: none; - text-align: center; -} -.js .table-toggle-less .show-less { - display: inline; -} -.js .table-toggle-less .show-more { - display: none; -} -.js .table-toggle-less .toggle-seperator { - display: none; -} -.profile .empty, -.profile .dataset-list { - margin-bottom: 20px; -} -.activity { - margin: 10px 0; - padding: 0; - list-style-type: none; - background: transparent url('../../../base/images/dotted.png') 14px 0 repeat-y; -} -.activity .item { - position: relative; - margin: 0 0 15px 0; - padding: 0; - *zoom: 1; -} -.activity .item:before, -.activity .item:after { - display: table; - content: ""; - line-height: 0; -} -.activity .item:after { - clear: both; -} -.activity .item .icon { - display: block; - position: absolute; - top: 0; - left: 0; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - color: #FFFFFF; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - font-weight: normal; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item .gravatar { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.activity .item .actor .gravatar { - position: absolute; - top: 0; - left: 40px; -} -.activity .item p { - font-size: 14px; - line-height: 1.5; - margin: 5px 0 0 80px; -} -.activity .item .date { - color: #999; - font-size: 12px; - white-space: nowrap; -} -.activity .item .new { - display: block; - position: absolute; - overflow: hidden; - top: -3px; - left: -3px; - width: 10px; - height: 10px; - background-color: #A35647; - border: 1px solid #FFF; - text-indent: -1000px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); -} -.activity .item.no-avatar p { - margin-left: 40px; -} -.activity .load-less { - margin-bottom: 15px; -} -.popover { - width: 300px; -} -.popover .popover-title { - font-weight: bold; - margin-bottom: 0; -} -.popover p.about { - margin: 0 0 10px 0; -} -.popover .popover-close { - float: right; - text-decoration: none; -} -.popover .popover-content { - font-size: 14px; - line-height: 20px; - color: #444; - word-break: break-all; -} -.popover .popover-content dl { - margin: 0; -} -.popover .popover-content dl dd { - margin-left: 0; - margin-bottom: 10px; -} -.activity .item .icon { - background-color: #999999; -} -.activity .item.failure .icon { - background-color: #B95252; -} -.activity .item.success .icon { - background-color: #69A67A; -} -.activity .item.added-tag .icon { - background-color: #6995a6; -} -.activity .item.changed-group .icon { - background-color: #767DCE; -} -.activity .item.changed-package .icon { - background-color: #8c76ce; -} -.activity .item.changed-package_extra .icon { - background-color: #769ace; -} -.activity .item.changed-resource .icon { - background-color: #aa76ce; -} -.activity .item.changed-user .icon { - background-color: #76b8ce; -} -.activity .item.changed-organization .icon { - background-color: #699fa6; -} -.activity .item.deleted-group .icon { - background-color: #B95252; -} -.activity .item.deleted-package .icon { - background-color: #b97452; -} -.activity .item.deleted-package_extra .icon { - background-color: #b95274; -} -.activity .item.deleted-resource .icon { - background-color: #b99752; -} -.activity .item.deleted-organization .icon { - background-color: #b95297; -} -.activity .item.new-group .icon { - background-color: #69A67A; -} -.activity .item.new-package .icon { - background-color: #69a68e; -} -.activity .item.new-package_extra .icon { - background-color: #6ca669; -} -.activity .item.new-resource .icon { - background-color: #81a669; -} -.activity .item.new-user .icon { - background-color: #69a6a3; -} -.activity .item.new-organization .icon { - background-color: #81a669; -} -.activity .item.removed-tag .icon { - background-color: #b95297; -} -.activity .item.deleted-related-item .icon { - background-color: #b9b952; -} -.activity .item.follow-dataset .icon { - background-color: #767DCE; -} -.activity .item.follow-user .icon { - background-color: #8c76ce; -} -.activity .item.new-related-item .icon { - background-color: #95a669; -} -.activity .item.follow-group .icon { - background-color: #8ba669; -} -.dropdown:hover .dropdown-menu { - display: block; -} -.js .dropdown .dropdown-menu, -.js .dropdown:hover .dropdown-menu { - display: none; -} -.js .dropdown.open .dropdown-menu { - display: block; -} -#followee-filter .btn { - *zoom: 1; -} -#followee-filter .btn:before, -#followee-filter .btn:after { - display: table; - content: ""; - line-height: 0; -} -#followee-filter .btn:after { - clear: both; -} -#followee-filter .btn span, -#followee-filter .btn strong { - display: block; - float: left; - line-height: 1.5; -} -#followee-filter .btn span { - font-weight: normal; -} -#followee-filter .btn strong { - margin: 0 5px; - white-space: nowrap; - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; -} -.dashboard-context { - position: relative; - margin-bottom: 20px; - padding: 20px; - border-bottom: 1px solid #DCDCDC; - background-color: #f6f6f6; - -webkit-border-radius: 3px 0 0 0; - -moz-border-radius: 3px 0 0 0; - border-radius: 3px 0 0 0; -} -.dashboard-context h2 { - margin-bottom: 10px; -} -.dashboard-context .arrow { - position: absolute; - content: ' '; - top: 30px; - right: -10px; - width: 10px; - height: 21px; - background: transparent url("../../../base/images/dashboard-followee-related.png"); -} -.popover-followee .popover-title { - display: none; -} -.popover-followee .popover-content { - padding: 0; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.popover-followee .empty { - padding: 10px; -} -.popover-followee .popover-header { - *zoom: 1; - background-color: whiteSmoke; - padding: 5px; - border-bottom: 1px solid #ccc; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.popover-followee .popover-header:before, -.popover-followee .popover-header:after { - display: table; - content: ""; - line-height: 0; -} -.popover-followee .popover-header:after { - clear: both; -} -.popover-followee .popover-header .input-prepend { - margin-bottom: 0; -} -.popover-followee .popover-header .add-on, -.popover-followee .popover-header input { - float: left; - margin: 0; -} -.popover-followee .popover-header .add-on { - padding: 4px 8px 4px 12px; - border-right-width: 0; - -webkit-border-radius: 100px 0 0 100px; - -moz-border-radius: 100px 0 0 100px; - border-radius: 100px 0 0 100px; -} -.popover-followee .popover-header input { - padding: 4px 12px 4px 8px; - font-size: 13px; - width: 207px; - -webkit-border-radius: 0 100px 100px 0; - -moz-border-radius: 0 100px 100px 0; - border-radius: 0 100px 100px 0; -} -.popover-followee .nav { - padding: 0; - margin: 0; - max-height: 205px; - overflow: auto; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.popover-followee .nav li a { - display: block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: 7px 10px 7px 15px; - margin: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.popover-followee .nav li a i { - background-color: #C14531; - color: #fff; - margin-right: 11px; - padding: 3px 5px; - line-height: 1; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - -webkit-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); -} -.popover-followee .nav li a:hover i { - background-color: #000; -} -.popover-followee .nav li.active a i { - color: #C14531; - background-color: #fff; -} -.dashboard-me { - *zoom: 1; - padding: 15px 15px 0 15px; -} -.dashboard-me:before, -.dashboard-me:after { - display: table; - content: ""; - line-height: 0; -} -.dashboard-me:after { - clear: both; -} -.dashboard-me img { - float: left; - margin-right: 10px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} -.dashboard-me strong { - display: block; - font-size: 16px; - margin: 3px 0; -} -.resource-view-filters { - margin-bottom: 1em; -} -.resource-view-filters .resource-view-filter { - margin-bottom: 1.0em; -} -.resource-view-filters .resource-view-remove-filter { - cursor: pointer; - color: #b55457; -} -.resource-view-filters .resource-view-filter-values .select2-container { - margin-right: 0.3em; - margin-bottom: 0.2em; - width: 24% !important; -} -.resource-view-filters .resource-view-filter-values .select2-container .select2-search-choice-close { - left: auto; -} -.datapusher-status-link:hover { - text-decoration: none; -} -.datapusher-status.status-unknown { - color: #bbb; -} -.datapusher-status.status-pending { - color: #FFCC00; -} -.datapusher-status.status-error { - color: red; -} -.datapusher-status.status-complete { - color: #009900; -} -body { - background: #C14531 url("../../../base/images/bg.png"); -} -[hidden] { - display: none; -} -table { - table-layout: fixed; -} -thead th { - vertical-align: top; -} -td, -th { - word-wrap: break-word; -} -table .metric { - width: 140px; -} -code { - color: #000; - border: none; - background: none; - white-space: normal; -} -pre { - border: none; - background: none; - padding-left: 0; - padding-right: 0; -} -mark { - background: #fdf7e9; -} -blockquote p { - font-size: 1em; -} -iframe { - border: none; -} -.embedded-content h1 { - font-size: 1.4em; -} -.embedded-content h2 { - font-size: 1.4em; -} -.embedded-content h3 { - font-size: 1.2em; -} -.popular { - text-indent: -999em; -} -.empty { - color: #aaa; - font-style: italic; -} -.page-heading { - margin-top: 0; - margin-bottom: 16px; -} -.m-top { - margin-top: 15px; -} -.m-left { - margin-left: 15px; -} -.m-right { - margin-right: 15px; -} -.m-bottom { - margin-bottom: 15px; -} -.no-margin { - margin: 0; -} -.reduced-margin { - margin: 3px 5px; -} -.p-top { - padding-top: 15px; -} -.p-left { - padding-left: 15px; -} -.p-right { - padding-right: 15px; -} -.p-bottom { - padding-bottom: 15px; -} -.no-padding { - padding: 0; -} -.reduced-padding { - padding: 3px 5px; -} -.ie .lang-dropdown { - position: relative; - top: -20px; -} -.ie .module-popup { - border-bottom: none; -} -.ie .banner { - top: 0; - right: 0; - width: auto; -} -.ie .group-listing { - margin-left: -24px; -} -.ie .toolbar .breadcrumb { - filter: none; -} -.ie .toolbar .breadcrumb li { - float: left; -} -.ie .toolbar .breadcrumb li:after { - margin: 0 0.2em; -} -.ie9 .control-large input { - height: 56px; -} -.ie8 .account-masthead a.image, -.ie8 .account-masthead .username { - white-space: nowrap; -} -.ie9 .homepage .media.module-heading .media-image img, -.ie8 .homepage .media.module-heading .media-image img, -.ie7 .homepage .media.module-heading .media-image img { - width: 85px !important; -} -.ie8 .masthead .nav-collapse, -.ie7 .masthead .nav-collapse { - float: right; -} -.ie8 [role=main], -.ie7 [role=main], -.ie8 .main, -.ie7 .main { - padding-top: 10px; - background: #eee url("../../../base/images/bg.png"); -} -.ie8 .hero, -.ie7 .hero { - background: url("../../../base/images/background-tile.png"); -} -.ie8 .hero .hero-primary.module-popup .box, -.ie7 .hero .hero-primary.module-popup .box { - padding-bottom: 20px !important; - margin-bottom: 0 !important; -} -.ie8 .lang-dropdown, -.ie7 .lang-dropdown { - position: relative !important; - top: -90px !important; -} -.ie7 .alert { - position: relative; -} -.ie7 .alert .close { - position: absolute; - top: 6px !important; - right: 20px; -} -.ie7 .media-item { - width: 30%; -} -.ie7 .tags .tag-list { - *zoom: 1; -} -.ie7 .tags .tag-list:before, -.ie7 .tags .tag-list:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .tags .tag-list:after { - clear: both; -} -.ie7 .tags .tag-list li { - display: block; - float: left; -} -.ie7 .tags h3 { - float: left; -} -.ie7 .tags .tag { - display: block; -} -.ie7 .search-giant input { - width: 95%; -} -.ie7 .control-full input, -.ie7 .control-full select, -.ie7 .control-full textarea { - width: 95%; -} -.ie7 .control-full.control-large .controls input { - padding-bottom: 20px; -} -.ie7 .controls { - position: relative; -} -.ie7 .controls .info-block, -.ie7 .controls .info-inline { - position: absolute; - top: 0; - right: 0; -} -.ie7 .form-horizontal .controls { - margin-left: 0; -} -.ie7 .control-custom .checkbox { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .stages { - overflow: hidden; - background-color: #EDEDED; -} -.ie7 .stages li { - height: 30px; - width: 27.5%; -} -.ie7 .stages li button, -.ie7 .stages li span { - display: block; - height: 30px; - padding-left: 20px; -} -.ie7 .stages li button { - height: 50px; -} -.ie7 .stages li .highlight { - width: auto; -} -.ie7 .account-masthead .account a i { - line-height: 31px; -} -.ie7 .masthead { - position: relative; - z-index: 1; -} -.ie7 .masthead .logo img, -.ie7 .masthead nav { - *display: inline; - /* IE7 inline-block hack */ - *zoom: 1; -} -.ie7 .masthead .header-image { - display: block; -} -.ie7 .masthead .account .dropdown-menu { - z-index: 10000; -} -.ie7 .module-narrow .nav-item.image { - *zoom: 1; -} -.ie7 .module-narrow .nav-item.image:before, -.ie7 .module-narrow .nav-item.image:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-narrow .nav-item.image:after { - clear: both; -} -.ie7 .nav-facet .nav-item.active a { - content: 'x'; -} -.ie7 .toolbar .breadcrumb li { - padding-right: 10px; - margin-right: 5px; - background: transparent url("../../../base/images/breadcrumb-slash-ie7.png") 100% 50% no-repeat; -} -.ie7 .toolbar .breadcrumb li.active { - background-image: none; -} -.ie7 .module-heading { - *zoom: 1; - position: relative; -} -.ie7 .module-heading:before, -.ie7 .module-heading:after { - display: table; - content: ""; - line-height: 0; -} -.ie7 .module-heading:after { - clear: both; -} -.ie7 .module-heading .media-content { - position: relative; -} -.ie7 .module-heading .media-image img { - float: left; -} -.ie7 .group-listing { - position: relative; - zoom: 1; -} -.ie7 .resource-item { - position: static; - padding-bottom: 1px; -} -.ie7 .resource-item .heading { - position: relative; -} -.ie7 .resource-item .format-label { - left: -48px; -} -.ie7 .resource-item .btn-group { - position: relative; - float: right; - top: -35px; - right: 0; -} -.ie7 .media-overlay .media-heading { - background-color: #000; -} diff --git a/ckan/public-bs2/base/i18n/.gitignore b/ckan/public-bs2/base/i18n/.gitignore deleted file mode 100644 index 2ff7f12bbe7..00000000000 --- a/ckan/public-bs2/base/i18n/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -// This directory contains CKAN's automatically generated JavaScript -// translation files, which are ignored by git. This file makes sure that the -// directory itself is tracked. - -*.js - diff --git a/ckan/public-bs2/base/images/background-tag-ie7.png b/ckan/public-bs2/base/images/background-tag-ie7.png deleted file mode 100644 index 58f9ac8a1e8..00000000000 Binary files a/ckan/public-bs2/base/images/background-tag-ie7.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/background-tag.png b/ckan/public-bs2/base/images/background-tag.png deleted file mode 100644 index e85d551ff75..00000000000 Binary files a/ckan/public-bs2/base/images/background-tag.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/background-tile.png b/ckan/public-bs2/base/images/background-tile.png deleted file mode 100644 index 4f7e76e5e19..00000000000 Binary files a/ckan/public-bs2/base/images/background-tile.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/bg.png b/ckan/public-bs2/base/images/bg.png deleted file mode 100644 index 6418208e556..00000000000 Binary files a/ckan/public-bs2/base/images/bg.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/breadcrumb-slash-ie7.png b/ckan/public-bs2/base/images/breadcrumb-slash-ie7.png deleted file mode 100644 index 8bb090b5528..00000000000 Binary files a/ckan/public-bs2/base/images/breadcrumb-slash-ie7.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/ckan-logo-footer.png b/ckan/public-bs2/base/images/ckan-logo-footer.png deleted file mode 100644 index 0ab61fe10bc..00000000000 Binary files a/ckan/public-bs2/base/images/ckan-logo-footer.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/ckan-logo-white.svg b/ckan/public-bs2/base/images/ckan-logo-white.svg deleted file mode 100644 index 66d036f3dab..00000000000 --- a/ckan/public-bs2/base/images/ckan-logo-white.svg +++ /dev/null @@ -1,28 +0,0 @@ - - diff --git a/ckan/public-bs2/base/images/ckan-logo.png b/ckan/public-bs2/base/images/ckan-logo.png deleted file mode 100644 index 8d9cf132f6b..00000000000 Binary files a/ckan/public-bs2/base/images/ckan-logo.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/ckan-logo.svg b/ckan/public-bs2/base/images/ckan-logo.svg deleted file mode 100644 index 000394d80a7..00000000000 --- a/ckan/public-bs2/base/images/ckan-logo.svg +++ /dev/null @@ -1,25 +0,0 @@ - - diff --git a/ckan/public-bs2/base/images/ckan.ico b/ckan/public-bs2/base/images/ckan.ico deleted file mode 100644 index 0d9295c77aa..00000000000 Binary files a/ckan/public-bs2/base/images/ckan.ico and /dev/null differ diff --git a/ckan/public-bs2/base/images/dashboard-followee-related.png b/ckan/public-bs2/base/images/dashboard-followee-related.png deleted file mode 100644 index 25f7f6d28ab..00000000000 Binary files a/ckan/public-bs2/base/images/dashboard-followee-related.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/dotted.png b/ckan/public-bs2/base/images/dotted.png deleted file mode 100644 index fa0ae8040cb..00000000000 Binary files a/ckan/public-bs2/base/images/dotted.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/editing.png b/ckan/public-bs2/base/images/editing.png deleted file mode 100644 index be247c27966..00000000000 Binary files a/ckan/public-bs2/base/images/editing.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/full-width-nav-right.png b/ckan/public-bs2/base/images/full-width-nav-right.png deleted file mode 100644 index 307d51248a4..00000000000 Binary files a/ckan/public-bs2/base/images/full-width-nav-right.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/icon-search-27x26.png b/ckan/public-bs2/base/images/icon-search-27x26.png deleted file mode 100644 index f276bb2b37a..00000000000 Binary files a/ckan/public-bs2/base/images/icon-search-27x26.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/loading-spinner.gif b/ckan/public-bs2/base/images/loading-spinner.gif deleted file mode 100644 index e14a0487dc6..00000000000 Binary files a/ckan/public-bs2/base/images/loading-spinner.gif and /dev/null differ diff --git a/ckan/public-bs2/base/images/nav-active.png b/ckan/public-bs2/base/images/nav-active.png deleted file mode 100644 index 74aa9fca1e9..00000000000 Binary files a/ckan/public-bs2/base/images/nav-active.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/nav.png b/ckan/public-bs2/base/images/nav.png deleted file mode 100644 index 7edd9d68348..00000000000 Binary files a/ckan/public-bs2/base/images/nav.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/od_80x15_blue.png b/ckan/public-bs2/base/images/od_80x15_blue.png deleted file mode 100644 index d62ef505f58..00000000000 Binary files a/ckan/public-bs2/base/images/od_80x15_blue.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/placeholder-200x125.png b/ckan/public-bs2/base/images/placeholder-200x125.png deleted file mode 100644 index 2b0f46ef631..00000000000 Binary files a/ckan/public-bs2/base/images/placeholder-200x125.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/placeholder-420x220.png b/ckan/public-bs2/base/images/placeholder-420x220.png deleted file mode 100644 index d1e28140839..00000000000 Binary files a/ckan/public-bs2/base/images/placeholder-420x220.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/placeholder-680x400.png b/ckan/public-bs2/base/images/placeholder-680x400.png deleted file mode 100644 index d13bd98a44a..00000000000 Binary files a/ckan/public-bs2/base/images/placeholder-680x400.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/placeholder-application.png b/ckan/public-bs2/base/images/placeholder-application.png deleted file mode 100644 index 3348527579f..00000000000 Binary files a/ckan/public-bs2/base/images/placeholder-application.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/placeholder-group.png b/ckan/public-bs2/base/images/placeholder-group.png deleted file mode 100644 index 825369b5491..00000000000 Binary files a/ckan/public-bs2/base/images/placeholder-group.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/placeholder-image.png b/ckan/public-bs2/base/images/placeholder-image.png deleted file mode 100644 index ee9a17cbabf..00000000000 Binary files a/ckan/public-bs2/base/images/placeholder-image.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/placeholder-organization.png b/ckan/public-bs2/base/images/placeholder-organization.png deleted file mode 100644 index 0ea53527e8c..00000000000 Binary files a/ckan/public-bs2/base/images/placeholder-organization.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/sprite-ckan-icons.png b/ckan/public-bs2/base/images/sprite-ckan-icons.png deleted file mode 100644 index b827b8c4e32..00000000000 Binary files a/ckan/public-bs2/base/images/sprite-ckan-icons.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/sprite-resource-icons.png b/ckan/public-bs2/base/images/sprite-resource-icons.png deleted file mode 100644 index 02996031ca3..00000000000 Binary files a/ckan/public-bs2/base/images/sprite-resource-icons.png and /dev/null differ diff --git a/ckan/public-bs2/base/images/table-seperator.png b/ckan/public-bs2/base/images/table-seperator.png deleted file mode 100644 index 62578bd852e..00000000000 Binary files a/ckan/public-bs2/base/images/table-seperator.png and /dev/null differ diff --git a/ckan/public-bs2/base/javascript/client.js b/ckan/public-bs2/base/javascript/client.js deleted file mode 100644 index 9dd75ea522f..00000000000 --- a/ckan/public-bs2/base/javascript/client.js +++ /dev/null @@ -1,377 +0,0 @@ -(function (ckan, jQuery) { - - function Client(options) { - this.endpoint = options && options.endpoint || ''; - jQuery.proxyAll(this, /parse/); - } - - jQuery.extend(Client.prototype, { - - /* Creates an API url from the path provided. If a fully qualified url - * is provided then this function just returns the input. - * - * path - A path to add the API domain to. - * - * Examples - * - * client.url('/datasets'); // http://api.example.com/datasets - * - * Returns an url string. - */ - url: function (path) { - if (!(/^https?:\/\//i).test(path)) { - path = this.endpoint + '/' + path.replace(/^\//, ''); - } - return path; - }, - - /* Simple helper function for both GET's and POST's to the ckan API - * - * type - GET or POST - * path - The API endpoint - * data - Any data you need passing to the endpoint - * fn - The callback function that you want the result data passed to - * - * Examples - * - * client.call('GET', 'user_show', { id: 'some-long-id' }, function(json) { console.log(json) }) - * - */ - call: function(type, path, data, fn, error) { - var url = this.url('/api/action/' + path); - var error = ( error == 'undefined' ) ? function() {} : error; - var options = { - contentType: 'application/json', - url: url, - dataType: 'json', - processData: false, - success: fn, - error: error - }; - if (type == 'POST') { - options.type = 'POST'; - options.data = JSON.stringify(data); - } else { - options.type = 'GET'; - options.url += data; - } - jQuery.ajax(options); - }, - - /* Requests a block of HTML from the snippet API endpoint. Optional - * parameters can also be provided to the template via the params - * object. - * - * filename - The filename of the snippet to load including extension. - * params - Optional query string parameters. - * success - A callback to be called on success. Receives the html string. - * error - A callback to be called on error. - * - * Examples - * - * client.getTemplate('dataset-list.html', {limit: 5}, function (html) { - * // Do something with the html. - * }); - * - * Returns a jqXHR promise object. - */ - getTemplate: function (filename, params, success, error) { - var url = this.url('/api/1/util/snippet/' + encodeURIComponent(filename)); - - // Allow function to be called without params argument. - if (typeof params === 'function') { - error = success; - success = params; - params = {}; - } - - return jQuery.get(url, params || {}).then(success, error); - }, - - /* Fetches the current locale translation from the API. - * - * locale - The current page locale. - * - * Examples - * - * var locale = jQuery('html').attr('lang'); - * client.getLocaleData(locale, function (data) { - * // Load into the localizer. - * }); - * - * Returns a jQuery xhr promise. - */ - getLocaleData: function (locale, success, error) { - var url = this.url('/api/i18n/' + (locale || '')); - return jQuery.getJSON(url).then(success, error); - }, - - /* Retrieves a list of auto-completions from one of the various endpoints - * and normalises the results into an array of tags. - * - * url - An API endpoint for the auto complete. - * options - An object of options for the function (optional). - * formatter: A function that takes the response and parses it. - * success - A function to be called on success (optional). - * error - A function to be called on error (optional). - * - * Examples - * - * client.getCompletions(tagEndpoint).done(function (tags) { - * // tags == array of formatted tags. - * }); - * - * Returns a jqXHR promise object. - */ - getCompletions: function (url, options, success, error) { - if (typeof options === 'function') { - error = success; - success = options; - options = {}; - } - - var formatter = options && options.format || this.parseCompletions; - var request = jQuery.ajax({url: this.url(url)}); - - return request.pipe(formatter).promise(request).then(success, error); - }, - - /* Takes a JSON response from an auto complete endpoint and normalises - * the data into an array of strings. This also will remove duplicates - * from the results (this is case insensitive). - * - * data - The parsed JSON response from the server. - * options - An object of options for the method. - * objects: If true returns an object of results. - * - * Examples - * - * jQuery.getJSON(tagCompletionUrl, function (data) { - * var parsed = client.parseCompletions(data); - * }); - * - * Returns the parsed object. - */ - parseCompletions: function (data, options) { - if (typeof data === 'string') { - // Package completions are returned as a crazy string. So we handle - // them separately. - return this.parsePackageCompletions(data, options); - } - - var map = {}; - var raw = jQuery.isArray(data) ? data : data.ResultSet && data.ResultSet.Result || {}; - - var items = jQuery.map(raw, function (item) { - var key = typeof options.key != 'undefined' ? item[options.key] : false; - var label = typeof options.label != 'undefined' ? item[options.label] : false; - - item = typeof item === 'string' ? item : item.name || item.Name || item.Format || ''; - item = jQuery.trim(item); - - key = key ? key : item; - label = label ? label : item; - - var lowercased = item.toLowerCase(); - var returnObject = options && options.objects === true; - - if (lowercased && !map[lowercased]) { - map[lowercased] = 1; - return returnObject ? {id: key, text: label} : item; - } - - return null; - }); - - // Remove duplicates. - items = jQuery.grep(items, function (item) { return item !== null; }); - - return items; - }, - - /* Returns each item as an object with an "id" and "text" property as this - * format is used by a number of auto complete plugins. - * - * data - The parsed JSON response from the server. - * - * Example - * - * var opts = {format: client.parseCompletionsForPlugin}; - * client.getCompletions(tagEndpoint, opts).done(function (tags) { - * // tags == {results: [{...}, {...}, {...}} - * // tags[0] == {id: "string", text: "string"} - * }); - * - * Returns an object of item objects. - */ - parseCompletionsForPlugin: function (data) { - return { - results: this.parseCompletions(data, {objects: true}) - }; - }, - - /* Parses the string returned by the package autocomplete endpoint which - * is a newline separated list of packages. Each package consists of - * a name and an id separated by a pipe (|) character. - * - * string - The string returned by the API. - * - * Returns an array of parsed packages. - */ - parsePackageCompletions: function (string, options) { - var packages = jQuery.trim(string).split('\n'); - var parsed = []; - - return jQuery.map(packages, function (pkg) { - var parts = pkg.split('|'); - var id = jQuery.trim(parts.pop() || ''); - var text = jQuery.trim(parts.join('|') || ''); - return options && options.objects === true ? {id: id, text: text} : id; - }); - }, - - /* Requests config options for a file upload. - * - * See: http://docs.ckan.org/en/latest/filestore.html - * - * key - A unique id/filename for the resource. - * success - A callback to be called on successful response. - * error - A callback to be called when the request fails. - * - * Examples - * - * client.getStorageAuth('myfile.jpg', function (data) { - * data.fields; - * }); - * - * client.getStorageAuth('myfile.jpg') - * .done(function (data) { - * data.fields; - * }) - * .error(function () { - * showError('Something Went Wrong'); - * }); - * - * Returns a jqXHR promise. - */ - getStorageAuth: function (key, success, error) { - if (!key) { - throw new Error('Client#getStorageAuth() must be called with a key'); - } - - return jQuery.ajax({ - url: this.url('/api/storage/auth/form/' + key), - success: success, - error: error - }); - }, - - /* Requests metadata for a file upload. - * - * See: http://docs.ckan.org/en/latest/filestore.html - * - * key - A unique id/filename for the resource. - * success - A callback to be called on successful response. - * error - A callback to be called when the request fails. - * - * Examples - * - * client.getStorageMetadata('myfile.jpg', function (data) { - * data._format; - * }); - * - * Returns a jqXHR promise. - */ - getStorageMetadata: function (key, success, error) { - if (!key) { - throw new Error('Client#getStorageMetadata() must be called with a key'); - } - - return jQuery.ajax({ - url: this.url('/api/storage/metadata/' + key), - success: success, - error: error - }); - }, - - /* Converts the data returned from the storage metadata into keys that - * can be used with a dataset. - * - * key - The key for the stored file. - * meta - The metadata object. - * - * Examples - * - * client.getStorageMetadata('myfile.jpg', function (data) { - * var dataset = client.convertStorageMetadataToResource(data); - * }); - * - * Returns an object of dataset keys. - */ - convertStorageMetadataToResource: function (meta) { - // Date constructor chokes on hyphens and timezones. - var modified = new Date(this.normalizeTimestamp(meta._last_modified)); - var created = new Date(this.normalizeTimestamp(meta._creation_date)); - - var createdISO = jQuery.date.toCKANString(created); - var modifiedISO = jQuery.date.toCKANString(modified); - - var filename = meta['filename-original'] || meta.key; - var format = meta._format || filename.split('.').pop(); - var url = meta._location; - - // If this is a local upload then the returned url will not have a domain - // and we should add one. - if (url.indexOf('://') === -1) { - url = ckan.url(url); - } - - return { - url: url, - key: meta.key, /* Not strictly Resource data but may be useful */ - name: filename, - size: meta._content_length, - created: createdISO, - last_modified: modifiedISO, - format: format, - mimetype: meta._format || null, - resource_type: 'file.upload', // Is this standard? - owner: meta['uploaded-by'], - hash: meta._checksum, - cache_url: meta._location, - cache_url_updated: modifiedISO - }; - }, - - /* Adds a timezone to the provided timestamp if one is not present. This - * fixes an inconsistency between Webkit and Firefox where Firefox parses - * the date in the current users timezone but Webkit uses UTC. - * - * string - A timestamp string. - * - * Examples - * - * client.normalizeTimestamp("2012-07-17T14:35:35"); - * // => "2012-07-17T14:35:35Z" - * - * client.normalizeTimestamp("2012-07-17T14:35:35+0100"); - * // => "2012-07-17T14:35:35+0100" - * - * Returns a new timestamp with timezone. - */ - normalizeTimestamp: function (string) { - var tz = /[+\-]\d{4}|Z/; - if (!tz.test(string)) { - string += 'Z'; - } - return string; - } - }); - - ckan.sandbox.setup(function (instance) { - instance.client = new Client({endpoint: ckan.SITE_ROOT}); - }); - - ckan.Client = Client; - -})(this.ckan, this.jQuery); diff --git a/ckan/public-bs2/base/javascript/i18n.js b/ckan/public-bs2/base/javascript/i18n.js deleted file mode 100644 index ccfd8125af4..00000000000 --- a/ckan/public-bs2/base/javascript/i18n.js +++ /dev/null @@ -1,101 +0,0 @@ -'use strict'; - -/* - * CKAN JavaScript i18n functionality. - * - * Adds an `i18n` attribute to the CKAN object (`this.ckan`). - * - * Singular strings can be translated using `i18n._`: - * - * ckan.i18n._('Hello, world!') - * - * The function will return the translated string in the currently selected - * language. Often, a translateable string contains dynamic parts, for example - * a username. These can be included via named `%`-placeholders: - * - * ckan.i18n._('Hello, %(name)s!', {name: 'Jessica'}) - * - * After translation the placeholders are replaced using the values passed in - * the second argument. - * - * Plural strings can be translated using `i18n.ngettext`: - * - * ckan.i18n.ngettext('%(num)d item was deleted', - * '%(num)d items were deleted', - * num_items) - * - * Here, the first two arguments contain the singular and plural translation - * strings. The third argument contains the number which is used to decide - * whether the singular form or the plural form is to be used. The `num` - * placeholder is special in plural forms and will be replaced with the value - * of the third argument. - * - * As before your strings can contain additional placeholders, and you pass - * their values using another argument: - * - * ckan.i18n.ngettext('%(name)s deleted %(num)d item', - * '%(name)s deleted %(num)d items', - * num_items, - * {name: 'Thomas'}) - * - * Note that inside a CKAN JS module you can also use the shortcuts `this._` - * and `this.ngettext`. - */ - -this.ckan = this.ckan || {}; - -(function (ckan, jQuery, Jed) { - // See: http://slexaxton.github.com/Jed/ - var domain = { - "": { - "domain": "ckan", - "lang": "en", - "plural_forms": "nplurals=2; plural=(n != 1);" - } - }; - - var jed = new Jed({ - domain: 'ckan', - locale_data: { - ckan: domain - } - }); - - ckan.i18n = {}; - - /* - * Expose JED translation interface [DEPRECATED]. - * - * Using the JED functions directly is deprecated and only kept for - * backwards-compatibility. Use `_` and `ngettext` instead. - */ - ckan.i18n.translate = jQuery.proxy(jed.translate, jed); - - /* - * Internal function to load a translation. - */ - ckan.i18n.load = function (data) { - if (data && data['']) { - // Extend our default domain data with the new keys. - jQuery.extend(domain, data);; - } - }; - - ckan.i18n._ = function (string, values) { - return jed.sprintf(jed.gettext(string), values || {}); - }; - - ckan.i18n.ngettext = function(singular, plural, num, values) { - values = values || {}; - values['num'] = num; - return jed.sprintf(jed.ngettext(singular, plural, num), values); - }; - - ckan.sandbox.extend({ - /* An alias for ckan.i18n [DEPRECATED] */ - i18n: ckan.i18n, - - /* An alias for ckan.l18n.translate() [DEPRECATED] */ - translate: ckan.i18n.translate - }); -})(this.ckan, this.jQuery, this.Jed); diff --git a/ckan/public-bs2/base/javascript/main.js b/ckan/public-bs2/base/javascript/main.js deleted file mode 100644 index 95fb9dc7bff..00000000000 --- a/ckan/public-bs2/base/javascript/main.js +++ /dev/null @@ -1,101 +0,0 @@ -// Global ckan namespace -this.ckan = this.ckan || {}; - -(function (ckan, jQuery) { - ckan.PRODUCTION = 'production'; - ckan.DEVELOPMENT = 'development'; - ckan.TESTING = 'testing'; - - /* Initialises the CKAN JavaScript setting up environment variables and - * loading localisations etc. Should be called once the page is ready. - * - * Examples - * - * jQuery(function () { - * ckan.initialize(); - * }); - * - * Returns nothing. - */ - ckan.initialize = function () { - var body = jQuery('body'); - var locale = jQuery('html').attr('lang'); - var location = window.location; - var root = location.protocol + '//' + location.host; - - function getRootFromData(key) { - return (body.data(key) || root).replace(/\/$/, ''); - } - - ckan.SITE_ROOT = getRootFromData('siteRoot'); - ckan.LOCALE_ROOT = getRootFromData('localeRoot'); - - // Convert all datetimes to the users timezone - jQuery('.automatic-local-datetime').each(function() { - moment.locale(locale); - var date = moment(jQuery(this).data('datetime')); - if (date.isValid()) { - jQuery(this).html(date.format("LL, LT ([UTC]Z)")); - } - jQuery(this).show(); - }) - - // Load the localisations before instantiating the modules. - ckan.sandbox().client.getLocaleData(locale).done(function (data) { - ckan.i18n.load(data); - ckan.module.initialize(); - }); - if (jQuery.fn.popover !== undefined) { - jQuery('[data-target="popover"]').popover(); - } - }; - - /* Returns a full url for the current site with the provided path appended. - * - * path - A path to append to the url (default: '/') - * includeLocale - If true the current locale will be added to the page. - * - * Examples - * - * var imageUrl = sandbox.url('/my-image.png'); - * // => http://example.ckan.org/my-image.png - * - * var imageUrl = sandbox.url('/my-image.png', true); - * // => http://example.ckan.org/en/my-image.png - * - * var localeUrl = sandbox.url(true); - * // => http://example.ckan.org/en - * - * Returns a url string. - */ - ckan.url = function (path, includeLocale) { - if (typeof path === 'boolean') { - includeLocale = path; - path = null; - } - - path = (path || '').replace(/^\//, ''); - - var root = includeLocale ? ckan.LOCALE_ROOT : ckan.SITE_ROOT; - return path ? root + '/' + path : root; - }; - - ckan.sandbox.extend({url: ckan.url}); - - if (ckan.ENV !== ckan.TESTING) { - jQuery(function () { - ckan.initialize(); - }); - } - -})(this.ckan, this.jQuery); - -// Show / hide filters for mobile -$(function() { - $(".show-filters").click(function() { - $("body").addClass("filters-modal"); - }); - $(".hide-filters").click(function() { - $("body").removeClass("filters-modal"); - }); -}); diff --git a/ckan/public-bs2/base/javascript/module.js b/ckan/public-bs2/base/javascript/module.js deleted file mode 100644 index 5ddd8f3d1c7..00000000000 --- a/ckan/public-bs2/base/javascript/module.js +++ /dev/null @@ -1,397 +0,0 @@ -this.ckan = this.ckan || {}; - -/* The module system ties JavaScript code to elements on the page. A module is - * simply a function that receives an element and a sandboxed module object. - * - * The sandbox provides useful methods for querying within the module element - * as well as making ajax calls and talking to other modules. The idea being to - * isolate a single component from the rest of the page keeping the codebase - * very modular and reusable. - * - * Modules are initialized through the DOM keeping boilerplate setup code to a - * minimum. If an element in the page has a "data-module" attribute then an - * instance of that module (if registered) will be created when the page loads - * and will receive the element and the sandbox mentioned above. - * - * Examples - * - * // For element: - * - * // Register a new module object, .initialize() is called on load. - * ckan.module('language-picker', { - * initialize: function () { - * var el = this.el; - * var sandbox = this.sandbox; - * - * // .el is the dom node the element was created with. - * this.el.on('change', function () { - * - * // Publish the new language so other modules can update. - * sandbox.publish('lang', this.selected); - * - * // Display a localized notification to the user. - * sandbox.notify(this._('Language changed to: %(lang)s', {lang: this.selected})); - * }); - * - * // listen for other updates to lang. - * sandbox.subscribe('lang', function (lang) { - * // Update the element select box. - * el.select(lang); - * }); - * } - * }); - * - * // Can also provide a function that returns this object. The function will - * // be passed jQuery. - * ckan.module('language-picker', function (jQuery) { - * return { - * // Module code. - * } - * }); - */ -(function (ckan, jQuery, window) { - // Prefixes for the HTML attributes use to pass options into the modules. - var MODULE_PREFIX = 'data-module'; - var MODULE_OPTION_PREFIX = 'data-module-'; - - /* BaseModule is the core of the CKAN website. It represents a single element - * in the current document and is used to add functionality to that element. - * - * I should not be used itself but rather subclasses using the ckan.module() - * method. - * - * It receives a sandbox element with various libraries and utility functions - * and should use this rather than the global objects (jQuery for instance) - * as it makes the modules much easier to test. - * - * The options property can be used to set defaults, these can be overridden - * by the user through data-* attributes on the element. - * - * element - An element that the sandbox is bound to. - * options - An object of key/value pairs. - * sandbox - A sandbox instance. - * - * Returns a new BaseModule instance. - */ - function BaseModule(el, options, sandbox) { - this.el = el instanceof jQuery ? el : jQuery(el); - this.options = jQuery.extend(true, {}, this.options, options); - this.sandbox = sandbox; - } - - jQuery.extend(BaseModule.prototype, { - /* The jQuery element for the current module */ - el: null, - - /* The options object passed into the module either via data-* attributes - * or the default settings. - */ - options: null, - - /* A scoped find function restricted to the current scope. Essentially - * the same as doing this.el.find(selector); - * - * selector - A standard jQuery/CSS selector query. - * - * Example - * - * this.$('input'); // jQuery collection of child inputs. - * - * Returns a jQuery collection. - */ - $: function (selector) { - return this.el.find(selector); - }, - - /* Helper function for getting i18n properties from the options object. - * It should be called with an i18n key and any arguments that are to - * be passed into the .fetch() method. - * - * This method is DEPRECATED. Module code should instead use the - * `_` and `ngettext` methods (`this._` and `this.ngettext`). - * - * An i18n option can either be a string, an object returned by - * ckan.i18n.translate or a function that returns one of the above. If - * a function is provided then it will be passed the same arguments that - * were passed to i18n(). - * - * key - The translation key to use. - * args... - All successive arguments are passed into the factory function. - * - * Example - * - * ckan.module.translate('trans', function (jQuery, _) { - * options: { - * i18n: { - * saved: _('Saved!'), // A translation object. - * loading: 'Loading', // A plain string (not a good idea). - * itemCount: function (data) { - * // A function can be used to provide more complex translations - * // where the arguments may affect the outcome. - * return _('There is one item').isPlural(data.items, 'There are %(items)d items') - * } - * } - * }, - * example: function () { - * this.i18n('saved'); // 'Saved!' - * this.i18n('loading'); // 'Loading' - * this.i18n('itemCount', {items: 1}); // 'There is one item' - * this.i18n('itemCount', {items: 3}); // 'There are 3 items' - * } - * - * Returns the translated string or the key if not found. - */ - i18n: function (key /* args... */) { - var args = [].slice.call(arguments, 1); - var i18n = this.options.i18n; - var trans = (i18n && i18n[key]) || key; - - // Allow the option to be a getter function that returns a Jed instance. - if (typeof trans === 'function') { - trans = trans.apply(null, args); - } - - // If the result has a fetch method, call it with the args. - return typeof trans.fetch === 'function' ? trans.fetch.apply(trans, args) : trans; - }, - - /* - * Shortcuts for i18n. - * - * Note that we cannot simply set them to their `ckan.i18n` counterparts - * since those might now have been defined, yet. Hence we redirect at - * runtime. - */ - _: function(/* args */) { - return ckan.i18n._.apply(ckan.i18n, arguments); - }, - ngettext: function(/* args */) { - return ckan.i18n.ngettext.apply(ckan.i18n, arguments); - }, - - /* Should be defined by the extending module to provide initialization - * code. This will be called directly after the instance has been - * invoked. - */ - initialize: function () {}, - - /* Called just before the element is removed from the DOM, use it to - * un-subscribe any listeners and clean up memory. - * - * Examples - * - * teardown: function () { - * this.sandbox.unsubscribe('lang', this.onLangChange); - * this.sandbox.unsubscribe('login', this.onLogin); - * } - * - * Returns nothing. - */ - teardown: function () {}, - - /* Removes the module element from the document. - * - * Returns nothing. - */ - remove: function () { - this.teardown(); - this.el.remove(); - } - }); - - /* Add a new module to the registry. - * - * This expects an object of methods/properties to be provided. These will - * then be used to create a new BaseModule subclass which will be invoked each - * time that a module appears on the page. - * - * name - A unique name for the module to be registered. - * properties - An object of module properties or a function that returns - * an object. - * - * Examples - * - * ckan.module('like-button', { - * options: { - * endpoint: '/api/v2/like' - * }, - * initialize: function () { - * var options = this.options, - * sandbox = this.sandbox, - * _ = sandbox.translate; - * - * this.el.on('click', function () { - * var url = options.endpoint; - * var message = _('Dataset was liked!').fetch(); - * sandbox.ajax( ... ); - * }); - * } - * }); - * - * Returns the ckan object. - */ - function module(name, properties) { - if (module.registry[name]) { - throw new Error('There is already a module registered as "' + name + '"'); - } - - // If a function is provided then call it to get a returns object of - // properties. - if (typeof properties === 'function') { - // The `ckan.i18n.translate` and `ckan.i18n` arguments are deprecated - // and only passed for backwards-compatibility. - properties = properties(jQuery, ckan.i18n.translate, ckan.i18n); - } - - // Provide a named constructor, this helps with debugging in the Webkit - // Web Inspector. - properties = jQuery.extend({ - constructor: function Module() { - BaseModule.apply(this, arguments); - } - }, properties); - - // Extend the instance. - module.registry[name] = jQuery.inherit(BaseModule, properties, {namespace: name}); - - return ckan; - } - - /* Holds all of the registered module functions */ - module.registry = {}; - - /* Holds all initialized instances */ - module.instances = {}; - - /* Searches the document for modules and initializes them. This should only - * be called once on page load. - * - * Examples - * - * jQuery.ready(ckan.module.initialize); - * - * Returns the module object. - */ - module.initialize = function () { - // Start caching all calls to .publish() until all modules are loaded. - ckan.pubsub.enqueue(); - - jQuery('[data-module]', document.body).each(function (index, element) { - module.initializeElement(this); - }); - - // Now trigger all .publish() calls so that all modules receive them. - ckan.pubsub.dequeue(); - - return module; - }; - - /* Initializes an individual dom modules element - * - * element = DOM node you want to initialize (not jQuery collection) - * - * Examples - * - * ckan.module.initializeElement(jQuery('[data-module="foo"]')[0]) - * - * Returns nothing - */ - module.initializeElement = function(element) { - var registry = module.registry; - var names = jQuery.trim(element.getAttribute(MODULE_PREFIX)).split(' '); - - jQuery.each(names, function (index, name) { - var Module = registry[name]; - - if (Module && typeof Module === 'function') { - module.createInstance(Module, element); - } - }); - }; - - /* Creates a new module instance for the element provided. - * - * The module factory is called with the sandbox, options object and - * translate function as arguments. In the same way as a jQuery callback the - * scope of the factory is set to the element the module is bound to. - * - * factory - The module factory function to call. - * element - The element that created the module. - * - * Examples - * - * module.createInstance(function (sb, opts, _) { - * this === sb.el[0]; // The div passed in as the second arg. - * opts === sb.opts; // Any data-module-* options on the div. - * _ === sb.translate; // A translation function. - * }, document.createInstance('div')); - * - * Returns nothing. - */ - module.createInstance = function (Module, element) { - var options = module.extractOptions(element); - var sandbox = ckan.sandbox(element, options); - - var instance = new Module(element, options, sandbox); - - if (typeof instance.initialize === 'function') { - instance.initialize(); - } - - var instances = module.instances[Module.namespace] || []; - instances.push(instance); - module.instances[Module.namespace] = instances; - }; - - /* Extracts any properties starting with MODULE_OPTION_PREFIX from the - * element and returns them as an object. - * - * Keys with additonal hyphens will be converted to camelCase. Each attribute - * will be passed to JSON.parse() so that complex object can be provided as - * options (although this is not recommended). - * - * element - The element from which to extract the attributes. - * - * Examples - * - * // Source
- * - * module.extractOptions(div); //=> {url: "http://...", fullName: "fred"} - * - * Returns an object of extracted options. - */ - module.extractOptions = function (element) { - var attrs = element.attributes; - var index = 0; - var length = attrs.length; - var options = {}; - var prop; - var attr; - var value; - - for (; index < length; index += 1) { - attr = attrs[index]; - - if (attr.name.indexOf(MODULE_OPTION_PREFIX) === 0) { - prop = attr.name.slice(MODULE_OPTION_PREFIX.length); - - // Attempt to parse the string as JSON. If this fails then simply use - // the attribute value as is. - try { - // If we have a boolean attribute (no value) then set to true. - value = attr.value === "" ? true : jQuery.parseJSON(attr.value); - } catch (error) { - value = attr.value; - } - - options[jQuery.camelCase(prop)] = value; - } - } - - return options; - }; - - ckan.module = module; - ckan.module.BaseModule = BaseModule; - -})(this.ckan, this.jQuery, this); diff --git a/ckan/public-bs2/base/javascript/modules/activity-stream.js b/ckan/public-bs2/base/javascript/modules/activity-stream.js deleted file mode 100644 index 16314f5a661..00000000000 --- a/ckan/public-bs2/base/javascript/modules/activity-stream.js +++ /dev/null @@ -1,119 +0,0 @@ -/* Activity stream - * Handle the loading more of activity items within actiivity streams - * - * Options - * - more: are there more items to load - * - context: what's the context for the ajax calls - * - id: what's the id of the context? - * - offset: what's the current offset? - */ -this.ckan.module('activity-stream', function($) { - return { - /* options object can be extended using data-module-* attributes */ - options : { - more: null, - id: null, - context: null, - offset: null, - loading: false - }, - - /* Initialises the module setting up elements and event listeners. - * - * Returns nothing. - */ - initialize: function () { - $.proxyAll(this, /_on/); - var options = this.options; - options.more = (options.more == 'True'); - this._onBuildLoadMore(); - $(window).on('scroll', this._onScrollIntoView); - this._onScrollIntoView(); - }, - - /* Function that tells if el is within the window viewpost - * - * Returns boolean - */ - elementInViewport: function(el) { - var top = el.offsetTop; - var left = el.offsetLeft; - var width = el.offsetWidth; - var height = el.offsetHeight; - while(el.offsetParent) { - el = el.offsetParent; - top += el.offsetTop; - left += el.offsetLeft; - } - return ( - top < (window.pageYOffset + window.innerHeight) && - left < (window.pageXOffset + window.innerWidth) && - (top + height) > window.pageYOffset && - (left + width) > window.pageXOffset - ); - }, - - /* Whenever the window scrolls check if the load more button - * exists, if it's in the view and we're not already loading. - * If all conditions are satisfied... fire a click event on - * the load more button. - * - * Returns nothing - */ - _onScrollIntoView: function() { - var el = $('.load-more a', this.el); - if (el.length == 1) { - var in_viewport = this.elementInViewport(el[0]); - if (in_viewport && !this.options.loading) { - el.trigger('click'); - } - } - }, - - /* If we are able to load more... then attach the ajax request - * to the load more button. - * - * Returns nothing - */ - _onBuildLoadMore: function() { - var options = this.options; - if (options.more) { - $('.load-more', this.el).on('click', 'a', this._onLoadMoreClick); - options.offset = $('.item', this.el).length; - } - }, - - /* Fires when someone clicks the load more button - * ... and if not loading then make the API call to load - * more activities - * - * Returns nothing - */ - _onLoadMoreClick: function (event) { - event.preventDefault(); - var options = this.options; - if (!options.loading) { - options.loading = true; - $('.load-more a', this.el).html(this._('Loading...')).addClass('disabled'); - this.sandbox.client.call('GET', options.context+'_activity_list_html', '?id='+options.id+'&offset='+options.offset, this._onActivitiesLoaded); - } - }, - - /* Callback for after the API call - * - * Returns nothing - */ - _onActivitiesLoaded: function(json) { - var options = this.options; - var result = $(json.result); - options.more = ( result.data('module-more') == 'True' ); - options.offset += 30; - $('.load-less', result).remove(); - $('.load-more', this.el).remove(); - $('li', result).appendTo(this.el); - this._onBuildLoadMore(); - options.loading = false; - } - - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/api-info.js b/ckan/public-bs2/base/javascript/modules/api-info.js deleted file mode 100644 index 0271e30ed48..00000000000 --- a/ckan/public-bs2/base/javascript/modules/api-info.js +++ /dev/null @@ -1,127 +0,0 @@ -/* Loads the API Info snippet into a modal dialog. Retrieves the snippet - * url from the data-snippet-url on the module element. - * - * template - The url to the template to display in a modal. - * - * Examples - * - * API - * - */ -this.ckan.module('api-info', function (jQuery) { - return { - - /* holds the loaded lightbox */ - modal: null, - - options: { - template: null - }, - - /* Sets up the API info module. - * - * Returns nothing. - */ - initialize: function () { - jQuery.proxyAll(this, /_on/); - - this.el.on('click', this._onClick); - this.el.button(); - }, - - /* Displays a loading message in the button. If false is provided as an - * argument the message is reset. - * - * loading - Resets the message if false. - * - * Examples - * - * module.loading(); // Show - * module.loading(false); // Hide - * - * Returns nothing. - */ - loading: function (loading) { - this.el.button(loading !== false ? 'loading' : 'reset'); - }, - - /* Displays the API info box. - * - * Examples - * - * module.show() - * - * Returns nothing. - */ - show: function () { - var sandbox = this.sandbox, - module = this; - - if (this.modal) { - return this.modal.modal('show'); - } - - this.loadTemplate().done(function (html) { - module.modal = jQuery(html); - module.modal.find('.modal-header :header').append(''); - module.modal.modal().appendTo(sandbox.body); - }); - }, - - /* Hides the modal. - * - * Examples - * - * module.hide(); - * - * Returns nothing. - */ - hide: function () { - if (this.modal) { - this.modal.modal('hide'); - } - }, - - /* Loads the template and returns a promise that on complete will - * receive the html content for the modal. - * - * Examples - * - * module.loadTemplate().then(onSuccess, onError); - * - * Returns a promise instance. - */ - loadTemplate: function () { - if (!this.options.template) { - this.sandbox.notify(this._('There is no API data to load for this resource')); - return jQuery.Deferred().reject().promise(); - } - - if (!this.promise) { - this.loading(); - - // This should use sandbox.client! - this.promise = jQuery.get(this.options.template); - this.promise.then(this._onTemplateSuccess, this._onTemplateError); - } - return this.promise; - }, - - /* Event handler for clicking on the element */ - _onClick: function (event) { - event.preventDefault(); - this.show(); - }, - - /* Success handler for when the template is loaded */ - _onTemplateSuccess: function () { - this.loading(false); - }, - - /* error handler when the template fails to load */ - _onTemplateError: function () { - this.loading(false); - this.sandbox.notify(this._('Failed to load data API information')); - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/autocomplete.js b/ckan/public-bs2/base/javascript/modules/autocomplete.js deleted file mode 100644 index 8a8f5e9d69c..00000000000 --- a/ckan/public-bs2/base/javascript/modules/autocomplete.js +++ /dev/null @@ -1,275 +0,0 @@ -/* An auto-complete module for select and input elements that can pull in - * a list of terms from an API endpoint (provided using data-module-source). - * - * source - A url pointing to an API autocomplete endpoint. - * interval - The interval between requests in milliseconds (default: 1000). - * items - The max number of items to display (default: 10) - * tags - Boolean attribute if true will create a tag input. - * key - A string of the key you want to be the form value to end up on - * from the ajax returned results - * label - A string of the label you want to appear within the dropdown for - * returned results - * - * Examples - * - * // - * - */ -this.ckan.module('autocomplete', function (jQuery) { - return { - /* Options for the module */ - options: { - tags: false, - key: false, - label: false, - items: 10, - source: null, - interval: 300, - dropdownClass: '', - containerClass: '' - }, - - /* Sets up the module, binding methods, creating elements etc. Called - * internally by ckan.module.initialize(); - * - * Returns nothing. - */ - initialize: function () { - jQuery.proxyAll(this, /_on/, /format/); - this.setupAutoComplete(); - }, - - /* Sets up the auto complete plugin. - * - * Returns nothing. - */ - setupAutoComplete: function () { - var settings = { - width: 'resolve', - formatResult: this.formatResult, - formatNoMatches: this.formatNoMatches, - formatInputTooShort: this.formatInputTooShort, - dropdownCssClass: this.options.dropdownClass, - containerCssClass: this.options.containerClass - }; - - // Different keys are required depending on whether the select is - // tags or generic completion. - if (!this.el.is('select')) { - if (this.options.tags) { - settings.tags = this._onQuery; - } else { - settings.query = this._onQuery; - settings.createSearchChoice = this.formatTerm; - } - settings.initSelection = this.formatInitialValue; - } - else { - if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { - var ieversion=new Number(RegExp.$1); - if (ieversion<=7) {return} - } - } - - var select2 = this.el.select2(settings).data('select2'); - - if (this.options.tags && select2 && select2.search) { - // find the "fake" input created by select2 and add the keypress event. - // This is not part of the plugins API and so may break at any time. - select2.search.on('keydown', this._onKeydown); - } - - // This prevents Internet Explorer from causing a window.onbeforeunload - // even from firing unnecessarily - $('.select2-choice', select2.container).on('click', function() { - return false; - }); - - this._select2 = select2; - }, - - /* Looks up the completions for the current search term and passes them - * into the provided callback function. - * - * The results are formatted for use in the select2 autocomplete plugin. - * - * string - The term to search for. - * fn - A callback function. - * - * Examples - * - * module.getCompletions('cake', function (results) { - * results === {results: []} - * }); - * - * Returns a jqXHR promise. - */ - getCompletions: function (string, fn) { - var parts = this.options.source.split('?'); - var end = parts.pop(); - var source = parts.join('?') + encodeURIComponent(string) + end; - var client = this.sandbox.client; - var options = { - format: function(data) { - var completion_options = jQuery.extend(options, {objects: true}); - return { - results: client.parseCompletions(data, completion_options) - } - }, - key: this.options.key, - label: this.options.label - }; - - return client.getCompletions(source, options, fn); - }, - - /* Looks up the completions for the provided text but also provides a few - * optimisations. If there is no search term it will automatically set - * an empty array. Ajax requests will also be debounced to ensure that - * the server is not overloaded. - * - * string - The term to search for. - * fn - A callback function. - * - * Returns nothing. - */ - lookup: function (string, fn) { - var module = this; - - // Cache the last searched term otherwise we'll end up searching for - // old data. - this._lastTerm = string; - - // Kills previous timeout - clearTimeout(this._debounced); - - // OK, wipe the dropdown before we start ajaxing the completions - fn({results:[]}); - - if (string) { - // Set a timer to prevent the search lookup occurring too often. - this._debounced = setTimeout(function () { - var term = module._lastTerm; - - // Cancel the previous request if it hasn't yet completed. - if (module._last && typeof module._last.abort == 'function') { - module._last.abort(); - } - - module._last = module.getCompletions(term, fn); - }, this.options.interval); - - // This forces the ajax throbber to appear, because we've called the - // callback already and that hides the throbber - $('.select2-search input', this._select2.dropdown).addClass('select2-active'); - } - }, - - /* Formatter for the select2 plugin that returns a string for use in the - * results list with the current term emboldened. - * - * state - The current object that is being rendered. - * container - The element the content will be added to (added in 3.0) - * query - The query object (added in select2 3.0). - * - * - * Returns a text string. - */ - formatResult: function (state, container, query) { - var term = this._lastTerm || null; // same as query.term - - if (container) { - // Append the select id to the element for styling. - container.attr('data-value', state.id); - } - - return state.text.split(term).join(term && term.bold()); - }, - - /* Formatter for the select2 plugin that returns a string used when - * the filter has no matches. - * - * Returns a text string. - */ - formatNoMatches: function (term) { - return !term ? this._('Start typing…') : this._('No matches found'); - }, - - /* Formatter used by the select2 plugin that returns a string when the - * input is too short. - * - * Returns a string. - */ - formatInputTooShort: function (term, min) { - return this.ngettext( - 'Input is too short, must be at least one character', - 'Input is too short, must be at least %(num)d characters', - min - ); - }, - - /* Takes a string and converts it into an object used by the select2 plugin. - * - * term - The term to convert. - * - * Returns an object for use in select2. - */ - formatTerm: function (term) { - term = jQuery.trim(term || ''); - - // Need to replace comma with a unicode character to trick the plugin - // as it won't split this into multiple items. - return {id: term.replace(/,/g, '\u002C'), text: term}; - }, - - /* Callback function that parses the initial field value. - * - * element - The initialized input element wrapped in jQuery. - * callback - A callback to run once the formatting is complete. - * - * Returns a term object or an array depending on the type. - */ - formatInitialValue: function (element, callback) { - var value = jQuery.trim(element.val() || ''); - var formatted; - - if (this.options.tags) { - formatted = jQuery.map(value.split(","), this.formatTerm); - } else { - formatted = this.formatTerm(value); - } - - // Select2 v3.0 supports a callback for async calls. - if (typeof callback === 'function') { - callback(formatted); - } - - return formatted; - }, - - /* Callback triggered when the select2 plugin needs to make a request. - * - * Returns nothing. - */ - _onQuery: function (options) { - if (options) { - this.lookup(options.term, options.callback); - } - }, - - /* Called when a key is pressed. If the key is a comma we block it and - * then simulate pressing return. - * - * Returns nothing. - */ - _onKeydown: function (event) { - if (event.which === 188) { - event.preventDefault(); - setTimeout(function () { - var e = jQuery.Event("keydown", { which: 13 }); - jQuery(event.target).trigger(e); - }, 10); - } - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/basic-form.js b/ckan/public-bs2/base/javascript/modules/basic-form.js deleted file mode 100644 index a3c57b094a1..00000000000 --- a/ckan/public-bs2/base/javascript/modules/basic-form.js +++ /dev/null @@ -1,24 +0,0 @@ -this.ckan.module('basic-form', function (jQuery) { - return { - initialize: function () { - var message = this._('There are unsaved modifications to this form'); - - $.proxyAll(this, /_on/); - - this.el.incompleteFormWarning(message); - - // Disable the submit button on form submit, to prevent multiple - // consecutive form submissions. - this.el.on('submit', this._onSubmit); - }, - _onSubmit() { - - // The button is not disabled immediately so that its value can be sent - // the first time the form is submitted, because the "save" field is - // used in the backend. - setTimeout(function() { - this.el.find('button[name="save"]').attr('disabled', true); - }.bind(this), 0); - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/confirm-action.js b/ckan/public-bs2/base/javascript/modules/confirm-action.js deleted file mode 100644 index 7ee99fc2fb8..00000000000 --- a/ckan/public-bs2/base/javascript/modules/confirm-action.js +++ /dev/null @@ -1,124 +0,0 @@ -this.ckan.module('confirm-action', function (jQuery) { - return { - /* An object of module options */ - options: { - /* Content can be overriden by setting data-module-content to a - * *translated* string inside the template, e.g. - * - * - * {{ _('Delete') }} - * - */ - content: '', - - /* This is part of the old i18n system and is kept for backwards- - * compatibility for templates which set the content via the - * `i18n.content` attribute instead of via the `content` attribute - * as described above. - */ - i18n: { - content: '', - }, - - template: [ - '' - ].join('\n') - }, - - /* Sets up the event listeners for the object. Called internally by - * module.createInstance(). - * - * Returns nothing. - */ - initialize: function () { - jQuery.proxyAll(this, /_on/); - this.el.on('click', this._onClick); - }, - - /* Presents the user with a confirm dialogue to ensure that they wish to - * continue with the current action. - * - * Examples - * - * jQuery('.delete').click(function () { - * module.confirm(); - * }); - * - * Returns nothing. - */ - confirm: function () { - this.sandbox.body.append(this.createModal()); - this.modal.modal('show'); - - // Center the modal in the middle of the screen. - this.modal.css({ - 'margin-top': this.modal.height() * -0.5, - 'top': '50%' - }); - }, - - /* Performs the action for the current item. - * - * Returns nothing. - */ - performAction: function () { - // create a form and submit it to confirm the deletion - var form = jQuery('
', { - action: this.el.attr('href'), - method: 'POST' - }); - form.appendTo('body').submit(); - }, - - /* Creates the modal dialog, attaches event listeners and localised - * strings. - * - * Returns the newly created element. - */ - createModal: function () { - if (!this.modal) { - var element = this.modal = jQuery(this.options.template); - element.on('click', '.btn-primary', this._onConfirmSuccess); - element.on('click', '.btn-cancel', this._onConfirmCancel); - element.modal({show: false}); - - element.find('h3').text(this._('Please Confirm Action')); - var content = this.options.content || - this.options.i18n.content || /* Backwards-compatibility */ - this._('Are you sure you want to perform this action?'); - element.find('.modal-body').text(content); - element.find('.btn-primary').text(this._('Confirm')); - element.find('.btn-cancel').text(this._('Cancel')); - } - return this.modal; - }, - - /* Event handler that displays the confirm dialog */ - _onClick: function (event) { - event.preventDefault(); - this.confirm(); - }, - - /* Event handler for the success event */ - _onConfirmSuccess: function (event) { - this.performAction(); - }, - - /* Event handler for the cancel event */ - _onConfirmCancel: function (event) { - this.modal.modal('hide'); - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/custom-fields.js b/ckan/public-bs2/base/javascript/modules/custom-fields.js deleted file mode 100644 index bc4f7c139f1..00000000000 --- a/ckan/public-bs2/base/javascript/modules/custom-fields.js +++ /dev/null @@ -1,102 +0,0 @@ -/* Module for working with multiple custom field inputs. This will create - * a new field when the user enters text into the last field key. It also - * gives a visual indicator when fields are removed by disabling them. - * - * See the snippets/custom_form_fields.html for an example. - */ -this.ckan.module('custom-fields', function (jQuery) { - return { - options: { - /* The selector used for each custom field wrapper */ - fieldSelector: '.control-custom' - }, - - /* Initializes the module and attaches custom event listeners. This - * is called internally by ckan.module.initialize(). - * - * Returns nothing. - */ - initialize: function () { - jQuery.proxyAll(this, /_on/); - - var delegated = this.options.fieldSelector + ':last input:first'; - this.el.on('change', delegated, this._onChange); - this.el.on('change', ':checkbox', this._onRemove); - - // Style the remove checkbox like a button. - this.$('.checkbox').addClass("btn btn-danger fa fa-times"); - }, - - /* Creates a new field and appends it to the list. This currently works by - * cloning and erasing an existing input rather than using a template. In - * future using a template might be more appropriate. - * - * element - Another custom field element to wrap. - * - * Returns nothing. - */ - newField: function (element) { - this.el.append(this.cloneField(element)); - }, - - /* Clones the provided element, wipes it's content and increments it's - * for, id and name fields (if possible). - * - * current - A custom field to clone. - * - * Returns a newly created custom field element. - */ - cloneField: function (current) { - return this.resetField(jQuery(current).clone()); - }, - - /* Wipes the contents of the field provided and increments it's name, id - * and for attributes. - * - * field - A custom field to wipe. - * - * Returns the wiped element. - */ - resetField: function (field) { - function increment(index, string) { - return (string || '').replace(/\d+/, function (int) { return 1 + parseInt(int, 10); }); - } - - var input = field.find(':input'); - input.val('').attr('id', increment).attr('name', increment); - - var label = field.find('label'); - label.text(increment).attr('for', increment); - - return field; - }, - - /* Disables the provided field and input elements. Can be re-enabled by - * passing false as the second argument. - * - * field - The field to disable. - * disable - If false re-enables the element. - * - * Returns nothing. - */ - disableField: function (field, disable) { - field.toggleClass('disabled', disable !== false); - }, - - /* Event handler that fires when the last key in the custom field block - * changes. - */ - _onChange: function (event) { - if (event.target.value !== '') { - var parent = jQuery(event.target).parents(this.options.fieldSelector); - this.newField(parent); - } - }, - - /* Event handler called when the remove checkbox is checked */ - _onRemove: function (event) { - var parent = jQuery(event.target).parents(this.options.fieldSelector); - this.disableField(parent, event.target.checked); - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/dashboard.js b/ckan/public-bs2/base/javascript/modules/dashboard.js deleted file mode 100644 index 6187de9da18..00000000000 --- a/ckan/public-bs2/base/javascript/modules/dashboard.js +++ /dev/null @@ -1,86 +0,0 @@ -/* User Dashboard - * Handles the filter dropdown menu and the reduction of the notifications number - * within the header to zero - * - * Examples - * - *
- * - */ -this.ckan.module('dashboard', function ($) { - return { - button: null, - popover: null, - searchTimeout: null, - - /* Initialises the module setting up elements and event listeners. - * - * Returns nothing. - */ - initialize: function () { - $.proxyAll(this, /_on/); - this.button = $('#followee-filter .btn'). - on('click', this._onShowFolloweeDropdown); - var title = this.button.prop('title'); - this.button.popover({ - placement: 'bottom', - title: 'Filter', - html: true, - content: $('#followee-popover').html() - }); - this.button.prop('title', title); - this.popover = this.button.data('popover').tip().addClass('popover-followee'); - }, - - /* Handles click event on the 'show me:' dropdown button - * - * Returns nothing. - */ - _onShowFolloweeDropdown: function() { - this.button.toggleClass('active'); - if (this.button.hasClass('active')) { - setTimeout(this._onInitSearch, 100); - } - return false; - }, - - /* Handles focusing on the input and making sure that the keyup - * even is applied to the input - * - * Returns nothing. - */ - _onInitSearch: function() { - var input = $('input', this.popover); - if (!input.hasClass('inited')) { - input. - on('keyup', this._onSearchKeyUp). - addClass('inited'); - } - input.focus(); - }, - - /* Handles the keyup event - * - * Returns nothing. - */ - _onSearchKeyUp: function() { - clearTimeout(this.searchTimeout); - this.searchTimeout = setTimeout(this._onSearchKeyUpTimeout, 300); - }, - - /* Handles the actual filtering of search results - * - * Returns nothing. - */ - _onSearchKeyUpTimeout: function() { - var input = $('input', this.popover); - var q = input.val().toLowerCase(); - if (q) { - $('li', this.popover).hide(); - $('li.everything, [data-search^="' + q + '"]', this.popover).show(); - } else { - $('li', this.popover).show(); - } - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/data-viewer.js b/ckan/public-bs2/base/javascript/modules/data-viewer.js deleted file mode 100644 index 5b9cbafce98..00000000000 --- a/ckan/public-bs2/base/javascript/modules/data-viewer.js +++ /dev/null @@ -1,54 +0,0 @@ -// data viewer module -// resizes the iframe when the content is loaded -this.ckan.module('data-viewer', function (jQuery) { - return { - options: { - timeout: 200, - minHeight: 400, - padding: 30 - }, - - initialize: function () { - jQuery.proxyAll(this, /_on/); - this.el.on('load', this._onLoad); - this._FirefoxFix(); - this.sandbox.subscribe('data-viewer-error', this._onDataViewerError); - }, - - _onDataViewerError: function(message) { - var parent = this.el.parent(); - $('.data-viewer-error .collapse', parent).html(message); - $('.data-viewer-error', parent).removeClass('js-hide'); - this.el.hide(); - }, - - _onLoad: function() { - var self = this; - var loc = $('body').data('site-root'); - // see if page is in part of the same domain - if (this.el.attr('src').substring(0, loc.length) === loc) { - this._recalibrate(); - setInterval(function() { - self._recalibrate(); - }, this.options.timeout); - } else { - this.el.css('height', 600); - } - }, - - _recalibrate: function() { - var height = this.el.contents().find('body').outerHeight(true); - height = Math.max(height, this.options.minHeight); - this.el.css('height', height + this.options.padding); - }, - - // firefox caches iframes so force it to get fresh content - _FirefoxFix: function() { - if(/#$/.test(this.el.src)) { - this.el.src = this.el.src.substr(0, this.src.length - 1); - } else { - this.el.src = this.el.src + '#'; - } - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/dataset-visibility.js b/ckan/public-bs2/base/javascript/modules/dataset-visibility.js deleted file mode 100644 index 4d9148f25b1..00000000000 --- a/ckan/public-bs2/base/javascript/modules/dataset-visibility.js +++ /dev/null @@ -1,32 +0,0 @@ -/* Dataset visibility toggler - * When no organization is selected in the org dropdown then set visibility to - * public always and disable dropdown - */ -this.ckan.module('dataset-visibility', function ($) { - return { - currentValue: false, - options: { - organizations: $('#field-organizations'), - visibility: $('#field-private'), - currentValue: null - }, - initialize: function() { - $.proxyAll(this, /_on/); - this.options.currentValue = this.options.visibility.val(); - this.options.organizations.on('change', this._onOrganizationChange); - this._onOrganizationChange(); - }, - _onOrganizationChange: function() { - var value = this.options.organizations.val(); - if (value) { - this.options.visibility - .prop('disabled', false) - .val(this.options.currentValue); - } else { - this.options.visibility - .prop('disabled', true) - .val('False'); - } - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/follow.js b/ckan/public-bs2/base/javascript/modules/follow.js deleted file mode 100644 index 40438f30801..00000000000 --- a/ckan/public-bs2/base/javascript/modules/follow.js +++ /dev/null @@ -1,78 +0,0 @@ -/* Follow buttons - * Handles calling the API to follow the current user - * - * action - This being the action that the button should perform. Currently: "follow" or "unfollow" - * type - The being the type of object the user is trying to support. Currently: "user", "group" or "dataset" - * id - id of the objec the user is trying to follow - * loading - State management helper - * - * Examples - * - * Follow User - * - */ -this.ckan.module('follow', function($) { - return { - /* options object can be extended using data-module-* attributes */ - options : { - action: null, - type: null, - id: null, - loading: false - }, - - /* Initialises the module setting up elements and event listeners. - * - * Returns nothing. - */ - initialize: function () { - $.proxyAll(this, /_on/); - this.el.on('click', this._onClick); - }, - - /* Handles the clicking of the follow button - * - * event - An event object. - * - * Returns nothing. - */ - _onClick: function(event) { - var options = this.options; - if ( - options.action - && options.type - && options.id - && !options.loading - ) { - event.preventDefault(); - var client = this.sandbox.client; - var path = options.action + '_' + options.type; - options.loading = true; - this.el.addClass('disabled'); - client.call('POST', path, { id : options.id }, this._onClickLoaded); - } - }, - - /* Fired after the call to the API to either follow or unfollow - * - * json - The return json from the follow / unfollow API call - * - * Returns nothing. - */ - _onClickLoaded: function(json) { - var options = this.options; - var sandbox = this.sandbox; - var oldAction = options.action; - options.loading = false; - this.el.removeClass('disabled'); - if (options.action == 'follow') { - options.action = 'unfollow'; - this.el.html(' ' + this._('Unfollow')).removeClass('btn-success').addClass('btn-danger'); - } else { - options.action = 'follow'; - this.el.html(' ' + this._('Follow')).removeClass('btn-danger').addClass('btn-success'); - } - sandbox.publish('follow-' + oldAction + '-' + options.id); - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/followers-counter.js b/ckan/public-bs2/base/javascript/modules/followers-counter.js deleted file mode 100644 index daf531ab319..00000000000 --- a/ckan/public-bs2/base/javascript/modules/followers-counter.js +++ /dev/null @@ -1,91 +0,0 @@ -/* Updates the Followers counter in the UI when the Follow/Unfollow button -* is clicked. -* -* id - id of the object the user is trying to follow/unfollow. -* num_followers - Number of followers the object has. -* -* Example -* -*
-* 6 -*
-* -*/ -this.ckan.module('followers-counter', function($) { - 'use strict'; - - return { - options: { - id: null, - num_followers: 0 - }, - - /* Subscribe to events when the Follow/Unfollow button is clicked. - * - * Returns nothing. - */ - initialize: function() { - $.proxyAll(this, /_on/); - - this.counterEl = this.$('span'); - this.objId = this.options.id; - - this.sandbox.subscribe('follow-follow-' + this.objId, this._onFollow); - this.sandbox.subscribe('follow-unfollow-' + this.objId, this._onUnfollow); - }, - - /* Calls a function to update the counter when the Follow button is clicked. - * - * Returns nothing. - */ - _onFollow: function() { - this._updateCounter({action: 'follow'}); - }, - - /* Calls a function to update the counter when the Unfollow button is clicked. - * - * Returns nothing. - */ - _onUnfollow: function() { - this._updateCounter({action: 'unfollow'}); - }, - - /* Handles updating the UI for Followers counter. - * - * Returns nothing. - */ - _updateCounter: function(options) { - var locale = $('html').attr('lang'); - var action = options.action; - var incrementedFollowers; - - if (action === 'follow') { - incrementedFollowers = (++this.options.num_followers).toLocaleString(locale); - } else if (action === 'unfollow') { - incrementedFollowers = (--this.options.num_followers).toLocaleString(locale); - } - - // Only update the value if it's less than 1000, because for larger - // numbers the change won't be noticeable since the value is converted - // to SI number abbreviated with "k", "m" and so on. - if (this.options.num_followers < 1000) { - this.counterEl.text(incrementedFollowers); - this.counterEl.removeAttr('title'); - } else { - this.counterEl.attr('title', incrementedFollowers); - } - }, - - /* Remove any subscriptions to prevent memory leaks. This function is - * called when a module element is removed from the page. - * - * Returns nothing. - */ - teardown: function() { - this.sandbox.unsubscribe('follow-follow-' + this.objId, this._onFollow); - this.sandbox.unsubscribe('follow-unfollow-' + this.objId, this._onUnfollow); - } - } -}); diff --git a/ckan/public-bs2/base/javascript/modules/image-upload.js b/ckan/public-bs2/base/javascript/modules/image-upload.js deleted file mode 100644 index 333dc378e30..00000000000 --- a/ckan/public-bs2/base/javascript/modules/image-upload.js +++ /dev/null @@ -1,280 +0,0 @@ - /* Image Upload - * - */ -this.ckan.module('image-upload', function($) { - return { - /* options object can be extended using data-module-* attributes */ - options: { - is_url: false, - is_upload: false, - field_upload: 'image_upload', - field_url: 'image_url', - field_clear: 'clear_upload', - field_name: 'name', - upload_label: '' - }, - - /* Should be changed to true if user modifies resource's name - * - * @type {Boolean} - */ - _nameIsDirty: false, - - /* Initialises the module setting up elements and event listeners. - * - * Returns nothing. - */ - initialize: function () { - $.proxyAll(this, /_on/); - var options = this.options; - - // firstly setup the fields - var field_upload = 'input[name="' + options.field_upload + '"]'; - var field_url = 'input[name="' + options.field_url + '"]'; - var field_clear = 'input[name="' + options.field_clear + '"]'; - var field_name = 'input[name="' + options.field_name + '"]'; - - this.input = $(field_upload, this.el); - this.field_url = $(field_url, this.el).parents('.control-group'); - this.field_image = this.input.parents('.control-group'); - this.field_url_input = $('input', this.field_url); - this.field_name = this.el.parents('form').find(field_name); - // this is the location for the upload/link data/image label - this.label_location = $('label[for="field-image-url"]'); - // determines if the resource is a data resource - this.is_data_resource = (this.options.field_url === 'url') && (this.options.field_upload === 'upload'); - - // Is there a clear checkbox on the form already? - var checkbox = $(field_clear, this.el); - if (checkbox.length > 0) { - checkbox.parents('.control-group').remove(); - } - - // Adds the hidden clear input to the form - this.field_clear = $('') - .appendTo(this.el); - - // Button to set the field to be a URL - this.button_url = $('' + - '' + - this._('Link') + '') - .prop('title', this._('Link to a URL on the internet (you can also link to an API)')) - .on('click', this._onFromWeb) - .insertAfter(this.input); - - // Button to attach local file to the form - this.button_upload = $('' + - '' + - this._('Upload') + '') - .insertAfter(this.input); - - // Button for resetting the form when there is a URL set - var removeText = this._('Remove'); - $('' - + removeText + '') - .prop('title', removeText) - .on('click', this._onRemove) - .insertBefore(this.field_url_input); - - // Update the main label (this is displayed when no data/image has been uploaded/linked) - $('label[for="field-image-upload"]').text(options.upload_label || this._('Image')); - - // Setup the file input - this.input - .on('mouseover', this._onInputMouseOver) - .on('mouseout', this._onInputMouseOut) - .on('change', this._onInputChange) - .prop('title', this._('Upload a file on your computer')) - .css('width', this.button_upload.outerWidth()); - - // Fields storage. Used in this.changeState - this.fields = $('') - .add(this.button_upload) - .add(this.button_url) - .add(this.input) - .add(this.field_url) - .add(this.field_image); - - // Disables autoName if user modifies name field - this.field_name - .on('change', this._onModifyName); - // Disables autoName if resource name already has value, - // i.e. we on edit page - if (this.field_name.val()){ - this._nameIsDirty = true; - } - - if (options.is_url) { - this._showOnlyFieldUrl(); - - this._updateUrlLabel(this._('URL')); - } else if (options.is_upload) { - this._showOnlyFieldUrl(); - - this.field_url_input.prop('readonly', true); - // If the data is an uploaded file, the filename will display rather than whole url of the site - var filename = this._fileNameFromUpload(this.field_url_input.val()); - this.field_url_input.val(filename); - - this._updateUrlLabel(this._('File')); - } else { - this._showOnlyButtons(); - } - }, - - /* Quick way of getting just the filename from the uri of the resource data - * - * url - The url of the uploaded data file - * - * Returns String. - */ - _fileNameFromUpload: function(url) { - // If it's a local CKAN image return the entire URL. - if (/^\/base\/images/.test(url)) { - return url; - } - - // remove fragment (#) - url = url.substring(0, (url.indexOf("#") === -1) ? url.length : url.indexOf("#")); - // remove query string - url = url.substring(0, (url.indexOf("?") === -1) ? url.length : url.indexOf("?")); - // extract the filename - url = url.substring(url.lastIndexOf("/") + 1, url.length); - - return url; // filename - }, - - /* Update the `this.label_location` text - * - * If the upload/link is for a data resource, rather than an image, - * the text for label[for="field-image-url"] will be updated. - * - * label_text - The text for the label of an uploaded/linked resource - * - * Returns nothing. - */ - _updateUrlLabel: function(label_text) { - if (! this.is_data_resource) { - return; - } - - this.label_location.text(label_text); - }, - - /* Event listener for when someone sets the field to URL mode - * - * Returns nothing. - */ - _onFromWeb: function() { - this._showOnlyFieldUrl(); - - this.field_url_input.focus() - .on('blur', this._onFromWebBlur); - - if (this.options.is_upload) { - this.field_clear.val('true'); - } - - this._updateUrlLabel(this._('URL')); - }, - - /* Event listener for resetting the field back to the blank state - * - * Returns nothing. - */ - _onRemove: function() { - this._showOnlyButtons(); - - this.field_url_input.val(''); - this.field_url_input.prop('readonly', false); - - this.field_clear.val('true'); - }, - - /* Event listener for when someone chooses a file to upload - * - * Returns nothing. - */ - _onInputChange: function() { - var file_name = this.input.val().split(/^C:\\fakepath\\/).pop(); - this.field_url_input.val(file_name); - this.field_url_input.prop('readonly', true); - - this.field_clear.val(''); - - this._showOnlyFieldUrl(); - - this._autoName(file_name); - - this._updateUrlLabel(this._('File')); - }, - - /* Show only the buttons, hiding all others - * - * Returns nothing. - */ - _showOnlyButtons: function() { - this.fields.hide(); - this.button_upload - .add(this.field_image) - .add(this.button_url) - .add(this.input) - .show(); - }, - - /* Show only the URL field, hiding all others - * - * Returns nothing. - */ - _showOnlyFieldUrl: function() { - this.fields.hide(); - this.field_url.show(); - }, - - /* Event listener for when a user mouseovers the hidden file input - * - * Returns nothing. - */ - _onInputMouseOver: function() { - this.button_upload.addClass('hover'); - }, - - /* Event listener for when a user mouseouts the hidden file input - * - * Returns nothing. - */ - _onInputMouseOut: function() { - this.button_upload.removeClass('hover'); - }, - - /* Event listener for changes in resource's name by direct input from user - * - * Returns nothing - */ - _onModifyName: function() { - this._nameIsDirty = true; - }, - - /* Event listener for when someone loses focus of URL field - * - * Returns nothing - */ - _onFromWebBlur: function() { - var url = this.field_url_input.val().match(/([^\/]+)\/?$/) - if (url) { - this._autoName(url.pop()); - } - }, - - /* Automatically add file name into field Name - * - * Select by attribute [name] to be on the safe side and allow to change field id - * Returns nothing - */ - _autoName: function(name) { - if (!this._nameIsDirty){ - this.field_name.val(name); - } - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/media-grid.js b/ckan/public-bs2/base/javascript/modules/media-grid.js deleted file mode 100644 index a6e269f511a..00000000000 --- a/ckan/public-bs2/base/javascript/modules/media-grid.js +++ /dev/null @@ -1,16 +0,0 @@ -/* Media Grid - * Super simple plugin that waits for all the images to be loaded in the media - * grid and then applies the jQuery.masonry to then - */ -this.ckan.module('media-grid', function ($) { - return { - initialize: function () { - var wrapper = this.el; - wrapper.imagesLoaded(function() { - wrapper.masonry({ - itemSelector: '.media-item' - }); - }); - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/popover-context.js b/ckan/public-bs2/base/javascript/modules/popover-context.js deleted file mode 100644 index 236969f0d18..00000000000 --- a/ckan/public-bs2/base/javascript/modules/popover-context.js +++ /dev/null @@ -1,257 +0,0 @@ -/* Popover context - * These appear when someone hovers over a context item in a activity stream to - * give the user more context into that particular item. It also allows for - * people to follow and unfollow quickly from within the popover - * - * id - The user_id of user - * context - The type of this popover: currently supports user & package - - * url - The URL of the profile for that user - * loading - Loading state helper - * authed - Is the current user authed ... if so what's their user_id - * template - Simple string-replace template for content of popover - * - * Examples - * - * A user - * - */ - -// Global dictionary and render store for items -window.popover_context = { - dict: { - user: {}, - dataset: {}, - group: {} - }, - render: { - user: {}, - dataset: {}, - group: {} - } -}; - -this.ckan.module('popover-context', function($) { - return { - - /* options object can be extended using data-module-* attributes */ - options : { - id: null, - loading: false, - error: false, - authed: false, - throbber: '' - }, - - /* Initialises the module setting up elements and event listeners. - * - * Returns nothing. - */ - initialize: function() { - if ( - this.options.id != true - && this.options.id != null - ) { - $.proxyAll(this, /_on/); - if ($('.account').hasClass('authed')) { - this.options.authed = $('.account').data('me'); - } - this.el.popover({ - animation: false, - html: true, - content: this.options.throbber.replace('{SITE_ROOT}', ckan.SITE_ROOT) + this._('Loading...'), - placement: 'bottom' - }); - this.el.on('mouseover', this._onMouseOver); - $(document).on('mouseup', this._onDocumentMouseUp); - this.sandbox.subscribe('follow-follow-' + this.options.id, this._onHandleFollow); - this.sandbox.subscribe('follow-unfollow-' + this.options.id, this._onHandleFollow); - } - }, - - /* Get's called on document click in order to hide popover on not hit - * - * Returns nothing. - */ - _onDocumentMouseUp: function(event) { - var popover = this.el.data('popover'); - if (typeof popover.$tip != 'undefined') { - if (popover.$tip.has(event.target).length === 0) { - this.el.popover('hide'); - } - } - }, - - /* Helper that changes the loading state of the active popover - * - * Returns nothing. - */ - loadingHelper: function(loading) { - this.options.loading = loading; - var popover = this.el.data('popover'); - if (typeof popover.$tip != 'undefined') { - if (loading) { - popover.$tip.addClass('popover-context-loading'); - } else { - popover.$tip.removeClass('popover-context-loading'); - } - } - }, - - /* Handles the showing of the popover on hover (also hides other active - * popovers) - * - * Returns nothing. - */ - _onMouseOver: function() { - $('[data-module="popover-context"]').popover('hide'); - this.el.popover('show'); - this.getData(); - }, - - /* Get's the data from the ckan api - * - * Returns nothing. - */ - getData: function() { - if (!this.options.loading) { - this.loadingHelper(true); - var id = this.options.id; - var type = this.options.type; - if (typeof window.popover_context.dict[type][id] == 'undefined') { - var client = this.sandbox.client; - var endpoint = type + '_show'; - if (type == 'dataset') { - endpoint = 'package_show'; - } - client.call('GET', endpoint, '?id=' + id, this._onHandleData, this._onHandleError); - } else { - this._onHandleData(window.popover_context.dict[type][id]); - } - } - }, - - /* Handle's a error on the call api - * - * Returns nothing. - */ - _onHandleError: function(error) { - $('[data-module="popover-context"][data-module-type="'+this.options.type+'"][data-module-id="'+this.options.id+'"]').popover('destroy'); - }, - - /* Callback from getting the endpoint from the ckan api - * - * Returns nothing. - */ - _onHandleData: function(json) { - if (json.success) { - var id = this.options.id; - var type = this.options.type; - var client = this.sandbox.client; - // set the dictionary - window.popover_context.dict[type][id] = json; - - // has this been rendered before? - if (typeof window.popover_context.render[type][id] == 'undefined') { - var params = this.sanitiseParams(json.result); - client.getTemplate('popover_context_' + type + '.html', params, this._onRenderPopover); - } else { - this._onRenderPopover(window.popover_context.render[type][id]); - } - } - }, - - /* Used to break down a raw object into something a little more - * passable into a GET request - * - * Returns object. - */ - sanitiseParams: function(raw) { - var type = this.options.type; - var params = {}; - if (type == 'user') { - params.id = raw.id; - params.name = raw.name; - params.about = raw.about; - params.display_name = raw.display_name; - params.num_followers = raw.num_followers; - params.number_administered_packages = raw.number_administered_packages; - params.number_of_edits = raw.number_of_edits; - params.is_me = ( raw.id == this.options.authed ); - } else if (type == 'dataset') { - params.id = raw.id; - params.title = raw.title; - params.name = raw.name; - params.notes = raw.notes; - params.num_resources = raw.num_resources; - params.num_tags = raw.num_tags; - } else if (type == 'group') { - params.id = raw.id; - params.title = raw.title; - params.name = raw.name; - params.description = raw.description; - params.package_count = raw.package_count; - params.num_followers = raw.num_followers; - } - return params; - }, - - /* Renders the contents of the popover - * - * Returns nothing. - */ - _onRenderPopover: function(html) { - var id = this.options.id; - var type = this.options.type; - var dict = window.popover_context.dict[type][id].result; - var popover = this.el.data('popover'); - if (typeof popover.$tip != 'undefined') { - var tip = popover.$tip; - var title = ( type == 'user' ) ? dict.display_name : dict.title; - $('.popover-title', tip).html('×' + title); - $('.popover-content', tip).html(html); - $('.popover-close', tip).on('click', this._onClickPopoverClose); - var follow_check = this.getFollowButton(); - if (follow_check) { - ckan.module.initializeElement(follow_check[0]); - } - this.loadingHelper(false); - } - // set the global - window.popover_context.render[type][id] = html; - }, - - /* Handles closing the currently open popover - * - * Returns nothing. - */ - _onClickPopoverClose: function() { - this.el.popover('hide'); - }, - - /* Handles getting the follow button form within a popover - * - * Returns jQuery collection || false. - */ - getFollowButton: function() { - var popover = this.el.data('popover'); - if (typeof popover.$tip != 'undefined') { - var button = $('[data-module="follow"]', popover.$tip); - if (button.length > 0) { - return button; - } - } - return false; - }, - - /* Callback from when you follow/unfollow a specified item... this is - * used to ensure all popovers associated to that user get re-populated - * - * Returns nothing. - */ - _onHandleFollow: function() { - delete window.popover_context.render[this.options.type][this.options.id]; - } - - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/resource-form.js b/ckan/public-bs2/base/javascript/modules/resource-form.js deleted file mode 100644 index f8bd136fb58..00000000000 --- a/ckan/public-bs2/base/javascript/modules/resource-form.js +++ /dev/null @@ -1,55 +0,0 @@ -/* Module for the resource form. Handles validation and updating the form - * with external data such as from a file upload. - */ -this.ckan.module('resource-form', function (jQuery) { - return { - /* Called by the ckan core if a corresponding element is found on the page. - * Handles setting up event listeners, adding elements to the page etc. - * - * Returns nothing. - */ - initialize: function () { - jQuery.proxyAll(this, /_on/); - this.sandbox.subscribe('resource:uploaded', this._onResourceUploaded); - }, - - /* Remove any subscriptions to prevent memory leaks. This function is - * called when a module element is removed from the page. - * - * Returns nothing.. - */ - teardown: function () { - this.sandbox.unsubscribe('resource:uploaded', this._onResourceUploaded); - }, - - /* Callback function that loads a newly uploaded resource into the form. - * Handles updating the various types of form fields. - * - * resource - A resource data object. - * - * Examples - * - * this.sandbox.subscribe('resource:uploaded', this._onResourceUploaded); - * - * Returns nothing. - */ - _onResourceUploaded: function (resource) { - var key; - var field; - - for (key in resource) { - if (resource.hasOwnProperty(key)) { - field = this.$('[name="' + key + '"]'); - - if (field.is(':checkbox, :radio')) { - this.$('[value="' + resource[key] + '"]').prop('checked', true); - } else if (field.is('select')) { - field.prop('selected', resource[key]); - } else { - field.val(resource[key]); - } - } - } - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/resource-reorder.js b/ckan/public-bs2/base/javascript/modules/resource-reorder.js deleted file mode 100644 index 794f025a235..00000000000 --- a/ckan/public-bs2/base/javascript/modules/resource-reorder.js +++ /dev/null @@ -1,141 +0,0 @@ -/* Module for reordering resources - */ -this.ckan.module('resource-reorder', function($) { - return { - options: { - id: false, - labelText: 'Reorder resources' - }, - template: { - title: '

', - button: [ - '', - '', - '', - '' - ].join('\n'), - form_actions: [ - '
', - '', - '', - '
' - ].join('\n'), - handle: [ - '', - '', - '' - ].join('\n'), - saving: [ - '', - '', - '', - '' - ].join('\n') - }, - is_reordering: false, - cache: false, - - initialize: function() { - jQuery.proxyAll(this, /_on/); - - var labelText = this._(this.options.labelText); - - this.html_title = $(this.template.title) - .text(labelText) - .insertBefore(this.el) - .hide(); - var button = $(this.template.button) - .on('click', this._onHandleStartReorder) - .appendTo('.page_primary_action'); - $('span', button).text(labelText); - - this.html_form_actions = $(this.template.form_actions) - .hide() - .insertAfter(this.el); - $('.save', this.html_form_actions) - .text(this._('Save order')) - .on('click', this._onHandleSave); - $('.cancel', this.html_form_actions) - .text(this._('Cancel')) - .on('click', this._onHandleCancel); - - this.html_handles = $(this.template.handle) - .hide() - .appendTo($('.resource-item', this.el)); - - this.html_saving = $(this.template.saving) - .hide() - .insertBefore($('.save', this.html_form_actions)); - $('span', this.html_saving).text(this._('Saving...')); - - this.cache = this.el.html(); - - this.el - .sortable() - .sortable('disable'); - - }, - - _onHandleStartReorder: function() { - if (!this.is_reordering) { - this.html_form_actions - .add(this.html_handles) - .add(this.html_title) - .show(); - this.el - .addClass('reordering') - .sortable('enable'); - $('.page_primary_action').hide(); - this.is_reordering = true; - } - }, - - _onHandleCancel: function() { - if ( - this.is_reordering - && !$('.cancel', this.html_form_actions).hasClass('disabled') - ) { - this.reset(); - this.is_reordering = false; - this.el.html(this.cache) - .sortable() - .sortable('disable'); - this.html_handles = $('.handle', this.el); - } - }, - - _onHandleSave: function() { - if (!$('.save', this.html_form_actions).hasClass('disabled')) { - var module = this; - module.html_saving.show(); - $('.save, .cancel', module.html_form_actions).addClass('disabled'); - var order = []; - $('.resource-item', module.el).each(function() { - order.push($(this).data('id')); - }); - module.sandbox.client.call('POST', 'package_resource_reorder', { - id: module.options.id, - order: order - }, function() { - module.html_saving.hide(); - $('.save, .cancel', module.html_form_actions).removeClass('disabled'); - module.cache = module.el.html(); - module.reset(); - module.is_reordering = false; - }); - } - }, - - reset: function() { - this.html_form_actions - .add(this.html_handles) - .add(this.html_title) - .hide(); - this.el - .removeClass('reordering') - .sortable('disable'); - $('.page_primary_action').show(); - } - - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/resource-upload-field.js b/ckan/public-bs2/base/javascript/modules/resource-upload-field.js deleted file mode 100644 index 68622962d6a..00000000000 --- a/ckan/public-bs2/base/javascript/modules/resource-upload-field.js +++ /dev/null @@ -1,280 +0,0 @@ -/* This module creates a new resource_type field for an uploaded file and - * appends file input into the page. - * - * Events: - * - * Publishes the 'resource:uploaded' event when a file is successfully - * uploaded. An callbacks receive an object of resource data. - * - * See: http://docs.ckan.org/en/latest/filestore.html - * - * options - form: General form overrides for the upload. - * template: Optional template can be provided. - * - */ -this.ckan.module('resource-upload-field', function (jQuery) { - return { - /* Default options for the module */ - options: { - form: { - method: 'POST', - file: 'file', - params: [] - }, - template: [ - '', - '', - '', - '', - '', - '' - ].join('\n') - }, - - /* Initializes the module, creates new elements and registers event - * listeners etc. This method is called by ckan.initialize() if there - * is a corresponding element on the page. - * - * Returns nothing. - */ - initialize: function () { - jQuery.proxyAll(this, /_on/); - - this.upload = jQuery(this.options.template); - this.setupFileUpload(); - this.el.append(this.upload); - - jQuery(window).on('beforeunload', this._onWindowUpload); - }, - - /* Sets up the jQuery.fileUpload() plugin with the provided options. - * - * Returns nothing. - */ - setupFileUpload: function () { - var options = this.options; - - this.upload.find('label').text(this._('Upload a file')); - this.upload.find('input[type=file]').fileupload({ - type: options.form.method, - paramName: options.form.file, - forceIframeTransport: true, // Required for XDomain request. - replaceFileInput: true, - autoUpload: false, - add: this._onUploadAdd, - send: this._onUploadSend, - done: this._onUploadDone, - fail: this._onUploadFail, - always: this._onUploadComplete - }); - }, - - /* Displays a loading spinner next to the input while uploading. This - * can be cancelled by recalling the method passing false as the first - * argument. - * - * show - If false hides the spinner (default: true). - * - * Examples - * - * module.loading(); // Show spinner - * - * module.loading(false); // Hide spinner. - * - * Returns nothing. - */ - loading: function (show) { - this.upload.toggleClass('loading', show); - }, - - /* Requests Authentication for the upload from CKAN. Uses the - * _onAuthSuccess/_onAuthError callbacks. - * - * key - A unique key for the file that is to be uploaded. - * data - The file data object from the jQuery.fileUpload() plugin. - * - * Examples - * - * onFileAdd: function (event, data) { - * this.authenticate('my-file', data); - * } - * - * Returns an jqXHR promise. - */ - authenticate: function (key, data) { - data.key = key; - - var request = this.sandbox.client.getStorageAuth(key); - var onSuccess = jQuery.proxy(this._onAuthSuccess, this, data); - return request.then(onSuccess, this._onAuthError); - }, - - /* Requests file metadata for the uploaded file and calls the - * _onMetadataSuccess/_onMetadataError callbacks. - * - * key - A unique key for the file that is to be uploaded. - * data - The file data object from the jQuery.fileUpload() plugin. - * - * Examples - * - * onFileUploaded: function (event, data) { - * this.lookupMetadata('my-file', data); - * } - * - * Returns an jqXHR promise. - */ - lookupMetadata: function (key, data) { - var request = this.sandbox.client.getStorageMetadata(key); - var onSuccess = jQuery.proxy(this._onMetadataSuccess, this, data); - return request.then(onSuccess, this._onMetadataError); - }, - - /* Displays a global notification for the upload status. - * - * message - A message string to display. - * type - The type of message eg. error/info/warning - * - * Examples - * - * module.notify('Upload failed', 'error'); - * - * Returns nothing. - */ - notify: function (message, type) { - var title = this._('An Error Occurred'); - this.sandbox.notify(title, message, type); - }, - - /* Creates a unique key for the filename provided. This is a url - * safe string with a timestamp prepended. - * - * filename - The filename for the upload. - * - * Examples - * - * module.generateKey('my file'); - * // => '2012-06-05T12:00:00.000Z/my-file' - * - * Returns a unique string. - */ - generateKey: function (filename) { - var parts = filename.split('.'); - var extension = jQuery.url.slugify(parts.pop()); - - // Clean up the filename hopefully leaving the extension intact. - filename = jQuery.url.slugify(parts.join('.')) + '.' + extension; - return jQuery.date.toISOString() + '/' + filename; - }, - - /* Attaches the beforeunload event to window to prevent away navigation - * whilst a upload is happening - * - * is_uploading: Boolean of whether we're uploading right now - * - * Returns nothing - */ - uploading: function(is_uploading) { - var method = is_uploading ? 'on' : 'off'; - jQuery(window)[method]('beforeunload', this._onWindowBeforeUnload); - }, - - /* Callback called when the jQuery file upload plugin receives a file. - * - * event - The jQuery event object. - * data - An object of file data. - * - * Returns nothing. - */ - _onUploadAdd: function (event, data) { - this.uploading(true); - if (data.files && data.files.length) { - var key = this.generateKey(data.files[0].name); - - this.authenticate(key, data); - } - }, - - /* Callback called when the jQuery file upload plugin fails to upload - * a file. - */ - _onUploadFail: function () { - this.sandbox.notify(this._('Unable to upload file')); - }, - - /* Callback called when jQuery file upload plugin sends a file */ - _onUploadSend: function () { - this.loading(); - }, - - /* Callback called when jQuery file upload plugin successfully uploads a file */ - _onUploadDone: function (event, data) { - // Need to check for a result key. A Google upload can return a 404 if - // the bucket does not exist, this is still treated as a success by the - // form upload plugin. - var result = data.result; - if (result && !(jQuery.isPlainObject(result) && result.error)) { - this.lookupMetadata(data.key, data); - } else { - this._onUploadFail(event, data); - } - }, - - /* Callback called when jQuery file upload plugin completes a request - * regardless of it's success/failure. - */ - _onUploadComplete: function () { - this.loading(false); - this.uploading(false); - }, - - /* Callback function for a successful Auth request. This cannot be - * used straight up but requires the data object to be passed in - * as the first argument. - * - * data - The data object for the current upload. - * response - The auth response object. - * - * Examples - * - * var onSuccess = jQuery.proxy(this._onAuthSuccess, this, data); - * sandbox.client.getStorageAuth(key).done(onSuccess); - * - * Returns nothing. - */ - _onAuthSuccess: function (data, response) { - data.url = response.action; - data.formData = this.options.form.params.concat(response.fields); - data.submit(); - }, - - /* Called when the request for auth credentials fails. */ - _onAuthError: function (event, data) { - this.sandbox.notify(this._('Unable to authenticate upload')); - this._onUploadComplete(); - }, - - /* Called when the request for file metadata succeeds */ - _onMetadataSuccess: function (data, response) { - var resource = this.sandbox.client.convertStorageMetadataToResource(response); - - this.sandbox.notify(this._('Resource uploaded'), '', 'success'); - this.sandbox.publish('resource:uploaded', resource); - }, - - /* Called when the request for file metadata fails */ - _onMetadataError: function () { - this.sandbox.notify(this._('Unable to get data for uploaded file')); - this._onUploadComplete(); - }, - - /* Called before the window unloads whilst uploading */ - _onWindowBeforeUnload: function(event) { - var message = this._('You are uploading a file. Are you sure you ' + - 'want to navigate away and stop this upload?'); - if (event.originalEvent.returnValue) { - event.originalEvent.returnValue = message; - } - return message; - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/resource-view-embed.js b/ckan/public-bs2/base/javascript/modules/resource-view-embed.js deleted file mode 100644 index 62eb5991e06..00000000000 --- a/ckan/public-bs2/base/javascript/modules/resource-view-embed.js +++ /dev/null @@ -1,50 +0,0 @@ -this.ckan.module('resource-view-embed', function ($) { - var modal; - var self; - - function initialize() { - self = this; - modal = $('#embed-'+this.options.id) - this.el.on('click', _onClick); - $('textarea', modal).on('focus', _selectAllCode).on('mouseup', _preventClick); - $('input', modal).on('keyup change', _updateValues); - _updateEmbedCode(); - } - - function _onClick (event) { - event.preventDefault(); - modal.modal('show'); - } - - function _selectAllCode () { - $('textarea', modal).select(); - } - - function _updateValues () { - self.options.width = $('[name="width"]', modal).val(); - self.options.height = $('[name="height"]', modal).val(); - _updateEmbedCode(); - } - - function _updateEmbedCode () { - $('[name="code"]', modal).val(_embedCode()); - } - - function _preventClick (event) { - event.preventDefault(); - } - - function _embedCode () { - return ''; - } - - return { - initialize: initialize, - options: { - id: 0, - url: '#', - width: 700, - height: 400 - } - } -}); diff --git a/ckan/public-bs2/base/javascript/modules/resource-view-filters-form.js b/ckan/public-bs2/base/javascript/modules/resource-view-filters-form.js deleted file mode 100644 index 8dd976ce5b1..00000000000 --- a/ckan/public-bs2/base/javascript/modules/resource-view-filters-form.js +++ /dev/null @@ -1,104 +0,0 @@ -ckan.module('resource-view-filters-form', function (jQuery) { - 'use strict'; - - function applyDropdown(selectField, resourceId) { - var inputField = selectField.parent().find('input'), - filterName = selectField.val(), - queryLimit = 20; - - inputField.select2({ - width: 'resolve', - minimumInputLength: 0, - ajax: { - url: ckan.url('/api/3/action/datastore_search'), - datatype: 'json', - quietMillis: 200, - cache: true, - data: function (term, page) { - var offset = (page - 1) * queryLimit, - query; - - query = { - resource_id: resourceId, - limit: queryLimit, - offset: offset, - fields: filterName, - distinct: true, - sort: filterName, - include_total: false - }; - - if (term !== '') { - var q = {}; - if (term.indexOf(' ') == -1) { - term = term + ':*'; - query.plain = false; - } - q[filterName] = term; - query.q = JSON.stringify(q); - } - - return query; - }, - results: function (data, page) { - var records = data.result.records, - hasMore = (records.length == queryLimit), - results; - - results = $.map(records, function (record) { - return { id: record[filterName], text: String(record[filterName]) }; - }); - - return { results: results, more: hasMore }; - }, - }, - initSelection: function (element, callback) { - var data = {id: element.val(), text: element.val()}; - callback(data); - }, - }); - } - - function initialize() { - var self = this, - resourceId = self.options.resourceId, - templateFilterInputs = self.options.templateFilterInputs, - inputFieldTemplateEl = $(templateFilterInputs).find('input[type="text"][name]'), - filtersDiv = self.el.find(self.options.filtersSelector), - addFilterEl = self.el.find(self.options.addFilterSelector), - removeFilterSelector = self.options.removeFilterSelector; - - var selects = filtersDiv.find('select'); - selects.each(function (i, select) { - applyDropdown($(select), resourceId); - }); - - addFilterEl.click(function (evt) { - var selectField; - evt.preventDefault(); - filtersDiv.append(templateFilterInputs); - selectField = filtersDiv.children().last().find('select'); - applyDropdown(selectField, resourceId); - }); - - filtersDiv.on('click', removeFilterSelector, function (evt) { - evt.preventDefault(); - $(this).parent().remove(); - }); - - filtersDiv.on('change', 'select', function (evt) { - var el = $(this), - parentEl = el.parent(), - inputField = parentEl.find('input'), - select2Container = parentEl.find('.select2-container'); - evt.preventDefault(); - select2Container.remove(); - inputField.replaceWith(inputFieldTemplateEl.clone()); - applyDropdown(el, resourceId); - }); - } - - return { - initialize: initialize - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/resource-view-filters.js b/ckan/public-bs2/base/javascript/modules/resource-view-filters.js deleted file mode 100644 index 99831075604..00000000000 --- a/ckan/public-bs2/base/javascript/modules/resource-view-filters.js +++ /dev/null @@ -1,187 +0,0 @@ -this.ckan.module('resource-view-filters', function (jQuery) { - 'use strict'; - - function initialize() { - var self = this, - resourceId = self.options.resourceId, - fields = self.options.fields, - dropdownTemplate = self.options.dropdownTemplate, - addFilterTemplate = '' + self._('Add Filter') + '', - filtersDiv = $('
'); - - var filters = ckan.views.filters.get(); - _appendDropdowns(filtersDiv, resourceId, dropdownTemplate, fields, filters); - var addFilterButton = _buildAddFilterButton(self, filtersDiv, addFilterTemplate, - fields, filters, function (evt) { - // Build filters object with this element's val as key and a placeholder - // value so _appendDropdowns() will create its dropdown - var filters = {}; - filters[evt.val] = []; - - $(this).select2('destroy'); - _appendDropdowns(filtersDiv, resourceId, dropdownTemplate, fields, filters); - evt.preventDefault(); - }); - self.el.append(filtersDiv); - self.el.append(addFilterButton); - } - - function _buildAddFilterButton(self, el, template, fields, filters, onChangeCallback) { - var addFilterButton = $(template), - currentFilters = Object.keys(filters), - fieldsNotFiltered = $.grep(fields, function (field) { - return !filters.hasOwnProperty(field); - }), - data = $.map(fieldsNotFiltered, function (d) { - return { id: d, text: d }; - }); - - if (data.length === 0) { - return ''; - } - - addFilterButton.click(function (evt) { - // FIXME: Move this class name to some external variable to keep it DRY - var addFilterDiv = $('
'), - addFilterInput = addFilterDiv.find('input'); - el.append(addFilterDiv); - - // TODO: Remove element from "data" when some select selects it. - addFilterInput.select2({ - data: data, - placeholder: self._('Select a field'), - width: 'resolve', - }).on('change', onChangeCallback); - - evt.preventDefault(); - }); - - return addFilterButton; - } - - function _appendDropdowns(dropdowns, resourceId, template, fields, filters) { - $.each(fields, function (i, field) { - if (filters.hasOwnProperty(field)) { - dropdowns.append(_buildDropdown(self.el, template, field)); - } - }); - - return dropdowns; - - function _buildDropdown(el, template, filterName) { - var theseFilters = filters[filterName] || []; - template = $(template.replace(/{filter}/g, filterName)); - // FIXME: Get the CSS class from some external variable - var dropdowns = template.find('.resource-view-filter-values'); - - // Can't use push because we need to create a new array, as we're - // modifying it. - theseFilters = theseFilters.concat([undefined]); - theseFilters.forEach(function (value, i) { - var dropdown = $(''); - - if (value !== undefined) { - dropdown.val(value); - } - - dropdowns.append(dropdown); - }); - - var queryLimit = 20; - dropdowns.find('input').select2({ - allowClear: true, - placeholder: ' ', // select2 needs a placeholder to allow clearing - width: 'resolve', - minimumInputLength: 0, - ajax: { - url: ckan.url('/api/3/action/datastore_search'), - datatype: 'json', - quietMillis: 200, - cache: true, - data: function (term, page) { - var offset = (page - 1) * queryLimit, - query; - - query = { - resource_id: resourceId, - limit: queryLimit, - offset: offset, - fields: filterName, - distinct: true, - sort: filterName, - include_total: false - }; - - - if (term !== '') { - var q = {}; - if (term.indexOf(' ') == -1) { - term = term + ':*'; - query.plain = false; - } - q[filterName] = term; - query.q = JSON.stringify(q); - } - - return query; - }, - results: function (data, page) { - var records = data.result.records, - hasMore = (records.length == queryLimit), - results; - - results = $.map(records, function (record) { - return { id: record[filterName], text: String(record[filterName]) }; - }); - - return { results: results, more: hasMore }; - } - }, - initSelection: function (element, callback) { - var data = {id: element.val(), text: element.val()}; - callback(data); - }, - }).on('change', _onChange); - - return template; - } - } - - function _onChange(evt) { - var filterName = evt.currentTarget.name, - filterValue = evt.val, - currentFilters = ckan.views.filters.get(filterName) || [], - addToIndex = currentFilters.length; - - // Make sure we're not editing the original array, but a copy. - currentFilters = currentFilters.slice(); - - if (evt.removed) { - addToIndex = currentFilters.indexOf(evt.removed.id); - if (addToIndex !== -1) { - currentFilters.splice(addToIndex, 1); - } - } - if (evt.added) { - currentFilters.splice(addToIndex, 0, filterValue); - } - - if (currentFilters.length > 0) { - ckan.views.filters.set(filterName, currentFilters); - } else { - ckan.views.filters.unset(filterName); - } - } - - return { - initialize: initialize, - options: { - dropdownTemplate: [ - '
', - ' {filter}:', - '
', - '
', - ].join('\n') - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/resource-view-reorder.js b/ckan/public-bs2/base/javascript/modules/resource-view-reorder.js deleted file mode 100644 index 34def7682b5..00000000000 --- a/ckan/public-bs2/base/javascript/modules/resource-view-reorder.js +++ /dev/null @@ -1,128 +0,0 @@ -/* Module for reordering resource views - */ -this.ckan.module('resource-view-reorder', function($) { - return { - options: { - id: false, - labelText: 'Reorder resource view' - }, - template: { - title: '

', - button: [ - '', - '', - '', - '' - ].join('\n'), - form_actions: [ - '
', - '', - '', - '
' - ].join('\n'), - saving: [ - '', - '', - '', - '' - ].join('\n') - }, - is_reordering: false, - cache: false, - - initialize: function() { - jQuery.proxyAll(this, /_on/); - - var labelText = this._(this.options.labelText); - this.html_title = $(this.template.title) - .text(labelText) - .insertBefore(this.el) - .hide(); - var button = $(this.template.button) - .on('click', this._onHandleStartReorder) - .appendTo('.page_primary_action'); - $('span', button).text(labelText); - - this.html_form_actions = $(this.template.form_actions) - .hide() - .insertAfter(this.el); - $('.save', this.html_form_actions) - .text(this._('Save order')) - .on('click', this._onHandleSave); - $('.cancel', this.html_form_actions) - .text(this._('Cancel')) - .on('click', this._onHandleCancel); - - this.html_saving = $(this.template.saving) - .hide() - .insertBefore($('.save', this.html_form_actions)); - $('span', this.html_saving).text(this._('Saving...')); - - this.cache = this.el.html(); - - this.el - .sortable() - .sortable('disable'); - - }, - - _onHandleStartReorder: function() { - if (!this.is_reordering) { - this.html_form_actions - .add(this.html_title) - .show(); - this.el - .addClass('reordering') - .sortable('enable'); - $('.page_primary_action').hide(); - this.is_reordering = true; - } - }, - - _onHandleCancel: function() { - if ( - this.is_reordering - && !$('.cancel', this.html_form_actions).hasClass('disabled') - ) { - this.reset(); - this.is_reordering = false; - this.el.html(this.cache) - .sortable() - .sortable('disable'); - } - }, - - _onHandleSave: function() { - if (!$('.save', this.html_form_actions).hasClass('disabled')) { - var module = this; - module.html_saving.show(); - $('.save, .cancel', module.html_form_actions).addClass('disabled'); - var order = []; - $('li', module.el).each(function() { - order.push($(this).data('id')); - }); - module.sandbox.client.call('POST', 'resource_view_reorder', { - id: module.options.id, - order: order - }, function() { - module.html_saving.hide(); - $('.save, .cancel', module.html_form_actions).removeClass('disabled'); - module.cache = module.el.html(); - module.reset(); - module.is_reordering = false; - }); - } - }, - - reset: function() { - this.html_form_actions - .add(this.html_title) - .hide(); - this.el - .removeClass('reordering') - .sortable('disable'); - $('.page_primary_action').show(); - } - - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/select-switch.js b/ckan/public-bs2/base/javascript/modules/select-switch.js deleted file mode 100644 index 145b33a471a..00000000000 --- a/ckan/public-bs2/base/javascript/modules/select-switch.js +++ /dev/null @@ -1,31 +0,0 @@ -/* Finds the nearest select box in a form and watches it for changes. When - * a change occurs it submits the form. It can also hide the submit button if - * required. - * - * target - A selector to watch for changes (default: select) - * button - A selector for the button to hide in the form. - * - * Examples - * - * - * - * - * - * - * - * Returns . - */ -this.ckan.module('select-switch', { - - options: { - target: 'select' - }, - - initialize: function () { - var _this = this; - - this.el.on('change', this.options.target, function () { - _this.el.submit(); - }); - } -}); diff --git a/ckan/public-bs2/base/javascript/modules/slug-preview.js b/ckan/public-bs2/base/javascript/modules/slug-preview.js deleted file mode 100644 index b93de2368c9..00000000000 --- a/ckan/public-bs2/base/javascript/modules/slug-preview.js +++ /dev/null @@ -1,79 +0,0 @@ -this.ckan.module('slug-preview-target', { - initialize: function () { - var sandbox = this.sandbox; - var options = this.options; - var el = this.el; - - sandbox.subscribe('slug-preview-created', function (preview) { - // Append the preview string after the target input. - el.after(preview); - }); - - // Make sure there isn't a value in the field already... - if (el.val() == '') { - // Once the preview box is modified stop watching it. - sandbox.subscribe('slug-preview-modified', function () { - el.off('.slug-preview'); - }); - - // Watch for updates to the target field and update the hidden slug field - // triggering the "change" event manually. - el.on('keyup.slug-preview input.slug-preview', function (event) { - sandbox.publish('slug-target-changed', this.value); - //slug.val(this.value).trigger('change'); - }); - } - } -}); - -this.ckan.module('slug-preview-slug', function (jQuery) { - return { - options: { - prefix: '', - placeholder: '' - }, - - initialize: function () { - var sandbox = this.sandbox; - var options = this.options; - var el = this.el; - var _ = sandbox.translate; - - var slug = el.slug(); - var parent = slug.parents('.control-group'); - var preview; - - if (!(parent.length)) { - return; - } - - // Leave the slug field visible - if (!parent.hasClass('error')) { - preview = parent.slugPreview({ - prefix: options.prefix, - placeholder: options.placeholder, - i18n: { - 'URL': this._('URL'), - 'Edit': this._('Edit') - } - }); - - // If the user manually enters text into the input we cancel the slug - // listeners so that we don't clobber the slug when the title next changes. - slug.keypress(function () { - if (event.charCode) { - sandbox.publish('slug-preview-modified', preview[0]); - } - }); - - sandbox.publish('slug-preview-created', preview[0]); - } - - // Watch for updates to the target field and update the hidden slug field - // triggering the "change" event manually. - sandbox.subscribe('slug-target-changed', function (value) { - slug.val(value).trigger('change'); - }); - } - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/table-selectable-rows.js b/ckan/public-bs2/base/javascript/modules/table-selectable-rows.js deleted file mode 100644 index 4a1965adcbc..00000000000 --- a/ckan/public-bs2/base/javascript/modules/table-selectable-rows.js +++ /dev/null @@ -1,95 +0,0 @@ -/* Table Selectable Rows - * Put's a select box in the of a and makes all rows - * selectable. - * - * Examples - * - *
...
- * - */ -this.ckan.module('table-selectable-rows', function($) { - return { - - // Store for jQuery object for the select all checkbox - select_all: null, - // Total number of checkboxes in the table (used for checking later) - total_checkboxes: 0, - // Store for jQuery object of all table header buttons - buttons: null, - - /* Initialises the module setting up elements and event listeners. - * - * Returns nothing. - */ - initialize: function() { - $.proxyAll(this, /_on/); - this.total_checkboxes = $('input[type="checkbox"]', this.el).length; - this.select_all = $('') - .data('select-all', true) - .appendTo($('thead th:first-child', this.el)); - this.el.on('change', 'input[type="checkbox"]', this._onHandleCheckboxToggle); - this.buttons = $('th.actions .btn', this.el).addClass('disabled').prop('disabled', true); - }, - - /* Gets called whenever a user changes the :checked state on a checkbox - * within the table - * - * $e - jQuery event object - * - * Returns nothing. - */ - _onHandleCheckboxToggle: function($e) { - var checkbox = $($e.target); - if (checkbox.data('select-all')) { - this.handleSelectAll(checkbox, checkbox.is(':checked')); - } else { - this.handleSelectOne(checkbox, checkbox.is(':checked')); - } - }, - - /* Handles the checking of all row - * - * $target - jQuery checkbox object - * $checked - Boolean of whether $target is checked - * - * Returns nothing. - */ - handleSelectAll: function($target, $checked) { - $('input[type="checkbox"]', this.el).prop('checked', $checked); - if ($checked) { - $('tbody tr', this.el).addClass('table-selected'); - this.buttons.removeClass('disabled').prop('disabled', false); - } else { - $('tbody tr', this.el).removeClass('table-selected'); - this.buttons.addClass('disabled').prop('disabled', true); - } - }, - - /* Handles the checking of a single row - * - * $target - jQuery checkbox object - * $checked - Boolean of whether $target is checked - * - * Returns nothing. - */ - handleSelectOne: function($target, $checked) { - if ($checked) { - $target.parents('tr').addClass('table-selected'); - } else { - $target.parents('tr').removeClass('table-selected'); - } - var checked = $('tbody input[type="checkbox"]:checked', this.el).length; - if (checked >= this.total_checkboxes) { - this.select_all.prop('checked', true); - } else { - this.select_all.prop('checked', false); - } - if (checked > 0) { - this.buttons.removeClass('disabled').prop('disabled', false); - } else { - this.buttons.addClass('disabled').prop('disabled', true); - } - } - - }; -}); diff --git a/ckan/public-bs2/base/javascript/modules/table-toggle-more.js b/ckan/public-bs2/base/javascript/modules/table-toggle-more.js deleted file mode 100644 index 7a5c49c396a..00000000000 --- a/ckan/public-bs2/base/javascript/modules/table-toggle-more.js +++ /dev/null @@ -1,61 +0,0 @@ -/* Table toggle more - * When a table has more things to it that need to be hidden and then shown more - */ -this.ckan.module('table-toggle-more', function($) { - return { - /* options object can be extended using data-module-* attributes */ - options: {}, - - /* Initialises the module setting up elements and event listeners. - * - * Returns nothing. - */ - initialize: function () { - $.proxyAll(this, /_on/); - this.el.addClass('table-toggle-more'); - // Do we actually want this table to expand? - var rows = $('.toggle-more', this.el).length; - if (rows) { - // How much is the colspan? - var cols = $('thead tr th', this.el).length; - var template_more = [ - '', - '', - '', - '' + this._('Show more') + '', - '' + this._('Hide') + '', - '', - '', - '' - ].join('\n'); - var template_seperator = [ - '', - '', - '', - '' - ].join('\n'); - - var seperator = $(template_seperator).insertAfter($('.toggle-more:last-child', this.el)); - $(template_more).insertAfter(seperator); - - $('.show-more', this.el).on('click', this._onShowMore); - $('.show-less', this.el).on('click', this._onShowLess); - } - }, - - _onShowMore: function($e) { - $e.preventDefault(); - this.el - .removeClass('table-toggle-more') - .addClass('table-toggle-less'); - }, - - _onShowLess: function($e) { - $e.preventDefault(); - this.el - .removeClass('table-toggle-less') - .addClass('table-toggle-more'); - } - - } -}); diff --git a/ckan/public-bs2/base/javascript/notify.js b/ckan/public-bs2/base/javascript/notify.js deleted file mode 100644 index 1837a0a1262..00000000000 --- a/ckan/public-bs2/base/javascript/notify.js +++ /dev/null @@ -1,71 +0,0 @@ -(function (ckan, jQuery) { - - /* Displays a global notification banner on the screen. Takes a title - * and optional message and type arguments. - * - * title - The main message string. - * message - Additional information. - * type - A type to apply to the message (default: error) - * - * Examples - * - * ckan.notify('An error occurred', 'etc'); - * ckan.notify('Success', 'user updated', 'success'); - * - * var alert = ckan.notify('An error occurred'); - * alert.on('closed', function () { - * // Do something. - * }); - * - * Returns the error element. - */ - function notify(title, message, type) { - var alert = notify.initialize(notify.create(title, message, type)); - notify.el.append(alert); - } - - // Grab the flash message container. - notify.el = jQuery('.flash-messages', document.body); - - /* Creates a new message element. - * - * title - The main message string. - * message - Additional information. - * type - A type to apply to the message (default: error) - * - * Returns the element. - */ - notify.create = function (title, message, type) { - var alert = jQuery('
'); - alert.addClass('alert-' + (type || 'error')); - alert.find('strong').text(title); - alert.find('span').text(message); - return alert; - }; - - /* Adds a close button and initializes the Bootstrap alert plugin. - * - * element - An element to initialize. - * - * Returns the element. - */ - notify.initialize = function (element) { - element = element instanceof jQuery ? element : jQuery(element); - return element.append(jQuery('×')).alert(); - }; - - // Initialize any alerts already on the page. - notify.el.find('.alert').each(function () { - notify.initialize(this); - }); - - // Watch for close clicks and remove the alert. - notify.el.on('click', '.close', function () { - jQuery(this).parent().alert('close'); - }); - - // Export the objects. - ckan.notify = notify; - ckan.sandbox.extend({notify: notify}); - -})(this.ckan, this.jQuery); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.date-helpers.js b/ckan/public-bs2/base/javascript/plugins/jquery.date-helpers.js deleted file mode 100644 index 45d48a5282d..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.date-helpers.js +++ /dev/null @@ -1,82 +0,0 @@ -this.jQuery.date = { - /* A map of date methods to text strings. */ - METHODS: { - "yyyy": "getUTCFullYear", - "MM": "getUTCMonth", - "dd": "getUTCDate", - "HH": "getUTCHours", - "mm": "getUTCMinutes", - "ss": "getUTCSeconds", - "fff": "getUTCMilliseconds" - }, - - /* Formatting of an ISO8601 compatible date */ - ISO8601: "yyyy-MM-ddTHH:mm:ss.fffZ", - - /* Formatting of a CKAN compatible ISO string. See helpers.py */ - CKAN8601: "yyyy-MM-ddTHH:mm:ss", - - /* Returns a date string for the format provided. - * - * format - A format string in the form "yyyy-MM-dd" - * date - A date object to output. - * - * Returns a formatted date string. - */ - format: function (format, date) { - var map = this.METHODS; - - date = date || new Date(); - - function pad(str, exp) { - str = "" + str; - exp = exp.replace(/[a-z]/ig, '0'); - return str.length !== exp.length ? exp.slice(str.length) + str : str; - } - - return format.replace(/([a-zA-Z])\1+/g, function (_, $1) { - if (map[_]) { - var value = date[map[_]](); - if (_ === 'MM') { - value += 1; - } - return pad(value, _); - } - return _; - }); - }, - - /* Generates a CKAN friendly ISO8601 timestamp. - * - * date - A date object to convert. - * - * Examples - * - * var timestamp = jQuery.date.toCKANString(new Date()); - * - * Returns a timestamp string. - */ - toCKANString: function (date) { - return this.format(this.CKAN8601, date); - }, - - /* Generates a ISO8601 timestamp. Uses the native methods if available. - * - * date - A date object to convert. - * - * Examples - * - * var timestamp = jQuery.date.toISOString(new Date()); - * - * Returns a timestamp string. - */ - toISOString: function (date) { - date = date || new Date(); - - if (date.toISOString) { - return date.toISOString(); - } else { - return this.format(this.ISO8601, date); - } - } -}; diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.form-warning.js b/ckan/public-bs2/base/javascript/plugins/jquery.form-warning.js deleted file mode 100644 index 11fc993a1cc..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.form-warning.js +++ /dev/null @@ -1,41 +0,0 @@ -(function (jQuery) { - /* Accepts a form element and once changed binds an event handler to the - * window "beforeunload" event that warns a user that the form has unsaved - * changes. The notice is only displayed if the user does not submit the - * form. - * - * message - A message to display to the user (browser support dependant). - * - * Examples - * - * jQuery('form').incompleteFormWarning('Form has modified fields'); - * - * Returns the jQuery collection. - */ - jQuery.fn.incompleteFormWarning = function (message) { - return this.each(function () { - var form = jQuery(this); - var state = form.serialize(); - - function onWindowUnload(event) { - if (event.originalEvent.returnValue) { - event.originalEvent.returnValue = message; - } - return message; - } - - form.on({ - change: function () { - // See if the form has changed, if so add an event listener otherwise - // remove it. - var method = form.serialize() === state ? 'off' : 'on'; - jQuery(window)[method]('beforeunload', onWindowUnload); - }, - submit: function () { - // Allow the form to be submitted. - jQuery(window).off('beforeunload', onWindowUnload); - } - }); - }); - }; -})(this.jQuery); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.images-loaded.js b/ckan/public-bs2/base/javascript/plugins/jquery.images-loaded.js deleted file mode 100644 index f6ac95c2e28..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.images-loaded.js +++ /dev/null @@ -1,496 +0,0 @@ -/*! - * imagesLoaded PACKAGED v4.1.4 - * JavaScript is all like "You images are done yet or what?" - * MIT License - */ - -/** - * EvEmitter v1.1.0 - * Lil' event emitter - * MIT License - */ - -/* jshint unused: true, undef: true, strict: true */ - -( function( global, factory ) { - // universal module definition - /* jshint strict: false */ /* globals define, module, window */ - if ( typeof define == 'function' && define.amd ) { - // AMD - RequireJS - define( 'ev-emitter/ev-emitter',factory ); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - Browserify, Webpack - module.exports = factory(); - } else { - // Browser globals - global.EvEmitter = factory(); - } - -}( typeof window != 'undefined' ? window : this, function() { - - - -function EvEmitter() {} - -var proto = EvEmitter.prototype; - -proto.on = function( eventName, listener ) { - if ( !eventName || !listener ) { - return; - } - // set events hash - var events = this._events = this._events || {}; - // set listeners array - var listeners = events[ eventName ] = events[ eventName ] || []; - // only add once - if ( listeners.indexOf( listener ) == -1 ) { - listeners.push( listener ); - } - - return this; -}; - -proto.once = function( eventName, listener ) { - if ( !eventName || !listener ) { - return; - } - // add event - this.on( eventName, listener ); - // set once flag - // set onceEvents hash - var onceEvents = this._onceEvents = this._onceEvents || {}; - // set onceListeners object - var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; - // set flag - onceListeners[ listener ] = true; - - return this; -}; - -proto.off = function( eventName, listener ) { - var listeners = this._events && this._events[ eventName ]; - if ( !listeners || !listeners.length ) { - return; - } - var index = listeners.indexOf( listener ); - if ( index != -1 ) { - listeners.splice( index, 1 ); - } - - return this; -}; - -proto.emitEvent = function( eventName, args ) { - var listeners = this._events && this._events[ eventName ]; - if ( !listeners || !listeners.length ) { - return; - } - // copy over to avoid interference if .off() in listener - listeners = listeners.slice(0); - args = args || []; - // once stuff - var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; - - for ( var i=0; i < listeners.length; i++ ) { - var listener = listeners[i] - var isOnce = onceListeners && onceListeners[ listener ]; - if ( isOnce ) { - // remove listener - // remove before trigger to prevent recursion - this.off( eventName, listener ); - // unset once flag - delete onceListeners[ listener ]; - } - // trigger listener - listener.apply( this, args ); - } - - return this; -}; - -proto.allOff = function() { - delete this._events; - delete this._onceEvents; -}; - -return EvEmitter; - -})); - -/*! - * imagesLoaded v4.1.4 - * JavaScript is all like "You images are done yet or what?" - * MIT License - */ - -( function( window, factory ) { 'use strict'; - // universal module definition - - /*global define: false, module: false, require: false */ - - if ( typeof define == 'function' && define.amd ) { - // AMD - define( [ - 'ev-emitter/ev-emitter' - ], function( EvEmitter ) { - return factory( window, EvEmitter ); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - window, - require('ev-emitter') - ); - } else { - // browser global - window.imagesLoaded = factory( - window, - window.EvEmitter - ); - } - -})( typeof window !== 'undefined' ? window : this, - -// -------------------------- factory -------------------------- // - -function factory( window, EvEmitter ) { - - - -var $ = window.jQuery; -var console = window.console; - -// -------------------------- helpers -------------------------- // - -// extend objects -function extend( a, b ) { - for ( var prop in b ) { - a[ prop ] = b[ prop ]; - } - return a; -} - -var arraySlice = Array.prototype.slice; - -// turn element or nodeList into an array -function makeArray( obj ) { - if ( Array.isArray( obj ) ) { - // use object if already an array - return obj; - } - - var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number'; - if ( isArrayLike ) { - // convert nodeList to array - return arraySlice.call( obj ); - } - - // array of single index - return [ obj ]; -} - -// -------------------------- imagesLoaded -------------------------- // - -/** - * @param {Array, Element, NodeList, String} elem - * @param {Object or Function} options - if function, use as callback - * @param {Function} onAlways - callback function - */ -function ImagesLoaded( elem, options, onAlways ) { - // coerce ImagesLoaded() without new, to be new ImagesLoaded() - if ( !( this instanceof ImagesLoaded ) ) { - return new ImagesLoaded( elem, options, onAlways ); - } - // use elem as selector string - var queryElem = elem; - if ( typeof elem == 'string' ) { - queryElem = document.querySelectorAll( elem ); - } - // bail if bad element - if ( !queryElem ) { - console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) ); - return; - } - - this.elements = makeArray( queryElem ); - this.options = extend( {}, this.options ); - // shift arguments if no options set - if ( typeof options == 'function' ) { - onAlways = options; - } else { - extend( this.options, options ); - } - - if ( onAlways ) { - this.on( 'always', onAlways ); - } - - this.getImages(); - - if ( $ ) { - // add jQuery Deferred object - this.jqDeferred = new $.Deferred(); - } - - // HACK check async to allow time to bind listeners - setTimeout( this.check.bind( this ) ); -} - -ImagesLoaded.prototype = Object.create( EvEmitter.prototype ); - -ImagesLoaded.prototype.options = {}; - -ImagesLoaded.prototype.getImages = function() { - this.images = []; - - // filter & find items if we have an item selector - this.elements.forEach( this.addElementImages, this ); -}; - -/** - * @param {Node} element - */ -ImagesLoaded.prototype.addElementImages = function( elem ) { - // filter siblings - if ( elem.nodeName == 'IMG' ) { - this.addImage( elem ); - } - // get background image on element - if ( this.options.background === true ) { - this.addElementBackgroundImages( elem ); - } - - // find children - // no non-element nodes, #143 - var nodeType = elem.nodeType; - if ( !nodeType || !elementNodeTypes[ nodeType ] ) { - return; - } - var childImgs = elem.querySelectorAll('img'); - // concat childElems to filterFound array - for ( var i=0; i < childImgs.length; i++ ) { - var img = childImgs[i]; - this.addImage( img ); - } - - // get child background images - if ( typeof this.options.background == 'string' ) { - var children = elem.querySelectorAll( this.options.background ); - for ( i=0; i < children.length; i++ ) { - var child = children[i]; - this.addElementBackgroundImages( child ); - } - } -}; - -var elementNodeTypes = { - 1: true, - 9: true, - 11: true -}; - -ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) { - var style = getComputedStyle( elem ); - if ( !style ) { - // Firefox returns null if in a hidden iframe https://bugzil.la/548397 - return; - } - // get url inside url("...") - var reURL = /url\((['"])?(.*?)\1\)/gi; - var matches = reURL.exec( style.backgroundImage ); - while ( matches !== null ) { - var url = matches && matches[2]; - if ( url ) { - this.addBackground( url, elem ); - } - matches = reURL.exec( style.backgroundImage ); - } -}; - -/** - * @param {Image} img - */ -ImagesLoaded.prototype.addImage = function( img ) { - var loadingImage = new LoadingImage( img ); - this.images.push( loadingImage ); -}; - -ImagesLoaded.prototype.addBackground = function( url, elem ) { - var background = new Background( url, elem ); - this.images.push( background ); -}; - -ImagesLoaded.prototype.check = function() { - var _this = this; - this.progressedCount = 0; - this.hasAnyBroken = false; - // complete if no images - if ( !this.images.length ) { - this.complete(); - return; - } - - function onProgress( image, elem, message ) { - // HACK - Chrome triggers event before object properties have changed. #83 - setTimeout( function() { - _this.progress( image, elem, message ); - }); - } - - this.images.forEach( function( loadingImage ) { - loadingImage.once( 'progress', onProgress ); - loadingImage.check(); - }); -}; - -ImagesLoaded.prototype.progress = function( image, elem, message ) { - this.progressedCount++; - this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; - // progress event - this.emitEvent( 'progress', [ this, image, elem ] ); - if ( this.jqDeferred && this.jqDeferred.notify ) { - this.jqDeferred.notify( this, image ); - } - // check if completed - if ( this.progressedCount == this.images.length ) { - this.complete(); - } - - if ( this.options.debug && console ) { - console.log( 'progress: ' + message, image, elem ); - } -}; - -ImagesLoaded.prototype.complete = function() { - var eventName = this.hasAnyBroken ? 'fail' : 'done'; - this.isComplete = true; - this.emitEvent( eventName, [ this ] ); - this.emitEvent( 'always', [ this ] ); - if ( this.jqDeferred ) { - var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve'; - this.jqDeferred[ jqMethod ]( this ); - } -}; - -// -------------------------- -------------------------- // - -function LoadingImage( img ) { - this.img = img; -} - -LoadingImage.prototype = Object.create( EvEmitter.prototype ); - -LoadingImage.prototype.check = function() { - // If complete is true and browser supports natural sizes, - // try to check for image status manually. - var isComplete = this.getIsImageComplete(); - if ( isComplete ) { - // report based on naturalWidth - this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); - return; - } - - // If none of the checks above matched, simulate loading on detached element. - this.proxyImage = new Image(); - this.proxyImage.addEventListener( 'load', this ); - this.proxyImage.addEventListener( 'error', this ); - // bind to image as well for Firefox. #191 - this.img.addEventListener( 'load', this ); - this.img.addEventListener( 'error', this ); - this.proxyImage.src = this.img.src; -}; - -LoadingImage.prototype.getIsImageComplete = function() { - // check for non-zero, non-undefined naturalWidth - // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671 - return this.img.complete && this.img.naturalWidth; -}; - -LoadingImage.prototype.confirm = function( isLoaded, message ) { - this.isLoaded = isLoaded; - this.emitEvent( 'progress', [ this, this.img, message ] ); -}; - -// ----- events ----- // - -// trigger specified handler for event type -LoadingImage.prototype.handleEvent = function( event ) { - var method = 'on' + event.type; - if ( this[ method ] ) { - this[ method ]( event ); - } -}; - -LoadingImage.prototype.onload = function() { - this.confirm( true, 'onload' ); - this.unbindEvents(); -}; - -LoadingImage.prototype.onerror = function() { - this.confirm( false, 'onerror' ); - this.unbindEvents(); -}; - -LoadingImage.prototype.unbindEvents = function() { - this.proxyImage.removeEventListener( 'load', this ); - this.proxyImage.removeEventListener( 'error', this ); - this.img.removeEventListener( 'load', this ); - this.img.removeEventListener( 'error', this ); -}; - -// -------------------------- Background -------------------------- // - -function Background( url, element ) { - this.url = url; - this.element = element; - this.img = new Image(); -} - -// inherit LoadingImage prototype -Background.prototype = Object.create( LoadingImage.prototype ); - -Background.prototype.check = function() { - this.img.addEventListener( 'load', this ); - this.img.addEventListener( 'error', this ); - this.img.src = this.url; - // check if image is already complete - var isComplete = this.getIsImageComplete(); - if ( isComplete ) { - this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); - this.unbindEvents(); - } -}; - -Background.prototype.unbindEvents = function() { - this.img.removeEventListener( 'load', this ); - this.img.removeEventListener( 'error', this ); -}; - -Background.prototype.confirm = function( isLoaded, message ) { - this.isLoaded = isLoaded; - this.emitEvent( 'progress', [ this, this.element, message ] ); -}; - -// -------------------------- jQuery -------------------------- // - -ImagesLoaded.makeJQueryPlugin = function( jQuery ) { - jQuery = jQuery || window.jQuery; - if ( !jQuery ) { - return; - } - // set local variable - $ = jQuery; - // $().imagesLoaded() - $.fn.imagesLoaded = function( options, callback ) { - var instance = new ImagesLoaded( this, options, callback ); - return instance.jqDeferred.promise( $(this) ); - }; -}; -// try making plugin -ImagesLoaded.makeJQueryPlugin(); - -// -------------------------- -------------------------- // - -return ImagesLoaded; - -}); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.inherit.js b/ckan/public-bs2/base/javascript/plugins/jquery.inherit.js deleted file mode 100644 index 170edcb446b..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.inherit.js +++ /dev/null @@ -1,52 +0,0 @@ -(function (jQuery) { - // Cache an empty constructor function for it's prototype object. - function DummyObject() {} - - // Simple cross browser Object.create(). - function create(proto) { - if (typeof proto !== 'object') { - return {}; - } - else if (Object.create) { - return Object.create(proto); - } - - DummyObject.prototype = proto; - return new DummyObject(); - } - - /* A simple helper for sub classing objects. Works in the same way - * as Backbone.extend() for example. - * - * parent - A constructor function to extend. - * methods - An object of prototype methods/properties. - * properties - An object of static methods/properties. - * - * - * Examples - * - * function MyClass() {} - * - * var ChildClass = jQuery.inherit(MyClass, { - * method: function () {} - * }); - * - * Returns a new Constructor function. - */ - jQuery.inherit = function (parent, methods, properties) { - methods = methods || {}; - - function Object() { - parent.apply(this, arguments); - } - - var Child = methods.hasOwnProperty('constructor') ? methods.constructor : Object; - - Child.prototype = create(parent.prototype); - Child.prototype.constructor = Child; - - jQuery.extend(Child.prototype, methods); - - return jQuery.extend(Child, parent, properties, {__super__: parent.prototype}); - }; -})(this.jQuery); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.masonry.js b/ckan/public-bs2/base/javascript/plugins/jquery.masonry.js deleted file mode 100644 index 440b0e00265..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.masonry.js +++ /dev/null @@ -1,2501 +0,0 @@ -/*! - * Masonry PACKAGED v4.2.1 - * Cascading grid layout library - * https://masonry.desandro.com - * MIT License - * by David DeSandro - */ - -/** - * Bridget makes jQuery widgets - * v2.0.1 - * MIT license - */ - -/* jshint browser: true, strict: true, undef: true, unused: true */ - -( function( window, factory ) { - // universal module definition - /*jshint strict: false */ /* globals define, module, require */ - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) { - return factory( window, jQuery ); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - window, - require('jquery') - ); - } else { - // browser global - window.jQueryBridget = factory( - window, - window.jQuery - ); - } - -}( window, function factory( window, jQuery ) { -'use strict'; - -// ----- utils ----- // - -var arraySlice = Array.prototype.slice; - -// helper function for logging errors -// $.error breaks jQuery chaining -var console = window.console; -var logError = typeof console == 'undefined' ? function() {} : - function( message ) { - console.error( message ); - }; - -// ----- jQueryBridget ----- // - -function jQueryBridget( namespace, PluginClass, $ ) { - $ = $ || jQuery || window.jQuery; - if ( !$ ) { - return; - } - - // add option method -> $().plugin('option', {...}) - if ( !PluginClass.prototype.option ) { - // option setter - PluginClass.prototype.option = function( opts ) { - // bail out if not an object - if ( !$.isPlainObject( opts ) ){ - return; - } - this.options = $.extend( true, this.options, opts ); - }; - } - - // make jQuery plugin - $.fn[ namespace ] = function( arg0 /*, arg1 */ ) { - if ( typeof arg0 == 'string' ) { - // method call $().plugin( 'methodName', { options } ) - // shift arguments by 1 - var args = arraySlice.call( arguments, 1 ); - return methodCall( this, arg0, args ); - } - // just $().plugin({ options }) - plainCall( this, arg0 ); - return this; - }; - - // $().plugin('methodName') - function methodCall( $elems, methodName, args ) { - var returnValue; - var pluginMethodStr = '$().' + namespace + '("' + methodName + '")'; - - $elems.each( function( i, elem ) { - // get instance - var instance = $.data( elem, namespace ); - if ( !instance ) { - logError( namespace + ' not initialized. Cannot call methods, i.e. ' + - pluginMethodStr ); - return; - } - - var method = instance[ methodName ]; - if ( !method || methodName.charAt(0) == '_' ) { - logError( pluginMethodStr + ' is not a valid method' ); - return; - } - - // apply method, get return value - var value = method.apply( instance, args ); - // set return value if value is returned, use only first value - returnValue = returnValue === undefined ? value : returnValue; - }); - - return returnValue !== undefined ? returnValue : $elems; - } - - function plainCall( $elems, options ) { - $elems.each( function( i, elem ) { - var instance = $.data( elem, namespace ); - if ( instance ) { - // set options & init - instance.option( options ); - instance._init(); - } else { - // initialize new instance - instance = new PluginClass( elem, options ); - $.data( elem, namespace, instance ); - } - }); - } - - updateJQuery( $ ); - -} - -// ----- updateJQuery ----- // - -// set $.bridget for v1 backwards compatibility -function updateJQuery( $ ) { - if ( !$ || ( $ && $.bridget ) ) { - return; - } - $.bridget = jQueryBridget; -} - -updateJQuery( jQuery || window.jQuery ); - -// ----- ----- // - -return jQueryBridget; - -})); - -/** - * EvEmitter v1.1.0 - * Lil' event emitter - * MIT License - */ - -/* jshint unused: true, undef: true, strict: true */ - -( function( global, factory ) { - // universal module definition - /* jshint strict: false */ /* globals define, module, window */ - if ( typeof define == 'function' && define.amd ) { - // AMD - RequireJS - define( 'ev-emitter/ev-emitter',factory ); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - Browserify, Webpack - module.exports = factory(); - } else { - // Browser globals - global.EvEmitter = factory(); - } - -}( typeof window != 'undefined' ? window : this, function() { - - - -function EvEmitter() {} - -var proto = EvEmitter.prototype; - -proto.on = function( eventName, listener ) { - if ( !eventName || !listener ) { - return; - } - // set events hash - var events = this._events = this._events || {}; - // set listeners array - var listeners = events[ eventName ] = events[ eventName ] || []; - // only add once - if ( listeners.indexOf( listener ) == -1 ) { - listeners.push( listener ); - } - - return this; -}; - -proto.once = function( eventName, listener ) { - if ( !eventName || !listener ) { - return; - } - // add event - this.on( eventName, listener ); - // set once flag - // set onceEvents hash - var onceEvents = this._onceEvents = this._onceEvents || {}; - // set onceListeners object - var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; - // set flag - onceListeners[ listener ] = true; - - return this; -}; - -proto.off = function( eventName, listener ) { - var listeners = this._events && this._events[ eventName ]; - if ( !listeners || !listeners.length ) { - return; - } - var index = listeners.indexOf( listener ); - if ( index != -1 ) { - listeners.splice( index, 1 ); - } - - return this; -}; - -proto.emitEvent = function( eventName, args ) { - var listeners = this._events && this._events[ eventName ]; - if ( !listeners || !listeners.length ) { - return; - } - // copy over to avoid interference if .off() in listener - listeners = listeners.slice(0); - args = args || []; - // once stuff - var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; - - for ( var i=0; i < listeners.length; i++ ) { - var listener = listeners[i] - var isOnce = onceListeners && onceListeners[ listener ]; - if ( isOnce ) { - // remove listener - // remove before trigger to prevent recursion - this.off( eventName, listener ); - // unset once flag - delete onceListeners[ listener ]; - } - // trigger listener - listener.apply( this, args ); - } - - return this; -}; - -proto.allOff = function() { - delete this._events; - delete this._onceEvents; -}; - -return EvEmitter; - -})); - -/*! - * getSize v2.0.2 - * measure size of elements - * MIT license - */ - -/*jshint browser: true, strict: true, undef: true, unused: true */ -/*global define: false, module: false, console: false */ - -( function( window, factory ) { - 'use strict'; - - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'get-size/get-size',[],function() { - return factory(); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory(); - } else { - // browser global - window.getSize = factory(); - } - -})( window, function factory() { -'use strict'; - -// -------------------------- helpers -------------------------- // - -// get a number from a string, not a percentage -function getStyleSize( value ) { - var num = parseFloat( value ); - // not a percent like '100%', and a number - var isValid = value.indexOf('%') == -1 && !isNaN( num ); - return isValid && num; -} - -function noop() {} - -var logError = typeof console == 'undefined' ? noop : - function( message ) { - console.error( message ); - }; - -// -------------------------- measurements -------------------------- // - -var measurements = [ - 'paddingLeft', - 'paddingRight', - 'paddingTop', - 'paddingBottom', - 'marginLeft', - 'marginRight', - 'marginTop', - 'marginBottom', - 'borderLeftWidth', - 'borderRightWidth', - 'borderTopWidth', - 'borderBottomWidth' -]; - -var measurementsLength = measurements.length; - -function getZeroSize() { - var size = { - width: 0, - height: 0, - innerWidth: 0, - innerHeight: 0, - outerWidth: 0, - outerHeight: 0 - }; - for ( var i=0; i < measurementsLength; i++ ) { - var measurement = measurements[i]; - size[ measurement ] = 0; - } - return size; -} - -// -------------------------- getStyle -------------------------- // - -/** - * getStyle, get style of element, check for Firefox bug - * https://bugzilla.mozilla.org/show_bug.cgi?id=548397 - */ -function getStyle( elem ) { - var style = getComputedStyle( elem ); - if ( !style ) { - logError( 'Style returned ' + style + - '. Are you running this code in a hidden iframe on Firefox? ' + - 'See http://bit.ly/getsizebug1' ); - } - return style; -} - -// -------------------------- setup -------------------------- // - -var isSetup = false; - -var isBoxSizeOuter; - -/** - * setup - * check isBoxSizerOuter - * do on first getSize() rather than on page load for Firefox bug - */ -function setup() { - // setup once - if ( isSetup ) { - return; - } - isSetup = true; - - // -------------------------- box sizing -------------------------- // - - /** - * WebKit measures the outer-width on style.width on border-box elems - * IE & Firefox<29 measures the inner-width - */ - var div = document.createElement('div'); - div.style.width = '200px'; - div.style.padding = '1px 2px 3px 4px'; - div.style.borderStyle = 'solid'; - div.style.borderWidth = '1px 2px 3px 4px'; - div.style.boxSizing = 'border-box'; - - var body = document.body || document.documentElement; - body.appendChild( div ); - var style = getStyle( div ); - - getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200; - body.removeChild( div ); - -} - -// -------------------------- getSize -------------------------- // - -function getSize( elem ) { - setup(); - - // use querySeletor if elem is string - if ( typeof elem == 'string' ) { - elem = document.querySelector( elem ); - } - - // do not proceed on non-objects - if ( !elem || typeof elem != 'object' || !elem.nodeType ) { - return; - } - - var style = getStyle( elem ); - - // if hidden, everything is 0 - if ( style.display == 'none' ) { - return getZeroSize(); - } - - var size = {}; - size.width = elem.offsetWidth; - size.height = elem.offsetHeight; - - var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; - - // get all measurements - for ( var i=0; i < measurementsLength; i++ ) { - var measurement = measurements[i]; - var value = style[ measurement ]; - var num = parseFloat( value ); - // any 'auto', 'medium' value will be 0 - size[ measurement ] = !isNaN( num ) ? num : 0; - } - - var paddingWidth = size.paddingLeft + size.paddingRight; - var paddingHeight = size.paddingTop + size.paddingBottom; - var marginWidth = size.marginLeft + size.marginRight; - var marginHeight = size.marginTop + size.marginBottom; - var borderWidth = size.borderLeftWidth + size.borderRightWidth; - var borderHeight = size.borderTopWidth + size.borderBottomWidth; - - var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; - - // overwrite width and height if we can get it from style - var styleWidth = getStyleSize( style.width ); - if ( styleWidth !== false ) { - size.width = styleWidth + - // add padding and border unless it's already including it - ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth ); - } - - var styleHeight = getStyleSize( style.height ); - if ( styleHeight !== false ) { - size.height = styleHeight + - // add padding and border unless it's already including it - ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight ); - } - - size.innerWidth = size.width - ( paddingWidth + borderWidth ); - size.innerHeight = size.height - ( paddingHeight + borderHeight ); - - size.outerWidth = size.width + marginWidth; - size.outerHeight = size.height + marginHeight; - - return size; -} - -return getSize; - -}); - -/** - * matchesSelector v2.0.2 - * matchesSelector( element, '.selector' ) - * MIT license - */ - -/*jshint browser: true, strict: true, undef: true, unused: true */ - -( function( window, factory ) { - /*global define: false, module: false */ - 'use strict'; - // universal module definition - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'desandro-matches-selector/matches-selector',factory ); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory(); - } else { - // browser global - window.matchesSelector = factory(); - } - -}( window, function factory() { - 'use strict'; - - var matchesMethod = ( function() { - var ElemProto = window.Element.prototype; - // check for the standard method name first - if ( ElemProto.matches ) { - return 'matches'; - } - // check un-prefixed - if ( ElemProto.matchesSelector ) { - return 'matchesSelector'; - } - // check vendor prefixes - var prefixes = [ 'webkit', 'moz', 'ms', 'o' ]; - - for ( var i=0; i < prefixes.length; i++ ) { - var prefix = prefixes[i]; - var method = prefix + 'MatchesSelector'; - if ( ElemProto[ method ] ) { - return method; - } - } - })(); - - return function matchesSelector( elem, selector ) { - return elem[ matchesMethod ]( selector ); - }; - -})); - -/** - * Fizzy UI utils v2.0.5 - * MIT license - */ - -/*jshint browser: true, undef: true, unused: true, strict: true */ - -( function( window, factory ) { - // universal module definition - /*jshint strict: false */ /*globals define, module, require */ - - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'fizzy-ui-utils/utils',[ - 'desandro-matches-selector/matches-selector' - ], function( matchesSelector ) { - return factory( window, matchesSelector ); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - window, - require('desandro-matches-selector') - ); - } else { - // browser global - window.fizzyUIUtils = factory( - window, - window.matchesSelector - ); - } - -}( window, function factory( window, matchesSelector ) { - - - -var utils = {}; - -// ----- extend ----- // - -// extends objects -utils.extend = function( a, b ) { - for ( var prop in b ) { - a[ prop ] = b[ prop ]; - } - return a; -}; - -// ----- modulo ----- // - -utils.modulo = function( num, div ) { - return ( ( num % div ) + div ) % div; -}; - -// ----- makeArray ----- // - -// turn element or nodeList into an array -utils.makeArray = function( obj ) { - var ary = []; - if ( Array.isArray( obj ) ) { - // use object if already an array - ary = obj; - } else if ( obj && typeof obj == 'object' && - typeof obj.length == 'number' ) { - // convert nodeList to array - for ( var i=0; i < obj.length; i++ ) { - ary.push( obj[i] ); - } - } else { - // array of single index - ary.push( obj ); - } - return ary; -}; - -// ----- removeFrom ----- // - -utils.removeFrom = function( ary, obj ) { - var index = ary.indexOf( obj ); - if ( index != -1 ) { - ary.splice( index, 1 ); - } -}; - -// ----- getParent ----- // - -utils.getParent = function( elem, selector ) { - while ( elem.parentNode && elem != document.body ) { - elem = elem.parentNode; - if ( matchesSelector( elem, selector ) ) { - return elem; - } - } -}; - -// ----- getQueryElement ----- // - -// use element as selector string -utils.getQueryElement = function( elem ) { - if ( typeof elem == 'string' ) { - return document.querySelector( elem ); - } - return elem; -}; - -// ----- handleEvent ----- // - -// enable .ontype to trigger from .addEventListener( elem, 'type' ) -utils.handleEvent = function( event ) { - var method = 'on' + event.type; - if ( this[ method ] ) { - this[ method ]( event ); - } -}; - -// ----- filterFindElements ----- // - -utils.filterFindElements = function( elems, selector ) { - // make array of elems - elems = utils.makeArray( elems ); - var ffElems = []; - - elems.forEach( function( elem ) { - // check that elem is an actual element - if ( !( elem instanceof HTMLElement ) ) { - return; - } - // add elem if no selector - if ( !selector ) { - ffElems.push( elem ); - return; - } - // filter & find items if we have a selector - // filter - if ( matchesSelector( elem, selector ) ) { - ffElems.push( elem ); - } - // find children - var childElems = elem.querySelectorAll( selector ); - // concat childElems to filterFound array - for ( var i=0; i < childElems.length; i++ ) { - ffElems.push( childElems[i] ); - } - }); - - return ffElems; -}; - -// ----- debounceMethod ----- // - -utils.debounceMethod = function( _class, methodName, threshold ) { - // original method - var method = _class.prototype[ methodName ]; - var timeoutName = methodName + 'Timeout'; - - _class.prototype[ methodName ] = function() { - var timeout = this[ timeoutName ]; - if ( timeout ) { - clearTimeout( timeout ); - } - var args = arguments; - - var _this = this; - this[ timeoutName ] = setTimeout( function() { - method.apply( _this, args ); - delete _this[ timeoutName ]; - }, threshold || 100 ); - }; -}; - -// ----- docReady ----- // - -utils.docReady = function( callback ) { - var readyState = document.readyState; - if ( readyState == 'complete' || readyState == 'interactive' ) { - // do async to allow for other scripts to run. metafizzy/flickity#441 - setTimeout( callback ); - } else { - document.addEventListener( 'DOMContentLoaded', callback ); - } -}; - -// ----- htmlInit ----- // - -// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/ -utils.toDashed = function( str ) { - return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) { - return $1 + '-' + $2; - }).toLowerCase(); -}; - -var console = window.console; -/** - * allow user to initialize classes via [data-namespace] or .js-namespace class - * htmlInit( Widget, 'widgetName' ) - * options are parsed from data-namespace-options - */ -utils.htmlInit = function( WidgetClass, namespace ) { - utils.docReady( function() { - var dashedNamespace = utils.toDashed( namespace ); - var dataAttr = 'data-' + dashedNamespace; - var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' ); - var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace ); - var elems = utils.makeArray( dataAttrElems ) - .concat( utils.makeArray( jsDashElems ) ); - var dataOptionsAttr = dataAttr + '-options'; - var jQuery = window.jQuery; - - elems.forEach( function( elem ) { - var attr = elem.getAttribute( dataAttr ) || - elem.getAttribute( dataOptionsAttr ); - var options; - try { - options = attr && JSON.parse( attr ); - } catch ( error ) { - // log error, do not initialize - if ( console ) { - console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className + - ': ' + error ); - } - return; - } - // initialize - var instance = new WidgetClass( elem, options ); - // make available via $().data('namespace') - if ( jQuery ) { - jQuery.data( elem, namespace, instance ); - } - }); - - }); -}; - -// ----- ----- // - -return utils; - -})); - -/** - * Outlayer Item - */ - -( function( window, factory ) { - // universal module definition - /* jshint strict: false */ /* globals define, module, require */ - if ( typeof define == 'function' && define.amd ) { - // AMD - RequireJS - define( 'outlayer/item',[ - 'ev-emitter/ev-emitter', - 'get-size/get-size' - ], - factory - ); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - Browserify, Webpack - module.exports = factory( - require('ev-emitter'), - require('get-size') - ); - } else { - // browser global - window.Outlayer = {}; - window.Outlayer.Item = factory( - window.EvEmitter, - window.getSize - ); - } - -}( window, function factory( EvEmitter, getSize ) { -'use strict'; - -// ----- helpers ----- // - -function isEmptyObj( obj ) { - for ( var prop in obj ) { - return false; - } - prop = null; - return true; -} - -// -------------------------- CSS3 support -------------------------- // - - -var docElemStyle = document.documentElement.style; - -var transitionProperty = typeof docElemStyle.transition == 'string' ? - 'transition' : 'WebkitTransition'; -var transformProperty = typeof docElemStyle.transform == 'string' ? - 'transform' : 'WebkitTransform'; - -var transitionEndEvent = { - WebkitTransition: 'webkitTransitionEnd', - transition: 'transitionend' -}[ transitionProperty ]; - -// cache all vendor properties that could have vendor prefix -var vendorProperties = { - transform: transformProperty, - transition: transitionProperty, - transitionDuration: transitionProperty + 'Duration', - transitionProperty: transitionProperty + 'Property', - transitionDelay: transitionProperty + 'Delay' -}; - -// -------------------------- Item -------------------------- // - -function Item( element, layout ) { - if ( !element ) { - return; - } - - this.element = element; - // parent layout class, i.e. Masonry, Isotope, or Packery - this.layout = layout; - this.position = { - x: 0, - y: 0 - }; - - this._create(); -} - -// inherit EvEmitter -var proto = Item.prototype = Object.create( EvEmitter.prototype ); -proto.constructor = Item; - -proto._create = function() { - // transition objects - this._transn = { - ingProperties: {}, - clean: {}, - onEnd: {} - }; - - this.css({ - position: 'absolute' - }); -}; - -// trigger specified handler for event type -proto.handleEvent = function( event ) { - var method = 'on' + event.type; - if ( this[ method ] ) { - this[ method ]( event ); - } -}; - -proto.getSize = function() { - this.size = getSize( this.element ); -}; - -/** - * apply CSS styles to element - * @param {Object} style - */ -proto.css = function( style ) { - var elemStyle = this.element.style; - - for ( var prop in style ) { - // use vendor property if available - var supportedProp = vendorProperties[ prop ] || prop; - elemStyle[ supportedProp ] = style[ prop ]; - } -}; - - // measure position, and sets it -proto.getPosition = function() { - var style = getComputedStyle( this.element ); - var isOriginLeft = this.layout._getOption('originLeft'); - var isOriginTop = this.layout._getOption('originTop'); - var xValue = style[ isOriginLeft ? 'left' : 'right' ]; - var yValue = style[ isOriginTop ? 'top' : 'bottom' ]; - // convert percent to pixels - var layoutSize = this.layout.size; - var x = xValue.indexOf('%') != -1 ? - ( parseFloat( xValue ) / 100 ) * layoutSize.width : parseInt( xValue, 10 ); - var y = yValue.indexOf('%') != -1 ? - ( parseFloat( yValue ) / 100 ) * layoutSize.height : parseInt( yValue, 10 ); - - // clean up 'auto' or other non-integer values - x = isNaN( x ) ? 0 : x; - y = isNaN( y ) ? 0 : y; - // remove padding from measurement - x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight; - y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom; - - this.position.x = x; - this.position.y = y; -}; - -// set settled position, apply padding -proto.layoutPosition = function() { - var layoutSize = this.layout.size; - var style = {}; - var isOriginLeft = this.layout._getOption('originLeft'); - var isOriginTop = this.layout._getOption('originTop'); - - // x - var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight'; - var xProperty = isOriginLeft ? 'left' : 'right'; - var xResetProperty = isOriginLeft ? 'right' : 'left'; - - var x = this.position.x + layoutSize[ xPadding ]; - // set in percentage or pixels - style[ xProperty ] = this.getXValue( x ); - // reset other property - style[ xResetProperty ] = ''; - - // y - var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom'; - var yProperty = isOriginTop ? 'top' : 'bottom'; - var yResetProperty = isOriginTop ? 'bottom' : 'top'; - - var y = this.position.y + layoutSize[ yPadding ]; - // set in percentage or pixels - style[ yProperty ] = this.getYValue( y ); - // reset other property - style[ yResetProperty ] = ''; - - this.css( style ); - this.emitEvent( 'layout', [ this ] ); -}; - -proto.getXValue = function( x ) { - var isHorizontal = this.layout._getOption('horizontal'); - return this.layout.options.percentPosition && !isHorizontal ? - ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px'; -}; - -proto.getYValue = function( y ) { - var isHorizontal = this.layout._getOption('horizontal'); - return this.layout.options.percentPosition && isHorizontal ? - ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px'; -}; - -proto._transitionTo = function( x, y ) { - this.getPosition(); - // get current x & y from top/left - var curX = this.position.x; - var curY = this.position.y; - - var compareX = parseInt( x, 10 ); - var compareY = parseInt( y, 10 ); - var didNotMove = compareX === this.position.x && compareY === this.position.y; - - // save end position - this.setPosition( x, y ); - - // if did not move and not transitioning, just go to layout - if ( didNotMove && !this.isTransitioning ) { - this.layoutPosition(); - return; - } - - var transX = x - curX; - var transY = y - curY; - var transitionStyle = {}; - transitionStyle.transform = this.getTranslate( transX, transY ); - - this.transition({ - to: transitionStyle, - onTransitionEnd: { - transform: this.layoutPosition - }, - isCleaning: true - }); -}; - -proto.getTranslate = function( x, y ) { - // flip cooridinates if origin on right or bottom - var isOriginLeft = this.layout._getOption('originLeft'); - var isOriginTop = this.layout._getOption('originTop'); - x = isOriginLeft ? x : -x; - y = isOriginTop ? y : -y; - return 'translate3d(' + x + 'px, ' + y + 'px, 0)'; -}; - -// non transition + transform support -proto.goTo = function( x, y ) { - this.setPosition( x, y ); - this.layoutPosition(); -}; - -proto.moveTo = proto._transitionTo; - -proto.setPosition = function( x, y ) { - this.position.x = parseInt( x, 10 ); - this.position.y = parseInt( y, 10 ); -}; - -// ----- transition ----- // - -/** - * @param {Object} style - CSS - * @param {Function} onTransitionEnd - */ - -// non transition, just trigger callback -proto._nonTransition = function( args ) { - this.css( args.to ); - if ( args.isCleaning ) { - this._removeStyles( args.to ); - } - for ( var prop in args.onTransitionEnd ) { - args.onTransitionEnd[ prop ].call( this ); - } -}; - -/** - * proper transition - * @param {Object} args - arguments - * @param {Object} to - style to transition to - * @param {Object} from - style to start transition from - * @param {Boolean} isCleaning - removes transition styles after transition - * @param {Function} onTransitionEnd - callback - */ -proto.transition = function( args ) { - // redirect to nonTransition if no transition duration - if ( !parseFloat( this.layout.options.transitionDuration ) ) { - this._nonTransition( args ); - return; - } - - var _transition = this._transn; - // keep track of onTransitionEnd callback by css property - for ( var prop in args.onTransitionEnd ) { - _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ]; - } - // keep track of properties that are transitioning - for ( prop in args.to ) { - _transition.ingProperties[ prop ] = true; - // keep track of properties to clean up when transition is done - if ( args.isCleaning ) { - _transition.clean[ prop ] = true; - } - } - - // set from styles - if ( args.from ) { - this.css( args.from ); - // force redraw. http://blog.alexmaccaw.com/css-transitions - var h = this.element.offsetHeight; - // hack for JSHint to hush about unused var - h = null; - } - // enable transition - this.enableTransition( args.to ); - // set styles that are transitioning - this.css( args.to ); - - this.isTransitioning = true; - -}; - -// dash before all cap letters, including first for -// WebkitTransform => -webkit-transform -function toDashedAll( str ) { - return str.replace( /([A-Z])/g, function( $1 ) { - return '-' + $1.toLowerCase(); - }); -} - -var transitionProps = 'opacity,' + toDashedAll( transformProperty ); - -proto.enableTransition = function(/* style */) { - // HACK changing transitionProperty during a transition - // will cause transition to jump - if ( this.isTransitioning ) { - return; - } - - // make `transition: foo, bar, baz` from style object - // HACK un-comment this when enableTransition can work - // while a transition is happening - // var transitionValues = []; - // for ( var prop in style ) { - // // dash-ify camelCased properties like WebkitTransition - // prop = vendorProperties[ prop ] || prop; - // transitionValues.push( toDashedAll( prop ) ); - // } - // munge number to millisecond, to match stagger - var duration = this.layout.options.transitionDuration; - duration = typeof duration == 'number' ? duration + 'ms' : duration; - // enable transition styles - this.css({ - transitionProperty: transitionProps, - transitionDuration: duration, - transitionDelay: this.staggerDelay || 0 - }); - // listen for transition end event - this.element.addEventListener( transitionEndEvent, this, false ); -}; - -// ----- events ----- // - -proto.onwebkitTransitionEnd = function( event ) { - this.ontransitionend( event ); -}; - -proto.onotransitionend = function( event ) { - this.ontransitionend( event ); -}; - -// properties that I munge to make my life easier -var dashedVendorProperties = { - '-webkit-transform': 'transform' -}; - -proto.ontransitionend = function( event ) { - // disregard bubbled events from children - if ( event.target !== this.element ) { - return; - } - var _transition = this._transn; - // get property name of transitioned property, convert to prefix-free - var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName; - - // remove property that has completed transitioning - delete _transition.ingProperties[ propertyName ]; - // check if any properties are still transitioning - if ( isEmptyObj( _transition.ingProperties ) ) { - // all properties have completed transitioning - this.disableTransition(); - } - // clean style - if ( propertyName in _transition.clean ) { - // clean up style - this.element.style[ event.propertyName ] = ''; - delete _transition.clean[ propertyName ]; - } - // trigger onTransitionEnd callback - if ( propertyName in _transition.onEnd ) { - var onTransitionEnd = _transition.onEnd[ propertyName ]; - onTransitionEnd.call( this ); - delete _transition.onEnd[ propertyName ]; - } - - this.emitEvent( 'transitionEnd', [ this ] ); -}; - -proto.disableTransition = function() { - this.removeTransitionStyles(); - this.element.removeEventListener( transitionEndEvent, this, false ); - this.isTransitioning = false; -}; - -/** - * removes style property from element - * @param {Object} style -**/ -proto._removeStyles = function( style ) { - // clean up transition styles - var cleanStyle = {}; - for ( var prop in style ) { - cleanStyle[ prop ] = ''; - } - this.css( cleanStyle ); -}; - -var cleanTransitionStyle = { - transitionProperty: '', - transitionDuration: '', - transitionDelay: '' -}; - -proto.removeTransitionStyles = function() { - // remove transition - this.css( cleanTransitionStyle ); -}; - -// ----- stagger ----- // - -proto.stagger = function( delay ) { - delay = isNaN( delay ) ? 0 : delay; - this.staggerDelay = delay + 'ms'; -}; - -// ----- show/hide/remove ----- // - -// remove element from DOM -proto.removeElem = function() { - this.element.parentNode.removeChild( this.element ); - // remove display: none - this.css({ display: '' }); - this.emitEvent( 'remove', [ this ] ); -}; - -proto.remove = function() { - // just remove element if no transition support or no transition - if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) { - this.removeElem(); - return; - } - - // start transition - this.once( 'transitionEnd', function() { - this.removeElem(); - }); - this.hide(); -}; - -proto.reveal = function() { - delete this.isHidden; - // remove display: none - this.css({ display: '' }); - - var options = this.layout.options; - - var onTransitionEnd = {}; - var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle'); - onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd; - - this.transition({ - from: options.hiddenStyle, - to: options.visibleStyle, - isCleaning: true, - onTransitionEnd: onTransitionEnd - }); -}; - -proto.onRevealTransitionEnd = function() { - // check if still visible - // during transition, item may have been hidden - if ( !this.isHidden ) { - this.emitEvent('reveal'); - } -}; - -/** - * get style property use for hide/reveal transition end - * @param {String} styleProperty - hiddenStyle/visibleStyle - * @returns {String} - */ -proto.getHideRevealTransitionEndProperty = function( styleProperty ) { - var optionStyle = this.layout.options[ styleProperty ]; - // use opacity - if ( optionStyle.opacity ) { - return 'opacity'; - } - // get first property - for ( var prop in optionStyle ) { - return prop; - } -}; - -proto.hide = function() { - // set flag - this.isHidden = true; - // remove display: none - this.css({ display: '' }); - - var options = this.layout.options; - - var onTransitionEnd = {}; - var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle'); - onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd; - - this.transition({ - from: options.visibleStyle, - to: options.hiddenStyle, - // keep hidden stuff hidden - isCleaning: true, - onTransitionEnd: onTransitionEnd - }); -}; - -proto.onHideTransitionEnd = function() { - // check if still hidden - // during transition, item may have been un-hidden - if ( this.isHidden ) { - this.css({ display: 'none' }); - this.emitEvent('hide'); - } -}; - -proto.destroy = function() { - this.css({ - position: '', - left: '', - right: '', - top: '', - bottom: '', - transition: '', - transform: '' - }); -}; - -return Item; - -})); - -/*! - * Outlayer v2.1.0 - * the brains and guts of a layout library - * MIT license - */ - -( function( window, factory ) { - 'use strict'; - // universal module definition - /* jshint strict: false */ /* globals define, module, require */ - if ( typeof define == 'function' && define.amd ) { - // AMD - RequireJS - define( 'outlayer/outlayer',[ - 'ev-emitter/ev-emitter', - 'get-size/get-size', - 'fizzy-ui-utils/utils', - './item' - ], - function( EvEmitter, getSize, utils, Item ) { - return factory( window, EvEmitter, getSize, utils, Item); - } - ); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - Browserify, Webpack - module.exports = factory( - window, - require('ev-emitter'), - require('get-size'), - require('fizzy-ui-utils'), - require('./item') - ); - } else { - // browser global - window.Outlayer = factory( - window, - window.EvEmitter, - window.getSize, - window.fizzyUIUtils, - window.Outlayer.Item - ); - } - -}( window, function factory( window, EvEmitter, getSize, utils, Item ) { -'use strict'; - -// ----- vars ----- // - -var console = window.console; -var jQuery = window.jQuery; -var noop = function() {}; - -// -------------------------- Outlayer -------------------------- // - -// globally unique identifiers -var GUID = 0; -// internal store of all Outlayer intances -var instances = {}; - - -/** - * @param {Element, String} element - * @param {Object} options - * @constructor - */ -function Outlayer( element, options ) { - var queryElement = utils.getQueryElement( element ); - if ( !queryElement ) { - if ( console ) { - console.error( 'Bad element for ' + this.constructor.namespace + - ': ' + ( queryElement || element ) ); - } - return; - } - this.element = queryElement; - // add jQuery - if ( jQuery ) { - this.$element = jQuery( this.element ); - } - - // options - this.options = utils.extend( {}, this.constructor.defaults ); - this.option( options ); - - // add id for Outlayer.getFromElement - var id = ++GUID; - this.element.outlayerGUID = id; // expando - instances[ id ] = this; // associate via id - - // kick it off - this._create(); - - var isInitLayout = this._getOption('initLayout'); - if ( isInitLayout ) { - this.layout(); - } -} - -// settings are for internal use only -Outlayer.namespace = 'outlayer'; -Outlayer.Item = Item; - -// default options -Outlayer.defaults = { - containerStyle: { - position: 'relative' - }, - initLayout: true, - originLeft: true, - originTop: true, - resize: true, - resizeContainer: true, - // item options - transitionDuration: '0.4s', - hiddenStyle: { - opacity: 0, - transform: 'scale(0.001)' - }, - visibleStyle: { - opacity: 1, - transform: 'scale(1)' - } -}; - -var proto = Outlayer.prototype; -// inherit EvEmitter -utils.extend( proto, EvEmitter.prototype ); - -/** - * set options - * @param {Object} opts - */ -proto.option = function( opts ) { - utils.extend( this.options, opts ); -}; - -/** - * get backwards compatible option value, check old name - */ -proto._getOption = function( option ) { - var oldOption = this.constructor.compatOptions[ option ]; - return oldOption && this.options[ oldOption ] !== undefined ? - this.options[ oldOption ] : this.options[ option ]; -}; - -Outlayer.compatOptions = { - // currentName: oldName - initLayout: 'isInitLayout', - horizontal: 'isHorizontal', - layoutInstant: 'isLayoutInstant', - originLeft: 'isOriginLeft', - originTop: 'isOriginTop', - resize: 'isResizeBound', - resizeContainer: 'isResizingContainer' -}; - -proto._create = function() { - // get items from children - this.reloadItems(); - // elements that affect layout, but are not laid out - this.stamps = []; - this.stamp( this.options.stamp ); - // set container style - utils.extend( this.element.style, this.options.containerStyle ); - - // bind resize method - var canBindResize = this._getOption('resize'); - if ( canBindResize ) { - this.bindResize(); - } -}; - -// goes through all children again and gets bricks in proper order -proto.reloadItems = function() { - // collection of item elements - this.items = this._itemize( this.element.children ); -}; - - -/** - * turn elements into Outlayer.Items to be used in layout - * @param {Array or NodeList or HTMLElement} elems - * @returns {Array} items - collection of new Outlayer Items - */ -proto._itemize = function( elems ) { - - var itemElems = this._filterFindItemElements( elems ); - var Item = this.constructor.Item; - - // create new Outlayer Items for collection - var items = []; - for ( var i=0; i < itemElems.length; i++ ) { - var elem = itemElems[i]; - var item = new Item( elem, this ); - items.push( item ); - } - - return items; -}; - -/** - * get item elements to be used in layout - * @param {Array or NodeList or HTMLElement} elems - * @returns {Array} items - item elements - */ -proto._filterFindItemElements = function( elems ) { - return utils.filterFindElements( elems, this.options.itemSelector ); -}; - -/** - * getter method for getting item elements - * @returns {Array} elems - collection of item elements - */ -proto.getItemElements = function() { - return this.items.map( function( item ) { - return item.element; - }); -}; - -// ----- init & layout ----- // - -/** - * lays out all items - */ -proto.layout = function() { - this._resetLayout(); - this._manageStamps(); - - // don't animate first layout - var layoutInstant = this._getOption('layoutInstant'); - var isInstant = layoutInstant !== undefined ? - layoutInstant : !this._isLayoutInited; - this.layoutItems( this.items, isInstant ); - - // flag for initalized - this._isLayoutInited = true; -}; - -// _init is alias for layout -proto._init = proto.layout; - -/** - * logic before any new layout - */ -proto._resetLayout = function() { - this.getSize(); -}; - - -proto.getSize = function() { - this.size = getSize( this.element ); -}; - -/** - * get measurement from option, for columnWidth, rowHeight, gutter - * if option is String -> get element from selector string, & get size of element - * if option is Element -> get size of element - * else use option as a number - * - * @param {String} measurement - * @param {String} size - width or height - * @private - */ -proto._getMeasurement = function( measurement, size ) { - var option = this.options[ measurement ]; - var elem; - if ( !option ) { - // default to 0 - this[ measurement ] = 0; - } else { - // use option as an element - if ( typeof option == 'string' ) { - elem = this.element.querySelector( option ); - } else if ( option instanceof HTMLElement ) { - elem = option; - } - // use size of element, if element - this[ measurement ] = elem ? getSize( elem )[ size ] : option; - } -}; - -/** - * layout a collection of item elements - * @api public - */ -proto.layoutItems = function( items, isInstant ) { - items = this._getItemsForLayout( items ); - - this._layoutItems( items, isInstant ); - - this._postLayout(); -}; - -/** - * get the items to be laid out - * you may want to skip over some items - * @param {Array} items - * @returns {Array} items - */ -proto._getItemsForLayout = function( items ) { - return items.filter( function( item ) { - return !item.isIgnored; - }); -}; - -/** - * layout items - * @param {Array} items - * @param {Boolean} isInstant - */ -proto._layoutItems = function( items, isInstant ) { - this._emitCompleteOnItems( 'layout', items ); - - if ( !items || !items.length ) { - // no items, emit event with empty array - return; - } - - var queue = []; - - items.forEach( function( item ) { - // get x/y object from method - var position = this._getItemLayoutPosition( item ); - // enqueue - position.item = item; - position.isInstant = isInstant || item.isLayoutInstant; - queue.push( position ); - }, this ); - - this._processLayoutQueue( queue ); -}; - -/** - * get item layout position - * @param {Outlayer.Item} item - * @returns {Object} x and y position - */ -proto._getItemLayoutPosition = function( /* item */ ) { - return { - x: 0, - y: 0 - }; -}; - -/** - * iterate over array and position each item - * Reason being - separating this logic prevents 'layout invalidation' - * thx @paul_irish - * @param {Array} queue - */ -proto._processLayoutQueue = function( queue ) { - this.updateStagger(); - queue.forEach( function( obj, i ) { - this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i ); - }, this ); -}; - -// set stagger from option in milliseconds number -proto.updateStagger = function() { - var stagger = this.options.stagger; - if ( stagger === null || stagger === undefined ) { - this.stagger = 0; - return; - } - this.stagger = getMilliseconds( stagger ); - return this.stagger; -}; - -/** - * Sets position of item in DOM - * @param {Outlayer.Item} item - * @param {Number} x - horizontal position - * @param {Number} y - vertical position - * @param {Boolean} isInstant - disables transitions - */ -proto._positionItem = function( item, x, y, isInstant, i ) { - if ( isInstant ) { - // if not transition, just set CSS - item.goTo( x, y ); - } else { - item.stagger( i * this.stagger ); - item.moveTo( x, y ); - } -}; - -/** - * Any logic you want to do after each layout, - * i.e. size the container - */ -proto._postLayout = function() { - this.resizeContainer(); -}; - -proto.resizeContainer = function() { - var isResizingContainer = this._getOption('resizeContainer'); - if ( !isResizingContainer ) { - return; - } - var size = this._getContainerSize(); - if ( size ) { - this._setContainerMeasure( size.width, true ); - this._setContainerMeasure( size.height, false ); - } -}; - -/** - * Sets width or height of container if returned - * @returns {Object} size - * @param {Number} width - * @param {Number} height - */ -proto._getContainerSize = noop; - -/** - * @param {Number} measure - size of width or height - * @param {Boolean} isWidth - */ -proto._setContainerMeasure = function( measure, isWidth ) { - if ( measure === undefined ) { - return; - } - - var elemSize = this.size; - // add padding and border width if border box - if ( elemSize.isBorderBox ) { - measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight + - elemSize.borderLeftWidth + elemSize.borderRightWidth : - elemSize.paddingBottom + elemSize.paddingTop + - elemSize.borderTopWidth + elemSize.borderBottomWidth; - } - - measure = Math.max( measure, 0 ); - this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px'; -}; - -/** - * emit eventComplete on a collection of items events - * @param {String} eventName - * @param {Array} items - Outlayer.Items - */ -proto._emitCompleteOnItems = function( eventName, items ) { - var _this = this; - function onComplete() { - _this.dispatchEvent( eventName + 'Complete', null, [ items ] ); - } - - var count = items.length; - if ( !items || !count ) { - onComplete(); - return; - } - - var doneCount = 0; - function tick() { - doneCount++; - if ( doneCount == count ) { - onComplete(); - } - } - - // bind callback - items.forEach( function( item ) { - item.once( eventName, tick ); - }); -}; - -/** - * emits events via EvEmitter and jQuery events - * @param {String} type - name of event - * @param {Event} event - original event - * @param {Array} args - extra arguments - */ -proto.dispatchEvent = function( type, event, args ) { - // add original event to arguments - var emitArgs = event ? [ event ].concat( args ) : args; - this.emitEvent( type, emitArgs ); - - if ( jQuery ) { - // set this.$element - this.$element = this.$element || jQuery( this.element ); - if ( event ) { - // create jQuery event - var $event = jQuery.Event( event ); - $event.type = type; - this.$element.trigger( $event, args ); - } else { - // just trigger with type if no event available - this.$element.trigger( type, args ); - } - } -}; - -// -------------------------- ignore & stamps -------------------------- // - - -/** - * keep item in collection, but do not lay it out - * ignored items do not get skipped in layout - * @param {Element} elem - */ -proto.ignore = function( elem ) { - var item = this.getItem( elem ); - if ( item ) { - item.isIgnored = true; - } -}; - -/** - * return item to layout collection - * @param {Element} elem - */ -proto.unignore = function( elem ) { - var item = this.getItem( elem ); - if ( item ) { - delete item.isIgnored; - } -}; - -/** - * adds elements to stamps - * @param {NodeList, Array, Element, or String} elems - */ -proto.stamp = function( elems ) { - elems = this._find( elems ); - if ( !elems ) { - return; - } - - this.stamps = this.stamps.concat( elems ); - // ignore - elems.forEach( this.ignore, this ); -}; - -/** - * removes elements to stamps - * @param {NodeList, Array, or Element} elems - */ -proto.unstamp = function( elems ) { - elems = this._find( elems ); - if ( !elems ){ - return; - } - - elems.forEach( function( elem ) { - // filter out removed stamp elements - utils.removeFrom( this.stamps, elem ); - this.unignore( elem ); - }, this ); -}; - -/** - * finds child elements - * @param {NodeList, Array, Element, or String} elems - * @returns {Array} elems - */ -proto._find = function( elems ) { - if ( !elems ) { - return; - } - // if string, use argument as selector string - if ( typeof elems == 'string' ) { - elems = this.element.querySelectorAll( elems ); - } - elems = utils.makeArray( elems ); - return elems; -}; - -proto._manageStamps = function() { - if ( !this.stamps || !this.stamps.length ) { - return; - } - - this._getBoundingRect(); - - this.stamps.forEach( this._manageStamp, this ); -}; - -// update boundingLeft / Top -proto._getBoundingRect = function() { - // get bounding rect for container element - var boundingRect = this.element.getBoundingClientRect(); - var size = this.size; - this._boundingRect = { - left: boundingRect.left + size.paddingLeft + size.borderLeftWidth, - top: boundingRect.top + size.paddingTop + size.borderTopWidth, - right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ), - bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth ) - }; -}; - -/** - * @param {Element} stamp -**/ -proto._manageStamp = noop; - -/** - * get x/y position of element relative to container element - * @param {Element} elem - * @returns {Object} offset - has left, top, right, bottom - */ -proto._getElementOffset = function( elem ) { - var boundingRect = elem.getBoundingClientRect(); - var thisRect = this._boundingRect; - var size = getSize( elem ); - var offset = { - left: boundingRect.left - thisRect.left - size.marginLeft, - top: boundingRect.top - thisRect.top - size.marginTop, - right: thisRect.right - boundingRect.right - size.marginRight, - bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom - }; - return offset; -}; - -// -------------------------- resize -------------------------- // - -// enable event handlers for listeners -// i.e. resize -> onresize -proto.handleEvent = utils.handleEvent; - -/** - * Bind layout to window resizing - */ -proto.bindResize = function() { - window.addEventListener( 'resize', this ); - this.isResizeBound = true; -}; - -/** - * Unbind layout to window resizing - */ -proto.unbindResize = function() { - window.removeEventListener( 'resize', this ); - this.isResizeBound = false; -}; - -proto.onresize = function() { - this.resize(); -}; - -utils.debounceMethod( Outlayer, 'onresize', 100 ); - -proto.resize = function() { - // don't trigger if size did not change - // or if resize was unbound. See #9 - if ( !this.isResizeBound || !this.needsResizeLayout() ) { - return; - } - - this.layout(); -}; - -/** - * check if layout is needed post layout - * @returns Boolean - */ -proto.needsResizeLayout = function() { - var size = getSize( this.element ); - // check that this.size and size are there - // IE8 triggers resize on body size change, so they might not be - var hasSizes = this.size && size; - return hasSizes && size.innerWidth !== this.size.innerWidth; -}; - -// -------------------------- methods -------------------------- // - -/** - * add items to Outlayer instance - * @param {Array or NodeList or Element} elems - * @returns {Array} items - Outlayer.Items -**/ -proto.addItems = function( elems ) { - var items = this._itemize( elems ); - // add items to collection - if ( items.length ) { - this.items = this.items.concat( items ); - } - return items; -}; - -/** - * Layout newly-appended item elements - * @param {Array or NodeList or Element} elems - */ -proto.appended = function( elems ) { - var items = this.addItems( elems ); - if ( !items.length ) { - return; - } - // layout and reveal just the new items - this.layoutItems( items, true ); - this.reveal( items ); -}; - -/** - * Layout prepended elements - * @param {Array or NodeList or Element} elems - */ -proto.prepended = function( elems ) { - var items = this._itemize( elems ); - if ( !items.length ) { - return; - } - // add items to beginning of collection - var previousItems = this.items.slice(0); - this.items = items.concat( previousItems ); - // start new layout - this._resetLayout(); - this._manageStamps(); - // layout new stuff without transition - this.layoutItems( items, true ); - this.reveal( items ); - // layout previous items - this.layoutItems( previousItems ); -}; - -/** - * reveal a collection of items - * @param {Array of Outlayer.Items} items - */ -proto.reveal = function( items ) { - this._emitCompleteOnItems( 'reveal', items ); - if ( !items || !items.length ) { - return; - } - var stagger = this.updateStagger(); - items.forEach( function( item, i ) { - item.stagger( i * stagger ); - item.reveal(); - }); -}; - -/** - * hide a collection of items - * @param {Array of Outlayer.Items} items - */ -proto.hide = function( items ) { - this._emitCompleteOnItems( 'hide', items ); - if ( !items || !items.length ) { - return; - } - var stagger = this.updateStagger(); - items.forEach( function( item, i ) { - item.stagger( i * stagger ); - item.hide(); - }); -}; - -/** - * reveal item elements - * @param {Array}, {Element}, {NodeList} items - */ -proto.revealItemElements = function( elems ) { - var items = this.getItems( elems ); - this.reveal( items ); -}; - -/** - * hide item elements - * @param {Array}, {Element}, {NodeList} items - */ -proto.hideItemElements = function( elems ) { - var items = this.getItems( elems ); - this.hide( items ); -}; - -/** - * get Outlayer.Item, given an Element - * @param {Element} elem - * @param {Function} callback - * @returns {Outlayer.Item} item - */ -proto.getItem = function( elem ) { - // loop through items to get the one that matches - for ( var i=0; i < this.items.length; i++ ) { - var item = this.items[i]; - if ( item.element == elem ) { - // return item - return item; - } - } -}; - -/** - * get collection of Outlayer.Items, given Elements - * @param {Array} elems - * @returns {Array} items - Outlayer.Items - */ -proto.getItems = function( elems ) { - elems = utils.makeArray( elems ); - var items = []; - elems.forEach( function( elem ) { - var item = this.getItem( elem ); - if ( item ) { - items.push( item ); - } - }, this ); - - return items; -}; - -/** - * remove element(s) from instance and DOM - * @param {Array or NodeList or Element} elems - */ -proto.remove = function( elems ) { - var removeItems = this.getItems( elems ); - - this._emitCompleteOnItems( 'remove', removeItems ); - - // bail if no items to remove - if ( !removeItems || !removeItems.length ) { - return; - } - - removeItems.forEach( function( item ) { - item.remove(); - // remove item from collection - utils.removeFrom( this.items, item ); - }, this ); -}; - -// ----- destroy ----- // - -// remove and disable Outlayer instance -proto.destroy = function() { - // clean up dynamic styles - var style = this.element.style; - style.height = ''; - style.position = ''; - style.width = ''; - // destroy items - this.items.forEach( function( item ) { - item.destroy(); - }); - - this.unbindResize(); - - var id = this.element.outlayerGUID; - delete instances[ id ]; // remove reference to instance by id - delete this.element.outlayerGUID; - // remove data for jQuery - if ( jQuery ) { - jQuery.removeData( this.element, this.constructor.namespace ); - } - -}; - -// -------------------------- data -------------------------- // - -/** - * get Outlayer instance from element - * @param {Element} elem - * @returns {Outlayer} - */ -Outlayer.data = function( elem ) { - elem = utils.getQueryElement( elem ); - var id = elem && elem.outlayerGUID; - return id && instances[ id ]; -}; - - -// -------------------------- create Outlayer class -------------------------- // - -/** - * create a layout class - * @param {String} namespace - */ -Outlayer.create = function( namespace, options ) { - // sub-class Outlayer - var Layout = subclass( Outlayer ); - // apply new options and compatOptions - Layout.defaults = utils.extend( {}, Outlayer.defaults ); - utils.extend( Layout.defaults, options ); - Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions ); - - Layout.namespace = namespace; - - Layout.data = Outlayer.data; - - // sub-class Item - Layout.Item = subclass( Item ); - - // -------------------------- declarative -------------------------- // - - utils.htmlInit( Layout, namespace ); - - // -------------------------- jQuery bridge -------------------------- // - - // make into jQuery plugin - if ( jQuery && jQuery.bridget ) { - jQuery.bridget( namespace, Layout ); - } - - return Layout; -}; - -function subclass( Parent ) { - function SubClass() { - Parent.apply( this, arguments ); - } - - SubClass.prototype = Object.create( Parent.prototype ); - SubClass.prototype.constructor = SubClass; - - return SubClass; -} - -// ----- helpers ----- // - -// how many milliseconds are in each unit -var msUnits = { - ms: 1, - s: 1000 -}; - -// munge time-like parameter into millisecond number -// '0.4s' -> 40 -function getMilliseconds( time ) { - if ( typeof time == 'number' ) { - return time; - } - var matches = time.match( /(^\d*\.?\d*)(\w*)/ ); - var num = matches && matches[1]; - var unit = matches && matches[2]; - if ( !num.length ) { - return 0; - } - num = parseFloat( num ); - var mult = msUnits[ unit ] || 1; - return num * mult; -} - -// ----- fin ----- // - -// back in global -Outlayer.Item = Item; - -return Outlayer; - -})); - -/*! - * Masonry v4.2.1 - * Cascading grid layout library - * https://masonry.desandro.com - * MIT License - * by David DeSandro - */ - -( function( window, factory ) { - // universal module definition - /* jshint strict: false */ /*globals define, module, require */ - if ( typeof define == 'function' && define.amd ) { - // AMD - define( [ - 'outlayer/outlayer', - 'get-size/get-size' - ], - factory ); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - require('outlayer'), - require('get-size') - ); - } else { - // browser global - window.Masonry = factory( - window.Outlayer, - window.getSize - ); - } - -}( window, function factory( Outlayer, getSize ) { - - - -// -------------------------- masonryDefinition -------------------------- // - - // create an Outlayer layout class - var Masonry = Outlayer.create('masonry'); - // isFitWidth -> fitWidth - Masonry.compatOptions.fitWidth = 'isFitWidth'; - - var proto = Masonry.prototype; - - proto._resetLayout = function() { - this.getSize(); - this._getMeasurement( 'columnWidth', 'outerWidth' ); - this._getMeasurement( 'gutter', 'outerWidth' ); - this.measureColumns(); - - // reset column Y - this.colYs = []; - for ( var i=0; i < this.cols; i++ ) { - this.colYs.push( 0 ); - } - - this.maxY = 0; - this.horizontalColIndex = 0; - }; - - proto.measureColumns = function() { - this.getContainerWidth(); - // if columnWidth is 0, default to outerWidth of first item - if ( !this.columnWidth ) { - var firstItem = this.items[0]; - var firstItemElem = firstItem && firstItem.element; - // columnWidth fall back to item of first element - this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth || - // if first elem has no width, default to size of container - this.containerWidth; - } - - var columnWidth = this.columnWidth += this.gutter; - - // calculate columns - var containerWidth = this.containerWidth + this.gutter; - var cols = containerWidth / columnWidth; - // fix rounding errors, typically with gutters - var excess = columnWidth - containerWidth % columnWidth; - // if overshoot is less than a pixel, round up, otherwise floor it - var mathMethod = excess && excess < 1 ? 'round' : 'floor'; - cols = Math[ mathMethod ]( cols ); - this.cols = Math.max( cols, 1 ); - }; - - proto.getContainerWidth = function() { - // container is parent if fit width - var isFitWidth = this._getOption('fitWidth'); - var container = isFitWidth ? this.element.parentNode : this.element; - // check that this.size and size are there - // IE8 triggers resize on body size change, so they might not be - var size = getSize( container ); - this.containerWidth = size && size.innerWidth; - }; - - proto._getItemLayoutPosition = function( item ) { - item.getSize(); - // how many columns does this brick span - var remainder = item.size.outerWidth % this.columnWidth; - var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil'; - // round if off by 1 pixel, otherwise use ceil - var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth ); - colSpan = Math.min( colSpan, this.cols ); - // use horizontal or top column position - var colPosMethod = this.options.horizontalOrder ? - '_getHorizontalColPosition' : '_getTopColPosition'; - var colPosition = this[ colPosMethod ]( colSpan, item ); - // position the brick - var position = { - x: this.columnWidth * colPosition.col, - y: colPosition.y - }; - // apply setHeight to necessary columns - var setHeight = colPosition.y + item.size.outerHeight; - var setMax = colSpan + colPosition.col; - for ( var i = colPosition.col; i < setMax; i++ ) { - this.colYs[i] = setHeight; - } - - return position; - }; - - proto._getTopColPosition = function( colSpan ) { - var colGroup = this._getTopColGroup( colSpan ); - // get the minimum Y value from the columns - var minimumY = Math.min.apply( Math, colGroup ); - - return { - col: colGroup.indexOf( minimumY ), - y: minimumY, - }; - }; - - /** - * @param {Number} colSpan - number of columns the element spans - * @returns {Array} colGroup - */ - proto._getTopColGroup = function( colSpan ) { - if ( colSpan < 2 ) { - // if brick spans only one column, use all the column Ys - return this.colYs; - } - - var colGroup = []; - // how many different places could this brick fit horizontally - var groupCount = this.cols + 1 - colSpan; - // for each group potential horizontal position - for ( var i = 0; i < groupCount; i++ ) { - colGroup[i] = this._getColGroupY( i, colSpan ); - } - return colGroup; - }; - - proto._getColGroupY = function( col, colSpan ) { - if ( colSpan < 2 ) { - return this.colYs[ col ]; - } - // make an array of colY values for that one group - var groupColYs = this.colYs.slice( col, col + colSpan ); - // and get the max value of the array - return Math.max.apply( Math, groupColYs ); - }; - - // get column position based on horizontal index. #873 - proto._getHorizontalColPosition = function( colSpan, item ) { - var col = this.horizontalColIndex % this.cols; - var isOver = colSpan > 1 && col + colSpan > this.cols; - // shift to next row if item can't fit on current row - col = isOver ? 0 : col; - // don't let zero-size items take up space - var hasSize = item.size.outerWidth && item.size.outerHeight; - this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex; - - return { - col: col, - y: this._getColGroupY( col, colSpan ), - }; - }; - - proto._manageStamp = function( stamp ) { - var stampSize = getSize( stamp ); - var offset = this._getElementOffset( stamp ); - // get the columns that this stamp affects - var isOriginLeft = this._getOption('originLeft'); - var firstX = isOriginLeft ? offset.left : offset.right; - var lastX = firstX + stampSize.outerWidth; - var firstCol = Math.floor( firstX / this.columnWidth ); - firstCol = Math.max( 0, firstCol ); - var lastCol = Math.floor( lastX / this.columnWidth ); - // lastCol should not go over if multiple of columnWidth #425 - lastCol -= lastX % this.columnWidth ? 0 : 1; - lastCol = Math.min( this.cols - 1, lastCol ); - // set colYs to bottom of the stamp - - var isOriginTop = this._getOption('originTop'); - var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) + - stampSize.outerHeight; - for ( var i = firstCol; i <= lastCol; i++ ) { - this.colYs[i] = Math.max( stampMaxY, this.colYs[i] ); - } - }; - - proto._getContainerSize = function() { - this.maxY = Math.max.apply( Math, this.colYs ); - var size = { - height: this.maxY - }; - - if ( this._getOption('fitWidth') ) { - size.width = this._getContainerFitWidth(); - } - - return size; - }; - - proto._getContainerFitWidth = function() { - var unusedCols = 0; - // count unused columns - var i = this.cols; - while ( --i ) { - if ( this.colYs[i] !== 0 ) { - break; - } - unusedCols++; - } - // fit container to columns that have been used - return ( this.cols - unusedCols ) * this.columnWidth - this.gutter; - }; - - proto.needsResizeLayout = function() { - var previousWidth = this.containerWidth; - this.getContainerWidth(); - return previousWidth != this.containerWidth; - }; - - return Masonry; - -})); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.proxy-all.js b/ckan/public-bs2/base/javascript/plugins/jquery.proxy-all.js deleted file mode 100644 index f9b3bbf1c01..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.proxy-all.js +++ /dev/null @@ -1,47 +0,0 @@ -(function (jQuery) { - /* Works in a similar fashion to underscore's _.bindAll() but also accepts - * regular expressions for method names. - * - * obj - An object to proxy methods. - * args... - Successive method names or regular expressions to bind. - * - * Examples - * - * var obj = { - * _onClick: function () {} - * _onSave: function () {} - * }; - * - * // Provide method names to proxy/bind to obj scope. - * jQuery.bindAll(obj, '_onClick', '_onSave'); - * - * // Use a RegExp to match patterns. - * jQuery.bindAll(obj, /^_on/); - * - * Returns the original object. - */ - jQuery.proxyAll = function (obj /*, args... */) { - var methods = [].slice.call(arguments, 1); - var index = 0; - var length = methods.length; - var property; - var method; - - for (; index < length; index += 1) { - method = methods[index]; - - for (property in obj) { - if (typeof obj[property] === 'function') { - if ((method instanceof RegExp && method.test(property)) || property === method) { - if (obj[property].proxied !== true) { - obj[property] = jQuery.proxy(obj[property], obj); - obj[property].proxied = true; - } - } - } - } - } - - return obj; - }; -})(this.jQuery); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.slug-preview.js b/ckan/public-bs2/base/javascript/plugins/jquery.slug-preview.js deleted file mode 100644 index fd3cb170cb9..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.slug-preview.js +++ /dev/null @@ -1,80 +0,0 @@ -/* Creates a new preview element for a slug field that displays an example of - * what the slug will look like. Also provides an edit button to toggle back - * to the original form element. - * - * options - An object of plugin options (defaults to slugPreview.defaults). - * prefix: An optional prefix to apply before the slug field. - * placeholder: Optional placeholder when there is no slug. - * i18n: Provide alternative translations for the plugin string. - * template: Provide alternative markup for the plugin. - * - * Examples - * - * var previews = jQuery('[name=slug]').slugPreview({ - * prefix: 'example.com/resource/', - * placeholder: '', - * i18n: {edit: 'éditer'} - * }); - * // previews === preview objects. - * // previews.end() === [name=slug] objects. - * - * Returns the newly created collection of preview elements.. - */ -(function ($, window) { - var escape = $.url.escape; - - function slugPreview(options) { - options = $.extend(true, slugPreview.defaults, options || {}); - - var collected = this.map(function () { - var element = $(this); - var field = element.find('input'); - var preview = $(options.template); - var value = preview.find('.slug-preview-value'); - var required = $('
').append($('.control-required', element).clone()).html(); - - function setValue() { - var val = escape(field.val()) || options.placeholder; - value.text(val); - } - - preview.find('strong').html(required + ' ' + options.i18n['URL'] + ':'); - preview.find('.slug-preview-prefix').text(options.prefix); - preview.find('button').text(options.i18n['Edit']).click(function (event) { - event.preventDefault(); - element.show(); - preview.hide(); - }); - - setValue(); - field.on('change', setValue); - - element.after(preview).hide(); - - return preview[0]; - }); - - // Append the new elements to the current jQuery stack so that the caller - // can modify the elements. Then restore the originals by calling .end(). - return this.pushStack(collected); - } - - slugPreview.defaults = { - prefix: '', - placeholder: '', - i18n: { - 'URL': 'URL', - 'Edit': 'Edit' - }, - template: [ - '
', - '', - '', - '', - '
' - ].join('\n') - }; - - $.fn.slugPreview = slugPreview; - -})(this.jQuery, this); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.slug.js b/ckan/public-bs2/base/javascript/plugins/jquery.slug.js deleted file mode 100644 index 22e17b18b45..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.slug.js +++ /dev/null @@ -1,83 +0,0 @@ -/* Restricts the input into the field to just slug safe characters. - * - * The element will also fire the "slugify" event passing in the new and - * previous strings as arguments. - * - * Examples - * - * var slug = jQuery([name=slug]).slug(); - * - * slug.on('slugify', function (event, current, previous) { - * console.log("value was: %s, and is now %s", current, previous); - * }); - * - * Returns the jQuery collection. - */ -(function ($) { - - /* Handles the on change event that "slugifies" the entire string. This - * catches text pasted into the input. - * - * event - the DOM event object. - * - * Returns nothing. - */ - function onChange(event) { - var value = this.value; - var updated = $.url.slugify(value, true); - - if (value !== updated) { - this.value = updated; - $(this).trigger('slugify', [this.value, value]); - } - } - - /* Handles the keypress event that will convert each character as the user - * inputs new text. This will not catch text pasted into the input. - * - * event - the DOM event object. - * - * Returns nothing. - */ - function onKeypress(event) { - if (!event.charCode) { - return; - } - - event.preventDefault(); - - var value = this.value; - var start = this.selectionStart; - var end = this.selectionEnd; - var char = String.fromCharCode(event.charCode); - var updated; - var range; - - if (this.setSelectionRange) { - updated = value.substring(0, start) + char + value.substring(end, value.length); - - this.value = $.url.slugify(updated, false); - this.setSelectionRange(start + 1, start + 1); - } else if (document.selection && document.selection.createRange) { - range = document.selection.createRange(); - range.text = char + range.text; - } - - $(this).trigger('slugify', [this.value, value]); - } - - /* The jQuery plugin for converting an input. - */ - $.fn.slug = function () { - return this.each(function () { - $(this).on({ - 'blur.slug': onChange, - 'change.slug': onChange, - 'keypress.slug': onKeypress - }); - }); - }; - - // Export the methods onto the plugin for testability. - $.extend($.fn.slug, {onChange: onChange, onKeypress: onKeypress}); -})(this.jQuery); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.truncator.js b/ckan/public-bs2/base/javascript/plugins/jquery.truncator.js deleted file mode 100644 index 983f45b246a..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.truncator.js +++ /dev/null @@ -1,145 +0,0 @@ -// HTML Truncator for jQuery -// by Henrik Nyh 2008-02-28. -// Free to modify and redistribute with credit. - -// EDIT: This plug-in has been modified from the original source to enable -// some additional functionality. -// -// a) We now return the newly created "truncated" elements as a jQuery -// collection. This can be restored as usual using .end(). -// b) We trigger the "expand.truncate" and "collapse.truncate" events when -// the occur. The event object has an additional .relatedTarget property -// which is the original expanded element. -// c) We add an "ellipses" option that places the ellipses outside of the -// expand/collapse links. -// -// We do this because this is the best plug-in I've found that handles -// truncation of elements containing HTML components. Even better would be -// to find one that can also be provided with a number of lines. -// -// Requirements are: -// -// 1. Must truncate the contents of an element keeping elements intact. -// 2. Must be extensible trigger events when expand/collapse occurs. -// 3. Truncate to a set number of lines rather than just characters. -// -(function($) { - - var trailing_whitespace = true; - - $.fn.truncate = function(options) { - - var opts = $.extend({}, $.fn.truncate.defaults, options); - - var collected = this.map(function() { - - var content_length = $.trim(squeeze($(this).text())).length; - if (content_length <= opts.max_length) - return; // bail early if not overlong - - // include more text, link prefix, and link suffix in max length - var actual_max_length = opts.max_length - opts.more.length - opts.link_prefix.length - opts.link_suffix.length; - - var truncated_node = recursivelyTruncate(this, actual_max_length); - var full_node = $(this).hide(); - - truncated_node.insertAfter(full_node); - - findNodeForMore(truncated_node).append(opts.ellipses + opts.link_prefix+''+opts.more+''+opts.link_suffix); - findNodeForLess(full_node).append(opts.link_prefix+''+opts.less+''+opts.link_suffix); - - truncated_node.find('a:last').click(function(event) { - event.preventDefault(); - truncated_node.hide(); full_node.show(); - - // Trigger an event for extensibility. - truncated_node.trigger({ - type: 'expand.truncate', - relatedTarget: full_node[0] - }); - }); - full_node.find('a:last').click(function(event) { - event.preventDefault(); - truncated_node.show(); full_node.hide(); - - // Trigger an event for extensibility. - truncated_node.trigger({ - type: 'collapse.truncate', - relatedTarget: full_node[0] - }); - }); - - // Return our new truncated node. - return truncated_node[0]; - }); - - // Return the newly created elements. - return this.pushStack(collected); - } - - // Note that the " (…more)" bit counts towards the max length – so a max - // length of 10 would truncate "1234567890" to "12 (…more)". - $.fn.truncate.defaults = { - max_length: 100, - more: 'more', - less: 'less', - ellipses: '…', - css_more_class: 'truncator-link truncator-more', - css_less_class: 'truncator-link truncator-less', - link_prefix: ' (', - link_suffix: ')' - }; - - function recursivelyTruncate(node, max_length) { - return (node.nodeType == 3) ? truncateText(node, max_length) : truncateNode(node, max_length); - } - - function truncateNode(node, max_length) { - var node = $(node); - var new_node = node.clone().empty(); - var truncatedChild; - node.contents().each(function() { - var remaining_length = max_length - new_node.text().length; - if (remaining_length == 0) return; // breaks the loop - truncatedChild = recursivelyTruncate(this, remaining_length); - if (truncatedChild) new_node.append(truncatedChild); - }); - return new_node; - } - - function truncateText(node, max_length) { - var text = squeeze(node.data); - if (trailing_whitespace) // remove initial whitespace if last text - text = text.replace(/^ /, ''); // node had trailing whitespace. - trailing_whitespace = !!text.match(/ $/); - var text = text.slice(0, max_length); - // Ensure HTML entities are encoded - // http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb - text = $('
').text(text).html(); - return text; - } - - // Collapses a sequence of whitespace into a single space. - function squeeze(string) { - return string.replace(/\s+/g, ' '); - } - - // Finds the last, innermost block-level element - function findNodeForMore(node) { - var $node = $(node); - var last_child = $node.children(":last"); - if (!last_child) return node; - var display = last_child.css('display'); - if (!display || display=='inline') return $node; - return findNodeForMore(last_child); - }; - - // Finds the last child if it's a p; otherwise the parent - function findNodeForLess(node) { - var $node = $(node); - var last_child = $node.children(":last"); - if (last_child && last_child.is('p')) return last_child; - return node; - }; - -})(jQuery); diff --git a/ckan/public-bs2/base/javascript/plugins/jquery.url-helpers.js b/ckan/public-bs2/base/javascript/plugins/jquery.url-helpers.js deleted file mode 100644 index f92d62923da..00000000000 --- a/ckan/public-bs2/base/javascript/plugins/jquery.url-helpers.js +++ /dev/null @@ -1,167 +0,0 @@ -/* .slugify() based on jQuery Slugify a string! by Pablo Bandin - * - * See: http://tracehello.wordpress.com/2011/06/15/jquery-real-slugify-plugin/ - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - */ -(function ($, window) { - $.url = { - /* Escapes a string for use in a url component. All special characters - * are url encoded and spaces are replaced by a plus rather than a %20. - * - * string - A string to convert. - * - * Examples - * - * jQuery.url.escape('apples & pears'); //=> "apples+%26+pears" - * - * Returns the escaped string. - */ - escape: function (string) { - return window.encodeURIComponent(string || '').replace(/%20/g, '+'); - }, - - /* Converts a string into a url compatible slug. Characters that cannot - * be converted will be replaced by hyphens. - * - * string - The string to convert. - * trim - Remove starting, trailing and duplicate hyphens (default: true) - * - * Examples - * - * jQuery.url.slugify('apples & pears'); //=> 'apples-pears' - * - * Returns the new slug. - */ - slugify: function (string, trim) { - var str = ''; - var index = 0; - var length = string.length; - var map = this.map; - - for (;index < length; index += 1) { - str += map[string.charCodeAt(index).toString(16)] || '-'; - } - - str = str.toLowerCase(); - - return trim === false ? str : str.replace(/\-+/g, '-').replace(/^-|-$/g, ''); - } - }; - - // The following takes two sets of characters, the first a set of hexadecimal - // Unicode character points, the second their visually similar counterparts. - // I'm not 100% sure this is the best way to handle such characters but - // it seems to be a common practice. - var unicode = ('20 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 ' + - '47 48 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 ' + - '71 72 73 74 75 76 77 78 79 100 101 102 103 104 105 106 107 108 109 ' + - '110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 ' + - '126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 ' + - '142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 ' + - '158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 ' + - '174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 ' + - '190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 ' + - '206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 ' + - '222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 ' + - '238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 ' + - '254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ' + - '270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 ' + - '286 287 288 289 290 291 292 293 294 295 296 297 298 299 363 364 ' + - '365 366 367 368 369 386 388 389 390 391 392 393 394 395 396 397 ' + - '398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 ' + - '414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 ' + - '430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 ' + - '446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 ' + - '462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 ' + - '478 479 480 481 490 491 492 493 494 495 496 497 498 499 500 501 ' + - '502 503 504 505 506 507 508 509 510 511 512 513 514 515 531 532 ' + - '533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 ' + - '549 550 551 552 553 554 555 556 561 562 563 564 565 566 567 568 ' + - '569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 ' + - '585 586 587 4a 4b 4c 4d 4e 4f 5a 6a 6b 6c 6d 6e 6f 7a a2 a3 a5 a7 ' + - 'a9 aa ae b2 b3 b5 b6 b9 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ' + - 'ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 ' + - 'e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f8 f9 fa ' + - 'fb fc fd ff 10a 10b 10c 10d 10e 10f 11a 11b 11c 11d 11e 11f 12a ' + - '12b 12c 12d 12e 12f 13a 13b 13c 13d 13e 13f 14a 14b 14c 14d 14e ' + - '14f 15a 15b 15c 15d 15e 15f 16a 16b 16c 16d 16e 16f 17a 17b 17c ' + - '17d 17e 17f 18a 18b 18c 18d 18e 18f 19a 19b 19c 19d 19e 19f 1a0 ' + - '1a1 1a2 1a3 1a4 1a5 1a6 1a7 1a8 1a9 1aa 1ab 1ac 1ad 1ae 1af 1b0 ' + - '1b1 1b2 1b3 1b4 1b5 1b6 1b7 1b8 1b9 1ba 1bb 1bc 1bd 1be 1bf 1c4 ' + - '1c5 1c6 1c7 1c8 1c9 1ca 1cb 1cc 1cd 1ce 1cf 1d0 1d1 1d2 1d3 1d4 ' + - '1d5 1d6 1d7 1d8 1d9 1da 1db 1dc 1dd 1de 1df 1e0 1e1 1e2 1e3 1e4 ' + - '1e5 1e6 1e7 1e8 1e9 1ea 1eb 1ec 1ed 1ee 1ef 1f0 1f1 1f2 1f3 1f4 ' + - '1f5 1f6 1f7 1f8 1f9 1fa 1fb 1fc 1fd 1fe 1ff 20a 20b 20c 20d 20e ' + - '20f 21a 21b 21c 21d 21e 21f 22a 22b 22c 22d 22e 22f 23a 23b 23c ' + - '23d 23e 23f 24a 24b 24c 24d 24e 24f 25a 25b 25c 25d 25e 25f 26a ' + - '26b 26c 26d 26e 26f 27a 27b 27c 27d 27e 27f 28a 28b 28c 28d 28e ' + - '28f 29a 29b 29c 29d 29e 29f 2a0 2a1 2a2 2a3 2a4 2a5 2a6 2a7 2a8 ' + - '2a9 2aa 2ab 2ac 2ae 2af 2b0 2b1 2b2 2b3 2b4 2b5 2b6 2b7 2b8 2df ' + - '2e0 2e1 2e2 2e3 2e4 36a 36b 36c 36d 36e 36f 37b 37c 37d 38a 38c ' + - '38e 38f 39a 39b 39c 39d 39e 39f 3a0 3a1 3a3 3a4 3a5 3a6 3a7 3a8 ' + - '3a9 3aa 3ab 3ac 3ad 3ae 3af 3b0 3b1 3b2 3b3 3b4 3b5 3b6 3b7 3b8 ' + - '3b9 3ba 3bb 3bc 3bd 3be 3bf 3c0 3c1 3c2 3c3 3c4 3c5 3c6 3c7 3c8 ' + - '3c9 3ca 3cb 3cc 3cd 3ce 3d0 3d1 3d2 3d3 3d4 3d5 3d6 3d7 3d8 3d9 ' + - '3da 3db 3dc 3dd 3de 3df 3e2 3e3 3e4 3e5 3e6 3e7 3e8 3e9 3ea 3eb ' + - '3ec 3ed 3ee 3ef 3f0 3f1 3f2 3f3 3f4 3f5 3f6 3f7 3f8 3f9 3fa 3fb ' + - '3fc 3fd 3fe 3ff 40a 40b 40c 40d 40e 40f 41a 41b 41c 41d 41e 41f ' + - '42a 42b 42c 42d 42e 42f 43a 43b 43c 43d 43e 43f 44a 44b 44c 44d ' + - '44e 44f 45a 45b 45c 45d 45e 45f 46a 46b 46c 46d 46e 46f 47a 47b ' + - '47c 47d 47e 47f 48a 48b 48c 48d 48e 48f 49a 49b 49c 49d 49e 49f ' + - '4a0 4a1 4a2 4a3 4a4 4a5 4a6 4a7 4a8 4a9 4aa 4ab 4ac 4ad 4ae 4af ' + - '4b0 4b1 4b2 4b3 4b4 4b5 4b6 4b7 4b8 4b9 4ba 4bb 4bc 4bd 4be 4bf ' + - '4c0 4c1 4c2 4c3 4c4 4c5 4c6 4c7 4c8 4c9 4ca 4cb 4cc 4cd 4ce 4cf ' + - '4d0 4d1 4d2 4d3 4d4 4d5 4d6 4d7 4d8 4d9 4da 4db 4dc 4dd 4de 4df ' + - '4e0 4e1 4e2 4e3 4e4 4e5 4e6 4e7 4e8 4e9 4ea 4eb 4ec 4ed 4ee 4ef ' + - '4f0 4f1 4f2 4f3 4f4 4f5 4f6 4f7 4f8 4f9 4fa 4fb 4fc 4fd 4fe 4ff ' + - '50a 50b 50c 50d 50e 50f 51a 51b 51c 51d 53a 53b 53c 53d 53e 53f ' + - '54a 54b 54c 54d 54e 54f 56a 56b 56c 56d 56e 56f 57a 57b 57c 57d ' + - '57e 57f 5f').split(' '); - - var replacement = ('- 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I P Q R S T ' + - 'U V W X Y a b c d e f g h i p q r s t u v w x y A a A a A a C c C c ' + - 'D d E e E e E e E e G g G g H h H h I i I i IJ ij J j K k k L l L l ' + - 'N n N n N n n O o OE oe R r R r R r S s T t T t T t U u U u U u W w ' + - 'Y y Y Z b B b b b b C C c D E F f G Y h i I K k A a A a E e E e I i ' + - 'R r R r U u U u S s n d 8 8 Z z A a E e O o Y y l n t j db qp < ? ? ' + - 'B U A E e J j a a a b c e d d e e g g g Y x u h h i i w m n n N o oe ' + - 'm o r R R S f f f f t t u Z Z 3 3 ? ? 5 C O B a e i o u c d A ' + - 'E H i A B r A E Z H O I E E T r E S I I J jb A B B r D E X 3 N N P ' + - 'C T y O X U h W W a 6 B r d e x 3 N N P C T Y qp x U h W W e e h r ' + - 'e s i i j jb W w Tb tb IC ic A a IA ia Y y O o V v V v Oy oy C c R ' + - 'r F f H h X x 3 3 d d d d R R R R JT JT E e JT jt JX JX U D Q N T ' + - '2 F r p z 2 n x U B j t n C R 8 R O P O S w f q n t q t n p h a n ' + - 'a u j u 2 n 2 n g l uh p o S u J K L M N O Z j k l m n o z c f Y s ' + - 'c a r 2 3 u p 1 A A A A A A AE C E E E E I I I I D N O O O O O X O ' + - 'U U U U Y p b a a a a a a ae c e e e e i i i i o n o o o o o o u u ' + - 'u u y y C c C c D d E e G g G g I i I i I i l L l L l L n n O o O ' + - 'o S s S s S s U u U u U u z Z z Z z f D d d q E e l h w N n O O o ' + - 'P P P p R S s E l t T t T U u U U Y y Z z 3 3 3 3 2 5 5 5 p DZ Dz ' + - 'dz Lj Lj lj NJ Nj nj A a I i O o U u U u U u U u U u e A a A a AE ' + - 'ae G g G g K k Q q Q q 3 3 J dz dZ DZ g G h p N n A a AE ae O o I ' + - 'i O o O o T t 3 3 H h O o O o O o A C c L T s Q q R r Y y e 3 3 3 ' + - '3 j i I I I h w R r R R r r u v A M Y Y B G H j K L q ? c dz d3 dz ' + - 'ts tf tc fn ls lz ww u u h h j r r r R W Y x Y 1 s x c h m r t v x ' + - 'c c c I O Y O K A M N E O TT P E T Y O X Y O I Y a e n i v a b y d ' + - 'e c n 0 1 k j u v c o tt p s o t u q X Y w i u o u w b e Y Y Y O w ' + - 'x Q q C c F f N N W w q q h e S s X x 6 6 t t x e c j O E E p p C ' + - 'M M p C C C Hb Th K N Y U K jI M H O TT b bI b E IO R K JI M H O N ' + - 'b bI b e io r Hb h k n y u mY my Im Im 3 3 O o W w W W H H B b P p ' + - 'K k K k K k K k H h H h Ih ih O o C c T t Y y Y y X x TI ti H h H ' + - 'h H h E e E e I X x K k jt jt H h H h H h M m l A a A a AE ae E e ' + - 'e e E e X X 3 3 3 3 N n N n O o O o O o E e Y y Y y Y y H h R r bI ' + - 'bi F f X x X x H h G g T t Q q W w d r L Iu O y m o N U Y S d h l ' + - 'lu d y w 2 n u y un _').split(' '); - - // Map the Unicode characters to their counterparts in an object. - var map = {}; - for (var index = 0, length = unicode.length; index < length; index += 1) { - map[unicode[index]] = replacement[index]; - } - - $.url.map = map; - -})(this.jQuery, this); diff --git a/ckan/public-bs2/base/javascript/pubsub.js b/ckan/public-bs2/base/javascript/pubsub.js deleted file mode 100644 index b55ddfbb5b5..00000000000 --- a/ckan/public-bs2/base/javascript/pubsub.js +++ /dev/null @@ -1,139 +0,0 @@ -this.ckan = this.ckan || {}; - -/* The ckan.pubsub object allows the various components of the CKAN site - * to talk to each other. This is primarily used by modules using the sandbox - * object to pass messages between themselves but it may also be useful - * for the libraries themselves to broadcast notifications. - * - * This implementation is built on top of the exiting jQuery event logic - * and as such uses a pubsub.events object to manage handlers. - */ -(function (ckan, $) { - // NOTE: These methods all use pubsub internally to refer to themself rather - // than "this", this is to ensure access to the events object. However they - // all return "this" so they retain the chain of the parent object. - // eg. pubsub.publish() returns pubsub and sandbox.publish() returns sandbox. - var pubsub = { - /* An empty jQuery object to use for event management. */ - events: $({}), - - /* An array for holding queued items. Queue is disabled when null */ - queue: null, - - /* Publishes an event to all modules. Can be used to notify other modules - * that an area of the site has changed. - * - * topic - A topic string. These are global to all modules to choose - * them carefully. - * args* - All successive arguments are passed into callbacks. - * - * Returns the sandbox object. - */ - publish: function (topic /* arguments */) { - if (pubsub.queue) { - pubsub.queue.push([].slice.call(arguments)); - } else { - pubsub.events.triggerHandler(topic, [].slice.call(arguments, 1)); - } - return this; - }, - - /* Subscribes a module to a topic. The callback will receive any - * arguments provided by the publisher. - * - * topic - The topic to subscribe to. - * callback - A function to be called when subscribing. - * - * Returns this sandbox object. - */ - subscribe: function (topic, callback) { - if ($.isPlainObject(topic)) { - $.each(topic, $.proxy(pubsub.subscribe, this)); - return this; - } - - // Call fn, stripping out the 1st argument (the event object). - function wrapper() { - return callback.apply(this, [].slice.call(arguments, 1)); - } - - // Add .guid property to function to allow it to be easily unbound. Note - // that $.guid is new in jQuery 1.4+, and $.event.guid was used before. - wrapper.guid = callback.guid = callback.guid || ($.guid += 1); - - // Bind the handler. - pubsub.events.on(topic, wrapper); - return this; - }, - - /* Unsubscribes a module from a topic. If no callback is provided then - * all handlers for that topic will be unsubscribed. - * - * topic - The topic to unsubscribe from. - * callback - An optional callback to unsubscribe. - * - * Returns the sandbox object. - */ - unsubscribe: function (topic, callback) { - pubsub.events.off(topic, arguments); - return this; - }, - - /* Starts caching all published events. After this is called no - * subscriptions will be called until .dequeue() is called. This is useful - * for deferring events until the page has loaded. - * - * Examples - * - * pubsub.enqueue(); - * jQuery.ready(pubsub.dequeue); - * - * Returns itself. - */ - enqueue: function () { - if (!pubsub.queue) { - pubsub.queue = []; - } - return this; - }, - - /* Loops through each item in the queue and publishes it. - * - * Examples - * - * if (allModulesLoaded) { - * pubsub.dequeue(); - * } - * - * Returns itself. - */ - dequeue: function () { - if (pubsub.queue) { - var queue = pubsub.queue; - var index = 0; - var length = queue.length; - - // We set the queue to null here to prevent events published within the - // following loop to be added to the queue. This reduces the chances - // of an infinite loop but does mean that events may be called out of - // order. - pubsub.queue = null; - - for (;index < length; index += 1) { - pubsub.publish.apply(pubsub, queue[index]); - } - } - return this; - } - }; - - ckan.pubsub = pubsub; - - // Extend the sandbox with the pubsub methods. - ckan.sandbox.extend({ - publish: pubsub.publish, - subscribe: pubsub.subscribe, - unsubscribe: pubsub.unsubscribe - }); - -})(this.ckan, this.jQuery); diff --git a/ckan/public-bs2/base/javascript/resource.config b/ckan/public-bs2/base/javascript/resource.config deleted file mode 100644 index 8037ce0bded..00000000000 --- a/ckan/public-bs2/base/javascript/resource.config +++ /dev/null @@ -1,68 +0,0 @@ -[main] - -dont_bundle = tracking.js - -[depends] - -main = vendor/vendor -ckan = vendor/bootstrap -tracking.js = vendor/jquery.js - -[custom render order] - -apply_html_class = 1 - -[inline scripts] - -apply_html_class = - document.getElementsByTagName('html')[0].className += ' js'; - -[groups] - -ckan = - modules/select-switch.js - modules/slug-preview.js - modules/basic-form.js - modules/confirm-action.js - modules/api-info.js - modules/autocomplete.js - modules/custom-fields.js - modules/data-viewer.js - modules/table-selectable-rows.js - modules/resource-form.js - modules/resource-upload-field.js - modules/resource-reorder.js - modules/resource-view-reorder.js - modules/follow.js - modules/activity-stream.js - modules/dashboard.js - modules/resource-view-embed.js - view-filters.js - modules/resource-view-filters-form.js - modules/resource-view-filters.js - modules/table-toggle-more.js - modules/dataset-visibility.js - modules/media-grid.js - modules/image-upload.js - modules/followers-counter.js - -main = - apply_html_class - plugins/jquery.inherit.js - plugins/jquery.proxy-all.js - plugins/jquery.url-helpers.js - plugins/jquery.date-helpers.js - plugins/jquery.slug.js - plugins/jquery.slug-preview.js - plugins/jquery.truncator.js - plugins/jquery.masonry.js - plugins/jquery.form-warning.js - plugins/jquery.images-loaded.js - - sandbox.js - module.js - pubsub.js - client.js - notify.js - i18n.js - main.js diff --git a/ckan/public-bs2/base/javascript/sandbox.js b/ckan/public-bs2/base/javascript/sandbox.js deleted file mode 100644 index 56cb0060857..00000000000 --- a/ckan/public-bs2/base/javascript/sandbox.js +++ /dev/null @@ -1,131 +0,0 @@ -this.ckan = this.ckan || {}; - -/* The sandbox is a simple way to give modules access to common functionality - * while restricting their access to the rest of the document. This is done - * in an attempt to encourage modular code that has fewer dependencies. - * - * The sandbox provides access to the module element and it's children via the - * .el and .$() properties. Talking to other modules should occur via the - * .publish() and .subscribe() methods which are shared globally among all - * instances. - * - * Ajax is available via the .ajax() method which is simply the jQuery.ajax() - * method. - * - * Other core libraries can extend all sandbox instances by using the - * ckan.sandbox.extend() method which extends the Sandbox.prototype. These - * extensions will then be available to all modules. - * - * Examples - * - * var sandbox = ckan.sandbox(jQuery('#module'), {opt1: 1, opt2: 2}); - * - * sandbox.$('a'); // Query the module for anchors. - * sandbox.subscribe('my-event', callback); // Subscribe to events. - * sandbox.publish('other-event'); // Publish to all other instances. - * - * // Extension - * ckan.sandbox.extend({ - * translate: ckan.i18n.translate - * }); - * - * // All instances now have the .translate() method. - * sandbox.translate('my special message').fetch(); - * - */ -(function (ckan, $) { - var callbacks = []; - - /* Creates a new instance of Sandbox. - * - * Examples - * - * new Sandbox(); - * - * Returns a new instance of Sandbox. - */ - function Sandbox(callbacks) { - var index = 0; - var length = callbacks ? callbacks.length : 0; - - // Allow libraries to add objects/arrays to the sandbox object as they - // cannot be added to the prototype without being shared. - for (; index < length; index += 1) { - callbacks[index](this); - } - } - - $.extend(Sandbox.prototype, { - /* A scoped find function restricted to the current scope. */ - jQuery: $, - - /* An alias for jQuery.ajax() */ - ajax: $.ajax, - - body: $(document.body), - - location: window.location, - - window: window - }); - - /* Factory function for creating new sandbox instances. This should be - * used in preference to the Sandbox constructor. - * - * Returns a new Sandbox instance. - */ - function sandbox(element, options) { - return new sandbox.Sandbox(ckan.sandbox.callbacks); - } - - /* Allows the extension of the Sandbox prototype by other core libraries. - * - * NOTE: Modules should not use this. - * - * props - Properties/methods to add to the sandbox. - * - * Examples - * - * ckan.sandbox.extend({ - * translate: ckan.i18n.translate - * }); - * - * Returns the ckan object. - */ - sandbox.extend = function (props) { - $.extend(Sandbox.prototype, props || {}); - return ckan; - }; - - /* Allows the extension of the Sandbox with objects and arrays. These - * cannot be added to the prototype without them being shared across - * all instances. - * - * fn - A callback that receives the sandbox object. - * - * Examples - * - * ckan.sandbox.setup(function (sandbox) { - * sandbox.myObject = {}; - * sandbox.myArray = []; - * }); - * - * Returns the ckan object. - */ - sandbox.setup = function setup(fn) { - var callbacks = ckan.sandbox.callbacks = ckan.sandbox.callbacks || []; - - if (typeof fn === 'function') { - callbacks.push(fn); - } else { - throw new Error('ckan.sandbox.setup() must be passed a function'); - } - - return ckan; - }; - - // Export Sandbox for testing. - ckan.sandbox = sandbox; - ckan.sandbox.Sandbox = Sandbox; - -})(this.ckan, this.jQuery); diff --git a/ckan/public-bs2/base/javascript/tracking.js b/ckan/public-bs2/base/javascript/tracking.js deleted file mode 100644 index 3aa8edf7f5e..00000000000 --- a/ckan/public-bs2/base/javascript/tracking.js +++ /dev/null @@ -1,21 +0,0 @@ -$(function (){ - // Tracking - var url = location.pathname; - // remove any site root from url - url = url.substring($('body').data('locale-root'), url.length); - // trim any trailing / - url = url.replace(/\/*$/, ''); - $.ajax({url : $('body').data('site-root') + '_tracking', - type : 'POST', - data : {url:url, type:'page'}, - timeout : 300 }); - $('a.resource-url-analytics').click(function (e){ - var url = $(e.target).closest('a').attr('href'); - $.ajax({url : $('body').data('site-root') + '_tracking', - data : {url:url, type:'resource'}, - type : 'POST', - complete : function () {location.href = url;}, - timeout : 30}); - e.preventDefault(); - }); -}); diff --git a/ckan/public-bs2/base/javascript/view-filters.js b/ckan/public-bs2/base/javascript/view-filters.js deleted file mode 100644 index cec83fe34e3..00000000000 --- a/ckan/public-bs2/base/javascript/view-filters.js +++ /dev/null @@ -1,239 +0,0 @@ -/** - * Return a new JSON object of the old string. - * Turns: - * file.js?a=1&b.c=3.0&b.d=four&a_false_value=false&a_null_value=null - * Into: - * {"a":1,"b":{"c":3,"d":"four"},"a_false_value":false,"a_null_value":null} - * @version 1.1.0 - * @date July 16, 2010 - * @since 1.0.0, June 30, 2010 - * @package jquery-sparkle {@link http://balupton.com/projects/jquery-sparkle} - * @author Benjamin "balupton" Lupton {@link http://balupton.com} - * @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://balupton.com} - * @license MIT License {@link http://creativecommons.org/licenses/MIT/} - */ -String.prototype.queryStringToJSON = String.prototype.queryStringToJSON || function ( ) -{ // Turns a params string or url into an array of params - // Prepare - var params = String(this); - // Remove url if need be - params = params.substring(params.indexOf('?')+1); - // params = params.substring(params.indexOf('#')+1); - // Change + to %20, the %20 is fixed up later with the decode - params = params.replace(/\+/g, '%20'); - // Do we have JSON string - if ( params.substring(0,1) === '{' && params.substring(params.length-1) === '}' ) - { // We have a JSON string - return eval(decodeURIComponent(params)); - } - // We have a params string - params = params.split(/\&(amp\;)?/); - var json = {}; - // We have params - for ( var i = 0, n = params.length; i < n; ++i ) - { - // Adjust - var param = params[i] || null; - if ( param === null ) { continue; } - param = param.split('='); - if ( param === null ) { continue; } - // ^ We now have "var=blah" into ["var","blah"] - - // Get - var key = param[0] || null; - if ( key === null ) { continue; } - if ( typeof param[1] === 'undefined' ) { continue; } - var value = param[1]; - // ^ We now have the parts - - // Fix - key = decodeURIComponent(key); - value = decodeURIComponent(value); - - // Set - // window.console.log({'key':key,'value':value}, split); - var keys = key.split('.'); - if ( keys.length === 1 ) - { // Simple - json[key] = value; - } - else - { // Advanced (Recreating an object) - var path = '', - cmd = ''; - // Ensure Path Exists - $.each(keys,function(ii,key){ - path += '["'+key.replace(/"/g,'\\"')+'"]'; - jsonCLOSUREGLOBAL = json; // we have made this a global as closure compiler struggles with evals - cmd = 'if ( typeof jsonCLOSUREGLOBAL'+path+' === "undefined" ) jsonCLOSUREGLOBAL'+path+' = {}'; - eval(cmd); - json = jsonCLOSUREGLOBAL; - delete jsonCLOSUREGLOBAL; - }); - // Apply Value - jsonCLOSUREGLOBAL = json; // we have made this a global as closure compiler struggles with evals - valueCLOSUREGLOBAL = value; // we have made this a global as closure compiler struggles with evals - cmd = 'jsonCLOSUREGLOBAL'+path+' = valueCLOSUREGLOBAL'; - eval(cmd); - json = jsonCLOSUREGLOBAL; - delete jsonCLOSUREGLOBAL; - delete valueCLOSUREGLOBAL; - } - // ^ We now have the parts added to your JSON object - } - return json; -}; - -this.ckan = this.ckan || {}; -this.ckan.views = this.ckan.views || {}; - -this.ckan.views.filters = (function (queryString) { - 'use strict'; - - var api = { - get: get, - set: set, - setAndRedirectTo: setAndRedirectTo, - unset: unset, - _searchParams: {}, - _initialize: _initialize, - _setLocationHref: _setLocationHref, - }; - - function get(filterName) { - var filters = api._searchParams.filters || {}; - - if (filterName) { - return filters[filterName]; - } else { - return filters; - } - } - - function set(name, value) { - var url = window.location.href; - - setAndRedirectTo(name, value, url); - } - - function setAndRedirectTo(name, value, url) { - api._searchParams.filters = api._searchParams.filters || {}; - api._searchParams.filters[name] = value; - - _redirectTo(url); - - return api; - } - - function unset(name, value) { - var thisFilters = get(name); - - if (thisFilters) { - var originalLength = thisFilters.length; - - // value and thisFilters are strings and equal - if (thisFilters === value || value === undefined) { - delete api._searchParams.filters[name]; - } else if ($.isArray(thisFilters)) { - thisFilters = _removeElementsFromArray(thisFilters, value); - - // if we end up with an empty array, delete the filters param - if (thisFilters.length === 0) { - delete api._searchParams.filters[name]; - } else { - api._searchParams.filters[name] = thisFilters; - } - } - - var haveFiltersChanged = (get(name) === undefined || - get(name).length != originalLength); - if (haveFiltersChanged) { - _redirectTo(window.location.href); - } - } - - return api; - } - - function _redirectTo(url) { - var urlBase = url.split('?')[0], - urlQueryString = url.split('?')[1] || '', - defaultParams = urlQueryString.queryStringToJSON(), - queryString = _encodedParams(defaultParams), - destinationUrl; - - destinationUrl = urlBase + '?' + queryString; - - api._setLocationHref(destinationUrl); - } - - function _encodedParams(defaultParams) { - var params = $.extend({}, defaultParams || {}, api._searchParams); - - if (params.filters) { - params.filters = $.map(params.filters, function (fields, filter) { - if (!$.isArray(fields)) { - fields = [fields]; - } - - var fieldsStr = $.map(fields, function (field) { - return filter + ':' + field; - }); - - return fieldsStr.join('|'); - }).join('|'); - } - - return $.param(params); - } - - function _setLocationHref(destinationUrl) { - window.location.href = destinationUrl; - } - - function _removeElementsFromArray(array, elements) { - var arrayCopy = array.slice(0); - - if (!$.isArray(elements)) { - elements = [elements]; - } - - for (var i = 0; i < elements.length; i++) { - var index = $.inArray(elements[i], arrayCopy); - if (index > -1) { - arrayCopy.splice(index, 1); - } - } - - return arrayCopy; - } - - function _initialize(queryString) { - // The filters are in format 'field:value|field:value|field:value' - var searchParams = queryString.queryStringToJSON(); - - if (searchParams.filters) { - var filters = {}, - fieldValuesStr = String(searchParams.filters).split('|'), - i, - len; - - for (i = 0, len = fieldValuesStr.length; i < len; i++) { - var fieldValue = fieldValuesStr[i].match(/([^:]+):(.*)/), - field = fieldValue[1], - value = fieldValue[2]; - - filters[field] = filters[field] || []; - filters[field].push(value); - } - - searchParams.filters = filters; - } - - api._searchParams = searchParams; - } - - _initialize(queryString); - - return api; -})(window.location.search); diff --git a/ckan/public-bs2/base/less/activity.less b/ckan/public-bs2/base/less/activity.less deleted file mode 100644 index 6071fabc5f0..00000000000 --- a/ckan/public-bs2/base/less/activity.less +++ /dev/null @@ -1,126 +0,0 @@ -.activity { - margin: 10px 0; - padding: 0; - list-style-type: none; - background: transparent url('@{imagePath}/dotted.png') 14px 0 repeat-y; - .item { - position: relative; - margin: 0 0 15px 0; - padding: 0; - .clearfix; - .icon { - display: block; - position: absolute; - top: 0; - left: 0; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - color: @activityColorText; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); - font-weight: normal; - margin-right: 10px; - .border-radius(100px); - .box-shadow(inset 0 1px 2px rgba(0, 0, 0, 0.2)); - } - .gravatar { - .border-radius(100px); - } - .actor .gravatar { - position: absolute; - top: 0; - left: 40px; - } - p { - font-size: 14px; - line-height: 1.5; - margin: 5px 0 0 80px; - } - .date { - color: #999; - font-size: 12px; - white-space: nowrap; - } - .new { - display: block; - position: absolute; - overflow: hidden; - top: -3px; - left: -3px; - width: 10px; - height: 10px; - background-color: #A35647; - border: 1px solid #FFF; - text-indent: -1000px; - .border-radius(100px); - .box-shadow(0 1px 2px rgba(0, 0, 0, 0.2)); - } - &.no-avatar p { - margin-left: 40px; - } - } - .load-less { - margin-bottom: 15px; - } -} - -// For profile information that appears in the popover -.popover { - width: 300px; - .popover-title { - font-weight: bold; - margin-bottom: 0; - } - p.about { - margin: 0 0 10px 0; - } - .popover-close { - float: right; - text-decoration: none; - } - .popover-content { - font-size: @baseFontSize; - line-height: @baseLineHeight; - color: @layoutTextColor; - word-break: break-all; - dl { - margin: 0; - dd { - margin-left: 0; - margin-bottom: 10px; - } - } - } -} - -// colors -.activity .item { - & .icon { background-color: @activityColorBlank; } // Non defined - &.failure .icon { background-color: @activityColorDelete; } - &.success .icon { background-color: @activityColorNew; } - &.added-tag .icon { background-color: spin(@activityColorNew, 60); } - &.changed-group .icon { background-color: @activityColorModify; } - &.changed-package .icon { background-color: spin(@activityColorModify, 20); } - &.changed-package_extra .icon { background-color: spin(@activityColorModify, -20); } - &.changed-resource .icon { background-color: spin(@activityColorModify, 40); } - &.changed-user .icon { background-color: spin(@activityColorModify, -40); } - &.changed-organization .icon { background-color: spin(@activityColorNew, 50); } - &.deleted-group .icon { background-color: @activityColorDelete; } - &.deleted-package .icon { background-color: spin(@activityColorDelete, 20); } - &.deleted-package_extra .icon { background-color: spin(@activityColorDelete, -20); } - &.deleted-resource .icon { background-color: spin(@activityColorDelete, 40); } - &.deleted-organization .icon { background-color: spin(@activityColorDelete, -40); } - &.new-group .icon { background-color: @activityColorNew; } - &.new-package .icon { background-color: spin(@activityColorNew, 20); } - &.new-package_extra .icon { background-color: spin(@activityColorNew, -20); } - &.new-resource .icon { background-color: spin(@activityColorNew, -40); } - &.new-user .icon { background-color: spin(@activityColorNew, 40); } - &.new-organization .icon { background-color: spin(@activityColorNew, -40); } - &.removed-tag .icon { background-color: spin(@activityColorDelete, -40); } - &.deleted-related-item .icon { background-color: spin(@activityColorDelete, 60); } - &.follow-dataset .icon { background-color: @activityColorNeutral; } - &.follow-user .icon { background-color: spin(@activityColorNeutral, 20); } - &.new-related-item .icon { background-color: spin(@activityColorNew, -60); } - &.follow-group .icon { background-color: spin(@activityColorNew, -50); } -} diff --git a/ckan/public-bs2/base/less/ckan.less b/ckan/public-bs2/base/less/ckan.less deleted file mode 100644 index c78d13dd7f9..00000000000 --- a/ckan/public-bs2/base/less/ckan.less +++ /dev/null @@ -1,142 +0,0 @@ -@import "variables.less"; -@import "custom.less"; -@import "mixins.less"; -@import "module.less"; -@import "media.less"; -@import "nav.less"; -@import "forms.less"; -@import "dataset.less"; -@import "search.less"; -@import "group.less"; -@import "toolbar.less"; -@import "prose.less"; -@import "icons.less"; -@import "layout.less"; -@import "homepage.less"; -@import "masthead.less"; -@import "footer.less"; -@import "tables.less"; -@import "profile.less"; -@import "activity.less"; -@import "dropdown.less"; -@import "dashboard.less"; -@import "resource-view.less"; -@import "datapusher.less"; - -body { - // Using the masthead/footer gradient prevents the color from changing - // at the bottom of the window on pages with little content. - background: @mastheadBackgroundColor url("@{bgPath}"); -} - -[hidden] { - display: none; -} - -table { - table-layout: fixed; -} - -thead th { - vertical-align: top; -} - -td, th { - word-wrap: break-word; -} - -table .metric { - width: 140px; -} - -code { - color: @codeTextColor; - border: none; - background: none; - white-space: normal; -} - -pre { - border: none; - background: none; - padding-left: 0; - padding-right: 0; -} - -mark { - background: @highlightBackground; -} - -blockquote p { - font-size: 1em; -} - -iframe { - border: none; -} - -.embedded-content h1 { - font-size: 1.8em; -} - -.embedded-content h2 { - font-size: 1.4em; -} - -.embedded-content h3 { - font-size: 1.2em; -} - -.popular { - text-indent: -999em; -} - -.empty { - color: @emptyTextColor; - font-style: italic; -} - -.page-heading { - margin-top: 0; - margin-bottom: 16px; -} - -.m-top { - margin-top: @gutterSmallX; -} -.m-left { - margin-left: @gutterSmallX; -} -.m-right { - margin-right: @gutterSmallX; -} -.m-bottom { - margin-bottom: @gutterSmallX; -} -.no-margin { - margin: 0; -} -.reduced-margin { - margin: 3px 5px; -} - -.p-top { - padding-top: @gutterSmallX; -} -.p-left { - padding-left: @gutterSmallX; -} -.p-right { - padding-right: @gutterSmallX; -} -.p-bottom { - padding-bottom: @gutterSmallX; -} -.no-padding { - padding: 0; -} -.reduced-padding { - padding: 3px 5px; -} - -@import "iehacks.less"; diff --git a/ckan/public-bs2/base/less/custom.less b/ckan/public-bs2/base/less/custom.less deleted file mode 100644 index 8696e5c815e..00000000000 --- a/ckan/public-bs2/base/less/custom.less +++ /dev/null @@ -1 +0,0 @@ -// This file is needed in order for ./bin/less to compile in less 1.3.1+ diff --git a/ckan/public-bs2/base/less/dashboard.less b/ckan/public-bs2/base/less/dashboard.less deleted file mode 100644 index 286f72bb968..00000000000 --- a/ckan/public-bs2/base/less/dashboard.less +++ /dev/null @@ -1,130 +0,0 @@ -#followee-filter { - .btn { - .clearfix(); - span, - strong { - display: block; - float: left; - line-height: 1.5; - } - span { - font-weight: normal; - } - strong { - margin: 0 5px; - white-space: nowrap; - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; - } - } -} - -.dashboard-context { - position: relative; - margin-bottom: 20px; - padding: 20px; - border-bottom: 1px solid #DCDCDC; - background-color: @moduleHeadingBackgroundColor; - .border-radius(3px 0 0 0); - h2 { - margin-bottom: 10px; - } - .arrow { - position: absolute; - content: ' '; - top: 30px; - right: -10px; - width: 10px; - height: 21px; - background: transparent url("@{imagePath}/dashboard-followee-related.png"); - } -} - -.popover-followee { - .popover-title { - display: none; - } - .popover-content { - padding: 0; - .border-radius(3px); - } - .empty { - padding: 10px; - } - .popover-header { - .clearfix(); - background-color: whiteSmoke; - padding: 5px; - border-bottom: 1px solid @inputBorder; - .border-radius(3px 3px 0 0); - .input-prepend { - margin-bottom: 0; - } - .add-on, - input { - float: left; - margin: 0; - } - .add-on { - padding: 4px 8px 4px 12px; - border-right-width: 0; - .border-radius(100px 0 0 100px); - } - input { - padding: 4px 12px 4px 8px; - font-size: 13px; - width: 207px; - .border-radius(0 100px 100px 0); - } - } - .nav { - padding: 0; - margin: 0; - max-height: 205px; - overflow: auto; - .border-radius(0 0 3px 3px); - li { - a { - display: block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: 7px 10px 7px 15px; - margin: 0; - .border-radius(0); - i { - background-color: @layoutLinkColor; - color: @inputBackground; - margin-right: 11px; - padding: 3px 5px; - line-height: 1; - .border-radius(100px); - .box-shadow(inset 0 1px 2x rgba(0, 0, 0, 0.2)); - } - &:hover i { - background-color: #000; - } - } - &.active a i { - color: @layoutLinkColor; - background-color: @inputBackground; - } - } - } -} - -.dashboard-me { - .clearfix; - padding: 15px 15px 0 15px; - img { - float: left; - margin-right: 10px; - .border-radius(100px); - } - strong { - display: block; - font-size: 16px; - margin: 3px 0; - } -} diff --git a/ckan/public-bs2/base/less/datapusher.less b/ckan/public-bs2/base/less/datapusher.less deleted file mode 100644 index f147c0c3f6c..00000000000 --- a/ckan/public-bs2/base/less/datapusher.less +++ /dev/null @@ -1,18 +0,0 @@ -.datapusher-status-link:hover { - text-decoration: none; -} - -.datapusher-status { - &.status-unknown { - color: #bbb; - } - &.status-pending { - color: #FFCC00; - } - &.status-error { - color: red; - } - &.status-complete { - color: #009900; - } -} \ No newline at end of file diff --git a/ckan/public-bs2/base/less/dataset.less b/ckan/public-bs2/base/less/dataset.less deleted file mode 100644 index d812248084a..00000000000 --- a/ckan/public-bs2/base/less/dataset.less +++ /dev/null @@ -1,340 +0,0 @@ -.dataset-item { - border-bottom: 1px dotted @genericBorderColor; - padding-bottom: 20px; - margin-bottom: 20px; -} -@media (max-width: 768px) { - .dataset-item { - word-wrap:break-word; - } -} - -.dataset-item:last-of-type { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} - -.dataset-heading { - font-size: 16px; - margin-top: 0; - margin-bottom: 8px; - line-height: 1.3; -} - -.dataset-heading a { - color: @listingHeadingTextColor; -} - -.dataset-heading .label { - position: relative; - top: -1px; -} - -.dataset-private { - margin-right: 10px; - text-transform: uppercase; - .icon-lock { - width: 9px; - } - &.pull-right { - margin-right: 0; - } -} - -.dataset-resources { - margin-top: 8px; -} - -.dataset-resources li { - display: inline; -} - -.dataset-resources li a { - background-color: @resourceFormatBackground; -} - -.dataset-heading .popular { - top: 0; -} - -// Resource List - -.resource-list { - .unstyled; - margin: -10px -10px 10px -10px; -} - -.resource-item { - position: relative; - padding: 10px 10px 10px 60px; - margin-bottom: 0px; - .border-radius(3px); - &:hover { - background-color: @layoutBackgroundColor; - } -} - -.resource-item .heading { - color: @layoutBoldColor; - font-size: 14px; - font-weight: bold; -} - -.resource-item .format-label { - position: absolute; - top: 10px; - left: 10px; -} - -.resource-item .description { - font-size: 12px; - margin-bottom: 0; - min-height: 12px; -} - -.resource-item .btn-group { - position: absolute; - top: 14px; - right: 10px; -} -@media (max-width: 768px) { - .resource-item .btn-group { - display:none; - } -} - -.resource-list.reordering { - .resource-item { - border: 1px solid @moduleHeadingBorderColor; - margin-bottom: 10px; - cursor: move; - .handle { - display: block; - position: absolute; - color: @moduleHeadingActionTextColor; - left: -31px; - top: 50%; - margin-top: -15px; - width: 30px; - height: 30px; - line-height: 30px; - text-align: center; - border: 1px solid @moduleHeadingBorderColor; - border-width: 1px 0 1px 1px; - background-color: @moduleBackgroundColor; - .border-radius(20px 0 0 20px); - &:hover { - text-decoration: none; - } - } - &:hover .handle { - background-color: @layoutBackgroundColor; - } - &.ui-sortable-helper { - background-color: @layoutBackgroundColor; - border: 1px solid @layoutLinkColor; - .handle { - background-color: @layoutBackgroundColor; - border-color: @layoutLinkColor; - color: @navLinkColor; - } - } - } -} -.resource-item .handle { - display: none; -} - -// Dataset Forms - -// Tag List - -.tag-list { - .unstyled; - padding: 10px 10px 5px 10px; -} - -.tag-list li { - display: inline-block; - margin-right: 5px; -} - -.tag-list li:last-child { - margin-right: 0; -} - -// Additional Info - -.additional-info td, -.additional-info th { - width: 50%; -} - -// FORMATS - -.label[data-format=html], -.label[data-format*=html] { - background-color: #55a1ce; -} - -.label[data-format=json], -.label[data-format*=json] { - background-color: #ef7100; -} - -.label[data-format=xml], -.label[data-format*=xml] { - background-color: #ef7100; -} - -.label[data-format=text], -.label[data-format*=text] { - background-color: #74cbec; -} - -.label[data-format=csv], -.label[data-format*=csv] { - background-color: #dfb100; -} - -.label[data-format=xls], -.label[data-format*=xls] { - background-color: #2db55d; -} - -.label[data-format=zip], -.label[data-format*=zip] { - background-color: #686868; -} - -.label[data-format=api], -.label[data-format*=api] { - background-color: #ec96be; -} - -.label[data-format=pdf], -.label[data-format*=pdf] { - background-color: #e0051e; -} - -.label[data-format=rdf], -.label[data-format*=rdf], -.label[data-format*=nquad], -.label[data-format*=ntriples], -.label[data-format*=turtle] { - background-color: #0b4498; -} - -// Views -.view-list { - .unstyled; - li { - position: relative; - margin-bottom: 10px; - a { - display: block; - min-height: 50px; - padding: 10px; - border: 1px solid @moduleHeadingBorderColor; - overflow: hidden; - .border-radius(3px); - .icon { - float: left; - width: 50px; - height: 50px; - overflow: hidden; - margin-right: 10px; - color: @layoutTextColor; - background-color: @layoutBackgroundColor; - .border-radius(3px); - i { - display: block; - text-align: center; - font-size: 28px; - line-height: 50px; - } - } - h3 { - font-weight: bold; - color: @layoutBoldColor; - font-weight: bold; - font-size: 16px; - margin: 0 0 3px 0; - } - p { - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: @layoutTextColor; - } - &.active, - &:hover { - text-decoration: none; - border-color: @layoutLinkColor; - .icon { - background-color: @layoutLinkColor; - color: @navActiveBackgroundColor; - } - } - } - .arrow { - position: absolute; - display: none; - border: 8px solid transparent; - border-top-color: @layoutLinkColor; - left: 50%; - bottom: -15px; - margin-left: -4px; - } - &.active { - a { - text-decoration: none; - border-color: @layoutLinkColor; - .icon { - background-color: @layoutLinkColor; - color: @navActiveBackgroundColor; - } - } - .arrow { - display: block; - } - } - } - &.stacked { - overflow-y: hidden; - overflow-x: auto; - height: 100px; - white-space: nowrap; - li { - display: inline-block; - width: 250px; - margin-right: 10px; - &:last-child { - margin-right: 0; - } - } - - &::-webkit-scrollbar { - width: 7px; - height: 7px; - } - &::-webkit-scrollbar-track { - border-radius: 10px; - background-color: @navActiveBackgroundColor; - } - &::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: darken(@navActiveBackgroundColor, 20%); - &:hover { - background-color: @layoutLinkColor; - } - } - - } -} - -.resource-view { - margin-top: 20px; -} diff --git a/ckan/public-bs2/base/less/dropdown.less b/ckan/public-bs2/base/less/dropdown.less deleted file mode 100644 index 318c62aca18..00000000000 --- a/ckan/public-bs2/base/less/dropdown.less +++ /dev/null @@ -1,14 +0,0 @@ -// Allow the dropdown to work without JavaScript -.dropdown:hover .dropdown-menu { - display: block; -} -// Default to normal dropdown behaviour when JavaScript is enabled -.js .dropdown { - .dropdown-menu, - &:hover .dropdown-menu { - display: none; - } - &.open .dropdown-menu { - display: block; - } -} diff --git a/ckan/public-bs2/base/less/footer.less b/ckan/public-bs2/base/less/footer.less deleted file mode 100644 index 042ed9028ea..00000000000 --- a/ckan/public-bs2/base/less/footer.less +++ /dev/null @@ -1,51 +0,0 @@ -.site-footer { - .masthead(); - padding: 20px 0; -} - -.site-footer, -.site-footer label, -.site-footer small { - color: @footerTextColor; -} - -.site-footer a { - color: @footerLinkColor; -} - -.footer-links ul li { - margin-bottom: 5px; -} - -.attribution small { - color: @footerTextColor; - font-size: 12px; -} - -.attribution .ckan-footer-logo { - display: block; - width: 68px; - height: 21px; - margin-top: 2px; - background: url("@{imagePath}/ckan-logo-footer.png") no-repeat top left; - text-indent: -900em; -} - -.lang-select { - .clearfix; -} - -.lang-select label, -.lang-select select, -.lang-select .lang-container { - float: left; - margin-top: 0; -} - -.lang-dropdown { - color: @inputColor; -} - -.lang-dropdown li { - width: auto; -} diff --git a/ckan/public-bs2/base/less/forms.less b/ckan/public-bs2/base/less/forms.less deleted file mode 100644 index 167ec990ed9..00000000000 --- a/ckan/public-bs2/base/less/forms.less +++ /dev/null @@ -1,806 +0,0 @@ -.js .js-hide { - display:none; -} - -.js .js-hide.active { - display: block; -} - -.btn, -label { - font-weight: bold; -} - -.btn-rounded { - .border-radius(100px); - padding-left: 15px; - padding-right: 15px; -} - -label { - cursor: pointer; - font-size: 14px; -} - -label:after { - content: ":"; -} - -label.radio:after, -label.checkbox:after { - content: ""; -} - -input[type=radio], -input[type=checkbox] { - position: relative; - top: 7px; - padding: 0; - margin: 0; - &.checkbox-onown { - top: 0; - } -} - -select { - padding: 4px; -} - -textarea { - max-width: 100%; -} - -.control-group .btn { - position: relative; - top: -2px; -} - -.control-full input, -.control-full select, -.control-full textarea { - .box-sizing(border-box); - height: auto; - width: 100%; -} - -.control-medium input, -.control-medium select, -.control-medium textarea { - width: 320px; -} -@media (max-width: 768px) { - .control-medium input, - .control-medium select, - .control-medium textarea { - width: 100%; - .box-sizing(border-box); - min-height:28px; - } -} - -.control-large input, -.control-large .control-label { - font-size: @baseFontSize * 1.25; - line-height: @baseLineHeight * 1.5; -} - -.control-large input { - height: (@baseLineHeight*2)+1; -} - -.control-required { - color: @errorBorder; -} - -.form-actions .control-required-message { - float: left; - margin-left: 20px; - margin-bottom: 0; - line-height: 30px; - &:first-child { - margin-left: 0; - } -} - -.form-actions { - background: none; - margin-left: -@gutterX; - margin-right: -@gutterX; - margin-bottom: 0; // Prevents reduces the padding when included in a module. - padding-bottom: 0; -} -@media (min-width: 768px) { - .form-actions { - text-align: right; - } -} - -.form-actions .action-info { - line-height: 2; - text-align: left; - color: @formInfoText; - margin: 0; -} -@media (min-width: 768px) { - .form-actions .action-info { - float: left; - width: 50%; - } -} - -.form-actions .action-info.small { - font-size: 11px; - line-height: 1.2; -} - -@media (max-width: 768px) { - .form-actions .btn { - margin-top:5px; - } -} - -// Override the default form widths. -.form-horizontal .control-label { - width: 120px; -} -@media (min-width: 768px) { - .form-horizontal .controls { - margin-left: 130px; - } -} - -.form-horizontal .info-block { - position: relative; - display: block; - font-size: 11px; - color: @emptyTextColor; - line-height: 1.3; - margin-top: 6px; -} - -.form-horizontal .info-help { - padding: 6px 0; - &:before { - display: none; - } -} -.form-horizontal .info-help-tight { - margin-top: -10px; -} - -@media (min-width: 980px) { - .form-horizontal .info-block { - padding: 6px 0 6px 0; - } - .form-horizontal .info-inline { - float: right; - width: 265px; - margin-top: 0; - padding-bottom: 0; - } -} - -.form-horizontal .control-medium .info-block.info-inline { - width: 165px; -} - -.form-horizontal .info-block:before { - font-size: 2.2em; - position: absolute; - left: 0; - top: 2px; -} - -.form-horizontal .info-inline:before { - top: 8px; -} - -.info-block, -.info-inline { - .icon-large { - float: left; - font-size: 22px; - margin-right: @gutterSmallX; - } -} - -.form-horizontal .info-block a { - color: @emptyTextColor; - text-decoration: underline; -} - -.form-horizontal .form-actions { - padding-left: @gutterX; - padding-right: @gutterX; -} - -.form-inline input { - padding-bottom: 9px; -} - -.form-inline select { - margin-top: 0; -} - -.form-inline .btn { - margin-left: 5px; -} - -// Form Narrow - -.form-narrow label { - margin-bottom: 0; -} - -.form-narrow select { - width: 100%; -} - -.form-narrow .form-actions { - margin-left: -@gutterSmallX; - margin-right: -@gutterSmallX; - padding: 10px @gutterSmallX 0; -} - -// Inline Select Forms - -.form-select label { - margin-right: 5px; -} - -// Single Field Inputs - -.simple-input label, -.simple-input button { - display: none; -} - -.simple-input .field { - position: relative; -} - -.simple-input .field-bordered { - border-bottom: 1px dotted @genericBorderColor; -} - -.simple-input .field input { - width: 100%; - height: auto; - margin: 0 -7px; // Pull input out into gutter - padding: 7px 5px; -} - -.simple-input .field .btn-search { - position: absolute; - display: block; - height: 17px; - width: 17px; - padding: 0; - top: 50%; - right: 0; - margin-top: -10px; - background-color: transparent; - border: none; - color: #999; - .transition(color 0.2s ease-in); - &:hover { - color: #000; - } -} - -.editor textarea { - .border-radius(@inputBorderRadius @inputBorderRadius 0 0); - border-bottom: none; -} - -.editor .editor-info-block { - .border-radius(0 0 @inputBorderRadius @inputBorderRadius); - display: block; - float: none; - padding: 4px 10px; - background: #ebebeb; - width: auto; - border: 1px solid @inputBorder; - border-top: none; - font-size: 11px; - color: #282828; -} - -.editor .editor-info-block a { - color: @layoutLinkColor; - text-decoration: none; -} - -// Custom Fields -@media (max-width: 768px) { - [data-module="custom-fields"] { - .input-prepend .add-on { - display:block; - } - } -} -@media (max-width: 480px) { - [data-module="custom-fields"] { - .input-prepend { - width:100%; - } - .control-custom input { - width:100%; - .box-sizing(border-box); - min-height:28px; - } - } -} - -// Controls - -// Custom Key/Value input - -.control-custom { - font-size: 0; // Remove whitespace between fields. -} - -.control-custom label { - margin-bottom: 0; -} - -.control-custom input { - .border-radius(0); - width: 140px; -} - -.control-custom input:last-of-type { - .border-radius(0 3px 3px 0); -} - -.control-custom .checkbox { - display: inline-block; - margin-left: 5px; -} - -.control-custom .checkbox input { - width: auto; -} - -.control-custom.disabled label, -.control-custom.disabled input { - color: @disabledCustomInputTextColor; - text-decoration: line-through; - text-shadow: none; -} - -.control-custom.disabled input { - .box-shadow(none); - background-color: @disabledCustomInputBackground; -} - -.control-custom.disabled .checkbox { - color: @layoutTextColor; - text-decoration: none; -} - -// JavaScript Enabled Remove Button - -.control-custom .checkbox.btn { - .border-radius(15px); - position: relative; - top: 0; - left: 5px; - height: 1px; - width: 9px; - padding: 3px 8px; - line-height: 18px; -} - -.control-custom .checkbox.btn span { - display: none; - width: 30px; -} - -.control-custom .checkbox.btn:before { - position: relative; - top: 1px; - left: -1px; - color: #fff; -} - -.control-custom .checkbox.btn input { - display: none; -} - -.control-custom.disabled .checkbox.btn { - .btn-primary; -} - -// Errors - -.alert-danger a, .alert-error a { - color: @errorText; -} - -.control-group.error input, -.control-group.error select, -.control-group.error textarea, -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - border-color: @errorBorder; -} - -.error-inline { - color: @errorText; -} - -.error-block, -.error-inline { - font-size: 12px; -} - -.error-block { - .border-radius(0 0 @inputBorderRadius @inputBorderRadius); - display: block; - padding: 6px 8px 3px; - background: @errorBorder; - margin: -@inputBorderRadius 0 0; - color: @inputBackground; - width: 208px; -} - -.control-medium .error-block { - width: 318px; -} - -.control-full .error-block { - width: auto; -} - -.control-group.error .input-prepend .error-block, -.control-custom.error .error-block { - width: auto; -} - -.control-custom.error .error-block { - width: 401px; -} - -.control-select.error .error-block { - width: 196px; -} - -// Stages -// Builds form stages out of an ordered list. The following CSS uses tag -// selectors on the .active class to prevent the styles bleeding into the -// anchor element which can also have an active class. - -.stages { - .unstyled; - .clearfix; - color: @stagesTextColor; - counter-reset: stage; - margin: -@gutterY -@gutterX @gutterY; - overflow: hidden; -} - -.stages li { - .box-sizing(border-box); - line-height: 27px; - counter-increment: stage; - width: 50%; - background-color: @stagesBackground; - float: left; - padding: 10px 20px; - position: relative; - z-index: 0; -} - -.stages li:before { - .border-radius(14px); - content: counter(stage); - display: inline-block; - width: 27px; - height: 27px; - margin-right: 5px; - font-weight: bold; - text-align: center; - color: @stagesCounterTextColor; - background-color: @stagesCounterBackground; - z-index: 1; -} - -.stages li:after { - left: 0; - border: solid @stagesTransparentBackground; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-top-color: @stagesBackground; - border-bottom-color: @stagesBackground; - border-width: 29px; // Needs to be an odd number - top: 50%; - margin-top: -29px; - margin-left: -30px; -} - -.stages li.last { - position: relative; - right: -1px; -} - -.stages li.last, -.stages li.last .highlight { - .border-radius(0 3px 0 0); -} - -.stages li.first:after { - content: none; - border: none; -} - -.stages li.active:after { - border-color: @stagesActiveTransparentBackground; - border-top-color: @stagesActiveBackground; - border-bottom-color: @stagesActiveBackground; -} - -.stages li.complete:after { - border-color: @stagesCompleteTransparentBackground; - border-top-color: @stagesCompleteBackground; - border-bottom-color: @stagesCompleteBackground; -} - -.stages.stage-3 li.complete:first-child:after { - content: none; -} - -.stages li.active, -.stages li.complete { - background: none; -} - -.stages li.active:before { - color: @stagesCounterActiveTextColor; - background: @stagesCounterActiveBackground; -} - -.stages li.complete:before { - color: @stagesCounterCompleteTextColor; - background: @stagesCounterCompleteBackground; -} - -// Needs to style spa, button and a elements. -.stages li .highlight { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - padding: 10px 52px; - border: none; - text-align: left; - text-decoration: none; - line-height: 27px; - z-index: -1; -} -@media (max-width: 768px) { - .stages li .highlight { - text-indent:-9999px; - } -} -.stages li.active .highlight { - color: @stagesActiveTextColor; - background: @stagesActiveBackground; -} - -.stages li.complete .highlight { - color: @stagesCompleteTextColor; - background: @stagesCompleteBackground; -} - -// Errors - -.alert > :last-child { - margin-bottom: 0; -} - -// Slug Preview Field - -.slug-preview { - font-size: 14px; - line-height: 1.5; - margin-top: 5px; - margin-left: 10px; -} - -.slug-preview-value { - background-color: #faedcf; - margin-right: 3px; -} - -// Upload File - -.resource-upload-field { - position: relative; - overflow: hidden; - display: inline-block; - vertical-align: bottom; -} - -.resource-upload-field label { - z-index: 0; -} - -.resource-upload-field input { - .opacity(0); - position: absolute; - top: 0; - right: 0; - z-index: 1; - margin: 0; - border: solid transparent; - border-width: 100px 0 0 200px; - cursor: pointer; - direction: ltr; - -moz-transform: translate(-300px, 0) scale(4); -} - -.resource-upload-field.loading { - display: inline-block; - background: url("@{imagePath}/loading-spinner.gif") no-repeat center right; - padding-right: 5px; -} - -// Select2 - -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - font-size: 14px; -} - -.select2-container-multi .select2-choices .select2-search-field input { - height: 29px; -} - -.select2-container .select2-choice input, -.select2-container-multi .select2-choices .select2-search-field:first-child input { - // Only apply if there are no other tags (ie. is the first child) - padding-left: 10px; -} - -.select2-container { - margin-top: 1px; -} - -.select2-container-multi { - margin-top: 0; -} - -.select2-container-multi .select2-choices .select2-search-choice { - padding: 5px 8px 5px 22px; -} - -.select2-container-multi.select2-container .select2-choices { - padding-top: 3px; - padding-bottom: 3px; -} - -.select2-search-choice-close, -.select2-container-multi .select2-search-choice-close { - top: 6px; - left: 5px; -} - -.select2-container-multi .select2-choices { - .border-radius(3px); - .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); - @transition: border linear .2s, box-shadow linear .2s; - .transition(@transition); - background-color: @inputBackground; - border: 1px solid @inputBorder; -} - -.select2-container-active .select2-choices, -.select2-container-multi.select2-container-active .select2-choices { - border-color: rgba(82,168,236,.8); - outline: 0; - outline: thin dotted \9; /* IE6-9 */ - .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)"); -} - -.select2-container-multi .select2-drop { - margin-top: -2px; -} - -.select2-container .select2-results li { - line-height: 18px; - padding-top: 4px; - padding-bottom: 4px; -} - -.control-full .select2-container { - // Important is bad but select2 incorrectly calculates the width and sets it on the element. - // Commenting out, as I cannot reproduce this problem (SS) - //width: 520px !important; - max-width:100%; -} - -.control-group.error .select2-container { - input:focus, - select:focus, - textarea:focus { - .box-shadow(none); - } -} - -.js .image-upload { - #field-image-url { - padding-right: 90px; - } - #field-image-upload { - cursor: pointer; - position: absolute; - z-index: 1; - .opacity(0); - } - .controls { - position: relative; - } - .btn { - position: relative; - top: 0; - margin-right: 10px; - &.hover { - color: @grayDark; - text-decoration: none; - background-position: 0 -15px; - .transition(background-position .1s linear); - } - } - .btn-remove-url { - position: absolute; - margin-right: 0; - top: 4px; - right: 5px; - padding: 0 12px; - .border-radius(100px); - .icon-remove { - margin-right: 0; - } - } -} -.add-member-form .control-label { - width: 100%; - text-align: left; -} - -.add-member-form .controls { - margin-left: auto; -} - -.add-member-or { - float: left; - margin-top: 75px; - width: 7%; - text-align: center; - text-transform: uppercase; - color: @grayLight; - font-weight: bold; -} - -.add-member-form .row-fluid .control-group { - float: left; - width: 45%; -} - -.add-member-form .row-fluid { - .select2-container, input { - width: 100% !important; - } -} - -#recaptcha_table { - table-layout: inherit; - line-height: 1; -} diff --git a/ckan/public-bs2/base/less/group.less b/ckan/public-bs2/base/less/group.less deleted file mode 100644 index 2b7393c4a5f..00000000000 --- a/ckan/public-bs2/base/less/group.less +++ /dev/null @@ -1,37 +0,0 @@ -.group .media-vertical .image { - margin: 0 -5px 5px; -} - -// Group List - -// A group item summary plus a list of datasets belonging to the group. - -// TODO: This should really be on the parent. -.group-list:nth-child(odd) { - clear: left; -} - -.group-list .module-heading { - padding-top: 15px; - padding-bottom: 15px; -} - -.group-list .dataset-content { - min-height: 54px; -} - -.group-list .module-heading h3 { - margin-bottom: 2px; -} - -.group-list .module-heading h3 a { - color: @listingHeadingTextColor; -} - -.group-list .module-heading .media-image { - overflow: hidden; - max-height: 60px; - img { - max-width: 85px; - } -} diff --git a/ckan/public-bs2/base/less/homepage.less b/ckan/public-bs2/base/less/homepage.less deleted file mode 100644 index 85a852f70b3..00000000000 --- a/ckan/public-bs2/base/less/homepage.less +++ /dev/null @@ -1,103 +0,0 @@ -.homepage { - - .row { - position: relative; - } - - .module-search { - padding: 5px; - margin: 20px 0 0 0; - color: @mastheadTextColor; - background: @layoutTrimBackgroundColor; - .search-giant { - margin-bottom: 10px; - input { - border-color: darken(@mastheadBackgroundColorEnd, 5); - } - } - .module-content { - .border-radius(3px 3px 0 0); - background-color: @mastheadBackgroundColor; - border-bottom: none; - .heading { - margin-top: 0; - margin-bottom: 7px; - font-size: 24px; - line-height: 40px; - } - } - .tags { - .clearfix(); - padding: 5px 10px 10px 10px; - background-color: darken(@mastheadBackgroundColor, 10%); - .border-radius(0 0 3px 3px); - h3, - .tag { - display: block; - float: left; - margin: 5px 10px 0 0; - } - h3 { - font-size: @baseFontSize; - line-height: @baseLineHeight; - padding: 2px 8px; - } - } - } - - .group-list { - margin: 0; - } - - .box .inner { - padding: @gutterY @gutterX; - } - - .stats { - h3 { - margin: 0 0 10px 0; - } - ul { - .unstyled; - .clearfix; - li { - float: left; - width: 25%; - font-weight: 300; - a { - display: block; - b { - display: block; - font-size: @fontSizeLarge*2; - line-height: 1.5; - } - &:hover { - text-decoration: none; - } - } - } - } - } - - - &.layout-2 .stats { - margin-top: @gutterY; - } - -} - -@media (min-width: 768px) { - .homepage [role=main] { - padding: 20px 0; - } - .homepage.layout-1 .row1 .col2 { - position: absolute; - bottom: 0; - right: 0; - .module-search { - bottom: 0; - left: 0; - right: 0; - } - } -} diff --git a/ckan/public-bs2/base/less/icons.less b/ckan/public-bs2/base/less/icons.less deleted file mode 100644 index 1d4a02717fc..00000000000 --- a/ckan/public-bs2/base/less/icons.less +++ /dev/null @@ -1,206 +0,0 @@ -@smallX: 16px; -@smallY: 16px; -@smallOffsetX: -@smallX; -@smallOffsetY: 0; -@mediumX: 17px; -@mediumY: 17px; -@mediumOffsetX: -@mediumX; -@mediumOffsetY: -@smallY; -@largeX: 20px; -@largeY: 20px; -@largeOffsetX: -@largeX; -@largeOffsetY: -@smallY - @mediumY; -@hugeX: 25px; -@hugeY: 25px; -@hugeOffsetX: -@hugeX; -@hugeOffsetY: -@smallY - @mediumY - @largeY; -@formatMediumX: 32px; -@formatMediumY: 35px; -@formatMediumOffsetX: -@formatMediumX; -@formatMediumOffsetY: -62px; - -.ckan-icon { - .ie7-restore-right-whitespace; - display: inline-block; - vertical-align: text-bottom; - position: relative; - top: 2px; - width: 16px; - height: 16px; - background-image: url("@{imagePath}/sprite-ckan-icons.png"); - background-repeat: no-repeat; - background-position: 16px 16px; -} - -.ckan-icon-background-position(@offset, @size) { - @w: "@{size}X"; - @h: "@{size}Y"; - @x: "@{size}OffsetX"; - @y: "@{size}OffsetY"; - width: @@w; - height: @@h; - background-position: (@@x * @offset) @@y; -} - -// SMALL - -.ckan-icon-fb { .ckan-icon-background-position(0, "small") } -.ckan-icon-gplus { .ckan-icon-background-position(1, "small") } -.ckan-icon-twitter { .ckan-icon-background-position(2, "small") } -.ckan-icon-email { .ckan-icon-background-position(3, "small") } -.ckan-icon-share { .ckan-icon-background-position(4, "small") } -.ckan-icon-feed { .ckan-icon-background-position(5, "small") } -.ckan-icon-calendar { .ckan-icon-background-position(6, "small") } -.ckan-icon-file { .ckan-icon-background-position(7, "small") } -.ckan-icon-lock { .ckan-icon-background-position(8, "small") } -.ckan-icon-link-file { .ckan-icon-background-position(9, "small") } -.ckan-icon-link-plugin { .ckan-icon-background-position(10, "small") } -.ckan-icon-upload-file { .ckan-icon-background-position(11, "small") } -.ckan-icon-callout { .ckan-icon-background-position(12, "small") } - -// MEDIUM - -.ckan-icon-circle-cross { .ckan-icon-background-position(0, "medium") } -.ckan-icon-circle-add { .ckan-icon-background-position(1, "medium") } -.ckan-icon-flame { .ckan-icon-background-position(2, "medium") } -.ckan-icon-search { .ckan-icon-background-position(3, "medium") } - -// LARGE - -.ckan-icon-large-lock{ .ckan-icon-background-position(0, "large") } -.ckan-icon-photo { .ckan-icon-background-position(1, "large") } -.ckan-icon-add { .ckan-icon-background-position(2, "large") } -.ckan-icon-home { .ckan-icon-background-position(3, "large") } -.ckan-icon-rewind { .ckan-icon-background-position(4, "large") } -.ckan-icon-tools { .ckan-icon-background-position(5, "large") } -.ckan-icon-flag { .ckan-icon-background-position(6, "large") } -.ckan-icon-clipboard { .ckan-icon-background-position(7, "large") } -.ckan-icon-share { .ckan-icon-background-position(8, "large") } -.ckan-icon-info { .ckan-icon-background-position(9, "large") } -.ckan-icon-download { .ckan-icon-background-position(10, "large") } -.ckan-icon-star { .ckan-icon-background-position(11, "large") } -.ckan-icon-info-flat { .ckan-icon-background-position(12, "large") } -.ckan-icon-tag { .ckan-icon-background-position(13, "large") } -.ckan-icon-plus { .ckan-icon-background-position(14, "large"); width: 16px; } -.ckan-icon-head { .ckan-icon-background-position(15, "large") } -.ckan-icon-arrow-e { .ckan-icon-background-position(16, "large"); width: 16px; } - -.ckan-icon-bookmark { .ckan-icon-background-position(0, "huge"); } - -// RESOURCE FORMAT ICONS - -.format-label { - .ckan-icon; - - text-indent: -900em; - background: url("@{imagePath}/sprite-resource-icons.png") no-repeat 0 0; -} - -.format-label { - .ckan-icon-background-position(0, "formatMedium"); -} - -.format-label[data-format=rdf], -.format-label[data-format*=rdf] { - .ckan-icon-background-position(1, "formatMedium"); -} - -.format-label[data-format=pdf], -.format-label[data-format*=pdf] { - .ckan-icon-background-position(2, "formatMedium"); -} - -.format-label[data-format=api], -.format-label[data-format*=api] { - .ckan-icon-background-position(3, "formatMedium"); -} - -.format-label[data-format=zip], -.format-label[data-format*=zip] { - .ckan-icon-background-position(4, "formatMedium"); -} - -.format-label[data-format=xls], -.format-label[data-format*=xls] { - .ckan-icon-background-position(5, "formatMedium"); -} - -.format-label[data-format=csv], -.format-label[data-format*=csv] { - .ckan-icon-background-position(6, "formatMedium"); -} - -.format-label[data-format=txt], -.format-label[data-format*=txt] { - .ckan-icon-background-position(7, "formatMedium"); -} - -.format-label[data-format=xml], -.format-label[data-format*=xml] { - .ckan-icon-background-position(8, "formatMedium"); -} - -.format-label[data-format=json], -.format-label[data-format*=json] { - .ckan-icon-background-position(9, "formatMedium"); -} - -.format-label[data-format=html], -.format-label[data-format*=html] { - .ckan-icon-background-position(10, "formatMedium"); -} - -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - text-align: right; - font-size: 14px; - line-height: 1; - width: 14px; -} - -.btn, -.nav, -.module-heading, -.dropdown { - [class^="icon-"], - [class*=" icon-"] { - margin-right: 4px; - } -} - -.info-block { - [class^="icon-"], - [class*=" icon-"] { - float: left; - font-size: 28px; - width: 28px; - margin-right: 5px; - margin-top: 2px; - } -} - -.breadcrumb .home .icon-home { - font-size: 24px; - width: 24px; - vertical-align: -1px; -} - -.info-block-small { - [class^="icon-"], - [class*=" icon-"] { - font-size: 14px; - width: 14px; - margin-top: 1px; - } -} - -.nav-tabs, -.module-heading, -.btn { - .fa { - &:last-child { - margin-right: 3px; - } - } -} diff --git a/ckan/public-bs2/base/less/iehacks.less b/ckan/public-bs2/base/less/iehacks.less deleted file mode 100644 index 116f3efd6bd..00000000000 --- a/ckan/public-bs2/base/less/iehacks.less +++ /dev/null @@ -1,245 +0,0 @@ -// Generic Internet Explorer -.ie { - - .lang-dropdown { - position: relative; - top: -20px; - } - - .module-popup { - border-bottom: none; - } - - .banner { - top: 0; - right: 0; - width: auto; - } - - .group-listing { - margin-left: -24px; // Include border around items. - } - - .toolbar .breadcrumb { - filter: none; // Remove filter set by the gradient mixin. - li { - float: left; // Fixes inline block display issues. - &:after { - margin: 0 0.2em; - } - } - } - -} - -// Internet Explorer 9 -.ie9 { - .control-large input { - height: 56px; // Fixes cropped text in IE9 - } -} - -// Internet Explorer 8 -.ie8 { - .account-masthead { - a.image, - .username { - white-space: nowrap; - } - } -} - -// Internet Explorer 7, 8 & 9 -.ie9, -.ie8, -.ie7 { - .homepage .media.module-heading .media-image img { - width: 85px !important; - } -} - -// Internet Explorer 7 & 8 -.ie8, -.ie7 { - .masthead .nav-collapse { - float:right; - } - [role=main], .main { - padding-top: 10px; - background: @layoutBackgroundColor url("@{bgPath}"); - } - // Homepage - .hero { - background: url("@{imagePath}/background-tile.png"); - .hero-primary.module-popup .box { - padding-bottom: 20px !important; - margin-bottom: 0 !important; - } - } - // Footer - .lang-dropdown { - position: relative !important; - top: -90px !important; - } -} - -// Internet Explorer 7 -.ie7 { - - // Generic fixes - .alert { - position: relative; - .close { - position: absolute; - top: 6px !important; - right: @gutterSmallY; - } - } - .media-item { - width: 30%; - } - .tags { - .tag-list { - .clearfix; - li { - display: block; - float: left; - } - } - h3 { - float: left; - } - .tag { - display: block; - } - } - - // Form based fixes - .search-giant input { - width: 95%; - } - .control-full { - input, - select, - textarea { - width: 95%; - } - &.control-large .controls input { - padding-bottom: 20px; - } - } - .controls { - position: relative; - .info-block, - .info-inline { - position: absolute; - top: 0; - right: 0; - } - } - .form-horizontal .controls { - margin-left: 0; - } - .control-custom .checkbox { - .ie7-inline-block; - } - .stages { - overflow: hidden; - background-color: @stagesBackground; - li { - height: 30px; - width: 27.5%; - button, - span { - display: block; - height: 30px; - padding-left: 20px; - } - button { - height: 50px; - } - .highlight { - width: auto; - } - } - } - - // Header - .account-masthead { - .account a i { - line-height: 31px; - } - } - .masthead { - position: relative; - z-index: 1; - .logo img, - nav { - .ie7-inline-block; - } - .header-image { - display: block; - } - .account .dropdown-menu { - z-index: 10000; - } - } - - // Navs - .module-narrow .nav-item.image { - .clearfix; - } - .nav-facet .nav-item.active a { - content: 'x'; - } - - // Toolbar - .toolbar .breadcrumb li { - padding-right: 10px; - margin-right: 5px; - background: transparent url("@{imagePath}/breadcrumb-slash-ie7.png") 100% 50% no-repeat; - &.active { - background-image: none; - } - } - - // Modules - .module-heading { - .clearfix; - position: relative; - .media-content { - position: relative; - } - .media-image img { - float: left; - } - } - .group-listing { - position: relative; - zoom: 1; - } - - // Resource Item listing on dataset page - .resource-item { - position: static; - padding-bottom: 1px; - .heading { - position: relative; - } - .format-label { - left: -48px; - } - .btn-group { - position: relative; - float: right; - top: -35px; - right: 0; - } - } - - // Adds proper BG color for IE7 - .media-overlay .media-heading { - background-color: #000; - } - -} diff --git a/ckan/public-bs2/base/less/layout.less b/ckan/public-bs2/base/less/layout.less deleted file mode 100644 index 88d7a47ac88..00000000000 --- a/ckan/public-bs2/base/less/layout.less +++ /dev/null @@ -1,251 +0,0 @@ -.wrapper { - .clearfix(); - .box(); - position: relative; - background-color:#fff; - margin-bottom: 20px; - margin-left:0; -} -@media (min-width: 768px) { - .wrapper { - background-image:url("@{imagePath}/nav.png"); - background-repeat:repeat-y; - background-position:-54px 0px; - } -} -@media (min-width: 980px) { - .wrapper { - background-position:0px 0px; - } -} - -.wrapper.no-nav { - background-image: none; -} - -[role=main], .main { - position: relative; - padding-bottom: 20px; -} -@media (min-width: 768px) { - [role=main], .main { - padding-top: 10px; - background: @layoutBackgroundColor url("@{bgPath}"); - } -} - -[role=main] { - min-height: 350px; -} - -.main:after, -[role=main]:after { - bottom: 0; - border-top-width: 1px; -} - -[role=main] .primary { - float: right; - margin-left: 0; // Remove grid margin. -} - -[role=main] .secondary { - margin-left: 0; // Remove grid margin. -} - -/* Filters modal */ -.no-text .text { - display:none; -} -.js body.filters-modal { - overflow:hidden; -} -.show-filters.btn, -.hide-filters { - display:none; -} -@media (max-width: 768px) { - .wrapper { - margin: 0 -20px; - border-width: 0; - .box-shadow(0); - .border-radius(0); - } - .js [role=main] .secondary .filters { - display:none; - position:fixed; - overflow:auto; - top:0; - left:0; - right:0; - bottom:0; - z-index:1; - padding:10px; - background-color:rgb(0,0,0); - background-color:rgba(0,0,0,0.50); - } - .js body.filters-modal .secondary .filters { - display:block; - } - .js [role=main] .secondary .filters > div { - background-color:#fff; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - overflow:hidden; - } - .js [role=main] .secondary .filters > div .module-footer { - display:none; - } - .js body.filters-modal .secondary .filters .hide-filters { - display:inline-block; - position:absolute; - top:14px; - right:17px; - opacity:0.6; - i { - font-size:18px; - } - } - .js .show-filters.btn { - display:inline-block; - } -} - -.primary > :last-child, -.secondary > :last-child { - margin-bottom: 0; -} - -.primary { - .primary { - float: left; - width: 467px; - margin-left: 0; - margin-bottom: 20px; - h1, h2, h3, h4 { - &:first-child { - margin-top: 0; - } - } - } - .tertiary { - float: left; - width: 180px; - margin-left: 18px; - margin-bottom: 20px; - } -} - -@media (min-width: 768px) { - .hero { - background: url("@{imagePath}/background-tile.png"); - } -} - -.hero:after { - // Need to manually declare this here. If you pass rgba() through to - // #gradient it breaks the filter property in IE7. - .rgba-vertial-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0)); - background-color: @moduleHeadingBackgroundColor; - border-bottom: 1px solid darken(@moduleHeadingBorderColor, 5%); - .border-radius(3px 3px 0 0); - .box-shadow(inset 0 -4px 0 rgba(0, 0, 0, 0.03)); - .back:hover { - text-decoration: none; - span { - text-decoration: underline; - } - } -} - -.context-info { - .module-content { - padding: 15px; - } - .image { - margin-bottom: 10px; - img, - a { - display: block; - .border-radius(4px); - } - } - p { - overflow: auto; - } - code { - display: block; - font-weight: normal; - padding: 0; - margin: 0; - overflow: auto; - } - h1.heading { - margin: 0 0 5px 0; - font-size: 18px; - line-height: 1.3; - .break-word(); - } - .info { - margin-top: 15px; - padding-top: 10px; - border-top: 1px dotted #DDD; - word-break: break-word; - dl dd { - margin-top: 3px; - margin-left: 0; - } - } - .nums { - .clearfix; - margin-top: 15px; - padding-top: 10px; - padding-bottom: 0; - border-top: 1px dotted #DDD; - dl { - float: left; - width: 50%; - margin: 5px 0 0 0; - color: @layoutTextColor; - dt { - display: block; - font-size: 13px; - font-weight: 300; - } - dd { - display: block; - font-size: 30px; - font-weight: 700; - line-height: 36px; - margin-left: 0; - .smallest { - font-size: 13px; - } - .smaller { - font-size: 16px; - } - .small { - font-size: 21px; - } - } - } - } - .follow_button { - margin-top: 15px; - } - &.editing { - .module-heading { - - } - .module-content { - margin-top: 0; - } - } -} - -.flash-messages { - .alert { - .box-shadow(0 0 0 1px white); - } -} diff --git a/ckan/public-bs2/base/less/main.less b/ckan/public-bs2/base/less/main.less deleted file mode 100644 index 3616d4ee915..00000000000 --- a/ckan/public-bs2/base/less/main.less +++ /dev/null @@ -1,60 +0,0 @@ - -// Bootstrap imports - -// CSS Reset -@import "../vendor/bootstrap/less/reset.less"; - -// Core variables and mixins -@import "../vendor/bootstrap/less/variables.less"; // Modify this for custom colors, font-sizes, etc -@import "../vendor/bootstrap/less/mixins.less"; - -// Grid system and page structure -@import "../vendor/bootstrap/less/scaffolding.less"; -@import "../vendor/bootstrap/less/grid.less"; -@import "../vendor/bootstrap/less/layouts.less"; - -// Base CSS -@import "../vendor/bootstrap/less/type.less"; -@import "../vendor/bootstrap/less/code.less"; -@import "../vendor/bootstrap/less/forms.less"; -@import "../vendor/bootstrap/less/tables.less"; - -// Components: common -// @import "../vendor/bootstrap/less/sprites.less"; // Replaced by font-awesome.less -@import "../vendor/bootstrap/less/dropdowns.less"; -@import "../vendor/bootstrap/less/wells.less"; -@import "../vendor/bootstrap/less/component-animations.less"; -@import "../vendor/bootstrap/less/close.less"; - -// Components: Buttons & Alerts -@import "../vendor/bootstrap/less/buttons.less"; -@import "../vendor/bootstrap/less/button-groups.less"; -@import "../vendor/bootstrap/less/alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less - -// Components: Nav -@import "../vendor/bootstrap/less/navs.less"; -@import "../vendor/bootstrap/less/navbar.less"; -@import "../vendor/bootstrap/less/breadcrumbs.less"; -@import "../vendor/bootstrap/less/pagination.less"; -@import "../vendor/bootstrap/less/pager.less"; - -// Components: Popovers -@import "../vendor/bootstrap/less/modals.less"; -@import "../vendor/bootstrap/less/tooltip.less"; - -// Components: Misc -@import "../vendor/bootstrap/less/thumbnails.less"; -@import "../vendor/bootstrap/less/labels-badges.less"; -@import "../vendor/bootstrap/less/progress-bars.less"; -@import "../vendor/bootstrap/less/accordion.less"; -@import "../vendor/bootstrap/less/carousel.less"; -@import "../vendor/bootstrap/less/hero-unit.less"; -@import "../vendor/bootstrap/less/popovers.less"; - -// Utility classes -@import "../vendor/bootstrap/less/utilities.less"; // Has to be last to override when necessary - -@import "../vendor/bootstrap/less/responsive.less"; - -// CKAN -@import "ckan.less"; diff --git a/ckan/public-bs2/base/less/masthead.less b/ckan/public-bs2/base/less/masthead.less deleted file mode 100644 index ebb13672783..00000000000 --- a/ckan/public-bs2/base/less/masthead.less +++ /dev/null @@ -1,225 +0,0 @@ -@notificationsBg: #C9403A; - -.account-masthead { - .clearfix(); - min-height: 30px; - color: @mastheadTextColor; - background: darken(@mastheadBackgroundColor, 10%) url("@{bgPath}"); - .account { - float: right; - ul { - .clearfix(); - li { - display: block; - float: left; - border-left: 1px solid darken(@mastheadBackgroundColor, 15%); - a { - display: block; - color: mix(@mastheadBackgroundColor, @mastheadLinkColor, 25%); - font-size: 13px; - font-weight: bold; - padding: 0 10px; - line-height: 31px; - span.username, - span.text { - margin: 0 2px 0 4px; - } - - span.text { - position: absolute; - top: -9999px; - left: -9999px; - } - - &:hover { - color: mix(@mastheadBackgroundColor, @mastheadLinkColor, 15%); - background-color: darken(@mastheadBackgroundColor, 15%); - text-decoration: none; - } - &.sub { - font-weight: 300; - } - .btn { - vertical-align: 1px; - margin-left: 3px; - } - } - } - } - .notifications { - a { - span.badge { - font-size: 12px; - margin-left: 3px; - padding: 1px 6px; - background-color: darken(@mastheadBackgroundColor, 15%); - .border-radius(4px); - text-shadow:none; - color: mix(@mastheadBackgroundColor, @mastheadLinkColor, 25%); - } - &:hover span { - color: @mastheadLinkColor; - background-color: darken(@mastheadBackgroundColor, 20%); - } - } - &.notifications-important a { - span.badge { - color: @mastheadLinkColor; - background-color: @notificationsBg; - } - } - } - &.authed { - .image { - padding: 0 6px; - img { - vertical-align: -6px; - .border-radius(4px); - } - } - } - } -} - -.masthead { - .clearfix(); - min-height: 55px; - color: @mastheadTextColor; - background: @mastheadBackgroundColor url("@{bgPath}"); - - .container { - position: relative; - } - - a { - color: @mastheadLinkColor; - } - - hgroup { - h1, - h2 { - float: left; - font-size: 30px; - line-height: 1.5; - } - h1 { - font-weight: 900; - letter-spacing: -1px; - margin: 3px 0; - } - h2 { - position: absolute; - bottom: -3px; - left: 0; - margin: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - white-space: nowrap; - } - } - .logo{ - display: inline-block; - img{ - max-height: @logoMaxHeight; - } - } - .nav-collapse { - padding-top:10px; - } - - .section { - float: left; - } - - input[type="text"] { - border-color: darken(@mastheadBackgroundColor, 5); - } - - .navigation { - margin-right: 20px; - .nav-pills { - margin-bottom: 0; - li { - a:hover, - &.active a { - background-color: darken(@mastheadBackgroundColor, 10%); - } - } - } - } - .nav > li > a, - .nav > li > a:focus, - .nav > li > a:hover, - .nav > .active > a, - .nav > .active > a:hover, - .nav > .active > a:focus { - color: #fff; - text-shadow: none; - } - - .site-search { - margin: 2px 8px 2px 0; - input { - width: 200px; - padding: 4px 10px; - } - } - - .btn-navbar, - .btn-navbar:hover, - .btn-navbar:focus, - .btn-navbar:active, - .btn-navbar.active, - .btn-navbar.disabled, - .btn-navbar[disabled] { - background-color: darken(@mastheadBackgroundColor, 10%); - background-image: none; - border:none; - .box-shadow(none); - text-shadow: none; - margin-top:15px; - .icon-bar { - margin-right:0; - } - } - - .debug { - position: absolute; - top: 37px; - left: 10px; - color: rgba(255, 255, 255, 0.5); - } -} - -@media (min-width: 980px) { - .masthead .nav-collapse { - float:right; - } -} - -@media (max-width: 767px) { - .account-masthead { - margin-left:-20px; - margin-right:-20px; - padding-left:20px; - padding-right:20px; - } - .masthead .section { - float: none; - .nav-collapse { - margin-bottom: @gutterX; - } - } -} -@media (max-width: 979px) { - .masthead { - .container { - padding-left:20px; - padding-right:20px; - } - .site-search { - display:none; - } - } -} diff --git a/ckan/public-bs2/base/less/media.less b/ckan/public-bs2/base/less/media.less deleted file mode 100644 index c4b9abbefb0..00000000000 --- a/ckan/public-bs2/base/less/media.less +++ /dev/null @@ -1,153 +0,0 @@ -// Banner -.banner { - .transform(rotate(45deg)); - .transform-origin(center, center); - position: absolute; - top: 15px; - right: -35px; - width: 80px; - color: @bannerTextColor; - background-color: @bannerBackgroundColor; - padding: 1px 20px; - font-size: 11px; - text-align: center; - text-transform: uppercase; -} - - -.media-grid { - .unstyled; - .clearfix; - margin: 0 -25px; - padding-bottom: 15px; - background: lighten(@layoutBackgroundColor, 5%) url("@{bgPath}"); - border: 1px solid @moduleHeadingBorderColor; - border-width: 1px 0; -} -@media (min-width: 768px) { - .media-grid { - margin-left:-27px; - } - .module-content { - .wide .media-grid { - margin-left:-25px; - } - } -} - -.media-item { - position: relative; - float: left; - width: 189px; - padding: 15px; - margin: 15px 0 0 15px; - background-color: white; - .border-radius(3px); - span.count { - color: #999; - } - .media-image { - margin-bottom: 5px; - } - .media-edit { - opacity: 0; - position: absolute; - right: 15px; - bottom: 15px; - .transition(opacity 0.2s ease-in); - } - &:hover { - z-index: 1; - .media-edit { - opacity: 1; - } - } -} - -.media-view { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid @moduleHeadingBorderColor; - overflow: hidden; - .transition(all 0.2s ease-in); - .border-radius(3px); - &:hover, - &.hovered { - border-color: @mastheadBackgroundColor; - .box-shadow(0 0 0 4px rgba(0, 0, 0, 0.1)); - .banner { - background-color: @bannerBackgroundColor; - } - } - span { - display: none; - } - .banner { - display: block; - background-color: darken(@moduleHeadingBorderColor, 15%); - .transition(background-color 0.2s ease-in); - } -} - -.media-image { - .border-radius(4px); -} - -.media-heading { - font-size: 18px; - line-height: 1.3; - margin: 5px 0; - .break-word(); -} - -// Overlay - -.media-overlay { - position: relative; - min-height: 35px; // Min height for the heading. -} - -.media-overlay .media-heading { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 12px 10px; - margin: 0; - background-color: #000; - background-color: rgba(0, 0, 0, 0.8); - font-size: 13px; - color: #fff; - z-index: 1; - .border-radius(0 0 3px 3px); -} - -.media-overlay .media-image { - float: none; - display: block; - margin-right: 0; -} - -.media-item.is-expander { - .truncator-link { - .transition(opacity 0.2s ease-in); - position: absolute; - z-index: 10; - left: 15px; - bottom: 15px; - opacity: 0; - } - &:hover { - padding-bottom: 35px; - .truncator-link { - opacity: 1; - } - } -} - -.wide .media-item { - width: 186px; -} diff --git a/ckan/public-bs2/base/less/mixins.less b/ckan/public-bs2/base/less/mixins.less deleted file mode 100644 index 43bfb2c408c..00000000000 --- a/ckan/public-bs2/base/less/mixins.less +++ /dev/null @@ -1,153 +0,0 @@ -.break-word { - -ms-word-break: break-all; - word-break: break-all; - - /* Non standard for webkit */ - word-break: break-word; - - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; -} - -.transform (@func) { - -webkit-transform: @arguments; - -moz-transform: @arguments; - -ms-transform: @arguments; - -o-transform: @arguments; - transform: @arguments; -} - -.transform-origin (@x, @y) { - -webkit-transform-origin: @arguments; - -moz-transform-origin: @arguments; - -ms-transform-origin: @arguments; - -o-transform-origin: @arguments; - transform-origin: @arguments; -} - -// Allows use of rgba() in gradients. This will not provide a fallback for IE. -.rgba-vertial-gradient(@startColor:#555, @endColor:#333) { - background-color: mix(@startColor, @endColor, 60%); - background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+ - background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10 - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+ - background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+ - background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 - background-image: linear-gradient(top, @startColor, @endColor); // The standard - background-repeat: repeat-x; -} - -.rgba-vertical-gradient-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { - background-color: mix(@midColor, @endColor, 80%); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor)); - background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor); - background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor); - background-image: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor); - background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor); - background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor); - background-repeat: no-repeat; -} - -.tag { - display: inline-block; - margin-bottom: 4px; - color: @tabTextColor; - background-color: @tagBackgroundColor; - padding: 1px 10px; - border: 1px solid darken(@tagBackgroundColor, 10%); - .border-radius(100px); - .box-shadow(inset 0 1px 0 lighten(@tagBackgroundColor, 10%)); -} - -a.tag:hover { - text-decoration: none; - color: #fff; - background-color: @btnPrimaryBackground; - border: 1px solid darken(@btnPrimaryBackground, 10%); - .box-shadow(inset 0 1px 0 lighten(@btnPrimaryBackground, 10%)); -} - -.pill { - display: inline-block; - background-color: @pillBackgroundColor; - color: @pillTextColor; - padding: 2px 10px 1px 10px; - margin-right: 5px; - font-weight: normal; - .border-radius(100px); - a { - color: @pillTextColor; - &.remove { - font-size: 11px; - } - } -} - -.unstyled { - margin: 0; - list-style: none; -} - -.simple-item { - font-size: 12px; - line-height: 14 / 12em; - padding: 7px @gutterX; - border-bottom: 1px dotted @genericBorderColor; - &:last-of-type { - border-bottom: 0; - } -} - -.simple-list { - .clearfix; - .unstyled; - - & > li { - .simple-item; - } - - .ckan-icon { - position: relative; - top: 0px; - } -} - -.module-narrow .simple-list > li { - padding-left: @gutterSmallX; - padding-right: @gutterSmallX; - position: relative; -} - -.listing li { - text-align: right; - //overflow: hidden; - //white-space: nowrap; - //text-overflow: ellipsis; - margin-bottom: 5px; -} - -.listing .key, -.listing .value { -} - -.listing .key { - clear: right; - font-weight: bold; -} - -.js .tab-content { - display: none; -} - -.js .tab-content.active { - display: block; -} - -.box { - background-color: #FFF; - border: 1px solid @layoutTrimBorderColor; - .border-radius(4px); - .box-shadow(0 0 0 4px rgba(0, 0, 0, 0.05)); -} diff --git a/ckan/public-bs2/base/less/module.less b/ckan/public-bs2/base/less/module.less deleted file mode 100644 index 46a4b5c8d8e..00000000000 --- a/ckan/public-bs2/base/less/module.less +++ /dev/null @@ -1,229 +0,0 @@ -.module { - margin: 20px 0; -} - -.module-heading { - .clearfix; - margin: 0; - padding: 7px @gutterX; - font-size: 14px; - line-height: 1.3; - background-color: @moduleHeadingBackgroundColor; - border-top: 1px solid @moduleHeadingBorderColor; - border-bottom: 1px solid @moduleHeadingBorderColor; -} - -.module-content { - padding: 0 @gutterX; - margin: 20px 0; -} -@media (min-width: 768px) { - .span9 div.module-content { - padding-left:10px; - } -} - -.module-content:first-child { - margin-top: 0; - padding-top: @gutterY; -} - -.module-content:last-child { - margin-bottom: 0; - padding-bottom: @gutterY; -} - -.module-content > :last-child { - margin-bottom: 0; -} - -.module:first-child .module-heading { - .border-radius(3px 0 0 0); - border-top-width: 0; -} - -.module:last-child { - margin-bottom: 20px; -} - -.module-footer { - padding: 7px @gutterX 7px; - margin: 0; - border-top: 1px dotted @genericBorderColor; -} - -.module .read-more { - font-weight: bold; - color: @layoutBoldColor; -} - -.module-content .pagination { - margin-left: -25px; - margin-right: -25px; - margin-bottom: -20px; -} - -.module .pagination > ul { - .border-radius(0); - .box-shadow(none); - border: 0; -} - -.module .pagination li a { - border-top: 1px solid @moduleHeadingBorderColor;; - border-bottom: 1px solid @moduleHeadingBorderColor;; - padding-top: 7px; - padding-bottom: 7px; -} - -.module .pagination li:first-child a, -.module .pagination li:last-child a { - .border-radius(0); -} - -.module-content-shallow { - padding: 0; - margin-top: 10px; - padding-bottom: 10px; -} - -.module h1 { - margin-bottom: 20px; -} - -// Module Shallow - -.module-shallow .module-content { - padding: 10px; - margin: 0; -} - -.module-shallow .module-tags { - margin-top: 0; - margin-bottom: 0; -} - -.module-shallow .module-content:first-child { - padding-top: 10px; -} - -.module-shallow .module-content:last-child { - padding-bottom: 10px; -} - -// Secondary column specific - -.module-narrow { - .module-heading, - .module-content, - .module-footer { - padding-left: @gutterSmallX; - padding-right: @gutterSmallX; - } -} - -// Module Grid - -.module-grid { - .unstyled; - .media-grid; - // .media-wide; -} - -.module-item { - .media-item; - .makeColumn(6); - padding-top: 10px; - padding-bottom: 10px; - padding-right: 50px; - overflow: hidden; - position: relative; -} - -.module-item.first { - clear: left; -} - -// GROUP - -.group .content img { - margin: 0 -5px 5px; - max-width: initial; -} - -.group .content h3 { - font-size: 14px; - line-height: 1.3; -} - -.group-listing { - margin-left: -20px; // Same as .row -} - -// PREVIEW - -.ckanext-datapreview { - position: relative; - clear: both; - - padding-top: 15px; - margin-top: 0; - - & > iframe { - min-height: 650px; - } - & > img { - max-height: 500px; - max-width: 100%; - overflow: hidden; - } -} - -.package-info { - h4 { - margin-bottom: 10px; - } -} - -.module-resource { - background-color: @layoutTrimBackgroundColor; - border-bottom: 1px solid @genericBorderColor; - margin-top: 0; - margin-bottom: 0; - .border-radius(3px 3px 0 0); - .actions { - position: relative; - float: right; - top: -10px; - right: -15px; - } -} - -.module .module-tags { - padding-bottom: 8px; -} - -.secondary, -.primary { - .module:first-child { - margin-top: 0; - } -} - -.no-nav .module:last-child { - margin-top: 0; -} - -.module-image { - float: left; - width: 50px; - height: 50px; - line-height: 50px; - text-align: center; - margin-right: 15px; - img { - max-width: 50px; - max-height: 50px; - vertical-align: middle; - } -} diff --git a/ckan/public-bs2/base/less/nav.less b/ckan/public-bs2/base/less/nav.less deleted file mode 100644 index 53f06112034..00000000000 --- a/ckan/public-bs2/base/less/nav.less +++ /dev/null @@ -1,167 +0,0 @@ -.nav-simple, -.nav-aside { - .simple-list; // Adds border and padding. - padding-bottom: 0; -} - -.nav-aside { - border-top: 1px dotted #DDD; - border-bottom: 1px dotted #DDD; - margin-bottom: 15px; -} - -.nav-item > a, -.nav-aside li a { - color: @navLinkColor; - font-size: @baseFontSize; - line-height: @baseLineHeight; - margin: -7px -@gutterX; - padding: 7px @gutterX; -} - -.nav-item.active, -.nav-aside li.active { - background-color: @navActiveBackgroundColor; -} - -.nav-item.active > a, -.nav-aside li.active a { - position: relative; - color: @navItemActiveTextColor; - background-color: @navItemActiveBackgroundColor; - &:hover { - color: @navItemActiveTextColor; - background-color: @navItemActiveBackgroundColor; - } -} -@media (min-width: 768px) { - .nav-item.active > a:before, - .nav-aside li.active a:before { - content: ' '; - position: absolute; - top: 0; - right: -6px; - width: 6px; - height: 34px; - background-image: url("@{imagePath}/nav-active.png?1"); - } -} - -.nav-item.active > a span, -.nav-aside li.active a span { - white-space: nowrap; - overflow:hidden; - display:block; -} - -.module-narrow .nav-item > a, -.module-narrow .nav-aside li a { - padding-left: @gutterSmallX; - padding-right: @gutterSmallX; - position: relative; -} - -.module-narrow .nav-item.image, -.module-narrow .nav-aside li.image { - position: relative; -} - -.module-narrow .nav-item.image > a, -.module-narrow .nav-aside li.image a { - padding-left: @gutterSmallX + 27; - padding-right: @gutterSmallX + 27; -} - -.module-narrow .nav-item.image > img, -.module-narrow .nav-aside li.image img { - position: absolute; - top: 50%; - left: @gutterSmallX; - width: 20px; - height: 20px; - margin-top: -10px; - z-index: 2; -} - -// FACET NAVIGATION - -.nav-facet .nav-item > a:hover:after, -.nav-facet .nav-item.active > a:after { - .ckan-icon; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; -} - -.nav-facet .nav-item > a:hover:after { - .ckan-icon-circle-add; -} - -.nav-facet .nav-item.active > a:after { - .ckan-icon-circle-cross; - right: 3px; -} - -.user-list { - .unstyled; - li { - margin: 0 0 10px 0; - } - .gravatar { - vertical-align: -4px; - margin-right: 3px; - .border-radius(100px); - } -} - -.nav-facet-tertiary { - margin: 10px 0; - .module-heading { - margin-bottom: 5px; - padding: 8px 12px; - border-bottom-width: 0; - .border-radius(5px); - i { - display: none; - } - } - .module-footer { - padding: 8px 12px; - border-top-width: 0; - a { - font-weight: normal; - color: #8C8C8C; - } - } - .nav { - margin-bottom: 0; - } - .module-content.empty { - padding: 8px 12px; - margin-top: 0; - } - .nav li.active { - position: relative; - } - .nav li.active > a:hover:after, - .nav li.active > a:after { - .ckan-icon; - .ckan-icon-circle-cross; - content: ""; - position: absolute; - top: 50%; - right: 5px; - margin-top: -8px; - } -} - -.nav-simple > .nav-btn { - padding-left: 0; - padding-right: 0; - text-align: center; - .btn { - display: inline-block; - } -} diff --git a/ckan/public-bs2/base/less/profile.less b/ckan/public-bs2/base/less/profile.less deleted file mode 100644 index ac613664b89..00000000000 --- a/ckan/public-bs2/base/less/profile.less +++ /dev/null @@ -1,6 +0,0 @@ -.profile { - .empty, - .dataset-list { - margin-bottom: 20px; - } -} diff --git a/ckan/public-bs2/base/less/prose.less b/ckan/public-bs2/base/less/prose.less deleted file mode 100644 index 8c870cc5018..00000000000 --- a/ckan/public-bs2/base/less/prose.less +++ /dev/null @@ -1,96 +0,0 @@ -h1 { - font-size: 28px; -} -h2 { - font-size: 21px; -} -h3 { - font-size: 18px; -} -h4 { - font-size: @baseFontSize; -} - -h1, h2, h3, h4 { - line-height: 1.5; - small { - font-size: @baseFontSize; - } -} - -.prose { - h1, heading-1 - h2, heading-2 { - margin-bottom: 15px; - } - - h3, heading-3 { - margin-bottom: 10px; - } -} - -.table-chunky td, -.table-chunky th { - padding: 12px 15px; - font-size: 12px; -} - -.table-chunky thead th, -.table-chunky thead td { - color: @chunkyTableHeaderTextColor; - background-color: @chunkyTableHeaderBackgroundColor; - padding-top: 10px; - padding-bottom: 10px; -} - -.table-striped { - tbody { - tr:nth-child(odd) td, - tr:nth-child(odd) th { - background-color: transparent; - } - tr:nth-child(even) td, - tr:nth-child(even) th { - background-color: @chunkyTableStripeBackgroundColor; - } - } -} - -// Oh boy. -.table-chunky.table-bordered { - @radius: 2px; - .border-radius(@radius); - // For first th or td in the first row in the first thead or tbody - thead:first-child tr:first-child th:first-child, - tbody:first-child tr:first-child td:first-child { - -webkit-border-top-left-radius: @radius; - -moz-border-radius-topleft: @radius; - border-top-left-radius: @radius; - } - thead:first-child tr:first-child th:last-child, - tbody:first-child tr:first-child td:last-child { - -webkit-border-top-right-radius: @radius; - -moz-border-radius-topright: @radius; - border-top-right-radius: @radius; - } - // For first th or td in the first row in the first thead or tbody - thead:last-child tr:last-child th:first-child, - tbody:last-child tr:last-child td:first-child { - .border-radius(0 0 0 @radius); - -webkit-border-bottom-left-radius: @radius; - -moz-border-radius-bottomleft: @radius; - border-bottom-left-radius: @radius; - } - thead:last-child tr:last-child th:last-child, - tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: @radius; - -moz-border-radius-bottomright: @radius; - border-bottom-right-radius: @radius; - } -} - -.ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} diff --git a/ckan/public-bs2/base/less/resource-view.less b/ckan/public-bs2/base/less/resource-view.less deleted file mode 100644 index 23b59540ef3..00000000000 --- a/ckan/public-bs2/base/less/resource-view.less +++ /dev/null @@ -1,22 +0,0 @@ -.resource-view-filters { - margin-bottom: 1em; - - .resource-view-filter { - margin-bottom: 1.0em; - } - - .resource-view-remove-filter { - cursor: pointer; - color: @errorText; - } - - .resource-view-filter-values .select2-container { - margin-right: 0.3em; - margin-bottom: 0.2em; - width: 24% !important; - - .select2-search-choice-close { - left: auto; - } - } -} diff --git a/ckan/public-bs2/base/less/search.less b/ckan/public-bs2/base/less/search.less deleted file mode 100644 index f7ade63790a..00000000000 --- a/ckan/public-bs2/base/less/search.less +++ /dev/null @@ -1,123 +0,0 @@ -.search-form { - // .clearfix; - margin-bottom: 20px; - padding-bottom: 25px; - border-bottom: 1px dotted @genericBorderColor; - - // Normal search box - .search-input { - position: relative; - margin-bottom: 20px; - input { - .box-sizing(border-box); - margin: 0; - width: 100%; - height: auto; - } - button { - cursor: pointer; - display: block; - position: absolute; - top: 50%; - margin-top: 1px; - right: 10px; - height: 20px; - padding: 0; - border: none; - background: transparent; - span { - display: none; - } - i { - color: @inputBorder; - .transition(color 0.2s ease-in); - } - &:hover i { - color: @inputColor; - } - } - &.search-giant { - input { - font-size: 16px; - padding: 15px; - } - button { - margin-top: -4px; - right: 15px; - height: 30px; - i { - font-size: 28px; - width: 28px; - } - } - } - } - .control-order-by { - label, - select { - display: inline; - } - select { - width: 160px; - margin: 0; - } - } - h2 { - font-size: 24px; - line-height: 1.3; - color: @layoutBoldColor; - margin-bottom: 0; - margin-top:20px; - } - .filter-list { - color: @layoutTextColor; - line-height: 32px; - margin: 10px 0 0 0; - .pill { - line-height: 21px; - } - .extra { - margin-top: 10px; - font-size: 18px; - font-weight: normal; - color: @layoutBoldColor; - } - } - &.no-bottom-border { - border-bottom-width: 0; - margin-bottom: 0; - } -} - -.tertiary { - .control-order-by { - float: none; - margin: 0; - label { - display: block; - margin-bottom: 5px; - font-weight: normal; - font-size: 12px; - } - select { - display: block; - font-size: 12px; - width: 100%; - } - } - .search-input { - margin-bottom: 10px; - } -} -@media (min-width: 980px) { - .search-form .control-order-by { - float:right; - margin-left:15px; - } - .tertiary { - .search-form .control-order-by { - float: none; - margin: 0; - } - } -} diff --git a/ckan/public-bs2/base/less/tables.less b/ckan/public-bs2/base/less/tables.less deleted file mode 100644 index bc80be194f0..00000000000 --- a/ckan/public-bs2/base/less/tables.less +++ /dev/null @@ -1,70 +0,0 @@ -.table-selected td { - background-color: @formActionsBackground; - .edit { - display: block; - } -} - -.table-bulk-edit { - th input { - top: -5px; - } - .table-actions .btn-group { - float: left; - margin: 0 10px 0 0; - } - .context p { - margin-bottom: 0; - } -} - -.table-header thead th { - background-color: @moduleHeadingBackgroundColor; -} - -.table-edit-hover { - .edit { - display: none; - float: right; - } - tr:hover .edit { - display: block; - } -} - -.js { - .table-toggle-more { - .toggle-more { - display: none; - } - .show-more { - display: inline; - } - .show-less { - display: none; - } - .toggle-seperator { - display: table-row; - td { - height: 11px; - padding: 0; - background-image: url("@{imagePath}/table-seperator.png"); - } - } - } - .table .toggle-show td { - background: none; - text-align: center; - } - .table-toggle-less { - .show-less { - display: inline; - } - .show-more { - display: none; - } - .toggle-seperator { - display: none; - } - } -} diff --git a/ckan/public-bs2/base/less/toolbar.less b/ckan/public-bs2/base/less/toolbar.less deleted file mode 100644 index e8406b80cb2..00000000000 --- a/ckan/public-bs2/base/less/toolbar.less +++ /dev/null @@ -1,145 +0,0 @@ -.toolbar { - .clearfix; - position: relative; - margin-bottom: 10px; - padding: 5px 0; -} - -.page_primary_action { - margin-bottom: 20px; -} - -.toolbar .breadcrumb { - .clearfix; - .box-shadow(none); - position: relative; - float: left; - margin: 0; - padding: 0; - border: none; - background: none; - font-size: 20px; - line-height: 1.3; -} - -.toolbar .breadcrumb li:after { - content: " / "; -} - -.toolbar .breadcrumb li.active:after { - content: ""; -} - -// Needs to be a separate declaration as IE chokes on the last-of-type. -.toolbar .breadcrumb li:last-of-type:after { - content: ""; -} - -.toolbar .home a { - text-decoration: none; -} - -.toolbar .home span { - display: none; -} - -.toolbar .breadcrumb a { - color: @breadcrumbTextColor; -} -@media (max-width: 767px) { - .toolbar .breadcrumb { - color:#fff; - text-shadow:none; - .home { - display:none; - } - a { - color:#fff; - text-shadow:none; - } - } -} - -.toolbar .breadcrumb .active a, -.toolbar .breadcrumb a.active { - font-weight: bold; -} - -.actions { - .unstyled; - position: absolute; - top: 10px; - right: 10px; - z-index: 1; -} - -.actions li { - display: inline-block; - margin-right: 5px; - .ie7-inline-block; -} - -.actions li:last-of-type { - margin-right: 0; -} - -.hide-heading { - display: none; -} - -.page-header { - .clearfix; - border-bottom: 1px solid @moduleHeadingBorderColor; - background-color: @moduleHeadingBackgroundColor; - .border-radius(0 3px 0 0); - .nav-tabs { - float: left; - margin-bottom: -1px; - li.active a, - a:hover { - background-color: @moduleBackgroundColor; - } - } - .content_action { - float: right; - margin-top: -5px; - margin-right: -7px; - } -} - -.no-nav .page-header { - .border-radius(3px 3px 0 0); -} - -.nav-tabs-plain { - padding: 0 @gutterX; - & > .active > a, - & > .active > a:hover { - background-color: @moduleBackgroundColor; - } -} - -@media (min-width: 768px) { - .span9 .page-header { - margin-left:-17px; - } -} -@media (max-width: 768px) { - .page-header .nav-tabs { - margin:5px 10px 10px -5px; - border:none; - } - .page-header .nav-tabs > li { - float: none; - } - .page-header .nav-tabs > li a { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .page-header .nav-tabs > .active > a, - .page-header .nav-tabs > .active > a:hover, - .page-header .nav-tabs > .active > a:focus { - border-bottom-color:#dddddd; - } -} diff --git a/ckan/public-bs2/base/less/variables.less b/ckan/public-bs2/base/less/variables.less deleted file mode 100644 index 8ac44efb25c..00000000000 --- a/ckan/public-bs2/base/less/variables.less +++ /dev/null @@ -1,125 +0,0 @@ -// Base variables -@imagePath: "../../../base/images"; -@spritePath: "@{imagePath}/sprite-ckan-icons.png"; -@bgPath: "@{imagePath}/bg.png"; -@FontAwesomePath: "../../../base/vendor/font-awesome/font"; - -// Layout Variables -@layoutFontFamily: 'Helvetica Neue', Helvetica, Arial, sans-serif; -@layoutTextColor: #444; -@layoutBoldColor: #000; -@layoutLinkColor: #187794; -@layoutBackgroundColor: #eee; -@layoutTrimBackgroundColor: #fff; -@layoutTrimBorderColor: #ccc; -@logoMaxHeight: 55px; - -@navLinkColor: #333; -@navActiveBackgroundColor: #f6f6f6; - -// Module Variables -@moduleBackgroundColor: #fff; -@moduleHeadingBorderColor: #ddd; -@moduleHeadingBackgroundColor: #f6f6f6; -@moduleHeadingActionTextColor: #888; -@moduleExpandedBackgroundColor: rgba(255, 255, 255, 0.9); - -@tabTextColor: #111; -@tagBackgroundColor: #f6f6f6; - -@gutterX: 25px; -@gutterY: 20px; -@gutterSmallX: 15px; -@gutterSmallY: @gutterY; - -@emptyTextColor: #aaa; -@genericBorderColor: #ddd; - -@breadcrumbTextColor: #505050; - -@mastheadTextColor: #fff; -@mastheadLinkColor: @mastheadTextColor; -@mastheadBackgroundColor: #005d7a; -@mastheadBackgroundColorStart: #005d7a; -@mastheadBackgroundColorEnd: #00536b; - -@navItemActiveTextColor: #FFF; -@navItemActiveBackgroundColor: #8CA0A6; - -@pillTextColor: @navItemActiveTextColor; -@pillBackgroundColor: darken(@navItemActiveBackgroundColor, 10%); - -@bannerTextColor: @mastheadTextColor; -@bannerBackgroundColor: @mastheadBackgroundColor; - - -@footerTextColor: #CCDEE3; -@footerLinkColor: @footerTextColor; - -@inputColor: @black; -@inputBackground: @white; -@inputBorder: #ccc; -@inputBorderRadius: 3px; -@disabledCustomInputTextColor: #aaa; -@disabledCustomInputBackground: #f3f3f3; - -@highlightBackground: #fdf7e9; -@highlightHoverBackground: #fdf3d9; - -// Forms - -@errorText: #b55457; -@errorBackground: lighten(#c6898b, 30%); -@errorBorder: #c6898b; - -@formInfoText: #707070; - -@stagesTextColor: #aeaeae; -@stagesBackground: #EDEDED; -@stagesTransparentBackground: rgba(237, 237, 237, 0); // Used for arrows. -@stagesActiveTextColor: #fff; -@stagesActiveBackground: #8cc68a; -@stagesActiveTransparentBackground: rgba(140, 198, 138, 0); -@stagesCompleteTextColor: #eef6ed; -@stagesCompleteBackground: #c5e2c4; -@stagesCompleteTransparentBackground: rgba(197, 226, 196, 0); -@stagesCounterTextColor: #fff; -@stagesCounterBackground: #aeaeae; -@stagesCounterActiveTextColor: #8cc68a; -@stagesCounterActiveBackground: #fff; -@stagesCounterCompleteTextColor: #c5e2c4; -@stagesCounterCompleteBackground: #eef6ed; - -@codeTextColor: #000; - - -// Datasets - -@listingHeadingTextColor: #333; -@resourceFormatBackground: #aaa; - -// Table - -@chunkyTableHeaderTextColor: #fff; -@chunkyTableHeaderBackgroundColor: #aaa; -@chunkyTableStripeBackgroundColor: #f2f2f2; - -// Twitter Bootstrap Overrides -@bodyBackground: @layoutBackgroundColor; -@btnBackground: #ffffff; -@btnBackgroundHighlight: #eaeaea; -@btnPrimaryBackground: #30778d; -@btnPrimaryBackgroundHighlight: #085871; -@baseFontFamily: @layoutFontFamily; -@textColor: @layoutTextColor; -@linkColor: @layoutLinkColor; -@iconSpritePath: "../images/bootstrap-glyphicons-halflings.png"; -@iconWhiteSpritePath: "../images/bootstrap-glyphicons-halflings-white.png"; - -// Activity Stream base colors -@activityColorText: #FFFFFF; -@activityColorBlank: #999999; -@activityColorNew: #69A67A; -@activityColorNeutral: #767DCE; -@activityColorModify: #767DCE; -@activityColorDelete: #B95252; diff --git a/ckan/public-bs2/base/test/index.html b/ckan/public-bs2/base/test/index.html deleted file mode 100644 index 990142a7cf0..00000000000 --- a/ckan/public-bs2/base/test/index.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - Mocha Tests - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ckan/public-bs2/base/test/primer/index.html b/ckan/public-bs2/base/test/primer/index.html deleted file mode 100644 index 0ce2ad5e5bc..00000000000 --- a/ckan/public-bs2/base/test/primer/index.html +++ /dev/null @@ -1,647 +0,0 @@ - - - - - CKAN Primer - - - - - -
-

CKAN CSS Primer

-
-

This is an empty module

-
-
-

Module Heading

-
-

This is an example module with a heading and stuff

-
-
-
-

Module Heading

- -
-
-

Module Heading

- - -
-
-

General Prose

-
-

Sections Linked

-

The main page header of this guide is an h1 element. Any header elements may include links, as depicted in the example.

-

The secondary header above is an h2 element, which may be used for any form of important page-level header. More than one may be used per page. Consider using an h2 unless you need a header level of less importance, or as a sub-header to an existing h2 element.

-

Third-Level Header Linked

-

The header above is an h3 element, which may be used for any form of page-level header which falls below the h2 header in a document hierarchy.

-

Fourth-Level Header Linked

-

The header above is an h4 element, which may be used for any form of page-level header which falls below the h3 header in a document hierarchy.

-
Fifth-Level Header Linked
-

The header above is an h5 element, which may be used for any form of page-level header which falls below the h4 header in a document hierarchy.

-
Sixth-Level Header Linked
-

The header above is an h6 element, which may be used for any form of page-level header which falls below the h5 header in a document hierarchy.

- -

Grouping content

-

Paragraphs

-

All paragraphs are wrapped in p tags. Additionally, p elements can be wrapped with a blockquote element if the p element is indeed a quote. Historically, blockquote has been used purely to force indents, but this is now achieved using CSS. Reserve blockquote for quotes.

- -

Horizontal rule

-

The hr element represents a paragraph-level thematic break, e.g. a scene change in a story, or a transition to another topic within a section of a reference book. The following extract from Pandora’s Star by Peter F. Hamilton shows two paragraphs that precede a scene change and the paragraph that follows it:

-
-

Dudley was ninety-two, in his second life, and fast approaching time for another rejuvenation. Despite his body having the physical age of a standard fifty-year-old, the prospect of a long degrading campaign within academia was one he regarded with dread. For a supposedly advanced civilization, the Intersolar Commonwearth could be appallingly backward at times, not to mention cruel.

-

Maybe it won’t be that bad, he told himself. The lie was comforting enough to get him through the rest of the night’s shift.

-
-

The Carlton AllLander drove Dudley home just after dawn. Like the astronomer, the vehicle was old and worn, but perfectly capable of doing its job. It had a cheap diesel engine, common enough on a semi-frontier world like Gralmond, although its drive array was a thoroughly modern photoneural processor. With its high suspension and deep-tread tyres it could plough along the dirt track to the observatory in all weather and seasons, including the metre-deep snow of Gralmond’s winters.

-
- -

Pre-formatted text

-

The pre element represents a block of pre-formatted text, in which structure is represented by typographic conventions rather than by elements. Such examples are an e-mail (with paragraphs indicated by blank lines, lists indicated by lines prefixed with a bullet), fragments of computer code (with structure indicated according to the conventions of that language) or displaying ASCII art. Here’s an example showing the printable characters of ASCII:

-
-
  ! " # $ % & ' ( ) * + , - . /
-    0 1 2 3 4 5 6 7 8 9 : ; < = > ?
-    @ A B C D E F G H I J K L M N O
-    P Q R S T U V W X Y Z [ \ ] ^ _
-    ` a b c d e f g h i j k l m n o
-    p q r s t u v w x y z { | } ~ 
-
- -

Blockquotes

-

The blockquote element represents a section that is being quoted from another source.

-
-
-

Many forms of Government have been tried, and will be tried in this world of sin and woe. No one pretends that democracy is perfect or all-wise. Indeed, it has been said that democracy is the worst form of government except all those other forms that have been tried from time to time.

-
-

Winston Churchill, in a speech to the House of Commons. 11th November 1947

-
-

Additionally, you might wish to cite the source, as in the above example. The correct method involves including the cite attribute on the blockquote element, but since no browser makes any use of that information, it’s useful to link to the source also.

- -

Ordered list

-

The ol element denotes an ordered list, and various numbering schemes are available through the CSS (including 1,2,3… a,b,c… i,ii,iii… and so on). Each item requires a surrounding <li> and </li> tag, to denote individual items within the list (as you may have guessed, li stands for list item).

-
-
    -
  1. This is an ordered list.
  2. -
  3. - This is the second item, which contains a sub list -
      -
    1. This is the sub list, which is also ordered.
    2. -
    3. It has two items.
    4. -
    -
  4. -
  5. This is the final item on this list.
  6. -
-
- -

Unordered list

-

The ul element denotes an unordered list (ie. a list of loose items that don’t require numbering, or a bulleted list). Again, each item requires a surrounding <li> and </li> tag, to denote individual items. Here is an example list showing the constituent parts of the British Isles:

-
-
    -
  • - United Kingdom of Great Britain and Northern Ireland: -
      -
    • England
    • -
    • Scotland
    • -
    • Wales
    • -
    • Northern Ireland
    • -
    -
  • -
  • Republic of Ireland
  • -
  • Isle of Man
  • -
  • - Channel Islands: -
      -
    • Bailiwick of Guernsey
    • -
    • Bailiwick of Jersey
    • -
    -
  • -
-
-

Sometimes we may want each list item to contain block elements, typically a paragraph or two.

-
-
    -
  • -

    The British Isles is an archipelago consisting of the two large islands of Great Britain and Ireland, and many smaller surrounding islands.

    -
  • -
  • -

    Great Britain is the largest island of the archipelago. Ireland is the second largest island of the archipelago and lies directly to the west of Great Britain.

    -
  • -
  • -

    The full list of islands in the British Isles includes over 1,000 islands, of which 51 have an area larger than 20 km2.

    -
  • -
-
- -

Definition list

-

The dl element is for another type of list called a definition list. Instead of list items, the content of a dl consists of dt (Definition Term) and dd (Definition description) pairs. Though it may be called a “definition list”, dl can apply to other scenarios where a parent/child relationship is applicable. For example, it may be used for marking up dialogues, with each dt naming a speaker, and each dd containing his or her words.

-
-
-
This is a term.
-
This is the definition of that term, which both live in a dl.
-
Here is another term.
-
And it gets a definition too, which is this line.
-
Here is term that shares a definition with the term below.
-
Here is a defined term.
-
dt terms may stand on their own without an accompanying dd, but in that case they share descriptions with the next available dt. You may not have a dd without a parent dt.
-
-
- -

Figures

-

Figures are usually used to refer to images:

-
-
- Example image -
-

This is a placeholder image, with supporting caption.

-
-
-
-

Here, a part of a poem is marked up using figure:

-
-
-

‘Twas brillig, and the slithy toves
- Did gyre and gimble in the wabe;
- All mimsy were the borogoves,
- And the mome raths outgrabe.

-
-

Jabberwocky (first verse). Lewis Carroll, 1832-98

-
-
-
- -

Text-level Semantics

-

There are a number of inline HTML elements you may use anywhere within other elements.

- -

Links and anchors

-

The a element is used to hyperlink text, be that to another page, a named fragment on the current page or any other location on the web. Example:

- - -

Stressed emphasis

-

The em element is used to denote text with stressed emphasis, i.e., something you’d pronounce differently. Where italicizing is required for stylistic differentiation, the i element may be preferable. Example:

-
-

You simply must try the negitoro maki!

-
- -

Strong importance

-

The strong element is used to denote text with strong importance. Where bolding is used for stylistic differentiation, the b element may be preferable. Example:

-
-

Don’t stick nails in the electrical outlet.

-
- -

Small print

-

The small element is used to represent disclaimers, caveats, legal restrictions, or copyrights (commonly referred to as ‘small print’). It can also be used for attributions or satisfying licensing requirements. Example:

-
-

Copyright © 1922-2011 Acme Corporation. All Rights Reserved.

-
- -

Strikethrough

-

The s element is used to represent content that is no longer accurate or relevant. When indicating document edits i.e., marking a span of text as having been removed from a document, use the del element instead. Example:

-
-

Recommended retail price: £3.99 per bottle
Now selling for just £2.99 a bottle!

-
- -

Citations

-

The cite element is used to represent the title of a work (e.g. a book, essay, poem, song, film, TV show, sculpture, painting, musical, exhibition, etc). This can be a work that is being quoted or referenced in detail (i.e. a citation), or it can just be a work that is mentioned in passing. Example:

-
-

Universal Declaration of Human Rights, United Nations, December 1948. Adopted by General Assembly resolution 217 A (III).

-
- -

Inline quotes

-

The q element is used for quoting text inline. Example showing nested quotations:

-
-

John said, I saw Lucy at lunch, she told me Mary wants you to get some ice cream on your way home. I think I will get some at Ben and Jerry’s, on Gloucester Road.

-
- -

Definition

-

The dfn element is used to highlight the first use of a term. The title attribute can be used to describe the term. Example:

-
-

Bob’s canine mother and equine father sat him down and carefully explained that he was an allopolyploid organism.

-
- -

Abbreviation

-

The abbr element is used for any abbreviated text, whether it be acronym, initialism, or otherwise. Generally, it’s less work and useful (enough) to mark up only the first occurrence of any particular abbreviation on a page, and ignore the rest. Any text in the title attribute will appear when the user’s mouse hovers the abbreviation (although notably, this does not work in Internet Explorer for Windows). Example abbreviations:

-
-

BBC, HTML, and Staffs.

-
- -

Time

-

The time element is used to represent either a time on a 24 hour clock, or a precise date in the proleptic Gregorian calendar, optionally with a time and a time-zone offset. Example:

-
-

Queen Elizabeth II was proclaimed sovereign of each of the Commonwealth realms on and , after the death of her father, King George VI.

-
- -

Code

-

The code element is used to represent fragments of computer code. Useful for technology-oriented sites, not so useful otherwise. Example:

-
-

When you call the activate() method on the robotSnowman object, the eyes glow.

-
-

Used in conjunction with the pre element:

-
-
function getJelly() {
-        echo $aDeliciousSnack;
-    }
-
- -

Variable

-

The var element is used to denote a variable in a mathematical expression or programming context, but can also be used to indicate a placeholder where the contents should be replaced with your own value. Example:

-
-

If there are n pipes leading to the ice cream factory then I expect at least n flavours of ice cream to be available for purchase!

-
- -

Sample output

-

The samp element is used to represent (sample) output from a program or computing system. Useful for technology-oriented sites, not so useful otherwise. Example:

-
-

The computer said Too much cheese in tray two but I didn’t know what that meant.

-
- -

Keyboard entry

-

The kbd element is used to denote user input (typically via a keyboard, although it may also be used to represent other input methods, such as voice commands). Example:

-

-

To take a screenshot on your Mac, press ⌘ Cmd + ⇧ Shift + 3.

-
- -

Superscript and subscript text

-

The sup element represents a superscript and the sub element represents a sub. These elements must be used only to mark up typographical conventions with specific meanings, not for typographical presentation. As a guide, only use these elements if their absence would change the meaning of the content. Example:

-
-

The coordinate of the ith point is (xi, yi). For example, the 10th point has coordinate (x10, y10).

-

f(x, n) = log4xn

-
- -

Italicised

-

The i element is used for text in an alternate voice or mood, or otherwise offset from the normal prose. Examples include taxonomic designations, technical terms, idiomatic phrases from another language, the name of a ship or other spans of text whose typographic presentation is typically italicised. Example:

-
-

There is a certain je ne sais quoi in the air.

-
- -

Emboldened

-

The b element is used for text stylistically offset from normal prose without conveying extra importance, such as key words in a document abstract, product names in a review, or other spans of text whose typographic presentation is typically emboldened. Example:

-
-

You enter a small room. Your sword glows brighter. A rat scurries past the corner wall.

-
- -

Marked or highlighted text

-

The mark element is used to represent a run of text marked or highlighted for reference purposes. When used in a quotation it indicates a highlight not originally present but added to bring the reader’s attention to that part of the text. When used in the main prose of a document, it indicates a part of the document that has been highlighted due to its relevance to the user’s current activity. Example:

-
-

I also have some kittens who are visiting me these days. They’re really cute. I think they like my garden! Maybe I should adopt a kitten.

-
- -

Edits

-

The del element is used to represent deleted or retracted text which still must remain on the page for some reason. Meanwhile its counterpart, the ins element, is used to represent inserted text. Both del and ins have a datetime attribute which allows you to include a timestamp directly in the element. Example inserted text and usage:

-
-

She bought two five pairs of shoes.

-
- -

Tabular data

-

Tables should be used when displaying tabular data. The thead, tfoot and tbody elements enable you to group rows within each a table.

-

If you use these elements, you must use every element. They should appear in this order: thead, tfoot and tbody, so that browsers can render the foot before receiving all the data. You must use these tags within the table element.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The Very Best Eggnog
IngredientsServes 12Serves 24
Milk1 quart2 quart
Cinnamon Sticks21
Vanilla Bean, Split12
Cloves510
Mace10 blades20 blades
Egg Yolks1224
Cups Sugar1 ½ cups3 cups
Dark Rum1 ½ cups3 cups
Brandy1 ½ cups3 cups
Vanilla1 tbsp2 tbsp
Half-and-half or Light Cream1 quart2 quart
Freshly grated nutmeg to taste
-
- -

Forms

-

Forms can be used when you wish to collect data from users. The fieldset element enables you to group related fields within a form, and each one should contain a corresponding legend. The label element ensures field descriptions are associated with their corresponding form widgets.

-
-
-
- Legend -
- - - Note about this field -
-
- - - Note about this field -
-
- - - Note about this field -
-
- - - Note about this field -
-
- - - Note about this field -
-
- - -
-
- - - Note about this selection -
-
- Checkbox * -
- - - -
-
-
-
- Radio - -
-
-
- - -
-
-
-
- -

This block is copyright © 2012 Paul Robert Lloyd. Code covered by the MIT license.

-
-
-

Dataset Results

-
-
-
    -
  • -

    Counselling in London Central, Camden

    - -
    -

    This is an application programming interface (API) that opens up - core EU legislative data for further use. The interface uses JSON, - meaning that you have easy to use machine-readable access to - metadata on European Union legislation.

    -

    It will be useful if you - want to use or analyze European Union legislative data in a way - that the official databases are not originally build for. The API - extracts, organize and connects data from various official - sources.

    -
    -
  • -
-
-
-
-
-
    -
  • -

    Counselling in London Central, Camden

    - -
    -

    This is an application programming interface (API) that opens up - core EU legislative data for further use. The interface uses JSON, - meaning that you have easy to use machine-readable access to - metadata on European Union legislation.

    -

    It will be useful if you - want to use or analyze European Union legislative data in a way - that the official databases are not originally build for. The API - extracts, organize and connects data from various official - sources.

    -
    -
  • -
  • -

    Counselling in London Central, Camden

    - -
    -

    This is an application programming interface (API) that opens up - core EU legislative data for further use. The interface uses JSON, - meaning that you have easy to use machine-readable access to - metadata on European Union legislation.

    -

    It will be useful if you - want to use or analyze European Union legislative data in a way - that the official databases are not originally build for. The API - extracts, organize and connects data from various official - sources.

    -
    -
  • -
  • -

    Counselling in London Central, Camden

    - -
    -

    This is an application programming interface (API) that opens up - core EU legislative data for further use. The interface uses JSON, - meaning that you have easy to use machine-readable access to - metadata on European Union legislation.

    -

    It will be useful if you - want to use or analyze European Union legislative data in a way - that the official databases are not originally build for. The API - extracts, organize and connects data from various official - sources.

    -
    -
  • -
-
- -
-
-

- 4 datasets found for "London" - + - Tags: - camden [remove] - Format: - HTML [remove] - CSV [remove] -

-
-
- -
-

Masthead (Site Header)

-
-
-

My Site Title

-

My Site Tagline

-
- -
-
-
-
-

My Site Title

-

My Site Tagline

-
- - -
-
- -
- - diff --git a/ckan/public-bs2/base/test/spec/ckan.spec.js b/ckan/public-bs2/base/test/spec/ckan.spec.js deleted file mode 100644 index 2af2e759dd7..00000000000 --- a/ckan/public-bs2/base/test/spec/ckan.spec.js +++ /dev/null @@ -1,70 +0,0 @@ -describe('ckan.initialize()', function () { - beforeEach(function () { - this.promise = jQuery.Deferred(); - this.target = sinon.stub(ckan.Client.prototype, 'getLocaleData').returns(this.promise); - }); - - afterEach(function () { - this.target.restore(); - }); - - it('should load the localisations for the current page', function () { - ckan.initialize() - assert.called(this.target); - }); - - it('should load the localisations into the i18n library', function () { - var target = sinon.stub(ckan.i18n, 'load'); - var data = {lang: {}}; - - ckan.initialize(); - this.promise.resolve(data); - - assert.called(target); - assert.calledWith(target, data); - - target.restore(); - }); - - it('should initialize the module on the page', function () { - var target = sinon.stub(ckan.module, 'initialize'); - - ckan.initialize(); - this.promise.resolve(); - - assert.called(target); - target.restore(); - }); -}); - -describe('ckan.url()', function () { - beforeEach(function () { - ckan.SITE_ROOT = 'http://example.com'; - ckan.LOCALE_ROOT = ckan.SITE_ROOT + '/en'; - }); - - it('should return the ckan.SITE_ROOT', function () { - var target = ckan.url(); - assert.equal(target, ckan.SITE_ROOT); - }); - - it('should return the ckan.LOCALE_ROOT if true is passed', function () { - var target = ckan.url(true); - assert.equal(target, ckan.LOCALE_ROOT); - }); - - it('should append the path provided', function () { - var target = ckan.url('/test.html'); - assert.equal(target, ckan.SITE_ROOT + '/test.html'); - }); - - it('should append the path to the locale provided', function () { - var target = ckan.url('/test.html', true); - assert.equal(target, ckan.LOCALE_ROOT + '/test.html'); - }); - - it('should handle missing preceding slashes', function () { - var target = ckan.url('test.html'); - assert.equal(target, ckan.SITE_ROOT + '/test.html'); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/client.spec.js b/ckan/public-bs2/base/test/spec/client.spec.js deleted file mode 100644 index c9d90caf81a..00000000000 --- a/ckan/public-bs2/base/test/spec/client.spec.js +++ /dev/null @@ -1,405 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.Client()', function () { - var Client = ckan.Client; - - beforeEach(function () { - this.client = new Client(); - }); - - it('should add a new instance to each client', function () { - var target = ckan.sandbox().client; - - assert.instanceOf(target, Client); - }); - - it('should set the .endpoint property to options.endpoint', function () { - var client = new Client({endpoint: 'http://example.com'}); - assert.equal(client.endpoint, 'http://example.com'); - }); - - it('should default the endpoint to a blank string', function () { - assert.equal(this.client.endpoint, ''); - }); - - describe('.url(path)', function () { - beforeEach(function () { - this.client.endpoint = 'http://api.example.com'; - }); - - it('should return the path with the enpoint prepended', function () { - assert.equal(this.client.url('/api/endpoint'), 'http://api.example.com/api/endpoint'); - }); - - it('should normalise preceding slashes in the path', function () { - assert.equal(this.client.url('api/endpoint'), 'http://api.example.com/api/endpoint'); - }); - - it('should return the string if it already has a protocol', function () { - assert.equal(this.client.url('http://example.com/my/endpoint'), 'http://example.com/my/endpoint'); - }); - }); - - describe('.getTemplate(filename, params, success, error)', function () { - beforeEach(function () { - this.fakePromise = sinon.stub(jQuery.Deferred()); - this.fakePromise.then.returns(this.fakePromise); - sinon.stub(jQuery, 'get').returns(this.fakePromise); - }); - - afterEach(function () { - jQuery.get.restore(); - }); - - it('should return a jQuery promise', function () { - var target = this.client.getTemplate('test.html'); - assert.ok(target === this.fakePromise, 'target === this.fakePromise'); - }); - - it('should request the template file', function () { - var target = this.client.getTemplate('test.html'); - assert.called(jQuery.get); - assert.calledWith(jQuery.get, '/api/1/util/snippet/test.html', {}); - }); - - it('should request the template file with any provided params', function () { - var options = {limit: 5, page: 2}; - var target = this.client.getTemplate('test.html', options); - assert.called(jQuery.get); - assert.calledWith(jQuery.get, '/api/1/util/snippet/test.html', options); - }); - }); - - describe('.getLocaleData(locale, success, error)', function () { - beforeEach(function () { - this.fakePromise = sinon.stub(jQuery.Deferred()); - this.fakePromise.then.returns(this.fakePromise); - sinon.stub(jQuery, 'getJSON').returns(this.fakePromise); - }); - - afterEach(function () { - jQuery.getJSON.restore(); - }); - - it('should return a jQuery promise', function () { - var target = this.client.getLocaleData('en'); - assert.ok(target === this.fakePromise, 'target === this.fakePromise'); - }); - - it('should request the locale provided', function () { - var target = this.client.getLocaleData('en'); - assert.called(jQuery.getJSON); - assert.calledWith(jQuery.getJSON, '/api/i18n/en'); - }); - }); - - describe('.getCompletions(url, options, success, error)', function () { - beforeEach(function () { - this.fakePiped = sinon.stub(jQuery.Deferred()); - this.fakePiped.then.returns(this.fakePiped); - this.fakePiped.promise.returns(this.fakePiped); - - this.fakePromise = sinon.stub(jQuery.Deferred()); - this.fakePromise.pipe.returns(this.fakePiped); - - sinon.stub(jQuery, 'ajax').returns(this.fakePromise); - }); - - afterEach(function () { - jQuery.ajax.restore(); - }); - - it('should return a jQuery promise', function () { - var target = this.client.getCompletions('url'); - assert.ok(target === this.fakePiped, 'target === this.fakePiped'); - }); - - it('should make an ajax request for the url provided', function () { - function success() {} - function error() {} - - var target = this.client.getCompletions('url', success, error); - - assert.called(jQuery.ajax); - assert.calledWith(jQuery.ajax, {url: '/url'}); - - assert.called(this.fakePiped.then); - assert.calledWith(this.fakePiped.then, success, error); - }); - - it('should pipe the result through .parseCompletions()', function () { - var target = this.client.getCompletions('url'); - - assert.called(this.fakePromise.pipe); - assert.calledWith(this.fakePromise.pipe, this.client.parseCompletions); - }); - - it('should allow a custom format option to be provided', function () { - function format() {} - - var target = this.client.getCompletions('url', {format: format}); - - assert.called(this.fakePromise.pipe); - assert.calledWith(this.fakePromise.pipe, format); - }); - - }); - - describe('.parseCompletions(data, options)', function () { - it('should return a string of tags for a ResultSet collection', function () { - var data = { - ResultSet: { - Result: [ - {"Name": "1 percent"}, {"Name": "18thc"}, {"Name": "19thcentury"} - ] - } - }; - - var target = this.client.parseCompletions(data, {}); - - assert.deepEqual(target, ["1 percent", "18thc", "19thcentury"]); - }); - - it('should return a string of formats for a ResultSet collection', function () { - var data = { - ResultSet: { - Result: [ - {"Format": "json"}, {"Format": "csv"}, {"Format": "text"} - ] - } - }; - - var target = this.client.parseCompletions(data, {}); - - assert.deepEqual(target, ["json", "csv", "text"]); - }); - - it('should strip out duplicates with a case insensitive comparison', function () { - var data = { - ResultSet: { - Result: [ - {"Name": " Test"}, {"Name": "test"}, {"Name": "TEST"} - ] - } - }; - - var target = this.client.parseCompletions(data, {}); - - assert.deepEqual(target, ["Test"]); - }); - - it('should return an array of objects if options.objects is true', function () { - var data = { - ResultSet: { - Result: [ - {"Format": "json"}, {"Format": "csv"}, {"Format": "text"} - ] - } - }; - - var target = this.client.parseCompletions(data, {objects: true}); - - assert.deepEqual(target, [ - {id: "json", text: "json"}, - {id: "csv", text: "csv"}, - {id: "text", text: "text"} - ]); - }); - - it('should call .parsePackageCompletions() id data is a string', function () { - var data = 'Name|id'; - var target = sinon.stub(this.client, 'parsePackageCompletions'); - - this.client.parseCompletions(data, {objects: true}); - - assert.called(target); - assert.calledWith(target, data); - }); - }); - - describe('.parseCompletionsForPlugin(data)', function () { - it('should return a string of tags for a ResultSet collection', function () { - var data = { - ResultSet: { - Result: [ - {"Name": "1 percent"}, {"Name": "18thc"}, {"Name": "19thcentury"} - ] - } - }; - - var target = this.client.parseCompletionsForPlugin(data); - - assert.deepEqual(target, { - results: [ - {id: "1 percent", text: "1 percent"}, - {id: "18thc", text: "18thc"}, - {id: "19thcentury", text: "19thcentury"} - ] - }); - }); - }); - - describe('.parsePackageCompletions(string, options)', function () { - it('should parse the package completions string', function () { - var data = 'Package 1|package-1\nPackage 2|package-2\nPackage 3|package-3\n'; - var target = this.client.parsePackageCompletions(data); - - assert.deepEqual(target, ['package-1', 'package-2', 'package-3']); - }); - - it('should return an object if options.object is true', function () { - var data = 'Package 1|package-1\nPackage 2|package-2\nPackage 3|package-3\n'; - var target = this.client.parsePackageCompletions(data, {objects: true}); - - assert.deepEqual(target, [ - {id: 'package-1', text: 'Package 1'}, - {id: 'package-2', text: 'Package 2'}, - {id: 'package-3', text: 'Package 3'} - ]); - }); - }); - - describe('.getStorageAuth()', function () { - beforeEach(function () { - this.fakePromise = sinon.mock(jQuery.Deferred()); - sinon.stub(jQuery, 'ajax').returns(this.fakePromise); - }); - - afterEach(function () { - jQuery.ajax.restore(); - }); - - it('should return a jQuery promise', function () { - var target = this.client.getStorageAuth('filename'); - assert.equal(target, this.fakePromise); - }); - - it('should call request a new auth token', function () { - function success() {} - function error() {} - - var target = this.client.getStorageAuth('filename', success, error); - - assert.called(jQuery.ajax); - assert.calledWith(jQuery.ajax, { - url: '/api/storage/auth/form/filename', - success: success, - error: error - }); - }); - }); - - describe('.getStorageMetadata()', function () { - beforeEach(function () { - this.fakePromise = sinon.mock(jQuery.Deferred()); - sinon.stub(jQuery, 'ajax').returns(this.fakePromise); - }); - - afterEach(function () { - jQuery.ajax.restore(); - }); - - it('should return a jQuery promise', function () { - var target = this.client.getStorageMetadata('filename'); - assert.equal(target, this.fakePromise); - }); - - it('should call request a new auth token', function () { - function success() {} - function error() {} - - var target = this.client.getStorageMetadata('filename', success, error); - - assert.called(jQuery.ajax); - assert.calledWith(jQuery.ajax, { - url: '/api/storage/metadata/filename', - success: success, - error: error - }); - }); - - it('should throw an error if no filename is provided', function () { - var client = this.client; - assert.throws(function () { - client.getStorageMetadata(); - }); - }); - }); - - describe('.convertStorageMetadataToResource(meta)', function () { - beforeEach(function () { - this.meta = { - "_checksum": "md5:527c97d2aa3ed1b40aea4b7ddf98692e", - "_content_length": 122632, - "_creation_date": "2012-07-17T14:35:35", - "_label": "2012-07-17T13:35:35.540Z/cat.jpg", - "_last_modified": "2012-07-17T14:35:35", - "_location": "http://example.com/storage/f/2012-07-17T13%3A35%3A35.540Z/cat.jpg", - "filename-original": "cat.jpg", - "key": "2012-07-17T13:35:35.540Z/cat.jpg", - "uploaded-by": "user" - }; - }); - - it('should return a representation for a resource', function () { - var target = this.client.convertStorageMetadataToResource(this.meta); - - assert.deepEqual(target, { - url: 'http://example.com/storage/f/2012-07-17T13%3A35%3A35.540Z/cat.jpg', - key: '2012-07-17T13:35:35.540Z/cat.jpg', - name: 'cat.jpg', - size: 122632, - created: "2012-07-17T14:35:35", - last_modified: "2012-07-17T14:35:35", - format: 'jpg', - mimetype: null, - resource_type: 'file.upload', // Is this standard? - owner: 'user', - hash: 'md5:527c97d2aa3ed1b40aea4b7ddf98692e', - cache_url: 'http://example.com/storage/f/2012-07-17T13%3A35%3A35.540Z/cat.jpg', - cache_url_updated: '2012-07-17T14:35:35' - }); - }); - - it('should provide a full url', function () { - ckan.SITE_ROOT = 'http://example.com'; - - this.meta._location = "/storage/f/2012-07-17T13%3A35%3A35.540Z/cat.jpg"; - var target = this.client.convertStorageMetadataToResource(this.meta); - assert.equal(target.url, 'http://example.com/storage/f/2012-07-17T13%3A35%3A35.540Z/cat.jpg'); - }); - - it('should not include microseconds or timezone in timestamps', function () { - ckan.SITE_ROOT = 'http://example.com'; - - var target = this.client.convertStorageMetadataToResource(this.meta); - assert.ok(!(/\.\d\d\d/).test(target.last_modified), 'no microseconds'); - assert.ok(!(/((\+|\-)\d{4}|Z)$/).test(target.last_modified), 'no timezone'); - }); - - it('should use the mime type for the format if found', function () { - this.meta._format = 'image/jpeg'; - var target = this.client.convertStorageMetadataToResource(this.meta); - - assert.equal(target.format, 'image/jpeg', 'format'); - assert.equal(target.mimetype, 'image/jpeg', 'mimetype'); - }); - }); - - describe('.normalizeTimestamp(timestamp)', function () { - it('should add a timezone to a timestamp without one', function () { - var target = this.client.normalizeTimestamp("2012-07-17T14:35:35"); - assert.equal(target, "2012-07-17T14:35:35Z"); - }); - - it('should not add a timezone to a timestamp with one already', function () { - var target = this.client.normalizeTimestamp("2012-07-17T14:35:35Z"); - assert.equal(target, "2012-07-17T14:35:35Z", 'timestamp with Z'); - - target = this.client.normalizeTimestamp("2012-07-17T14:35:35+0100"); - assert.equal(target, "2012-07-17T14:35:35+0100", 'timestamp with +0100'); - - target = this.client.normalizeTimestamp("2012-07-17T14:35:35-0400"); - assert.equal(target, "2012-07-17T14:35:35-0400", 'timestamp with -0400'); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/i18n.spec.js b/ckan/public-bs2/base/test/spec/i18n.spec.js deleted file mode 100644 index fd4ed8fddfa..00000000000 --- a/ckan/public-bs2/base/test/spec/i18n.spec.js +++ /dev/null @@ -1,116 +0,0 @@ -describe('ckan.i18n', function () { - describe('ckan.i18n.translate', function () { - it('should work while being deprecated', function () { - var x = ckan.i18n.translate('foo'); - assert.deepProperty(x, 'fetch'); - assert.equal(x.fetch(), 'FOO'); - assert.deepProperty(x, 'ifPlural'); - }); - }); - - describe('._(string, [values])', function () { - it('should return the translated string', function () { - assert.equal(ckan.i18n._('foo'), 'FOO'); - }); - - it('should return the key when no translation exists', function () { - assert.equal(ckan.i18n._('no translation'), 'no translation'); - }); - - it('should fill in placeholders', function () { - assert.equal( - ckan.i18n._('hello %(name)s!', {name: 'Julia'}), - 'HELLO Julia!' - ); - }); - - it('should fill in placeholders when no translation exists', function () { - assert.equal( - ckan.i18n._('no %(attr)s translation', {attr: 'good'}), - 'no good translation' - ); - }); - }); - - describe('.ngettext(singular, plural, number, [values])', function () { - var ngettext = ckan.i18n.ngettext; - - it('should return the translated strings', function () { - assert.equal(ngettext('bar', 'bars', 1), 'BAR'); - assert.equal(ngettext('bar', 'bars', 0), 'BARS'); - assert.equal(ngettext('bar', 'bars', 2), 'BARS'); - }); - - it('should return the key when no translation exists', function () { - assert.equal( - ngettext('no translation', 'no translations', 1), - 'no translation' - ); - assert.equal( - ngettext('no translation', 'no translations', 0), - 'no translations' - ); - assert.equal( - ngettext('no translation', 'no translations', 2), - 'no translations' - ); - }); - - it('should fill in placeholders', function () { - assert.equal( - ngettext('%(color)s shirt', '%(color)s shirts', 1, {color: 'RED'}), - 'RED SHIRT' - ); - assert.equal( - ngettext('%(color)s shirt', '%(color)s shirts', 0, {color: 'RED'}), - 'RED SHIRTS' - ); - assert.equal( - ngettext('%(color)s shirt', '%(color)s shirts', 2, {color: 'RED'}), - 'RED SHIRTS' - ); - }); - - it('should fill in placeholders when no translation exists', function () { - assert.equal( - ngettext('no %(attr)s translation', 'no %(attr)s translations', - 1, {attr: 'good'}), - 'no good translation' - ); - assert.equal( - ngettext('no %(attr)s translation', 'no %(attr)s translations', - 0, {attr: 'good'}), - 'no good translations' - ); - assert.equal( - ngettext('no %(attr)s translation', 'no %(attr)s translations', - 2, {attr: 'good'}), - 'no good translations' - ); - }); - - it('should provide a magic `num` placeholder', function () { - assert.equal(ngettext('%(num)d item', '%(num)d items', 1), '1 ITEM'); - assert.equal(ngettext('%(num)d item', '%(num)d items', 0), '0 ITEMS'); - assert.equal(ngettext('%(num)d item', '%(num)d items', 2), '2 ITEMS'); - }); - - it('should provide `num` when no translation exists', function () { - assert.equal( - ngettext('%(num)d missing translation', - '%(num)d missing translations', 1), - '1 missing translation' - ); - assert.equal( - ngettext('%(num)d missing translation', - '%(num)d missing translations', 0), - '0 missing translations' - ); - assert.equal( - ngettext('%(num)d missing translation', - '%(num)d missing translations', 2), - '2 missing translations' - ); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/module.spec.js b/ckan/public-bs2/base/test/spec/module.spec.js deleted file mode 100644 index 7dc1774bb44..00000000000 --- a/ckan/public-bs2/base/test/spec/module.spec.js +++ /dev/null @@ -1,418 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.module(id, properties|callback)', function () { - beforeEach(function () { - ckan.module.registry = {}; - ckan.module.instances = {}; - this.factory = {}; - }); - - it('should add a new item to the registry', function () { - ckan.module('test', this.factory); - - assert.instanceOf(new ckan.module.registry.test(), ckan.module.BaseModule); - }); - - it('should allow a function to be provided', function () { - var target = sinon.stub().returns({}); - ckan.module('test', target); - - assert.called(target); - }); - - it('should pass jQuery, i18n.translate() and i18n into the function', function () { - // Note: This behavior is deprecated but kept for backwards-compatibility - var target = sinon.stub().returns({}); - ckan.module('test', target); - - assert.calledWith(target, jQuery, ckan.i18n.translate, ckan.i18n); - }); - - it('should throw an exception if the module is already defined', function () { - ckan.module('name', this.factory); - assert.throws(function () { - ckan.module('name', this.factory); - }); - }); - - it('should return the ckan object', function () { - assert.equal(ckan.module('name', this.factory), ckan); - }); - - describe('.initialize()', function () { - beforeEach(function () { - this.element1 = jQuery('
').appendTo(this.fixture); - this.element2 = jQuery('
').appendTo(this.fixture); - this.element3 = jQuery('
').appendTo(this.fixture); - - this.test1 = sinon.spy(); - - // Add test1 to the registry. - ckan.module.registry = { - test1: this.test1 - }; - - this.target = sinon.stub(ckan.module, 'createInstance'); - }); - - afterEach(function () { - this.target.restore(); - }); - - it('should find all elements with the "data-module" attribute', function () { - ckan.module.initialize(); - assert.called(this.target); - }); - - it('should skip modules that are not functions', function () { - ckan.module.initialize(); - assert.calledTwice(this.target); - }); - - it('should call module.createInstance() with the element and factory', function () { - ckan.module.initialize(); - assert.calledWith(this.target, this.test1, this.element1[0]); - assert.calledWith(this.target, this.test1, this.element2[0]); - }); - - it('should return the module object', function () { - assert.equal(ckan.module.initialize(), ckan.module); - }); - - it('should initialize more than one module sepearted by a space', function () { - this.fixture.empty(); - this.element4 = jQuery('
').appendTo(this.fixture); - this.test2 = ckan.module.registry.test2 = sinon.spy(); - - ckan.module.initialize(); - - assert.calledWith(this.target, this.test1, this.element4[0]); - assert.calledWith(this.target, this.test2, this.element4[0]); - }); - - it('should defer all published events untill all modules have loaded', function () { - var pubsub = ckan.pubsub; - var callbacks = []; - - // Ensure each module is loaded. Three in total. - ckan.module.registry = { - test1: function () {}, - test2: function () {} - }; - - // Call a function to publish and subscribe to an event on each instance. - this.target.restore(); - this.target = sinon.stub(ckan.module, 'createInstance', function () { - var callback = sinon.spy(); - - pubsub.publish('test'); - pubsub.subscribe('test', callback); - - callbacks.push(callback); - }); - - ckan.module.initialize(); - - // Ensure that all subscriptions received all messages. - assert.ok(callbacks.length, 'no callbacks were created'); - jQuery.each(callbacks, function () { - assert.calledThrice(this); - }); - }); - }); - - describe('.createInstance(Module, element)', function () { - beforeEach(function () { - this.element = document.createElement('div'); - this.factory = ckan.module.BaseModule; - this.factory.options = this.defaults = {test1: 'a', test2: 'b', test3: 'c'}; - - this.sandbox = { - i18n: { - translate: sinon.spy() - } - }; - sinon.stub(ckan, 'sandbox').returns(this.sandbox); - - this.extractedOptions = {test1: 1, test2: 2}; - sinon.stub(ckan.module, 'extractOptions').returns(this.extractedOptions); - }); - - afterEach(function () { - ckan.sandbox.restore(); - ckan.module.extractOptions.restore(); - }); - - it('should extract the options from the element', function () { - ckan.module.createInstance(this.factory, this.element); - - assert.called(ckan.module.extractOptions); - assert.calledWith(ckan.module.extractOptions, this.element); - }); - - it('should not modify the defaults object', function () { - var clone = jQuery.extend({}, this.defaults); - ckan.module.createInstance(this.factory, this.element); - - assert.deepEqual(this.defaults, clone); - }); - - it('should create a sandbox object', function () { - ckan.module.createInstance(this.factory, this.element); - assert.called(ckan.sandbox); - assert.calledWith(ckan.sandbox, this.element); - }); - - it('should initialize the module factory with the sandbox, options and translate function', function () { - var target = sinon.spy(); - ckan.module.createInstance(target, this.element); - - assert.called(target); - assert.calledWith(target, this.element, this.extractedOptions, this.sandbox); - }); - - it('should initialize the module as a constructor', function () { - var target = sinon.spy(); - ckan.module.createInstance(target, this.element); - - assert.calledWithNew(target); - - }); - - it('should call the .initialize() method if one exists', function () { - var init = sinon.spy(); - var target = sinon.stub().returns({ - initialize: init - }); - - ckan.module.createInstance(target, this.element); - - assert.called(init); - }); - - it('should push the new instance into an array under ckan.module.instances', function () { - var target = function MyModule() { return {'mock': 'instance'}; }; - target.namespace = 'test'; - - ckan.module.createInstance(target, this.element); - - assert.deepEqual(ckan.module.instances.test, [{'mock': 'instance'}]); - }); - - it('should push further instances into the existing array under ckan.module.instances', function () { - var target = function MyModule() { return {'mock': 'instance3'}; }; - target.namespace = 'test'; - - ckan.module.instances.test = [{'mock': 'instance1'}, {'mock': 'instance2'}]; - ckan.module.createInstance(target, this.element); - - assert.deepEqual(ckan.module.instances.test, [ - {'mock': 'instance1'}, {'mock': 'instance2'}, {'mock': 'instance3'} - ]); - }); - - }); - - describe('.extractOptions(element)', function () { - it('should extract the data keys from the element', function () { - var element = jQuery('
', { - 'data-not-module': 'skip', - 'data-module': 'skip', - 'data-module-a': 'capture', - 'data-module-b': 'capture', - 'data-module-c': 'capture' - })[0]; - - var target = ckan.module.extractOptions(element); - - assert.deepEqual(target, {a: 'capture', b: 'capture', c: 'capture'}); - }); - - it('should convert JSON contents of keys into JS primitives', function () { - var element = jQuery('
', { - 'data-module-null': 'null', - 'data-module-int': '100', - 'data-module-arr': '[1, 2, 3]', - 'data-module-obj': '{"a": 1, "b":2, "c": 3}', - 'data-module-str': 'hello' - })[0]; - - var target = ckan.module.extractOptions(element); - - assert.deepEqual(target, { - 'null': null, - 'int': 100, - 'arr': [1, 2, 3], - 'obj': {"a": 1, "b": 2, "c": 3}, - 'str': 'hello' - }); - }); - - it('should simply use strings for content that it cannot parse as JSON', function () { - var element = jQuery('
', { - 'data-module-url': 'http://example.com/path/to.html', - 'data-module-bad': '{oh: 1, no' - })[0]; - - var target = ckan.module.extractOptions(element); - - assert.deepEqual(target, { - 'url': 'http://example.com/path/to.html', - 'bad': '{oh: 1, no' - }); - }); - - it('should convert keys with hyphens into camelCase', function () { - var element = jQuery('
', { - 'data-module-long-property': 'long', - 'data-module-really-very-long-property': 'longer' - })[0]; - - var target = ckan.module.extractOptions(element); - - assert.deepEqual(target, { - 'longProperty': 'long', - 'reallyVeryLongProperty': 'longer' - }); - }); - - it('should set boolean attributes to true', function () { - var element = jQuery('
', { - 'data-module-long-property': '' - })[0]; - - var target = ckan.module.extractOptions(element); - - assert.deepEqual(target, {'longProperty': true}); - }); - }); - - describe('BaseModule(element, options, sandbox)', function () { - var BaseModule = ckan.module.BaseModule; - - beforeEach(function () { - this.el = jQuery('
'); - this.options = {}; - this.sandbox = ckan.sandbox(); - this.module = new BaseModule(this.el, this.options, this.sandbox); - }); - - it('should assign .el as the element option', function () { - assert.ok(this.module.el === this.el); - }); - - it('should wrap .el in jQuery if not already wrapped', function () { - var element = document.createElement('div'); - var target = new BaseModule(element, this.options, this.sandbox); - - assert.ok(target.el instanceof jQuery); - }); - - it('should deep extend the options object', function () { - // Lazy check :/ - var target = sinon.stub(jQuery, 'extend'); - new BaseModule(this.el, this.options, this.sandbox); - - assert.called(target); - assert.calledWith(target, true, {}, BaseModule.prototype.options, this.options); - - target.restore(); - }); - - it('should assign the sandbox property', function () { - assert.equal(this.module.sandbox, this.sandbox); - }); - - describe('.$(selector)', function () { - it('should find children within the module element', function () { - this.module.el.append(jQuery('')); - assert.equal(this.module.$('input').length, 2); - }); - }); - - describe('.i18n()', function () { - // Note: This function is deprecated but kept for backwards-compatibility - beforeEach(function () { - this.i18n = { - first: 'first string', - second: {fetch: sinon.stub().returns('second string')}, - third: sinon.stub().returns('third string') - }; - - this.module.options.i18n = this.i18n; - }); - - it('should return the translation string', function () { - var target = this.module.i18n('first'); - assert.equal(target, 'first string'); - }); - - it('should call fetch on the translation string if it exists', function () { - var target = this.module.i18n('second'); - assert.equal(target, 'second string'); - }); - - it('should return just the key if no translation exists', function () { - var target = this.module.i18n('missing'); - assert.equal(target, 'missing'); - }); - - it('should call the translation function if one is provided', function () { - var target = this.module.i18n('third'); - assert.equal(target, 'third string'); - }); - - it('should pass the argments after the key into trans.fetch()', function () { - var target = this.module.options.i18n.second.fetch; - this.module.i18n('second', 1, 2, 3); - assert.called(target); - assert.calledWith(target, 1, 2, 3); - }); - - it('should pass the argments after the key into the translation function', function () { - var target = this.module.options.i18n.third; - this.module.i18n('third', 1, 2, 3); - assert.called(target); - assert.calledWith(target, 1, 2, 3); - }); - }); - - describe('._()', function () { - it('should be a shortcut for ckan.i18n._', function () { - /* - * In a module, this._ is a shortcut for ckan.i18n._, - * but it's not a direct reference. - */ - assert.equal(this.module._('foo'), 'FOO'); - }); - }); - - describe('.ngettext()', function () { - it('should be a shortcut for ckan.i18n.ngettext', function () { - /* - * In a module, this.ngettext is a shortcut for ckan.i18n.ngettext, - * but it's not a direct reference. - */ - assert.equal(this.module.ngettext('bar', 'bars', 1), 'BAR'); - assert.equal(this.module.ngettext('bar', 'bars', 0), 'BARS'); - assert.equal(this.module.ngettext('bar', 'bars', 2), 'BARS'); - }); - }); - - describe('.remove()', function () { - it('should teardown the module', function () { - var target = sinon.stub(this.module, 'teardown'); - - this.module.remove(); - - assert.called(target); - }); - - it('should remove the element from the page', function () { - this.fixture.append(this.module.el); - this.module.remove(); - - assert.equal(this.fixture.children().length, 0); - }); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/modules/autocomplete.spec.js b/ckan/public-bs2/base/test/spec/modules/autocomplete.spec.js deleted file mode 100644 index 93a8fb57a54..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/autocomplete.spec.js +++ /dev/null @@ -1,315 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.modules.AutocompleteModule()', function () { - var Autocomplete = ckan.module.registry['autocomplete']; - - beforeEach(function () { - // Stub select2 plugin if loaded. - if (jQuery.fn.select2) { - this.select2 = sinon.stub(jQuery.fn, 'select2'); - } else { - this.select2 = jQuery.fn.select2 = sinon.stub().returns({ - data: sinon.stub().returns({ - on: sinon.stub() - }) - }); - } - - this.el = document.createElement('input'); - this.sandbox = ckan.sandbox(); - this.sandbox.body = this.fixture; - this.module = new Autocomplete(this.el, {}, this.sandbox); - }); - - afterEach(function () { - this.module.teardown(); - - if (this.select2.restore) { - this.select2.restore(); - } else { - delete jQuery.fn.select2; - } - }); - - describe('.initialize()', function () { - it('should bind callback methods to the module', function () { - var target = sinon.stub(jQuery, 'proxyAll'); - - this.module.initialize(); - - assert.called(target); - assert.calledWith(target, this.module, /_on/, /format/); - - target.restore(); - }); - - it('should setup the autocomplete plugin', function () { - var target = sinon.stub(this.module, 'setupAutoComplete'); - - this.module.initialize(); - - assert.called(target); - }); - }); - - describe('.setupAutoComplete()', function () { - it('should initialize the autocomplete plugin', function () { - this.module.setupAutoComplete(); - - assert.called(this.select2); - assert.calledWith(this.select2, { - width: 'resolve', - query: this.module._onQuery, - dropdownCssClass: '', - containerCssClass: '', - formatResult: this.module.formatResult, - formatNoMatches: this.module.formatNoMatches, - formatInputTooShort: this.module.formatInputTooShort, - createSearchChoice: this.module.formatTerm, // Not used by tags. - initSelection: this.module.formatInitialValue - }); - }); - - it('should initialize the autocomplete plugin with a tags callback if options.tags is true', function () { - this.module.options.tags = true; - this.module.setupAutoComplete(); - - assert.called(this.select2); - assert.calledWith(this.select2, { - width: 'resolve', - tags: this.module._onQuery, - dropdownCssClass: '', - containerCssClass: '', - formatResult: this.module.formatResult, - formatNoMatches: this.module.formatNoMatches, - formatInputTooShort: this.module.formatInputTooShort, - initSelection: this.module.formatInitialValue - }); - - it('should watch the keydown event on the select2 input'); - - it('should allow a custom css class to be added to the dropdown', function () { - this.module.options.dropdownClass = 'tags'; - this.module.setupAutoComplete(); - - assert.called(this.select2); - assert.calledWith(this.select2, { - width: 'resolve', - tags: this.module._onQuery, - dropdownCssClass: 'tags', - containerCssClass: '', - formatResult: this.module.formatResult, - formatNoMatches: this.module.formatNoMatches, - formatInputTooShort: this.module.formatInputTooShort, - initSelection: this.module.formatInitialValue - }); - }); - - it('should allow a custom css class to be added to the container', function () { - this.module.options.containerClass = 'tags'; - this.module.setupAutoComplete(); - - assert.called(this.select2); - assert.calledWith(this.select2, { - width: 'resolve', - tags: this.module._onQuery, - dropdownCssClass: '', - containerCssClass: 'tags', - formatResult: this.module.formatResult, - formatNoMatches: this.module.formatNoMatches, - formatInputTooShort: this.module.formatInputTooShort, - initSelection: this.module.formatInitialValue - }); - }); - - }); - }); - - describe('.getCompletions(term, fn)', function () { - beforeEach(function () { - this.term = 'term'; - this.module.options.source = 'http://example.com?term=?'; - - this.target = sinon.stub(this.sandbox.client, 'getCompletions'); - }); - - it('should get the completions from the client', function () { - this.module.getCompletions(this.term); - assert.called(this.target); - }); - - it('should replace the last ? in the source url with the term', function () { - this.module.getCompletions(this.term); - assert.calledWith(this.target, 'http://example.com?term=term'); - }); - - it('should escape special characters in the term', function () { - this.module.getCompletions('term with spaces'); - assert.calledWith(this.target, 'http://example.com?term=term%20with%20spaces'); - }); - }); - - describe('.lookup(term, fn)', function () { - beforeEach(function () { - sinon.stub(this.module, 'getCompletions'); - this.target = sinon.spy(); - this.module.setupAutoComplete(); - }); - - it('should set the _lastTerm property', function () { - this.module.lookup('term', this.target); - assert.equal(this.module._lastTerm, 'term'); - }); - - it('should call the fn immediately if there is no term', function () { - this.module.lookup('', this.target); - assert.called(this.target); - assert.calledWith(this.target, {results: []}); - }); - - it('should debounce the request if there is a term'); - it('should cancel the last request'); - }); - - describe('.formatResult(state)', function () { - beforeEach(function () { - this.module._lastTerm = 'term'; - }); - - it('should return the string with the last term wrapped in bold tags', function () { - var target = this.module.formatResult({id: 'we have termites', text: 'we have termites'}); - assert.equal(target, 'we have termites'); - }); - - it('should return the string with each instance of the term wrapped in bold tags', function () { - var target = this.module.formatResult({id: 'we have a termite terminology', text: 'we have a termite terminology'}); - assert.equal(target, 'we have a termite terminology'); - }); - - it('should return the term if there is no last term saved', function () { - delete this.module._lastTerm; - var target = this.module.formatResult({id: 'we have a termite terminology', text: 'we have a termite terminology'}); - assert.equal(target, 'we have a termite terminology'); - }); - }); - - describe('.formatNoMatches(term)', function () { - it('should return the no matches string if there is a term', function () { - var target = this.module.formatNoMatches('term'); - assert.equal(target, 'No matches found'); - }); - - it('should return the empty string if there is no term', function () { - var target = this.module.formatNoMatches(''); - assert.equal(target, 'Start typing…'); - }); - }); - - describe('.formatInputTooShort(term, min)', function () { - it('should return the plural input too short string', function () { - var target = this.module.formatInputTooShort('term', 2); - assert.equal(target, 'Input is too short, must be at least 2 characters'); - }); - - it('should return the singular input too short string', function () { - var target = this.module.formatInputTooShort('term', 1); - assert.equal(target, 'Input is too short, must be at least one character'); - }); - }); - - describe('.formatTerm()', function () { - it('should return an item object with id and text properties', function () { - assert.deepEqual(this.module.formatTerm('test'), {id: 'test', text: 'test'}); - }); - - it('should trim whitespace from the value', function () { - assert.deepEqual(this.module.formatTerm(' test '), {id: 'test', text: 'test'}); - }); - - it('should convert commas in ids into unicode characters', function () { - assert.deepEqual(this.module.formatTerm('test, test'), {id: 'test\u002C test', text: 'test, test'}); - }); - }); - - describe('.formatInitialValue(element, callback)', function () { - beforeEach(function () { - this.callback = sinon.spy(); - }); - - it('should pass an item object with id and text properties into the callback', function () { - var target = jQuery(''); - - this.module.formatInitialValue(target, this.callback); - assert.calledWith(this.callback, {id: 'test', text: 'test'}); - }); - - it('should pass an array of properties into the callback if options.tags is true', function () { - this.module.options.tags = true; - var target = jQuery('', {value: "test, test"}); - - this.module.formatInitialValue(target, this.callback); - assert.calledWith(this.callback, [{id: 'test', text: 'test'}, {id: 'test', text: 'test'}]); - }); - - it('should return the value if no callback is provided (to support select2 v2.1)', function () { - var target = jQuery(''); - - assert.deepEqual(this.module.formatInitialValue(target), {id: 'test', text: 'test'}); - }); - }); - - describe('._onQuery(options)', function () { - it('should lookup the current term with the callback', function () { - var target = sinon.stub(this.module, 'lookup'); - - this.module._onQuery({term: 'term', callback: 'callback'}); - - assert.called(target); - assert.calledWith(target, 'term', 'callback'); - }); - - it('should do nothing if there is no options object', function () { - var target = sinon.stub(this.module, 'lookup'); - this.module._onQuery(); - assert.notCalled(target); - }); - }); - - describe('._onKeydown(event)', function () { - beforeEach(function () { - this.keyDownEvent = jQuery.Event("keydown", { which: 188 }); - this.fakeEvent = {}; - this.clock = sinon.useFakeTimers(); - this.jQuery = sinon.stub(jQuery.fn, 'init', jQuery.fn.init); - this.Event = sinon.stub(jQuery, 'Event').returns(this.fakeEvent); - this.trigger = sinon.stub(jQuery.fn, 'trigger'); - }); - - afterEach(function () { - this.clock.restore(); - this.jQuery.restore(); - this.Event.restore(); - this.trigger.restore(); - }); - - it('should trigger fake "return" keypress if a comma is pressed', function () { - this.module._onKeydown(this.keyDownEvent); - - this.clock.tick(100); - - assert.called(this.jQuery); - assert.called(this.Event); - assert.called(this.trigger); - assert.calledWith(this.trigger, this.fakeEvent); - }); - - it('should do nothing if another key is pressed', function () { - this.keyDownEvent.which = 200; - - this.module._onKeydown(this.keyDownEvent); - - this.clock.tick(100); - - assert.notCalled(this.Event); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/modules/basic-form.spec.js b/ckan/public-bs2/base/test/spec/modules/basic-form.spec.js deleted file mode 100644 index 9d0628fc86b..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/basic-form.spec.js +++ /dev/null @@ -1,39 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.module.BasicFormModule()', function () { - var BasicFormModule = ckan.module.registry['basic-form']; - - beforeEach(function () { - sinon.stub(jQuery.fn, 'incompleteFormWarning'); - - this.el = document.createElement('form'); - this.el.innerHTML = '' - this.sandbox = ckan.sandbox(); - this.sandbox.body = this.fixture; - this.sandbox.body.append(this.el) - this.module = new BasicFormModule(this.el, {}, this.sandbox); - }); - - afterEach(function () { - this.module.teardown(); - jQuery.fn.incompleteFormWarning.restore(); - }); - - describe('.initialize()', function () { - it('should attach the jQuery.fn.incompleteFormWarning() to the form', function () { - this.module.initialize(); - assert.called(jQuery.fn.incompleteFormWarning); - }); - - it('should disable the submit button on form submit', function(done) { - this.module.initialize(); - this.module._onSubmit(); - - setTimeout(function() { - var buttonAttrDisabled = this.el.querySelector('button').getAttribute('disabled'); - - assert.ok(buttonAttrDisabled === 'disabled') - done(); - }.bind(this), 0); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/modules/confirm-action.spec.js b/ckan/public-bs2/base/test/spec/modules/confirm-action.spec.js deleted file mode 100644 index d90b36d6941..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/confirm-action.spec.js +++ /dev/null @@ -1,118 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.module.ConfirmActionModule()', function () { - var ConfirmActionModule = ckan.module.registry['confirm-action']; - - beforeEach(function () { - jQuery.fn.modal = sinon.spy(); - - this.el = document.createElement('button'); - this.sandbox = ckan.sandbox(); - this.sandbox.body = this.fixture; - this.module = new ConfirmActionModule(this.el, {}, this.sandbox); - }); - - afterEach(function () { - this.module.teardown(); - }); - - describe('.initialize()', function () { - it('should watch for clicks on the module element', function () { - var target = sinon.stub(this.module.el, 'on'); - this.module.initialize(); - assert.called(target); - assert.calledWith(target, 'click', this.module._onClick); - }); - }); - - describe('.confirm()', function () { - it('should append the modal to the document body', function () { - this.module.confirm(); - assert.equal(this.fixture.children().length, 1); - assert.equal(this.fixture.find('.modal').length, 1); - }); - - it('should show the modal dialog', function () { - this.module.confirm(); - assert.called(jQuery.fn.modal); - assert.calledWith(jQuery.fn.modal, 'show'); - }); - }); - - describe('.performAction()', function () { - it('should submit the action'); - }); - - describe('.createModal()', function () { - it('should create the modal element', function () { - var target = this.module.createModal(); - - assert.ok(target.hasClass('modal')); - }); - - it('should set the module.modal property', function () { - var target = this.module.createModal(); - - assert.ok(target === this.module.modal); - }); - - it('should bind the success/cancel listeners', function () { - var target = sinon.stub(jQuery.fn, 'on'); - - this.module.createModal(); - - // Not an ideal check as this implementation could be done in many ways. - assert.calledTwice(target); - assert.calledWith(target, 'click', '.btn-primary', this.module._onConfirmSuccess); - assert.calledWith(target, 'click', '.btn-cancel', this.module._onConfirmCancel); - - target.restore(); - }); - - it('should initialise the modal plugin', function () { - this.module.createModal(); - assert.called(jQuery.fn.modal); - assert.calledWith(jQuery.fn.modal, {show: false}); - }); - - it('should allow to customize the content', function () { - this.module.options.content = 'some custom content'; - var target = this.module.createModal(); - - assert.equal(target.find('.modal-body').text(), 'some custom content'); - }); - }); - - describe('._onClick()', function () { - it('should prevent the default action', function () { - var target = {preventDefault: sinon.spy()}; - this.module._onClick(target); - - assert.called(target.preventDefault); - }); - - it('should display the confirmation dialog', function () { - var target = sinon.stub(this.module, 'confirm'); - this.module._onClick({preventDefault: sinon.spy()}); - assert.called(target); - }); - }); - - describe('._onConfirmSuccess()', function () { - it('should perform the action', function () { - var target = sinon.stub(this.module, 'performAction'); - this.module._onConfirmSuccess(jQuery.Event('click')); - assert.called(target); - }); - }); - - describe('._onConfirmCancel()', function () { - it('should hide the modal', function () { - this.module.modal = jQuery('
'); - this.module._onConfirmCancel(jQuery.Event('click')); - - assert.called(jQuery.fn.modal); - assert.calledWith(jQuery.fn.modal, 'hide'); - }); - }); - -}); diff --git a/ckan/public-bs2/base/test/spec/modules/custom-fields.spec.js b/ckan/public-bs2/base/test/spec/modules/custom-fields.spec.js deleted file mode 100644 index ad2d7b71f19..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/custom-fields.spec.js +++ /dev/null @@ -1,175 +0,0 @@ -/*globals describe before beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.module.CustomFieldsModule()', function () { - var CustomFieldsModule = ckan.module.registry['custom-fields']; - - before(function (done) { - this.loadFixture('custom_fields.html', function (template) { - this.template = template; - done(); - }); - }); - - beforeEach(function () { - this.fixture.html(this.template); - this.el = this.fixture.find('[data-module]'); - this.sandbox = ckan.sandbox(); - this.sandbox.body = this.fixture; - this.module = new CustomFieldsModule(this.el, {}, this.sandbox); - }); - - afterEach(function () { - this.module.teardown(); - }); - - describe('.initialize()', function () { - it('should bind all functions beginning with _on to the module scope', function () { - var target = sinon.stub(jQuery, 'proxyAll'); - - this.module.initialize(); - - assert.called(target); - assert.calledWith(target, this.module, /_on/); - - target.restore(); - }); - - it('should listen for changes to the last "key" input', function () { - var target = sinon.stub(this.module, '_onChange'); - - this.module.initialize(); - this.module.$('input[name*=key]').change(); - - assert.calledOnce(target); - }); - - it('should listen for changes to all checkboxes', function () { - var target = sinon.stub(this.module, '_onRemove'); - - this.module.initialize(); - this.module.$(':checkbox').trigger('change'); - - assert.calledOnce(target); - }); - - it('should add "button" classes to the remove input', function () { - this.module.initialize(); - - assert.equal(this.module.$('.checkbox.btn').length, 1, 'each item should have the .btn class'); - assert.equal(this.module.$('.checkbox.fa-times').length, 1, 'each item shoud have the .fa-times class'); - }); - }); - - describe('.newField(element)', function () { - it('should append a new field to the element', function () { - var element = document.createElement('div'); - sinon.stub(this.module, 'cloneField').returns(element); - - this.module.newField(); - - assert.ok(jQuery.contains(this.module.el[0], element)); - }); - }); - - describe('.cloneField(element)', function () { - it('should clone the provided field', function () { - var element = document.createElement('div'); - var init = sinon.stub(jQuery.fn, 'init', jQuery.fn.init); - var clone = sinon.stub(jQuery.fn, 'clone', jQuery.fn.clone); - - this.module.cloneField(element); - - assert.called(init); - assert.calledWith(init, element); - assert.called(clone); - - init.restore(); - clone.restore(); - }); - - it('should return the cloned element', function () { - var element = document.createElement('div'); - var cloned = document.createElement('div'); - var init = sinon.stub(jQuery.fn, 'init', jQuery.fn.init); - var clone = sinon.stub(jQuery.fn, 'clone').returns(jQuery(cloned)); - - assert.ok(this.module.cloneField(element)[0] === cloned); - - init.restore(); - clone.restore(); - }); - }); - - describe('.resetField(element)', function () { - beforeEach(function () { - this.field = jQuery('
'); - }); - - it('should empty all input values', function () { - var target = this.module.resetField(this.field); - assert.equal(target.find(':input').val(), ''); - }); - - it('should increment any integers in the input names by one', function () { - var target = this.module.resetField(this.field); - assert.equal(target.find(':input').attr('name'), 'field-2'); - }); - - it('should increment any numbers in the label text by one', function () { - var target = this.module.resetField(this.field); - assert.equal(target.find('label').text(), 'Field 2'); - }); - - it('should increment any numbers in the label for by one', function () { - var target = this.module.resetField(this.field); - assert.equal(target.find('label').attr('for'), 'field-2'); - }); - }); - - describe('.disableField(field, disable)', function () { - beforeEach(function () { - this.target = this.module.$('.control-custom:first'); - }); - - it('should add a .disable class to the element', function () { - this.module.disableField(this.target); - assert.isTrue(this.target.hasClass('disabled')); - }); - - it('should remove a .disable class to the element if disable is false', function () { - this.target.addClass('disable'); - - this.module.disableField(this.target, false); - assert.isFalse(this.target.hasClass('disabled')); - }); - - }); - - describe('._onChange(event)', function () { - it('should call .newField() with the custom control', function () { - var target = sinon.stub(this.module, 'newField'); - var field = this.module.$('[name*=key]:last').val('test'); - - this.module._onChange(jQuery.Event('change', {target: field[0]})); - - assert.called(target); - }); - - it('should not call .newField() if the target field is empty', function () { - var target = sinon.stub(this.module, 'newField'); - var field = this.module.$('[name*=key]:last').val(''); - - this.module._onChange(jQuery.Event('change', {target: field[0]})); - - assert.notCalled(target); - }); - }); - - describe('._onRemove(event)', function () { - it('should call .disableField() with the custom control', function () { - var target = sinon.stub(this.module, 'disableField'); - this.module._onRemove(jQuery.Event('change', {target: this.module.$(':checkbox')[0]})); - - assert.called(target); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/modules/followers-counter.spec.js b/ckan/public-bs2/base/test/spec/modules/followers-counter.spec.js deleted file mode 100644 index eb9d9eff741..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/followers-counter.spec.js +++ /dev/null @@ -1,186 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.module.FollowersCounterModule()', function() { - var FollowersCounterModule = ckan.module.registry['followers-counter']; - - beforeEach(function() { - this.initialCounter = 10; - this.el = jQuery('
' + this.initialCounter + '
'); - this.sandbox = ckan.sandbox(); - this.module = new FollowersCounterModule(this.el, {}, this.sandbox); - this.module.options.num_followers = this.initialCounter; - }); - - afterEach(function() { - this.module.teardown(); - }); - - describe('.initialize()', function() { - it('should bind callback methods to the module', function() { - var target = sinon.stub(jQuery, 'proxyAll'); - - this.module.initialize(); - - assert.called(target); - assert.calledWith(target, this.module, /_on/); - - target.restore(); - }); - - it('should subscribe to the "follow-follow-some-id" event', function() { - var target = sinon.stub(this.sandbox, 'subscribe'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - - assert.called(target); - assert.calledWith(target, 'follow-follow-some-id', this.module._onFollow); - - target.restore(); - }); - - it('should subscribe to the "follow-unfollow-some-id" event', function() { - var target = sinon.stub(this.sandbox, 'subscribe'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - - assert.called(target); - assert.calledWith(target, 'follow-unfollow-some-id', this.module._onUnfollow); - - target.restore(); - }); - }); - - describe('.teardown()', function() { - it('should unsubscribe to the "follow-follow-some-id" event', function() { - var target = sinon.stub(this.sandbox, 'unsubscribe'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - this.module.teardown(); - - assert.called(target); - assert.calledWith(target, 'follow-follow-some-id', this.module._onFollow); - - target.restore(); - }); - - it('should unsubscribe to the "follow-unfollow-some-id" event', function() { - var target = sinon.stub(this.sandbox, 'unsubscribe'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - this.module.teardown(); - - assert.called(target); - assert.calledWith(target, 'follow-unfollow-some-id', this.module._onUnfollow); - - target.restore(); - }); - }); - - describe('._onFollow', function() { - it('should call _onFollow on "follow-follow-some-id" event', function() { - var target = sinon.stub(this.module, '_onFollow'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - - this.sandbox.publish('follow-follow-some-id'); - - assert.called(target); - }); - - it('should call _updateCounter when ._onFollow is called', function() { - var target = sinon.stub(this.module, '_updateCounter'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - - this.module._onFollow(); - - assert.called(target); - assert.calledWith(target, {action: 'follow'}); - }); - }); - - describe('._onUnfollow', function() { - it('should call _onUnfollow on "follow-unfollow-some-id" event', function() { - var target = sinon.stub(this.module, '_onUnfollow'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - - this.sandbox.publish('follow-unfollow-some-id'); - - assert.called(target); - }); - - it('should call _updateCounter when ._onUnfollow is called', function() { - var target = sinon.stub(this.module, '_updateCounter'); - - this.module.options = {id: 'some-id'}; - this.module.initialize(); - - this.module._onUnfollow(); - - assert.called(target); - assert.calledWith(target, {action: 'unfollow'}); - }); - }); - - describe('._updateCounter', function() { - it('should increment this.options.num_followers on calling _onFollow', function() { - this.module.initialize(); - this.module._onFollow(); - - assert.equal(this.module.options.num_followers, ++this.initialCounter); - }); - - it('should increment the counter value in the DOM on calling _onFollow', function() { - var counterVal; - - this.module.initialize(); - this.module._onFollow(); - - counterVal = this.module.counterEl.text(); - counterVal = parseInt(counterVal, 10); - - assert.equal(counterVal, ++this.initialCounter); - }); - - it('should decrement this.options.num_followers on calling _onUnfollow', function() { - this.module.initialize(); - this.module._onUnfollow(); - - assert.equal(this.module.options.num_followers, --this.initialCounter); - }); - - it('should decrement the counter value in the DOM on calling _onUnfollow', function() { - var counterVal; - - this.module.initialize(); - this.module._onUnfollow(); - - counterVal = this.module.counterEl.text(); - counterVal = parseInt(counterVal, 10); - - assert.equal(counterVal, --this.initialCounter); - }); - - it('should not change the counter value in the DOM when the value is greater than 1000', function() { - var beforeCounterVal = 1536; - var afterCounterVal; - - this.module.options = {num_followers: beforeCounterVal}; - this.module.initialize(); - this.module.counterEl.text(this.module.options.num_followers); - this.module._onFollow(); - - afterCounterVal = this.module.counterEl.text(); - afterCounterVal = parseInt(afterCounterVal, 10); - - assert.equal(beforeCounterVal, afterCounterVal); - }); - }); - }); diff --git a/ckan/public-bs2/base/test/spec/modules/image-upload.spec.js b/ckan/public-bs2/base/test/spec/modules/image-upload.spec.js deleted file mode 100644 index f0f2939494d..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/image-upload.spec.js +++ /dev/null @@ -1,65 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.modules.ImageUploadModule()', function () { - var ImageUploadModule = ckan.module.registry['image-upload']; - - beforeEach(function () { - this.el = document.createElement('div'); - this.sandbox = ckan.sandbox(); - this.module = new ImageUploadModule(this.el, {}, this.sandbox); - this.module.el.html([ - '
', - '', - ]); - this.module.initialize(); - this.module.field_name = jQuery('', {type: 'text'}) - }); - - afterEach(function () { - this.module.teardown(); - }); - - describe('._onFromWeb()', function () { - - it('should change name when url changed', function () { - this.module.field_url_input.val('http://example.com/some_image.png'); - this.module._onFromWebBlur(); - assert.equal(this.module.field_name.val(), 'some_image.png'); - - this.module.field_url_input.val('http://example.com/undefined_file'); - this.module._onFromWebBlur(); - assert.equal(this.module.field_name.val(), 'undefined_file'); - }); - - it('should ignore url changes if name was manualy changed', function () { - this.module.field_url_input.val('http://example.com/some_image.png'); - this.module._onFromWebBlur(); - assert.equal(this.module.field_name.val(), 'some_image.png'); - - this.module._onModifyName(); - - this.module.field_url_input.val('http://example.com/undefined_file'); - this.module._onFromWebBlur(); - assert.equal(this.module.field_name.val(), 'some_image.png'); - }); - - it('should ignore url changes if name was filled before', function () { - this.module._nameIsDirty = true; - this.module.field_name.val('prefilled'); - - this.module.field_url_input.val('http://example.com/some_image.png'); - this.module._onFromWebBlur(); - assert.equal(this.module.field_name.val(), 'prefilled'); - - this.module.field_url_input.val('http://example.com/second_some_image.png'); - this.module._onFromWebBlur(); - assert.equal(this.module.field_name.val(), 'prefilled'); - - this.module._onModifyName() - - this.module.field_url_input.val('http://example.com/undefined_file'); - this.module._onFromWebBlur(); - assert.equal(this.module.field_name.val(), 'prefilled'); - }); - }); - -}); diff --git a/ckan/public-bs2/base/test/spec/modules/resource-form.spec.js b/ckan/public-bs2/base/test/spec/modules/resource-form.spec.js deleted file mode 100644 index 78975e32f8a..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/resource-form.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.modules.ResourceFormModule()', function () { - var ResourceFormModule = ckan.module.registry['resource-form']; - - beforeEach(function () { - this.el = document.createElement('form'); - this.sandbox = ckan.sandbox(); - this.module = new ResourceFormModule(this.el, {}, this.sandbox); - }); - - afterEach(function () { - this.module.teardown(); - }); - - describe('.initialize()', function () { - it('should subscribe to the "resource:uploaded" event', function () { - var target = sinon.stub(this.sandbox, 'subscribe'); - - this.module.initialize(); - - assert.called(target); - assert.calledWith(target, 'resource:uploaded', this.module._onResourceUploaded); - - target.restore(); - }); - }); - - describe('.teardown()', function () { - it('should unsubscribe from the "resource:uploaded" event', function () { - var target = sinon.stub(this.sandbox, 'unsubscribe'); - - this.module.teardown(); - - assert.called(target); - assert.calledWith(target, 'resource:uploaded', this.module._onResourceUploaded); - - target.restore(); - }); - }); - - describe('._onResourceUploaded()', function () { - beforeEach(function () { - this.module.el.html([ - '', - '', - '', - '', - '', - '' - ].join('')); - - this.resource = { - text: 'text', - checkbox: "check", - radio: "radio2", - hidden: "hidden", - select: "option1" - }; - }); - - it('should set the values on appropriate fields', function () { - var res = this.resource; - - this.module._onResourceUploaded(res); - - jQuery.each(this.module.el.serializeArray(), function (idx, field) { - assert.equal(field.value, res[field.name]); - }); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/modules/resource-upload-field.spec.js b/ckan/public-bs2/base/test/spec/modules/resource-upload-field.spec.js deleted file mode 100644 index dcf2ca0630e..00000000000 --- a/ckan/public-bs2/base/test/spec/modules/resource-upload-field.spec.js +++ /dev/null @@ -1,290 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.modules.ResourceUploadFieldModule()', function () { - var ResourceFileUploadModule = ckan.module.registry['resource-upload-field']; - - beforeEach(function () { - jQuery.fn.fileupload = sinon.spy(); - - this.el = jQuery('
'); - this.sandbox = ckan.sandbox(); - this.module = new ResourceFileUploadModule(this.el, {}, this.sandbox); - this.module.initialize(); - }); - - afterEach(function () { - this.module.teardown(); - }); - - describe('.initialize()', function () { - beforeEach(function () { - // Create un-initialised module. - this.module.teardown(); - this.module = new ResourceFileUploadModule(this.el, {}, this.sandbox); - }); - - it('should create the #upload field', function () { - this.module.initialize(); - assert.ok(typeof this.module.upload === 'object'); - }); - - it('should append the upload field to the module element', function () { - this.module.initialize(); - - assert.ok(jQuery.contains(this.el[0], this.module.upload[0])); - }); - - it('should call .setupFileUpload()', function () { - var target = sinon.stub(this.module, 'setupFileUpload'); - - this.module.initialize(); - - assert.called(target); - }); - }); - - describe('.setupFileUpload()', function () { - it('should set the label text on the form input', function () { - this.module.initialize(); - this.module.setupFileUpload(); - - assert.equal(this.module.upload.find('label').text(), 'Upload a file'); - }); - - it('should setup the file upload with relevant options', function () { - this.module.initialize(); - this.module.setupFileUpload(); - - assert.called(jQuery.fn.fileupload); - assert.calledWith(jQuery.fn.fileupload, { - type: 'POST', - paramName: 'file', - forceIframeTransport: true, // Required for XDomain request. - replaceFileInput: true, - autoUpload: false, - add: this.module._onUploadAdd, - send: this.module._onUploadSend, - done: this.module._onUploadDone, - fail: this.module._onUploadFail, - always: this.module._onUploadComplete - }); - }); - }); - - describe('.loading(show)', function () { - it('should add a loading class to the upload element', function () { - this.module.loading(); - - assert.ok(this.module.upload.hasClass('loading')); - }); - - it('should remove the loading class if false is passed as an argument', function () { - this.module.upload.addClass('loading'); - this.module.loading(); - - assert.ok(!this.module.upload.hasClass('loading')); - }); - }); - - describe('.authenticate(key, data)', function () { - beforeEach(function () { - this.fakeThen = sinon.spy(); - this.fakeProxy = sinon.stub(jQuery, 'proxy').returns('onsuccess'); - - this.target = sinon.stub(this.sandbox.client, 'getStorageAuth'); - this.target.returns({ - then: this.fakeThen - }); - }); - - afterEach(function () { - jQuery.proxy.restore(); - }); - - it('should request authentication for the upload', function () { - this.module.authenticate('test', {}); - assert.called(this.target); - assert.calledWith(this.target, 'test'); - }); - - it('should register success and error callbacks', function () { - this.module.authenticate('test', {}); - assert.called(this.fakeThen); - assert.calledWith(this.fakeThen, 'onsuccess', this.module._onAuthError); - }); - - it('should save the key on the data object', function () { - var data = {}; - - this.module.authenticate('test', data); - - assert.equal(data.key, 'test'); - }); - }); - - describe('.lookupMetadata(key, data)', function () { - beforeEach(function () { - this.fakeThen = sinon.spy(); - this.fakeProxy = sinon.stub(jQuery, 'proxy').returns('onsuccess'); - - this.target = sinon.stub(this.sandbox.client, 'getStorageMetadata'); - this.target.returns({ - then: this.fakeThen - }); - }); - - afterEach(function () { - jQuery.proxy.restore(); - }); - - it('should request metadata for the upload key', function () { - this.module.lookupMetadata('test', {}); - assert.called(this.target); - assert.calledWith(this.target, 'test'); - }); - - it('should register success and error callbacks', function () { - this.module.lookupMetadata('test', {}); - assert.called(this.fakeThen); - assert.calledWith(this.fakeThen, 'onsuccess', this.module._onMetadataError); - }); - }); - - describe('.notify(message, type)', function () { - it('should call the sandbox.notify() method', function () { - var target = sinon.stub(this.sandbox, 'notify'); - - this.module.notify('this is an example message', 'info'); - - assert.called(target); - assert.calledWith(target, 'An Error Occurred', 'this is an example message', 'info'); - }); - }); - - describe('.generateKey(file)', function () { - it('should generate a unique filename prefixed with a timestamp', function () { - var now = new Date(); - var date = jQuery.date.toISOString(now); - var clock = sinon.useFakeTimers(now.getTime()); - var target = this.module.generateKey('this is my file.png'); - - assert.equal(target, date + '/this-is-my-file.png'); - - clock.restore(); - }); - }); - - describe('._onUploadAdd(event, data)', function () { - beforeEach(function () { - this.target = sinon.stub(this.module, 'authenticate'); - sinon.stub(this.module, 'generateKey').returns('stubbed'); - }); - - it('should authenticate the upload if a file is provided', function () { - var data = {files: [{name: 'my_file.jpg'}]}; - this.module._onUploadAdd({}, data); - - assert.called(this.target); - assert.calledWith(this.target, 'stubbed', data); - }); - - it('should not authenticate the upload if no file is provided', function () { - var data = {files: []}; - this.module._onUploadAdd({}, data); - - assert.notCalled(this.target); - }); - }); - - describe('._onUploadSend()', function () { - it('should display the loading spinner', function () { - var target = sinon.stub(this.module, 'loading'); - this.module._onUploadSend({}, {}); - - assert.called(target); - }); - }); - - describe('._onUploadDone()', function () { - it('should request the metadata for the file', function () { - var target = sinon.stub(this.module, 'lookupMetadata'); - this.module._onUploadDone({}, {result: {}}); - - assert.called(target); - }); - - it('should call the fail handler if the "result" key in the data is undefined', function () { - var target = sinon.stub(this.module, '_onUploadFail'); - this.module._onUploadDone({}, {result: undefined}); - - assert.called(target); - }); - - it('should call the fail handler if the "result" object has an "error" key', function () { - var target = sinon.stub(this.module, '_onUploadFail'); - this.module._onUploadDone({}, {result: {error: 'failed'}}); - - assert.called(target); - }); - }); - - describe('._onUploadComplete()', function () { - it('should hide the loading spinner', function () { - var target = sinon.stub(this.module, 'loading'); - this.module._onUploadComplete({}, {}); - - assert.called(target); - assert.calledWith(target, false); - }); - }); - - describe('._onAuthSuccess()', function () { - beforeEach(function () { - this.target = { - submit: sinon.spy() - }; - - this.response = { - action: 'action', - fields: [{name: 'name', value: 'value'}] - }; - }); - - it('should set the data url', function () { - this.module._onAuthSuccess(this.target, this.response); - - assert.equal(this.target.url, this.response.action); - }); - - it('should set the additional form data', function () { - this.module._onAuthSuccess(this.target, this.response); - - assert.deepEqual(this.target.formData, this.response.fields); - }); - - it('should merge the form data with the options', function () { - this.module.options.form.params = [{name: 'option', value: 'option'}]; - this.module._onAuthSuccess(this.target, this.response); - - assert.deepEqual(this.target.formData, [{name: 'option', value: 'option'}, {name: 'name', value: 'value'}]); - }); - - it('should call data.submit()', function () { - this.module._onAuthSuccess(this.target, this.response); - assert.called(this.target.submit); - }); - }); - - describe('._onMetadataSuccess()', function () { - it('should publish the "resource:uploaded" event', function () { - var resource = {url: 'http://', name: 'My File'}; - var target = sinon.stub(this.sandbox, 'publish'); - - sinon.stub(this.sandbox.client, 'convertStorageMetadataToResource').returns(resource); - - this.module._onMetadataSuccess(); - - assert.called(target); - assert.calledWith(target, "resource:uploaded", resource); - }); - }); -}); diff --git a/ckan/public-bs2/base/test/spec/notify.spec.js b/ckan/public-bs2/base/test/spec/notify.spec.js deleted file mode 100644 index 48a2e612691..00000000000 --- a/ckan/public-bs2/base/test/spec/notify.spec.js +++ /dev/null @@ -1,46 +0,0 @@ -/*globals describe beforeEach afterEach it assert sinon ckan jQuery */ -describe('ckan.notify()', function () { - beforeEach(function () { - this.element = jQuery('
'); - this.fixture.append(this.element); - - ckan.notify.el = this.element; - }); - - it('should append a notification to the element', function () { - ckan.notify('test'); - assert.equal(this.element.children().length, 1, 'should be one child'); - ckan.notify('test'); - assert.equal(this.element.children().length, 2, 'should be two children'); - }); - - it('should append a notification title', function () { - ckan.notify('test'); - assert.equal(this.element.find('strong').text(), 'test'); - }); - - it('should append a notification body', function () { - ckan.notify('test', 'this is a message'); - assert.equal(this.element.find('span').text(), 'this is a message'); - }); - - it('should escape all content', function () { - ckan.notify(' - - - - - - - - - - - - - - - diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tests/css-tests.css b/ckan/public-bs2/base/vendor/bootstrap/less/tests/css-tests.css deleted file mode 100755 index 0f5604ee686..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tests/css-tests.css +++ /dev/null @@ -1,150 +0,0 @@ -/*! - * Bootstrap CSS Tests - */ - - -/* Remove background image */ -body { - background-image: none; -} - -/* Space out subhead */ -.subhead { - margin-bottom: 36px; -} -/*h4 { - margin-bottom: 5px; -} -*/ - -.type-test { - margin-bottom: 20px; - padding: 0 20px 20px; - background: url(../../docs/assets/img/grid-baseline-20px.png); -} -.type-test h1, -.type-test h2, -.type-test h3, -.type-test h4, -.type-test h5, -.type-test h6 { - background-color: rgba(255,0,0,.2); -} - - -/* colgroup tests */ -.col1 { - background-color: rgba(255,0,0,.1); -} -.col2 { - background-color: rgba(0,255,0,.1); -} -.col3 { - background-color: rgba(0,0,255,.1); -} - - -/* Fluid row inputs */ -#rowInputs .row > [class*=span], -#fluidRowInputs .row-fluid > [class*=span] { - background-color: rgba(255,0,0,.1); -} - - -/* Fluid grid */ -.fluid-grid { - margin-bottom: 45px; -} -.fluid-grid .row { - height: 40px; - padding-top: 10px; - margin-top: 10px; - color: #ddd; - text-align: center; -} -.fluid-grid .span1 { - background-color: #999; -} - - -/* Gradients */ - -[class^="gradient-"] { - width: 100%; - height: 400px; - margin: 20px 0; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.gradient-horizontal { - background-color: #333333; - background-image: -moz-linear-gradient(left, #555555, #333333); - background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#555555), to(#333333)); - background-image: -webkit-linear-gradient(left, #555555, #333333); - background-image: -o-linear-gradient(left, #555555, #333333); - background-image: linear-gradient(to right, #555555, #333333); - background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=1); -} - -.gradient-vertical { - background-color: #474747; - background-image: -moz-linear-gradient(top, #555555, #333333); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); - background-image: -webkit-linear-gradient(top, #555555, #333333); - background-image: -o-linear-gradient(top, #555555, #333333); - background-image: linear-gradient(to bottom, #555555, #333333); - background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0); -} - -.gradient-directional { - background-color: #333333; - background-image: -moz-linear-gradient(45deg, #555555, #333333); - background-image: -webkit-linear-gradient(45deg, #555555, #333333); - background-image: -o-linear-gradient(45deg, #555555, #333333); - background-image: linear-gradient(45deg, #555555, #333333); - background-repeat: repeat-x; -} - -.gradient-vertical-three { - background-color: #8940a5; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00b3ee), color-stop(50%, #7a43b6), to(#c3325f)); - background-image: -webkit-linear-gradient(#00b3ee, #7a43b6 50%, #c3325f); - background-image: -moz-linear-gradient(top, #00b3ee, #7a43b6 50%, #c3325f); - background-image: -o-linear-gradient(#00b3ee, #7a43b6 50%, #c3325f); - background-image: linear-gradient(#00b3ee, #7a43b6 50%, #c3325f); - background-repeat: no-repeat; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff00b3ee', endColorstr='#ffc3325f', GradientType=0); -} - -.gradient-radial { - background-color: #333333; - background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(#555555), to(#333333)); - background-image: -webkit-radial-gradient(circle, #555555, #333333); - background-image: -moz-radial-gradient(circle, #555555, #333333); - background-image: -o-radial-gradient(circle, #555555, #333333); - background-repeat: no-repeat; -} - -.gradient-striped { - background-color: #555555; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.gradient-horizontal-three { - background-color: #00b3ee; - background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(#00b3ee), color-stop(50%, #7a43b6), to(#c3325f)); - background-image: -webkit-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f); - background-image: -moz-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f); - background-image: -o-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f); - background-image: linear-gradient(to right, #00b3ee, #7a43b6 50%, #c3325f); - background-repeat: no-repeat; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00b3ee', endColorstr='#c3325f', GradientType=0); -} diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tests/css-tests.html b/ckan/public-bs2/base/vendor/bootstrap/less/tests/css-tests.html deleted file mode 100755 index eb8891ee298..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tests/css-tests.html +++ /dev/null @@ -1,1399 +0,0 @@ - - - - - CSS Tests · Twitter Bootstrap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

CSS Tests

-

One stop shop for quick debugging and edge-case tests of CSS.

-
-
- - -
- -
- - - - - - - -
-
-
-

h1. Heading 1

-

h2. Heading 2

-

h3. Heading 3

-

h4. Heading 4

-
h5. Heading 5
-
h6. Heading 6
-

Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-
-
-
-
-

h1. Heading 1

-

Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-

h2. Heading 2

-

Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-

h3. Heading 3

-

Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-

h4. Heading 4

-

Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-
h5. Heading 5
-

Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-
h6. Heading 6
-

Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-
-
-
- - - - - - - -
-
- -
-
- -
-
- -
-
- -
- -
-
- -
-
- -
-
- -
-
- -

- - - - - - - - -
-
-
12 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
-
-
11 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
1 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
-
-
10 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
2 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
-
-
9 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
3 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
-
-
8 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
4 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
-
-
7 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
5 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
-
-
6 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
6 -
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
-
- - - - - - - -
-
-

Bordered without thead

- - - - - - - - - - - - - - - - - - -
123
123
123
-

Bordered without thead, with caption

- - - - - - - - - - - - - - - - - - - -
Table caption
123
123
123
-

Bordered without thead, with colgroup

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
123
123
123
369
-

Bordered with thead, with colgroup

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ABC
123
123
123
369
-
-
-

Bordered with thead and caption

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table caption
123
123
123
123
369
-

Bordered with rowspan and colspan

- - - - - - - - - - - - - - - - - - - - - - - - - - -
123
1 and 23
123
13
2 and 3
-
-
- - -

Grid sizing

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
123
1 and 23
123
13
2 and 3
-
-
- -

Nesting and striping

- - - - - - - - - - - -
Test
- - - - - - - - - - - - - - - - - - - - - -
TestTest
- test - - test -
- test - - test -
- test - - test -
-
- -

Fluid grid sizing

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
123
1 and 23
123
13
2 and 3
-
-
- - - - - - - -

Buttons and button groups

- - - - - - -

Horizontal form errors

-
-
- -
- - Please correct the error -
-
-
- -
-
-

Prepend and append on inputs

-
-
-
- @ - -
-
-
-
- - @ -
-
-
-
- $ - - .00 -
-
-
-
-
-

Prepend and append with uneditable

-
-
- $ - Some value here -
-
- Some value here - .00 -
-
- $ - Some value here - .00 -
-
-
-
-

Prepend with type="submit"

- -
- - -
-
- - - -
-
-
- -

Fluid prepended and appended inputs

-
-
-
-
-
- @ -
-
-
-
- @ -
-
-
-
- $.00 -
-
-
-
-
- -

Fixed row with inputs

-

Inputs should not extend past the light red background, set on their parent, a .span* column.

- -
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -

Fluid row with inputs

-

Inputs should not extend past the light red background, set on their parent, a .span* column.

-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
- -
- -

Inline form in fluid row

- -
-
-
- - - - -
-
-
- - -
- - -

Fluid textarea at .span12

-
-
- -
-
- - -
- - -

Selects

-
- -
- - -
- - - - - - - - -

Dropdown link with hash URL

- - -

Dropdown link with custom URL and data-target

- - -

Dropdown on a button

- - -
- - - - - - -

Default thumbnails (no grid sizing)

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
- - - -

Standard grid sizing

- - -

Fluid thumbnails

-
-
- -
-
- - - - - - - -
- -
-
-

I'm in Section 1.

- -
- -
-
-

I'm in Section 1.1.

-
-
-

I'm in Section 1.2.

-
-
-

I'm in Section 1.3.

-
-
-
-
-
-

Howdy, I'm in Section 2.

-
-
-

What up girl, this is Section 3.

-
-
-
- -
- - - - - - -
-
-

Inline label

-

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Maecenas sed diam Label name eget risus varius blandit sit amet non magna. Fusce .class-name dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

-
-
-
- - Hey! Read this. -
-
-
- - -
-
- -
- - - - - - - - - - - - - -
- Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. - -
- - - - -
-
- -

Mini buttons: text and icon

-
- - -
- -
- - - - - - - -

Visible on...

-
    -
  • Phone✔ Phone
  • -
  • Tablet✔ Tablet
  • -
  • Desktop✔ Desktop
  • -
-
    -
  • Phone + Tablet✔ Phone + Tablet
  • -
  • Tablet + Desktop✔ Tablet + Desktop
  • -
  • All✔ All
  • -
- -

Hidden on...

-
    -
  • Phone✔ Phone
  • -
  • Tablet✔ Tablet
  • -
  • Desktop✔ Desktop
  • -
-
    -
  • Phone + Tablet✔ Phone + Tablet
  • -
  • Tablet + Desktop✔ Tablet + Desktop
  • -
  • All✔ All
  • -
- - - - - - - -

Horizontal

-
- -

Vertical

-
- -

Directional

-
- -

Three colors

-
- -

Radial

-
- -

Striped

-
- -

Horizontal three colors

-
- - - - - -

Alert default

-
- - Alert! Best check yourself, you're not looking too good. -
-
- -

Alert! Best check yourself, you're not looking too good.

-
- -

Success

-
- - Success! Best check yourself, you're not looking too good. -
-
- -

Success! Best check yourself, you're not looking too good.

-
- -

Info

-
- - Info! Best check yourself, you're not looking too good. -
-
- -

Info! Best check yourself, you're not looking too good.

-
- -

Warning

-
- - Warning! Best check yourself, you're not looking too good. -
-
- -

Warning! Best check yourself, you're not looking too good.

-
- -

Error

-
- - Error! Best check yourself, you're not looking too good. -
-
- -

Error! Best check yourself, you're not looking too good.

-
- - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tests/forms-responsive.html b/ckan/public-bs2/base/vendor/bootstrap/less/tests/forms-responsive.html deleted file mode 100755 index c3e208d0215..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tests/forms-responsive.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Bootstrap, from Twitter - - - - - - - - - - - - - - - - - - - - - - -
- - - -

Vertical alignment

- - - span1 - -

Width across elements

-
- -
-
- -
-
- span2 -
- - - - -
- - - span1 -
- -
- - - diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tests/forms.html b/ckan/public-bs2/base/vendor/bootstrap/less/tests/forms.html deleted file mode 100755 index a63d728a008..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tests/forms.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - Bootstrap, from Twitter - - - - - - - - - - - - - - - - - - - - - - -
- - - -
-
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
-
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
-
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
-
- -
- - - diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar-fixed-top.html b/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar-fixed-top.html deleted file mode 100755 index 6f4be2dfc63..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar-fixed-top.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - Bootstrap, from Twitter - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-

Navbar example

-

This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.

-

- View navbar docs » -

-
- -
- - - - - - - - - - - - - - - - - - - diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar-static-top.html b/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar-static-top.html deleted file mode 100755 index 1881e131ae3..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar-static-top.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - Bootstrap, from Twitter - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-

Navbar example

-

This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.

-

- View navbar docs » -

-
- -
- - - - - - - - - - - - - - - - - - - diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar.html b/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar.html deleted file mode 100755 index 79c302f6222..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tests/navbar.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - Bootstrap, from Twitter - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Navbar example

-

This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.

-

- View navbar docs » -

-
- -
- - - - - - - - - - - - - - - - - - - diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/thumbnails.less b/ckan/public-bs2/base/vendor/bootstrap/less/thumbnails.less deleted file mode 100755 index 4fd07d25337..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/thumbnails.less +++ /dev/null @@ -1,53 +0,0 @@ -// -// Thumbnails -// -------------------------------------------------- - - -// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files - -// Make wrapper ul behave like the grid -.thumbnails { - margin-left: -@gridGutterWidth; - list-style: none; - .clearfix(); -} -// Fluid rows have no left margin -.row-fluid .thumbnails { - margin-left: 0; -} - -// Float li to make thumbnails appear in a row -.thumbnails > li { - float: left; // Explicity set the float since we don't require .span* classes - margin-bottom: @baseLineHeight; - margin-left: @gridGutterWidth; -} - -// The actual thumbnail (can be `a` or `div`) -.thumbnail { - display: block; - padding: 4px; - line-height: @baseLineHeight; - border: 1px solid #ddd; - .border-radius(@baseBorderRadius); - .box-shadow(0 1px 3px rgba(0,0,0,.055)); - .transition(all .2s ease-in-out); -} -// Add a hover/focus state for linked versions only -a.thumbnail:hover, -a.thumbnail:focus { - border-color: @linkColor; - .box-shadow(0 1px 4px rgba(0,105,214,.25)); -} - -// Images and captions -.thumbnail > img { - display: block; - max-width: 100%; - margin-left: auto; - margin-right: auto; -} -.thumbnail .caption { - padding: 9px; - color: @gray; -} diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/tooltip.less b/ckan/public-bs2/base/vendor/bootstrap/less/tooltip.less deleted file mode 100755 index 83d5f2bd765..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/tooltip.less +++ /dev/null @@ -1,70 +0,0 @@ -// -// Tooltips -// -------------------------------------------------- - - -// Base class -.tooltip { - position: absolute; - z-index: @zindexTooltip; - display: block; - visibility: visible; - font-size: 11px; - line-height: 1.4; - .opacity(0); - &.in { .opacity(80); } - &.top { margin-top: -3px; padding: 5px 0; } - &.right { margin-left: 3px; padding: 0 5px; } - &.bottom { margin-top: 3px; padding: 5px 0; } - &.left { margin-left: -3px; padding: 0 5px; } -} - -// Wrapper for the tooltip content -.tooltip-inner { - max-width: 200px; - padding: 8px; - color: @tooltipColor; - text-align: center; - text-decoration: none; - background-color: @tooltipBackground; - .border-radius(@baseBorderRadius); -} - -// Arrows -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip { - &.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -@tooltipArrowWidth; - border-width: @tooltipArrowWidth @tooltipArrowWidth 0; - border-top-color: @tooltipArrowColor; - } - &.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -@tooltipArrowWidth; - border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0; - border-right-color: @tooltipArrowColor; - } - &.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -@tooltipArrowWidth; - border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth; - border-left-color: @tooltipArrowColor; - } - &.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -@tooltipArrowWidth; - border-width: 0 @tooltipArrowWidth @tooltipArrowWidth; - border-bottom-color: @tooltipArrowColor; - } -} diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/type.less b/ckan/public-bs2/base/vendor/bootstrap/less/type.less deleted file mode 100755 index 337138ac8ef..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/type.less +++ /dev/null @@ -1,247 +0,0 @@ -// -// Typography -// -------------------------------------------------- - - -// Body text -// ------------------------- - -p { - margin: 0 0 @baseLineHeight / 2; -} -.lead { - margin-bottom: @baseLineHeight; - font-size: @baseFontSize * 1.5; - font-weight: 200; - line-height: @baseLineHeight * 1.5; -} - - -// Emphasis & misc -// ------------------------- - -// Ex: 14px base font * 85% = about 12px -small { font-size: 85%; } - -strong { font-weight: bold; } -em { font-style: italic; } -cite { font-style: normal; } - -// Utility classes -.muted { color: @grayLight; } -a.muted:hover, -a.muted:focus { color: darken(@grayLight, 10%); } - -.text-warning { color: @warningText; } -a.text-warning:hover, -a.text-warning:focus { color: darken(@warningText, 10%); } - -.text-error { color: @errorText; } -a.text-error:hover, -a.text-error:focus { color: darken(@errorText, 10%); } - -.text-info { color: @infoText; } -a.text-info:hover, -a.text-info:focus { color: darken(@infoText, 10%); } - -.text-success { color: @successText; } -a.text-success:hover, -a.text-success:focus { color: darken(@successText, 10%); } - -.text-left { text-align: left; } -.text-right { text-align: right; } -.text-center { text-align: center; } - - -// Headings -// ------------------------- - -h1, h2, h3, h4, h5, h6 { - margin: (@baseLineHeight / 2) 0; - font-family: @headingsFontFamily; - font-weight: @headingsFontWeight; - line-height: @baseLineHeight; - color: @headingsColor; - text-rendering: optimizelegibility; // Fix the character spacing for headings - small { - font-weight: normal; - line-height: 1; - color: @grayLight; - } -} - -h1, -h2, -h3 { line-height: @baseLineHeight * 2; } - -h1 { font-size: @baseFontSize * 2.75; } // ~38px -h2 { font-size: @baseFontSize * 2.25; } // ~32px -h3 { font-size: @baseFontSize * 1.75; } // ~24px -h4 { font-size: @baseFontSize * 1.25; } // ~18px -h5 { font-size: @baseFontSize; } -h6 { font-size: @baseFontSize * 0.85; } // ~12px - -h1 small { font-size: @baseFontSize * 1.75; } // ~24px -h2 small { font-size: @baseFontSize * 1.25; } // ~18px -h3 small { font-size: @baseFontSize; } -h4 small { font-size: @baseFontSize; } - - -// Page header -// ------------------------- - -.page-header { - padding-bottom: (@baseLineHeight / 2) - 1; - margin: @baseLineHeight 0 (@baseLineHeight * 1.5); - border-bottom: 1px solid @grayLighter; -} - - - -// Lists -// -------------------------------------------------- - -// Unordered and Ordered lists -ul, ol { - padding: 0; - margin: 0 0 @baseLineHeight / 2 25px; -} -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} -li { - line-height: @baseLineHeight; -} - -// Remove default list styles -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} - -// Single-line list items -ul.inline, -ol.inline { - margin-left: 0; - list-style: none; - > li { - display: inline-block; - .ie7-inline-block(); - padding-left: 5px; - padding-right: 5px; - } -} - -// Description Lists -dl { - margin-bottom: @baseLineHeight; -} -dt, -dd { - line-height: @baseLineHeight; -} -dt { - font-weight: bold; -} -dd { - margin-left: @baseLineHeight / 2; -} -// Horizontal layout (like forms) -.dl-horizontal { - .clearfix(); // Ensure dl clears floats if empty dd elements present - dt { - float: left; - width: @horizontalComponentOffset - 20; - clear: left; - text-align: right; - .text-overflow(); - } - dd { - margin-left: @horizontalComponentOffset; - } -} - -// MISC -// ---- - -// Horizontal rules -hr { - margin: @baseLineHeight 0; - border: 0; - border-top: 1px solid @hrBorder; - border-bottom: 1px solid @white; -} - -// Abbreviations and acronyms -abbr[title], -// Added data-* attribute to help out our tooltip plugin, per https://github.com/twitter/bootstrap/issues/5257 -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted @grayLight; -} -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} - -// Blockquotes -blockquote { - padding: 0 0 0 15px; - margin: 0 0 @baseLineHeight; - border-left: 5px solid @grayLighter; - p { - margin-bottom: 0; - font-size: @baseFontSize * 1.25; - font-weight: 300; - line-height: 1.25; - } - small { - display: block; - line-height: @baseLineHeight; - color: @grayLight; - &:before { - content: '\2014 \00A0'; - } - } - - // Float right with text-align: right - &.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid @grayLighter; - border-left: 0; - p, - small { - text-align: right; - } - small { - &:before { - content: ''; - } - &:after { - content: '\00A0 \2014'; - } - } - } -} - -// Quotes -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} - -// Addresses -address { - display: block; - margin-bottom: @baseLineHeight; - font-style: normal; - line-height: @baseLineHeight; -} diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/utilities.less b/ckan/public-bs2/base/vendor/bootstrap/less/utilities.less deleted file mode 100755 index 314b4ffdb45..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/utilities.less +++ /dev/null @@ -1,30 +0,0 @@ -// -// Utility classes -// -------------------------------------------------- - - -// Quick floats -.pull-right { - float: right; -} -.pull-left { - float: left; -} - -// Toggling content -.hide { - display: none; -} -.show { - display: block; -} - -// Visibility -.invisible { - visibility: hidden; -} - -// For Affix plugin -.affix { - position: fixed; -} diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/variables.less b/ckan/public-bs2/base/vendor/bootstrap/less/variables.less deleted file mode 100755 index 31c131b1e23..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/variables.less +++ /dev/null @@ -1,301 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -// Global values -// -------------------------------------------------- - - -// Grays -// ------------------------- -@black: #000; -@grayDarker: #222; -@grayDark: #333; -@gray: #555; -@grayLight: #999; -@grayLighter: #eee; -@white: #fff; - - -// Accent colors -// ------------------------- -@blue: #049cdb; -@blueDark: #0064cd; -@green: #46a546; -@red: #9d261d; -@yellow: #ffc40d; -@orange: #f89406; -@pink: #c3325f; -@purple: #7a43b6; - - -// Scaffolding -// ------------------------- -@bodyBackground: @white; -@textColor: @grayDark; - - -// Links -// ------------------------- -@linkColor: #08c; -@linkColorHover: darken(@linkColor, 15%); - - -// Typography -// ------------------------- -@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; -@serifFontFamily: Georgia, "Times New Roman", Times, serif; -@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace; - -@baseFontSize: 14px; -@baseFontFamily: @sansFontFamily; -@baseLineHeight: 20px; -@altFontFamily: @serifFontFamily; - -@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily -@headingsFontWeight: bold; // instead of browser default, bold -@headingsColor: inherit; // empty to use BS default, @textColor - - -// Component sizing -// ------------------------- -// Based on 14px font-size and 20px line-height - -@fontSizeLarge: @baseFontSize * 1.25; // ~18px -@fontSizeSmall: @baseFontSize * 0.85; // ~12px -@fontSizeMini: @baseFontSize * 0.75; // ~11px - -@paddingLarge: 11px 19px; // 44px -@paddingSmall: 2px 10px; // 26px -@paddingMini: 0 6px; // 22px - -@baseBorderRadius: 4px; -@borderRadiusLarge: 6px; -@borderRadiusSmall: 3px; - - -// Tables -// ------------------------- -@tableBackground: transparent; // overall background-color -@tableBackgroundAccent: #f9f9f9; // for striping -@tableBackgroundHover: #f5f5f5; // for hover -@tableBorder: #ddd; // table and cell border - -// Buttons -// ------------------------- -@btnBackground: @white; -@btnBackgroundHighlight: darken(@white, 10%); -@btnBorder: #ccc; - -@btnPrimaryBackground: @linkColor; -@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%); - -@btnInfoBackground: #5bc0de; -@btnInfoBackgroundHighlight: #2f96b4; - -@btnSuccessBackground: #62c462; -@btnSuccessBackgroundHighlight: #51a351; - -@btnWarningBackground: lighten(@orange, 15%); -@btnWarningBackgroundHighlight: @orange; - -@btnDangerBackground: #ee5f5b; -@btnDangerBackgroundHighlight: #bd362f; - -@btnInverseBackground: #444; -@btnInverseBackgroundHighlight: @grayDarker; - - -// Forms -// ------------------------- -@inputBackground: @white; -@inputBorder: #ccc; -@inputBorderRadius: @baseBorderRadius; -@inputDisabledBackground: @grayLighter; -@formActionsBackground: #f5f5f5; -@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border - - -// Dropdowns -// ------------------------- -@dropdownBackground: @white; -@dropdownBorder: rgba(0,0,0,.2); -@dropdownDividerTop: #e5e5e5; -@dropdownDividerBottom: @white; - -@dropdownLinkColor: @grayDark; -@dropdownLinkColorHover: @white; -@dropdownLinkColorActive: @white; - -@dropdownLinkBackgroundActive: @linkColor; -@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive; - - - -// COMPONENT VARIABLES -// -------------------------------------------------- - - -// Z-index master list -// ------------------------- -// Used for a bird's eye view of components dependent on the z-axis -// Try to avoid customizing these :) -@zindexDropdown: 1000; -@zindexPopover: 1010; -@zindexTooltip: 1030; -@zindexFixedNavbar: 1030; -@zindexModalBackdrop: 1040; -@zindexModal: 1050; - - -// Sprite icons path -// ------------------------- -@iconSpritePath: "../img/glyphicons-halflings.png"; -@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; - - -// Input placeholder text color -// ------------------------- -@placeholderText: @grayLight; - - -// Hr border color -// ------------------------- -@hrBorder: @grayLighter; - - -// Horizontal forms & lists -// ------------------------- -@horizontalComponentOffset: 180px; - - -// Wells -// ------------------------- -@wellBackground: #f5f5f5; - - -// Navbar -// ------------------------- -@navbarCollapseWidth: 979px; -@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1; - -@navbarHeight: 40px; -@navbarBackgroundHighlight: #ffffff; -@navbarBackground: darken(@navbarBackgroundHighlight, 5%); -@navbarBorder: darken(@navbarBackground, 12%); - -@navbarText: #777; -@navbarLinkColor: #777; -@navbarLinkColorHover: @grayDark; -@navbarLinkColorActive: @gray; -@navbarLinkBackgroundHover: transparent; -@navbarLinkBackgroundActive: darken(@navbarBackground, 5%); - -@navbarBrandColor: @navbarLinkColor; - -// Inverted navbar -@navbarInverseBackground: #111111; -@navbarInverseBackgroundHighlight: #222222; -@navbarInverseBorder: #252525; - -@navbarInverseText: @grayLight; -@navbarInverseLinkColor: @grayLight; -@navbarInverseLinkColorHover: @white; -@navbarInverseLinkColorActive: @navbarInverseLinkColorHover; -@navbarInverseLinkBackgroundHover: transparent; -@navbarInverseLinkBackgroundActive: @navbarInverseBackground; - -@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%); -@navbarInverseSearchBackgroundFocus: @white; -@navbarInverseSearchBorder: @navbarInverseBackground; -@navbarInverseSearchPlaceholderColor: #ccc; - -@navbarInverseBrandColor: @navbarInverseLinkColor; - - -// Pagination -// ------------------------- -@paginationBackground: #fff; -@paginationBorder: #ddd; -@paginationActiveBackground: #f5f5f5; - - -// Hero unit -// ------------------------- -@heroUnitBackground: @grayLighter; -@heroUnitHeadingColor: inherit; -@heroUnitLeadColor: inherit; - - -// Form states and alerts -// ------------------------- -@warningText: #c09853; -@warningBackground: #fcf8e3; -@warningBorder: darken(spin(@warningBackground, -10), 3%); - -@errorText: #b94a48; -@errorBackground: #f2dede; -@errorBorder: darken(spin(@errorBackground, -10), 3%); - -@successText: #468847; -@successBackground: #dff0d8; -@successBorder: darken(spin(@successBackground, -10), 5%); - -@infoText: #3a87ad; -@infoBackground: #d9edf7; -@infoBorder: darken(spin(@infoBackground, -10), 7%); - - -// Tooltips and popovers -// ------------------------- -@tooltipColor: #fff; -@tooltipBackground: #000; -@tooltipArrowWidth: 5px; -@tooltipArrowColor: @tooltipBackground; - -@popoverBackground: #fff; -@popoverArrowWidth: 10px; -@popoverArrowColor: #fff; -@popoverTitleBackground: darken(@popoverBackground, 3%); - -// Special enhancement for popovers -@popoverArrowOuterWidth: @popoverArrowWidth + 1; -@popoverArrowOuterColor: rgba(0,0,0,.25); - - - -// GRID -// -------------------------------------------------- - - -// Default 940px grid -// ------------------------- -@gridColumns: 12; -@gridColumnWidth: 60px; -@gridGutterWidth: 20px; -@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); - -// 1200px min -@gridColumnWidth1200: 70px; -@gridGutterWidth1200: 30px; -@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1)); - -// 768px-979px -@gridColumnWidth768: 42px; -@gridGutterWidth768: 20px; -@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1)); - - -// Fluid grid -// ------------------------- -@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth); -@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth); - -// 1200px min -@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200); -@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200); - -// 768px-979px -@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768); -@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768); diff --git a/ckan/public-bs2/base/vendor/bootstrap/less/wells.less b/ckan/public-bs2/base/vendor/bootstrap/less/wells.less deleted file mode 100755 index 84a744b1c5c..00000000000 --- a/ckan/public-bs2/base/vendor/bootstrap/less/wells.less +++ /dev/null @@ -1,29 +0,0 @@ -// -// Wells -// -------------------------------------------------- - - -// Base class -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: @wellBackground; - border: 1px solid darken(@wellBackground, 7%); - .border-radius(@baseBorderRadius); - .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); - blockquote { - border-color: #ddd; - border-color: rgba(0,0,0,.15); - } -} - -// Sizes -.well-large { - padding: 24px; - .border-radius(@borderRadiusLarge); -} -.well-small { - padding: 9px; - .border-radius(@borderRadiusSmall); -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/css/font-awesome.css b/ckan/public-bs2/base/vendor/font-awesome/css/font-awesome.css deleted file mode 100644 index 048cff97398..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/css/font-awesome.css +++ /dev/null @@ -1,1338 +0,0 @@ -/*! - * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.0.3'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font-family: FontAwesome; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.3333333333333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.2857142857142858em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.142857142857143em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.142857142857143em; - width: 2.142857142857143em; - top: 0.14285714285714285em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.8571428571428572em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: spin 2s infinite linear; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; -} -@-moz-keyframes spin { - 0% { - -moz-transform: rotate(0deg); - } - 100% { - -moz-transform: rotate(359deg); - } -} -@-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - } -} -@-o-keyframes spin { - 0% { - -o-transform: rotate(0deg); - } - 100% { - -o-transform: rotate(359deg); - } -} -@-ms-keyframes spin { - 0% { - -ms-transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); - } -} -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - -ms-transform: rotate(270deg); - -o-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -moz-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -moz-transform: scale(1, -1); - -ms-transform: scale(1, -1); - -o-transform: scale(1, -1); - transform: scale(1, -1); -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-asc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-desc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-reply-all:before { - content: "\f122"; -} -.fa-mail-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/css/font-awesome.min.css b/ckan/public-bs2/base/vendor/font-awesome/css/font-awesome.min.css deleted file mode 100644 index 449d6ac551a..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.0.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857142858em;text-align:center}.fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-reply-all:before{content:"\f122"}.fa-mail-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"} \ No newline at end of file diff --git a/ckan/public-bs2/base/vendor/font-awesome/fonts/FontAwesome.otf b/ckan/public-bs2/base/vendor/font-awesome/fonts/FontAwesome.otf deleted file mode 100644 index 8b0f54e47e1..00000000000 Binary files a/ckan/public-bs2/base/vendor/font-awesome/fonts/FontAwesome.otf and /dev/null differ diff --git a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.eot b/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.eot deleted file mode 100755 index 7c79c6a6bc9..00000000000 Binary files a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.svg b/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.svg deleted file mode 100755 index 45fdf338301..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,414 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.ttf deleted file mode 100755 index e89738de5ea..00000000000 Binary files a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.woff b/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.woff deleted file mode 100755 index 8c1748aab7a..00000000000 Binary files a/ckan/public-bs2/base/vendor/font-awesome/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/bordered-pulled.less b/ckan/public-bs2/base/vendor/font-awesome/less/bordered-pulled.less deleted file mode 100644 index 0c90eb5672b..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/bordered-pulled.less +++ /dev/null @@ -1,16 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.@{fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em @fa-border-color; - border-radius: .1em; -} - -.pull-right { float: right; } -.pull-left { float: left; } - -.@{fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/core.less b/ckan/public-bs2/base/vendor/font-awesome/less/core.less deleted file mode 100644 index 6d223bc2f00..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/core.less +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.@{fa-css-prefix} { - display: inline-block; - font-family: FontAwesome; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/extras.less b/ckan/public-bs2/base/vendor/font-awesome/less/extras.less deleted file mode 100644 index 89faf70fc9b..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/extras.less +++ /dev/null @@ -1,2 +0,0 @@ -// Extras -// -------------------------- diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/fixed-width.less b/ckan/public-bs2/base/vendor/font-awesome/less/fixed-width.less deleted file mode 100644 index 110289f2f4b..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/fixed-width.less +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.@{fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/font-awesome.less b/ckan/public-bs2/base/vendor/font-awesome/less/font-awesome.less deleted file mode 100644 index 96d2f222544..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/font-awesome.less +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "spinning"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/icons.less b/ckan/public-bs2/base/vendor/font-awesome/less/icons.less deleted file mode 100644 index bf0f856fcbb..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/icons.less +++ /dev/null @@ -1,412 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } -.@{fa-css-prefix}-music:before { content: @fa-var-music; } -.@{fa-css-prefix}-search:before { content: @fa-var-search; } -.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } -.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } -.@{fa-css-prefix}-star:before { content: @fa-var-star; } -.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } -.@{fa-css-prefix}-user:before { content: @fa-var-user; } -.@{fa-css-prefix}-film:before { content: @fa-var-film; } -.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } -.@{fa-css-prefix}-th:before { content: @fa-var-th; } -.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } -.@{fa-css-prefix}-check:before { content: @fa-var-check; } -.@{fa-css-prefix}-times:before { content: @fa-var-times; } -.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } -.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } -.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } -.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } -.@{fa-css-prefix}-gear:before, -.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } -.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } -.@{fa-css-prefix}-home:before { content: @fa-var-home; } -.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } -.@{fa-css-prefix}-road:before { content: @fa-var-road; } -.@{fa-css-prefix}-download:before { content: @fa-var-download; } -.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } -.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } -.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } -.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } -.@{fa-css-prefix}-rotate-right:before, -.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } -.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } -.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } -.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } -.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } -.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } -.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } -.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } -.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } -.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } -.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } -.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } -.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } -.@{fa-css-prefix}-book:before { content: @fa-var-book; } -.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } -.@{fa-css-prefix}-print:before { content: @fa-var-print; } -.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } -.@{fa-css-prefix}-font:before { content: @fa-var-font; } -.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } -.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } -.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } -.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } -.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } -.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } -.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } -.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } -.@{fa-css-prefix}-list:before { content: @fa-var-list; } -.@{fa-css-prefix}-dedent:before, -.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } -.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } -.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } -.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } -.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } -.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } -.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } -.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } -.@{fa-css-prefix}-edit:before, -.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } -.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } -.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } -.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } -.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } -.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } -.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } -.@{fa-css-prefix}-play:before { content: @fa-var-play; } -.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } -.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } -.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } -.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } -.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } -.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } -.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } -.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } -.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } -.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } -.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } -.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } -.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } -.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } -.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } -.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } -.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } -.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } -.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } -.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } -.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } -.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } -.@{fa-css-prefix}-mail-forward:before, -.@{fa-css-prefix}-share:before { content: @fa-var-share; } -.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } -.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } -.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } -.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } -.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } -.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } -.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } -.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } -.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } -.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } -.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } -.@{fa-css-prefix}-warning:before, -.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } -.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } -.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } -.@{fa-css-prefix}-random:before { content: @fa-var-random; } -.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } -.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } -.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } -.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } -.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } -.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } -.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } -.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } -.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } -.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } -.@{fa-css-prefix}-bar-chart-o:before { content: @fa-var-bar-chart-o; } -.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } -.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } -.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } -.@{fa-css-prefix}-key:before { content: @fa-var-key; } -.@{fa-css-prefix}-gears:before, -.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } -.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } -.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } -.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } -.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } -.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } -.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } -.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } -.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } -.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } -.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } -.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } -.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } -.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } -.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } -.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } -.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } -.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } -.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } -.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } -.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } -.@{fa-css-prefix}-github:before { content: @fa-var-github; } -.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } -.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } -.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } -.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } -.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } -.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } -.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } -.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } -.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } -.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } -.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } -.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } -.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } -.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } -.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } -.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } -.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } -.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } -.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } -.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } -.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } -.@{fa-css-prefix}-group:before, -.@{fa-css-prefix}-users:before { content: @fa-var-users; } -.@{fa-css-prefix}-chain:before, -.@{fa-css-prefix}-link:before { content: @fa-var-link; } -.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } -.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } -.@{fa-css-prefix}-cut:before, -.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } -.@{fa-css-prefix}-copy:before, -.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } -.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } -.@{fa-css-prefix}-save:before, -.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } -.@{fa-css-prefix}-square:before { content: @fa-var-square; } -.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } -.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } -.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } -.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } -.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } -.@{fa-css-prefix}-table:before { content: @fa-var-table; } -.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } -.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } -.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } -.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } -.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } -.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } -.@{fa-css-prefix}-money:before { content: @fa-var-money; } -.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } -.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } -.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } -.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } -.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } -.@{fa-css-prefix}-unsorted:before, -.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } -.@{fa-css-prefix}-sort-down:before, -.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } -.@{fa-css-prefix}-sort-up:before, -.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } -.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } -.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } -.@{fa-css-prefix}-rotate-left:before, -.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } -.@{fa-css-prefix}-legal:before, -.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } -.@{fa-css-prefix}-dashboard:before, -.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } -.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } -.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } -.@{fa-css-prefix}-flash:before, -.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } -.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } -.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } -.@{fa-css-prefix}-paste:before, -.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } -.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } -.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } -.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } -.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } -.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } -.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } -.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } -.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } -.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } -.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } -.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } -.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } -.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } -.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } -.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } -.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } -.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } -.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } -.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } -.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } -.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } -.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } -.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } -.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } -.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } -.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } -.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } -.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } -.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } -.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } -.@{fa-css-prefix}-mobile-phone:before, -.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } -.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } -.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } -.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } -.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } -.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } -.@{fa-css-prefix}-mail-reply:before, -.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } -.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } -.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } -.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } -.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } -.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } -.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } -.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } -.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } -.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } -.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } -.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } -.@{fa-css-prefix}-code:before { content: @fa-var-code; } -.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } -.@{fa-css-prefix}-mail-reply-all:before { content: @fa-var-mail-reply-all; } -.@{fa-css-prefix}-star-half-empty:before, -.@{fa-css-prefix}-star-half-full:before, -.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } -.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } -.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } -.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } -.@{fa-css-prefix}-unlink:before, -.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } -.@{fa-css-prefix}-question:before { content: @fa-var-question; } -.@{fa-css-prefix}-info:before { content: @fa-var-info; } -.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } -.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } -.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } -.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } -.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } -.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } -.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } -.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } -.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } -.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } -.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } -.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } -.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } -.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } -.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } -.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } -.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } -.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } -.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } -.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } -.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } -.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } -.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } -.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } -.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } -.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } -.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } -.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } -.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } -.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } -.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } -.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } -.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } -.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } -.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } -.@{fa-css-prefix}-toggle-down:before, -.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } -.@{fa-css-prefix}-toggle-up:before, -.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } -.@{fa-css-prefix}-toggle-right:before, -.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } -.@{fa-css-prefix}-euro:before, -.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } -.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } -.@{fa-css-prefix}-dollar:before, -.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } -.@{fa-css-prefix}-rupee:before, -.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } -.@{fa-css-prefix}-cny:before, -.@{fa-css-prefix}-rmb:before, -.@{fa-css-prefix}-yen:before, -.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } -.@{fa-css-prefix}-ruble:before, -.@{fa-css-prefix}-rouble:before, -.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } -.@{fa-css-prefix}-won:before, -.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } -.@{fa-css-prefix}-bitcoin:before, -.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } -.@{fa-css-prefix}-file:before { content: @fa-var-file; } -.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } -.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } -.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } -.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } -.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } -.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } -.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } -.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } -.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } -.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } -.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } -.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } -.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } -.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } -.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } -.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } -.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } -.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } -.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } -.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } -.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } -.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } -.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } -.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } -.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } -.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } -.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } -.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } -.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } -.@{fa-css-prefix}-android:before { content: @fa-var-android; } -.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } -.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } -.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } -.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } -.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } -.@{fa-css-prefix}-female:before { content: @fa-var-female; } -.@{fa-css-prefix}-male:before { content: @fa-var-male; } -.@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; } -.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } -.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } -.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } -.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } -.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } -.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } -.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } -.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } -.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } -.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } -.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } -.@{fa-css-prefix}-toggle-left:before, -.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } -.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } -.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } -.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } -.@{fa-css-prefix}-turkish-lira:before, -.@{fa-css-prefix}-try:before { content: @fa-var-try; } -.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/larger.less b/ckan/public-bs2/base/vendor/font-awesome/less/larger.less deleted file mode 100644 index c9d646770e2..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/larger.less +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.@{fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.@{fa-css-prefix}-2x { font-size: 2em; } -.@{fa-css-prefix}-3x { font-size: 3em; } -.@{fa-css-prefix}-4x { font-size: 4em; } -.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/list.less b/ckan/public-bs2/base/vendor/font-awesome/less/list.less deleted file mode 100644 index eed93405152..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/list.less +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.@{fa-css-prefix}-ul { - padding-left: 0; - margin-left: @fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.@{fa-css-prefix}-li { - position: absolute; - left: -@fa-li-width; - width: @fa-li-width; - top: (2em / 14); - text-align: center; - &.@{fa-css-prefix}-lg { - left: -@fa-li-width + (4em / 14); - } -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/mixins.less b/ckan/public-bs2/base/vendor/font-awesome/less/mixins.less deleted file mode 100644 index 19e5a6457b6..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/mixins.less +++ /dev/null @@ -1,20 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon-rotate(@degrees, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); - -webkit-transform: rotate(@degrees); - -moz-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - -o-transform: rotate(@degrees); - transform: rotate(@degrees); -} - -.fa-icon-flip(@horiz, @vert, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); - -webkit-transform: scale(@horiz, @vert); - -moz-transform: scale(@horiz, @vert); - -ms-transform: scale(@horiz, @vert); - -o-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/path.less b/ckan/public-bs2/base/vendor/font-awesome/less/path.less deleted file mode 100644 index c5a691246d6..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/path.less +++ /dev/null @@ -1,14 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); - src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), - url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), - url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), - url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); -// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/rotated-flipped.less b/ckan/public-bs2/base/vendor/font-awesome/less/rotated-flipped.less deleted file mode 100644 index 8fff3a6c417..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/rotated-flipped.less +++ /dev/null @@ -1,9 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } -.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } -.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } - -.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } -.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/spinning.less b/ckan/public-bs2/base/vendor/font-awesome/less/spinning.less deleted file mode 100644 index 60828fe5c0b..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/spinning.less +++ /dev/null @@ -1,30 +0,0 @@ -// Spinning Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: spin 2s infinite linear; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; -} - -@-moz-keyframes spin { - 0% { -moz-transform: rotate(0deg); } - 100% { -moz-transform: rotate(359deg); } -} -@-webkit-keyframes spin { - 0% { -webkit-transform: rotate(0deg); } - 100% { -webkit-transform: rotate(359deg); } -} -@-o-keyframes spin { - 0% { -o-transform: rotate(0deg); } - 100% { -o-transform: rotate(359deg); } -} -@-ms-keyframes spin { - 0% { -ms-transform: rotate(0deg); } - 100% { -ms-transform: rotate(359deg); } -} -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(359deg); } -} diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/stacked.less b/ckan/public-bs2/base/vendor/font-awesome/less/stacked.less deleted file mode 100644 index fc53fb0e7ab..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/stacked.less +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.@{fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.@{fa-css-prefix}-stack-1x { line-height: inherit; } -.@{fa-css-prefix}-stack-2x { font-size: 2em; } -.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/ckan/public-bs2/base/vendor/font-awesome/less/variables.less b/ckan/public-bs2/base/vendor/font-awesome/less/variables.less deleted file mode 100644 index f40a555f09f..00000000000 --- a/ckan/public-bs2/base/vendor/font-awesome/less/variables.less +++ /dev/null @@ -1,381 +0,0 @@ -// Variables -// -------------------------- - -@fa-font-path: "../fonts"; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.0.3/fonts"; // for referencing Bootstrap CDN font files directly -@fa-css-prefix: fa; -@fa-version: "4.0.3"; -@fa-border-color: #eee; -@fa-inverse: #fff; -@fa-li-width: (30em / 14); - -@fa-var-glass: "\f000"; -@fa-var-music: "\f001"; -@fa-var-search: "\f002"; -@fa-var-envelope-o: "\f003"; -@fa-var-heart: "\f004"; -@fa-var-star: "\f005"; -@fa-var-star-o: "\f006"; -@fa-var-user: "\f007"; -@fa-var-film: "\f008"; -@fa-var-th-large: "\f009"; -@fa-var-th: "\f00a"; -@fa-var-th-list: "\f00b"; -@fa-var-check: "\f00c"; -@fa-var-times: "\f00d"; -@fa-var-search-plus: "\f00e"; -@fa-var-search-minus: "\f010"; -@fa-var-power-off: "\f011"; -@fa-var-signal: "\f012"; -@fa-var-cog: "\f013"; -@fa-var-trash-o: "\f014"; -@fa-var-home: "\f015"; -@fa-var-file-o: "\f016"; -@fa-var-clock-o: "\f017"; -@fa-var-road: "\f018"; -@fa-var-download: "\f019"; -@fa-var-arrow-circle-o-down: "\f01a"; -@fa-var-arrow-circle-o-up: "\f01b"; -@fa-var-inbox: "\f01c"; -@fa-var-play-circle-o: "\f01d"; -@fa-var-repeat: "\f01e"; -@fa-var-refresh: "\f021"; -@fa-var-list-alt: "\f022"; -@fa-var-lock: "\f023"; -@fa-var-flag: "\f024"; -@fa-var-headphones: "\f025"; -@fa-var-volume-off: "\f026"; -@fa-var-volume-down: "\f027"; -@fa-var-volume-up: "\f028"; -@fa-var-qrcode: "\f029"; -@fa-var-barcode: "\f02a"; -@fa-var-tag: "\f02b"; -@fa-var-tags: "\f02c"; -@fa-var-book: "\f02d"; -@fa-var-bookmark: "\f02e"; -@fa-var-print: "\f02f"; -@fa-var-camera: "\f030"; -@fa-var-font: "\f031"; -@fa-var-bold: "\f032"; -@fa-var-italic: "\f033"; -@fa-var-text-height: "\f034"; -@fa-var-text-width: "\f035"; -@fa-var-align-left: "\f036"; -@fa-var-align-center: "\f037"; -@fa-var-align-right: "\f038"; -@fa-var-align-justify: "\f039"; -@fa-var-list: "\f03a"; -@fa-var-outdent: "\f03b"; -@fa-var-indent: "\f03c"; -@fa-var-video-camera: "\f03d"; -@fa-var-picture-o: "\f03e"; -@fa-var-pencil: "\f040"; -@fa-var-map-marker: "\f041"; -@fa-var-adjust: "\f042"; -@fa-var-tint: "\f043"; -@fa-var-pencil-square-o: "\f044"; -@fa-var-share-square-o: "\f045"; -@fa-var-check-square-o: "\f046"; -@fa-var-arrows: "\f047"; -@fa-var-step-backward: "\f048"; -@fa-var-fast-backward: "\f049"; -@fa-var-backward: "\f04a"; -@fa-var-play: "\f04b"; -@fa-var-pause: "\f04c"; -@fa-var-stop: "\f04d"; -@fa-var-forward: "\f04e"; -@fa-var-fast-forward: "\f050"; -@fa-var-step-forward: "\f051"; -@fa-var-eject: "\f052"; -@fa-var-chevron-left: "\f053"; -@fa-var-chevron-right: "\f054"; -@fa-var-plus-circle: "\f055"; -@fa-var-minus-circle: "\f056"; -@fa-var-times-circle: "\f057"; -@fa-var-check-circle: "\f058"; -@fa-var-question-circle: "\f059"; -@fa-var-info-circle: "\f05a"; -@fa-var-crosshairs: "\f05b"; -@fa-var-times-circle-o: "\f05c"; -@fa-var-check-circle-o: "\f05d"; -@fa-var-ban: "\f05e"; -@fa-var-arrow-left: "\f060"; -@fa-var-arrow-right: "\f061"; -@fa-var-arrow-up: "\f062"; -@fa-var-arrow-down: "\f063"; -@fa-var-share: "\f064"; -@fa-var-expand: "\f065"; -@fa-var-compress: "\f066"; -@fa-var-plus: "\f067"; -@fa-var-minus: "\f068"; -@fa-var-asterisk: "\f069"; -@fa-var-exclamation-circle: "\f06a"; -@fa-var-gift: "\f06b"; -@fa-var-leaf: "\f06c"; -@fa-var-fire: "\f06d"; -@fa-var-eye: "\f06e"; -@fa-var-eye-slash: "\f070"; -@fa-var-exclamation-triangle: "\f071"; -@fa-var-plane: "\f072"; -@fa-var-calendar: "\f073"; -@fa-var-random: "\f074"; -@fa-var-comment: "\f075"; -@fa-var-magnet: "\f076"; -@fa-var-chevron-up: "\f077"; -@fa-var-chevron-down: "\f078"; -@fa-var-retweet: "\f079"; -@fa-var-shopping-cart: "\f07a"; -@fa-var-folder: "\f07b"; -@fa-var-folder-open: "\f07c"; -@fa-var-arrows-v: "\f07d"; -@fa-var-arrows-h: "\f07e"; -@fa-var-bar-chart-o: "\f080"; -@fa-var-twitter-square: "\f081"; -@fa-var-facebook-square: "\f082"; -@fa-var-camera-retro: "\f083"; -@fa-var-key: "\f084"; -@fa-var-cogs: "\f085"; -@fa-var-comments: "\f086"; -@fa-var-thumbs-o-up: "\f087"; -@fa-var-thumbs-o-down: "\f088"; -@fa-var-star-half: "\f089"; -@fa-var-heart-o: "\f08a"; -@fa-var-sign-out: "\f08b"; -@fa-var-linkedin-square: "\f08c"; -@fa-var-thumb-tack: "\f08d"; -@fa-var-external-link: "\f08e"; -@fa-var-sign-in: "\f090"; -@fa-var-trophy: "\f091"; -@fa-var-github-square: "\f092"; -@fa-var-upload: "\f093"; -@fa-var-lemon-o: "\f094"; -@fa-var-phone: "\f095"; -@fa-var-square-o: "\f096"; -@fa-var-bookmark-o: "\f097"; -@fa-var-phone-square: "\f098"; -@fa-var-twitter: "\f099"; -@fa-var-facebook: "\f09a"; -@fa-var-github: "\f09b"; -@fa-var-unlock: "\f09c"; -@fa-var-credit-card: "\f09d"; -@fa-var-rss: "\f09e"; -@fa-var-hdd-o: "\f0a0"; -@fa-var-bullhorn: "\f0a1"; -@fa-var-bell: "\f0f3"; -@fa-var-certificate: "\f0a3"; -@fa-var-hand-o-right: "\f0a4"; -@fa-var-hand-o-left: "\f0a5"; -@fa-var-hand-o-up: "\f0a6"; -@fa-var-hand-o-down: "\f0a7"; -@fa-var-arrow-circle-left: "\f0a8"; -@fa-var-arrow-circle-right: "\f0a9"; -@fa-var-arrow-circle-up: "\f0aa"; -@fa-var-arrow-circle-down: "\f0ab"; -@fa-var-globe: "\f0ac"; -@fa-var-wrench: "\f0ad"; -@fa-var-tasks: "\f0ae"; -@fa-var-filter: "\f0b0"; -@fa-var-briefcase: "\f0b1"; -@fa-var-arrows-alt: "\f0b2"; -@fa-var-users: "\f0c0"; -@fa-var-link: "\f0c1"; -@fa-var-cloud: "\f0c2"; -@fa-var-flask: "\f0c3"; -@fa-var-scissors: "\f0c4"; -@fa-var-files-o: "\f0c5"; -@fa-var-paperclip: "\f0c6"; -@fa-var-floppy-o: "\f0c7"; -@fa-var-square: "\f0c8"; -@fa-var-bars: "\f0c9"; -@fa-var-list-ul: "\f0ca"; -@fa-var-list-ol: "\f0cb"; -@fa-var-strikethrough: "\f0cc"; -@fa-var-underline: "\f0cd"; -@fa-var-table: "\f0ce"; -@fa-var-magic: "\f0d0"; -@fa-var-truck: "\f0d1"; -@fa-var-pinterest: "\f0d2"; -@fa-var-pinterest-square: "\f0d3"; -@fa-var-google-plus-square: "\f0d4"; -@fa-var-google-plus: "\f0d5"; -@fa-var-money: "\f0d6"; -@fa-var-caret-down: "\f0d7"; -@fa-var-caret-up: "\f0d8"; -@fa-var-caret-left: "\f0d9"; -@fa-var-caret-right: "\f0da"; -@fa-var-columns: "\f0db"; -@fa-var-sort: "\f0dc"; -@fa-var-sort-asc: "\f0dd"; -@fa-var-sort-desc: "\f0de"; -@fa-var-envelope: "\f0e0"; -@fa-var-linkedin: "\f0e1"; -@fa-var-undo: "\f0e2"; -@fa-var-gavel: "\f0e3"; -@fa-var-tachometer: "\f0e4"; -@fa-var-comment-o: "\f0e5"; -@fa-var-comments-o: "\f0e6"; -@fa-var-bolt: "\f0e7"; -@fa-var-sitemap: "\f0e8"; -@fa-var-umbrella: "\f0e9"; -@fa-var-clipboard: "\f0ea"; -@fa-var-lightbulb-o: "\f0eb"; -@fa-var-exchange: "\f0ec"; -@fa-var-cloud-download: "\f0ed"; -@fa-var-cloud-upload: "\f0ee"; -@fa-var-user-md: "\f0f0"; -@fa-var-stethoscope: "\f0f1"; -@fa-var-suitcase: "\f0f2"; -@fa-var-bell-o: "\f0a2"; -@fa-var-coffee: "\f0f4"; -@fa-var-cutlery: "\f0f5"; -@fa-var-file-text-o: "\f0f6"; -@fa-var-building-o: "\f0f7"; -@fa-var-hospital-o: "\f0f8"; -@fa-var-ambulance: "\f0f9"; -@fa-var-medkit: "\f0fa"; -@fa-var-fighter-jet: "\f0fb"; -@fa-var-beer: "\f0fc"; -@fa-var-h-square: "\f0fd"; -@fa-var-plus-square: "\f0fe"; -@fa-var-angle-double-left: "\f100"; -@fa-var-angle-double-right: "\f101"; -@fa-var-angle-double-up: "\f102"; -@fa-var-angle-double-down: "\f103"; -@fa-var-angle-left: "\f104"; -@fa-var-angle-right: "\f105"; -@fa-var-angle-up: "\f106"; -@fa-var-angle-down: "\f107"; -@fa-var-desktop: "\f108"; -@fa-var-laptop: "\f109"; -@fa-var-tablet: "\f10a"; -@fa-var-mobile: "\f10b"; -@fa-var-circle-o: "\f10c"; -@fa-var-quote-left: "\f10d"; -@fa-var-quote-right: "\f10e"; -@fa-var-spinner: "\f110"; -@fa-var-circle: "\f111"; -@fa-var-reply: "\f112"; -@fa-var-github-alt: "\f113"; -@fa-var-folder-o: "\f114"; -@fa-var-folder-open-o: "\f115"; -@fa-var-smile-o: "\f118"; -@fa-var-frown-o: "\f119"; -@fa-var-meh-o: "\f11a"; -@fa-var-gamepad: "\f11b"; -@fa-var-keyboard-o: "\f11c"; -@fa-var-flag-o: "\f11d"; -@fa-var-flag-checkered: "\f11e"; -@fa-var-terminal: "\f120"; -@fa-var-code: "\f121"; -@fa-var-reply-all: "\f122"; -@fa-var-mail-reply-all: "\f122"; -@fa-var-star-half-o: "\f123"; -@fa-var-location-arrow: "\f124"; -@fa-var-crop: "\f125"; -@fa-var-code-fork: "\f126"; -@fa-var-chain-broken: "\f127"; -@fa-var-question: "\f128"; -@fa-var-info: "\f129"; -@fa-var-exclamation: "\f12a"; -@fa-var-superscript: "\f12b"; -@fa-var-subscript: "\f12c"; -@fa-var-eraser: "\f12d"; -@fa-var-puzzle-piece: "\f12e"; -@fa-var-microphone: "\f130"; -@fa-var-microphone-slash: "\f131"; -@fa-var-shield: "\f132"; -@fa-var-calendar-o: "\f133"; -@fa-var-fire-extinguisher: "\f134"; -@fa-var-rocket: "\f135"; -@fa-var-maxcdn: "\f136"; -@fa-var-chevron-circle-left: "\f137"; -@fa-var-chevron-circle-right: "\f138"; -@fa-var-chevron-circle-up: "\f139"; -@fa-var-chevron-circle-down: "\f13a"; -@fa-var-html5: "\f13b"; -@fa-var-css3: "\f13c"; -@fa-var-anchor: "\f13d"; -@fa-var-unlock-alt: "\f13e"; -@fa-var-bullseye: "\f140"; -@fa-var-ellipsis-h: "\f141"; -@fa-var-ellipsis-v: "\f142"; -@fa-var-rss-square: "\f143"; -@fa-var-play-circle: "\f144"; -@fa-var-ticket: "\f145"; -@fa-var-minus-square: "\f146"; -@fa-var-minus-square-o: "\f147"; -@fa-var-level-up: "\f148"; -@fa-var-level-down: "\f149"; -@fa-var-check-square: "\f14a"; -@fa-var-pencil-square: "\f14b"; -@fa-var-external-link-square: "\f14c"; -@fa-var-share-square: "\f14d"; -@fa-var-compass: "\f14e"; -@fa-var-caret-square-o-down: "\f150"; -@fa-var-caret-square-o-up: "\f151"; -@fa-var-caret-square-o-right: "\f152"; -@fa-var-eur: "\f153"; -@fa-var-gbp: "\f154"; -@fa-var-usd: "\f155"; -@fa-var-inr: "\f156"; -@fa-var-jpy: "\f157"; -@fa-var-rub: "\f158"; -@fa-var-krw: "\f159"; -@fa-var-btc: "\f15a"; -@fa-var-file: "\f15b"; -@fa-var-file-text: "\f15c"; -@fa-var-sort-alpha-asc: "\f15d"; -@fa-var-sort-alpha-desc: "\f15e"; -@fa-var-sort-amount-asc: "\f160"; -@fa-var-sort-amount-desc: "\f161"; -@fa-var-sort-numeric-asc: "\f162"; -@fa-var-sort-numeric-desc: "\f163"; -@fa-var-thumbs-up: "\f164"; -@fa-var-thumbs-down: "\f165"; -@fa-var-youtube-square: "\f166"; -@fa-var-youtube: "\f167"; -@fa-var-xing: "\f168"; -@fa-var-xing-square: "\f169"; -@fa-var-youtube-play: "\f16a"; -@fa-var-dropbox: "\f16b"; -@fa-var-stack-overflow: "\f16c"; -@fa-var-instagram: "\f16d"; -@fa-var-flickr: "\f16e"; -@fa-var-adn: "\f170"; -@fa-var-bitbucket: "\f171"; -@fa-var-bitbucket-square: "\f172"; -@fa-var-tumblr: "\f173"; -@fa-var-tumblr-square: "\f174"; -@fa-var-long-arrow-down: "\f175"; -@fa-var-long-arrow-up: "\f176"; -@fa-var-long-arrow-left: "\f177"; -@fa-var-long-arrow-right: "\f178"; -@fa-var-apple: "\f179"; -@fa-var-windows: "\f17a"; -@fa-var-android: "\f17b"; -@fa-var-linux: "\f17c"; -@fa-var-dribbble: "\f17d"; -@fa-var-skype: "\f17e"; -@fa-var-foursquare: "\f180"; -@fa-var-trello: "\f181"; -@fa-var-female: "\f182"; -@fa-var-male: "\f183"; -@fa-var-gittip: "\f184"; -@fa-var-sun-o: "\f185"; -@fa-var-moon-o: "\f186"; -@fa-var-archive: "\f187"; -@fa-var-bug: "\f188"; -@fa-var-vk: "\f189"; -@fa-var-weibo: "\f18a"; -@fa-var-renren: "\f18b"; -@fa-var-pagelines: "\f18c"; -@fa-var-stack-exchange: "\f18d"; -@fa-var-arrow-circle-o-right: "\f18e"; -@fa-var-arrow-circle-o-left: "\f190"; -@fa-var-caret-square-o-left: "\f191"; -@fa-var-dot-circle-o: "\f192"; -@fa-var-wheelchair: "\f193"; -@fa-var-vimeo-square: "\f194"; -@fa-var-try: "\f195"; -@fa-var-plus-square-o: "\f196"; - diff --git a/ckan/public-bs2/base/vendor/html5.js b/ckan/public-bs2/base/vendor/html5.js deleted file mode 100644 index 7656f7a019c..00000000000 --- a/ckan/public-bs2/base/vendor/html5.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! HTML5 Shiv v3.6RC1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed - Uncompressed source: https://github.com/aFarkas/html5shiv */ -(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); -a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; -c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a"); -var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a, -b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;darticle,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}";c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d= val_list.length ) { - res = [ null, singular_key, plural_key ]; - return res[ getPluralFormFunc()( val ) + 1 ]; - } - - res = val_list[ val_idx ]; - - // This includes empty strings on purpose - if ( ! res ) { - res = [ null, singular_key, plural_key ]; - return res[ getPluralFormFunc()( val ) + 1 ]; - } - return res; - } - }); - - - // We add in sprintf capabilities for post translation value interolation - // This is not internally used, so you can remove it if you have this - // available somewhere else, or want to use a different system. - - // We _slightly_ modify the normal sprintf behavior to more gracefully handle - // undefined values. - - /** - sprintf() for JavaScript 0.7-beta1 - http://www.diveintojavascript.com/projects/javascript-sprintf - - Copyright (c) Alexandru Marasteanu - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of sprintf() for JavaScript nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - var sprintf = (function() { - function get_type(variable) { - return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase(); - } - function str_repeat(input, multiplier) { - for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */} - return output.join(''); - } - - var str_format = function() { - if (!str_format.cache.hasOwnProperty(arguments[0])) { - str_format.cache[arguments[0]] = str_format.parse(arguments[0]); - } - return str_format.format.call(null, str_format.cache[arguments[0]], arguments); - }; - - str_format.format = function(parse_tree, argv) { - var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length; - for (i = 0; i < tree_length; i++) { - node_type = get_type(parse_tree[i]); - if (node_type === 'string') { - output.push(parse_tree[i]); - } - else if (node_type === 'array') { - match = parse_tree[i]; // convenience purposes only - if (match[2]) { // keyword argument - arg = argv[cursor]; - for (k = 0; k < match[2].length; k++) { - if (!arg.hasOwnProperty(match[2][k])) { - throw(sprintf('[sprintf] property "%s" does not exist', match[2][k])); - } - arg = arg[match[2][k]]; - } - } - else if (match[1]) { // positional argument (explicit) - arg = argv[match[1]]; - } - else { // positional argument (implicit) - arg = argv[cursor++]; - } - - if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) { - throw(sprintf('[sprintf] expecting number but found %s', get_type(arg))); - } - - // Jed EDIT - if ( typeof arg == 'undefined' || arg === null ) { - arg = ''; - } - // Jed EDIT - - switch (match[8]) { - case 'b': arg = arg.toString(2); break; - case 'c': arg = String.fromCharCode(arg); break; - case 'd': arg = parseInt(arg, 10); break; - case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break; - case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break; - case 'o': arg = arg.toString(8); break; - case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break; - case 'u': arg = Math.abs(arg); break; - case 'x': arg = arg.toString(16); break; - case 'X': arg = arg.toString(16).toUpperCase(); break; - } - arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg); - pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' '; - pad_length = match[6] - String(arg).length; - pad = match[6] ? str_repeat(pad_character, pad_length) : ''; - output.push(match[5] ? arg + pad : pad + arg); - } - } - return output.join(''); - }; - - str_format.cache = {}; - - str_format.parse = function(fmt) { - var _fmt = fmt, match = [], parse_tree = [], arg_names = 0; - while (_fmt) { - if ((match = /^[^\x25]+/.exec(_fmt)) !== null) { - parse_tree.push(match[0]); - } - else if ((match = /^\x25{2}/.exec(_fmt)) !== null) { - parse_tree.push('%'); - } - else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) { - if (match[2]) { - arg_names |= 1; - var field_list = [], replacement_field = match[2], field_match = []; - if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') { - if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - } - else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - } - else { - throw('[sprintf] huh?'); - } - } - } - else { - throw('[sprintf] huh?'); - } - match[2] = field_list; - } - else { - arg_names |= 2; - } - if (arg_names === 3) { - throw('[sprintf] mixing positional and named placeholders is not (yet) supported'); - } - parse_tree.push(match); - } - else { - throw('[sprintf] huh?'); - } - _fmt = _fmt.substring(match[0].length); - } - return parse_tree; - }; - - return str_format; - })(); - - var vsprintf = function(fmt, argv) { - argv.unshift(fmt); - return sprintf.apply(null, argv); - }; - - Jed.parse_plural = function ( plural_forms, n ) { - plural_forms = plural_forms.replace(/n/g, n); - return Jed.parse_expression(plural_forms); - }; - - Jed.sprintf = function ( fmt, args ) { - if ( {}.toString.call( args ) == '[object Array]' ) { - return vsprintf( fmt, [].slice.call(args) ); - } - return sprintf.apply(this, [].slice.call(arguments) ); - }; - - Jed.prototype.sprintf = function () { - return Jed.sprintf.apply(this, arguments); - }; - // END sprintf Implementation - - // Start the Plural forms section - // This is a full plural form expression parser. It is used to avoid - // running 'eval' or 'new Function' directly against the plural - // forms. - // - // This can be important if you get translations done through a 3rd - // party vendor. I encourage you to use this instead, however, I - // also will provide a 'precompiler' that you can use at build time - // to output valid/safe function representations of the plural form - // expressions. This means you can build this code out for the most - // part. - Jed.PF = {}; - - Jed.PF.parse = function ( p ) { - var plural_str = Jed.PF.extractPluralExpr( p ); - return Jed.PF.parser.parse.call(Jed.PF.parser, plural_str); - }; - - Jed.PF.compile = function ( p ) { - // Handle trues and falses as 0 and 1 - function imply( val ) { - return (val === true ? 1 : val ? val : 0); - } - - var ast = Jed.PF.parse( p ); - return function ( n ) { - return imply( Jed.PF.interpreter( ast )( n ) ); - }; - }; - - Jed.PF.interpreter = function ( ast ) { - return function ( n ) { - var res; - switch ( ast.type ) { - case 'GROUP': - return Jed.PF.interpreter( ast.expr )( n ); - case 'TERNARY': - if ( Jed.PF.interpreter( ast.expr )( n ) ) { - return Jed.PF.interpreter( ast.truthy )( n ); - } - return Jed.PF.interpreter( ast.falsey )( n ); - case 'OR': - return Jed.PF.interpreter( ast.left )( n ) || Jed.PF.interpreter( ast.right )( n ); - case 'AND': - return Jed.PF.interpreter( ast.left )( n ) && Jed.PF.interpreter( ast.right )( n ); - case 'LT': - return Jed.PF.interpreter( ast.left )( n ) < Jed.PF.interpreter( ast.right )( n ); - case 'GT': - return Jed.PF.interpreter( ast.left )( n ) > Jed.PF.interpreter( ast.right )( n ); - case 'LTE': - return Jed.PF.interpreter( ast.left )( n ) <= Jed.PF.interpreter( ast.right )( n ); - case 'GTE': - return Jed.PF.interpreter( ast.left )( n ) >= Jed.PF.interpreter( ast.right )( n ); - case 'EQ': - return Jed.PF.interpreter( ast.left )( n ) == Jed.PF.interpreter( ast.right )( n ); - case 'NEQ': - return Jed.PF.interpreter( ast.left )( n ) != Jed.PF.interpreter( ast.right )( n ); - case 'MOD': - return Jed.PF.interpreter( ast.left )( n ) % Jed.PF.interpreter( ast.right )( n ); - case 'VAR': - return n; - case 'NUM': - return ast.val; - default: - throw new Error("Invalid Token found."); - } - }; - }; - - Jed.PF.extractPluralExpr = function ( p ) { - // trim first - p = p.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); - - if (! /;\s*$/.test(p)) { - p = p.concat(';'); - } - - var nplurals_re = /nplurals\=(\d+);/, - plural_re = /plural\=(.*);/, - nplurals_matches = p.match( nplurals_re ), - res = {}, - plural_matches; - - // Find the nplurals number - if ( nplurals_matches.length > 1 ) { - res.nplurals = nplurals_matches[1]; - } - else { - throw new Error('nplurals not found in plural_forms string: ' + p ); - } - - // remove that data to get to the formula - p = p.replace( nplurals_re, "" ); - plural_matches = p.match( plural_re ); - - if (!( plural_matches && plural_matches.length > 1 ) ) { - throw new Error('`plural` expression not found: ' + p); - } - return plural_matches[ 1 ]; - }; - - /* Jison generated parser */ - Jed.PF.parser = (function(){ - -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"expressions":3,"e":4,"EOF":5,"?":6,":":7,"||":8,"&&":9,"<":10,"<=":11,">":12,">=":13,"!=":14,"==":15,"%":16,"(":17,")":18,"n":19,"NUMBER":20,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOF",6:"?",7:":",8:"||",9:"&&",10:"<",11:"<=",12:">",13:">=",14:"!=",15:"==",16:"%",17:"(",18:")",19:"n",20:"NUMBER"}, -productions_: [0,[3,2],[4,5],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,1],[4,1]], -performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - -var $0 = $$.length - 1; -switch (yystate) { -case 1: return { type : 'GROUP', expr: $$[$0-1] }; -break; -case 2:this.$ = { type: 'TERNARY', expr: $$[$0-4], truthy : $$[$0-2], falsey: $$[$0] }; -break; -case 3:this.$ = { type: "OR", left: $$[$0-2], right: $$[$0] }; -break; -case 4:this.$ = { type: "AND", left: $$[$0-2], right: $$[$0] }; -break; -case 5:this.$ = { type: 'LT', left: $$[$0-2], right: $$[$0] }; -break; -case 6:this.$ = { type: 'LTE', left: $$[$0-2], right: $$[$0] }; -break; -case 7:this.$ = { type: 'GT', left: $$[$0-2], right: $$[$0] }; -break; -case 8:this.$ = { type: 'GTE', left: $$[$0-2], right: $$[$0] }; -break; -case 9:this.$ = { type: 'NEQ', left: $$[$0-2], right: $$[$0] }; -break; -case 10:this.$ = { type: 'EQ', left: $$[$0-2], right: $$[$0] }; -break; -case 11:this.$ = { type: 'MOD', left: $$[$0-2], right: $$[$0] }; -break; -case 12:this.$ = { type: 'GROUP', expr: $$[$0-1] }; -break; -case 13:this.$ = { type: 'VAR' }; -break; -case 14:this.$ = { type: 'NUM', val: Number(yytext) }; -break; -} -}, -table: [{3:1,4:2,17:[1,3],19:[1,4],20:[1,5]},{1:[3]},{5:[1,6],6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{4:17,17:[1,3],19:[1,4],20:[1,5]},{5:[2,13],6:[2,13],7:[2,13],8:[2,13],9:[2,13],10:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],18:[2,13]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{4:18,17:[1,3],19:[1,4],20:[1,5]},{4:19,17:[1,3],19:[1,4],20:[1,5]},{4:20,17:[1,3],19:[1,4],20:[1,5]},{4:21,17:[1,3],19:[1,4],20:[1,5]},{4:22,17:[1,3],19:[1,4],20:[1,5]},{4:23,17:[1,3],19:[1,4],20:[1,5]},{4:24,17:[1,3],19:[1,4],20:[1,5]},{4:25,17:[1,3],19:[1,4],20:[1,5]},{4:26,17:[1,3],19:[1,4],20:[1,5]},{4:27,17:[1,3],19:[1,4],20:[1,5]},{6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[1,28]},{6:[1,7],7:[1,29],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{5:[2,3],6:[2,3],7:[2,3],8:[2,3],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[2,4],9:[2,4],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],15:[2,5],16:[1,16],18:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],15:[2,6],16:[1,16],18:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[2,7],12:[2,7],13:[2,7],14:[2,7],15:[2,7],16:[1,16],18:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[1,16],18:[2,8]},{5:[2,9],6:[2,9],7:[2,9],8:[2,9],9:[2,9],10:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[1,16],18:[2,9]},{5:[2,10],6:[2,10],7:[2,10],8:[2,10],9:[2,10],10:[2,10],11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[1,16],18:[2,10]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],18:[2,11]},{5:[2,12],6:[2,12],7:[2,12],8:[2,12],9:[2,12],10:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],18:[2,12]},{4:30,17:[1,3],19:[1,4],20:[1,5]},{5:[2,2],6:[1,7],7:[2,2],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,2]}], -defaultActions: {6:[2,1]}, -parseError: function parseError(str, hash) { - throw new Error(str); -}, -parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') - this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') - this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - - function lex() { - var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; - while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol == null) - symbol = lex(); - // read action for current state and first input - action = table[state] && table[state][symbol]; - } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; - } - - } - - return true; -}};/* Jison generated lexer */ -var lexer = (function(){ - -var lexer = ({EOF:1, -parseError:function parseError(str, hash) { - if (this.yy.parseError) { - this.yy.parseError(str, hash); - } else { - throw new Error(str); - } - }, -setInput:function (input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; - return this; - }, -input:function () { - var ch = this._input[0]; - this.yytext+=ch; - this.yyleng++; - this.match+=ch; - this.matched+=ch; - var lines = ch.match(/\n/); - if (lines) this.yylineno++; - this._input = this._input.slice(1); - return ch; - }, -unput:function (ch) { - this._input = ch + this._input; - return this; - }, -more:function () { - this._more = true; - return this; - }, -pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, -upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); - }, -showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c+"^"; - }, -next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - - var token, - match, - col, - lines; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i=0;i < rules.length; i++) { - match = this._input.match(this.rules[rules[i]]); - if (match) { - lines = match[0].match(/\n.*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = {first_line: this.yylloc.last_line, - last_line: this.yylineno+1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[i],this.conditionStack[this.conditionStack.length-1]); - if (token) return token; - else return; - } - } - if (this._input === "") { - return this.EOF; - } else { - this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), - {text: "", token: null, line: this.yylineno}); - } - }, -lex:function lex() { - var r = this.next(); - if (typeof r !== 'undefined') { - return r; - } else { - return this.lex(); - } - }, -begin:function begin(condition) { - this.conditionStack.push(condition); - }, -popState:function popState() { - return this.conditionStack.pop(); - }, -_currentRules:function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; - }, -topState:function () { - return this.conditionStack[this.conditionStack.length-2]; - }, -pushState:function begin(condition) { - this.begin(condition); - }}); -lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - -var YYSTATE=YY_START -switch($avoiding_name_collisions) { -case 0:/* skip whitespace */ -break; -case 1:return 20 -break; -case 2:return 19 -break; -case 3:return 8 -break; -case 4:return 9 -break; -case 5:return 6 -break; -case 6:return 7 -break; -case 7:return 11 -break; -case 8:return 13 -break; -case 9:return 10 -break; -case 10:return 12 -break; -case 11:return 14 -break; -case 12:return 15 -break; -case 13:return 16 -break; -case 14:return 17 -break; -case 15:return 18 -break; -case 16:return 5 -break; -case 17:return 'INVALID' -break; -} -}; -lexer.rules = [/^\s+/,/^[0-9]+(\.[0-9]+)?\b/,/^n\b/,/^\|\|/,/^&&/,/^\?/,/^:/,/^<=/,/^>=/,/^/,/^!=/,/^==/,/^%/,/^\(/,/^\)/,/^$/,/^./]; -lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],"inclusive":true}};return lexer;})() -parser.lexer = lexer; -return parser; -})(); -// End parser - - // Handle node, amd, and global systems - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = Jed; - } - exports.Jed = Jed; - } - else { - if (typeof define === 'function' && define.amd) { - define('jed', function() { - return Jed; - }); - } - // Leak a global regardless of module system - root['Jed'] = Jed; - } - -})(this); diff --git a/ckan/public-bs2/base/vendor/jed.min.js b/ckan/public-bs2/base/vendor/jed.min.js deleted file mode 100644 index ede388f2783..00000000000 --- a/ckan/public-bs2/base/vendor/jed.min.js +++ /dev/null @@ -1,101 +0,0 @@ -(function(root,undef){var ArrayProto=Array.prototype,ObjProto=Object.prototype,slice=ArrayProto.slice,hasOwnProp=ObjProto.hasOwnProperty,nativeForEach=ArrayProto.forEach,breaker={};var _={forEach:function(obj,iterator,context){var i,l,key;if(obj===null){return;} -if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context);} -else if(obj.length===+obj.length){for(i=0,l=obj.length;i=val_list.length){res=[null,singular_key,plural_key];return res[getPluralFormFunc()(val)+1];} -res=val_list[val_idx];if(!res){res=[null,singular_key,plural_key];return res[getPluralFormFunc()(val)+1];} -return res;}});var sprintf=(function(){function get_type(variable){return Object.prototype.toString.call(variable).slice(8,-1).toLowerCase();} -function str_repeat(input,multiplier){for(var output=[];multiplier>0;output[--multiplier]=input){} -return output.join('');} -var str_format=function(){if(!str_format.cache.hasOwnProperty(arguments[0])){str_format.cache[arguments[0]]=str_format.parse(arguments[0]);} -return str_format.format.call(null,str_format.cache[arguments[0]],arguments);};str_format.format=function(parse_tree,argv){var cursor=1,tree_length=parse_tree.length,node_type='',arg,output=[],i,k,match,pad,pad_character,pad_length;for(i=0;i=0?'+'+arg:arg);pad_character=match[4]?match[4]=='0'?'0':match[4].charAt(1):' ';pad_length=match[6]-String(arg).length;pad=match[6]?str_repeat(pad_character,pad_length):'';output.push(match[5]?arg+pad:pad+arg);}} -return output.join('');};str_format.cache={};str_format.parse=function(fmt){var _fmt=fmt,match=[],parse_tree=[],arg_names=0;while(_fmt){if((match=/^[^\x25]+/.exec(_fmt))!==null){parse_tree.push(match[0]);} -else if((match=/^\x25{2}/.exec(_fmt))!==null){parse_tree.push('%');} -else if((match=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt))!==null){if(match[2]){arg_names|=1;var field_list=[],replacement_field=match[2],field_match=[];if((field_match=/^([a-z_][a-z_\d]*)/i.exec(replacement_field))!==null){field_list.push(field_match[1]);while((replacement_field=replacement_field.substring(field_match[0].length))!==''){if((field_match=/^\.([a-z_][a-z_\d]*)/i.exec(replacement_field))!==null){field_list.push(field_match[1]);} -else if((field_match=/^\[(\d+)\]/.exec(replacement_field))!==null){field_list.push(field_match[1]);} -else{throw('[sprintf] huh?');}}} -else{throw('[sprintf] huh?');} -match[2]=field_list;} -else{arg_names|=2;} -if(arg_names===3){throw('[sprintf] mixing positional and named placeholders is not (yet) supported');} -parse_tree.push(match);} -else{throw('[sprintf] huh?');} -_fmt=_fmt.substring(match[0].length);} -return parse_tree;};return str_format;})();var vsprintf=function(fmt,argv){argv.unshift(fmt);return sprintf.apply(null,argv);};Jed.parse_plural=function(plural_forms,n){plural_forms=plural_forms.replace(/n/g,n);return Jed.parse_expression(plural_forms);};Jed.sprintf=function(fmt,args){if({}.toString.call(args)=='[object Array]'){return vsprintf(fmt,[].slice.call(args));} -return sprintf.apply(this,[].slice.call(arguments));};Jed.prototype.sprintf=function(){return Jed.sprintf.apply(this,arguments);};Jed.PF={};Jed.PF.parse=function(p){var plural_str=Jed.PF.extractPluralExpr(p);return Jed.PF.parser.parse.call(Jed.PF.parser,plural_str);};Jed.PF.compile=function(p){function imply(val){return(val===true?1:val?val:0);} -var ast=Jed.PF.parse(p);return function(n){return imply(Jed.PF.interpreter(ast)(n));};};Jed.PF.interpreter=function(ast){return function(n){var res;switch(ast.type){case'GROUP':return Jed.PF.interpreter(ast.expr)(n);case'TERNARY':if(Jed.PF.interpreter(ast.expr)(n)){return Jed.PF.interpreter(ast.truthy)(n);} -return Jed.PF.interpreter(ast.falsey)(n);case'OR':return Jed.PF.interpreter(ast.left)(n)||Jed.PF.interpreter(ast.right)(n);case'AND':return Jed.PF.interpreter(ast.left)(n)&&Jed.PF.interpreter(ast.right)(n);case'LT':return Jed.PF.interpreter(ast.left)(n)Jed.PF.interpreter(ast.right)(n);case'LTE':return Jed.PF.interpreter(ast.left)(n)<=Jed.PF.interpreter(ast.right)(n);case'GTE':return Jed.PF.interpreter(ast.left)(n)>=Jed.PF.interpreter(ast.right)(n);case'EQ':return Jed.PF.interpreter(ast.left)(n)==Jed.PF.interpreter(ast.right)(n);case'NEQ':return Jed.PF.interpreter(ast.left)(n)!=Jed.PF.interpreter(ast.right)(n);case'MOD':return Jed.PF.interpreter(ast.left)(n)%Jed.PF.interpreter(ast.right)(n);case'VAR':return n;case'NUM':return ast.val;default:throw new Error("Invalid Token found.");}};};Jed.PF.extractPluralExpr=function(p){p=p.replace(/^\s\s*/,'').replace(/\s\s*$/,'');if(!/;\s*$/.test(p)){p=p.concat(';');} -var nplurals_re=/nplurals\=(\d+);/,plural_re=/plural\=(.*);/,nplurals_matches=p.match(nplurals_re),res={},plural_matches;if(nplurals_matches.length>1){res.nplurals=nplurals_matches[1];} -else{throw new Error('nplurals not found in plural_forms string: '+p);} -p=p.replace(nplurals_re,"");plural_matches=p.match(plural_re);if(!(plural_matches&&plural_matches.length>1)){throw new Error('`plural` expression not found: '+p);} -return plural_matches[1];};Jed.PF.parser=(function(){var parser={trace:function trace(){},yy:{},symbols_:{"error":2,"expressions":3,"e":4,"EOF":5,"?":6,":":7,"||":8,"&&":9,"<":10,"<=":11,">":12,">=":13,"!=":14,"==":15,"%":16,"(":17,")":18,"n":19,"NUMBER":20,"$accept":0,"$end":1},terminals_:{2:"error",5:"EOF",6:"?",7:":",8:"||",9:"&&",10:"<",11:"<=",12:">",13:">=",14:"!=",15:"==",16:"%",17:"(",18:")",19:"n",20:"NUMBER"},productions_:[0,[3,2],[4,5],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,1],[4,1]],performAction:function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:return{type:'GROUP',expr:$$[$0-1]};break;case 2:this.$={type:'TERNARY',expr:$$[$0-4],truthy:$$[$0-2],falsey:$$[$0]};break;case 3:this.$={type:"OR",left:$$[$0-2],right:$$[$0]};break;case 4:this.$={type:"AND",left:$$[$0-2],right:$$[$0]};break;case 5:this.$={type:'LT',left:$$[$0-2],right:$$[$0]};break;case 6:this.$={type:'LTE',left:$$[$0-2],right:$$[$0]};break;case 7:this.$={type:'GT',left:$$[$0-2],right:$$[$0]};break;case 8:this.$={type:'GTE',left:$$[$0-2],right:$$[$0]};break;case 9:this.$={type:'NEQ',left:$$[$0-2],right:$$[$0]};break;case 10:this.$={type:'EQ',left:$$[$0-2],right:$$[$0]};break;case 11:this.$={type:'MOD',left:$$[$0-2],right:$$[$0]};break;case 12:this.$={type:'GROUP',expr:$$[$0-1]};break;case 13:this.$={type:'VAR'};break;case 14:this.$={type:'NUM',val:Number(yytext)};break;}},table:[{3:1,4:2,17:[1,3],19:[1,4],20:[1,5]},{1:[3]},{5:[1,6],6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{4:17,17:[1,3],19:[1,4],20:[1,5]},{5:[2,13],6:[2,13],7:[2,13],8:[2,13],9:[2,13],10:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],18:[2,13]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{4:18,17:[1,3],19:[1,4],20:[1,5]},{4:19,17:[1,3],19:[1,4],20:[1,5]},{4:20,17:[1,3],19:[1,4],20:[1,5]},{4:21,17:[1,3],19:[1,4],20:[1,5]},{4:22,17:[1,3],19:[1,4],20:[1,5]},{4:23,17:[1,3],19:[1,4],20:[1,5]},{4:24,17:[1,3],19:[1,4],20:[1,5]},{4:25,17:[1,3],19:[1,4],20:[1,5]},{4:26,17:[1,3],19:[1,4],20:[1,5]},{4:27,17:[1,3],19:[1,4],20:[1,5]},{6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[1,28]},{6:[1,7],7:[1,29],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{5:[2,3],6:[2,3],7:[2,3],8:[2,3],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[2,4],9:[2,4],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],15:[2,5],16:[1,16],18:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],15:[2,6],16:[1,16],18:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[2,7],12:[2,7],13:[2,7],14:[2,7],15:[2,7],16:[1,16],18:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[1,16],18:[2,8]},{5:[2,9],6:[2,9],7:[2,9],8:[2,9],9:[2,9],10:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[1,16],18:[2,9]},{5:[2,10],6:[2,10],7:[2,10],8:[2,10],9:[2,10],10:[2,10],11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[1,16],18:[2,10]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],18:[2,11]},{5:[2,12],6:[2,12],7:[2,12],8:[2,12],9:[2,12],10:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],18:[2,12]},{4:30,17:[1,3],19:[1,4],20:[1,5]},{5:[2,2],6:[1,7],7:[2,2],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,2]}],defaultActions:{6:[2,1]},parseError:function parseError(str,hash){throw new Error(str);},parse:function parse(input){var self=this,stack=[0],vstack=[null],lstack=[],table=this.table,yytext='',yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1;this.lexer.setInput(input);this.lexer.yy=this.yy;this.yy.lexer=this.lexer;if(typeof this.lexer.yylloc=='undefined') -this.lexer.yylloc={};var yyloc=this.lexer.yylloc;lstack.push(yyloc);if(typeof this.yy.parseError==='function') -this.parseError=this.yy.parseError;function popStack(n){stack.length=stack.length-2*n;vstack.length=vstack.length-n;lstack.length=lstack.length-n;} -function lex(){var token;token=self.lexer.lex()||1;if(typeof token!=='number'){token=self.symbols_[token]||token;} -return token;} -var symbol,preErrorSymbol,state,action,a,r,yyval={},p,len,newState,expected;while(true){state=stack[stack.length-1];if(this.defaultActions[state]){action=this.defaultActions[state];}else{if(symbol==null) -symbol=lex();action=table[state]&&table[state][symbol];} -_handle_error:if(typeof action==='undefined'||!action.length||!action[0]){if(!recovering){expected=[];for(p in table[state])if(this.terminals_[p]&&p>2){expected.push("'"+this.terminals_[p]+"'");} -var errStr='';if(this.lexer.showPosition){errStr='Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ')+", got '"+this.terminals_[symbol]+"'";}else{errStr='Parse error on line '+(yylineno+1)+": Unexpected "+ -(symbol==1?"end of input":("'"+(this.terminals_[symbol]||symbol)+"'"));} -this.parseError(errStr,{text:this.lexer.match,token:this.terminals_[symbol]||symbol,line:this.lexer.yylineno,loc:yyloc,expected:expected});} -if(recovering==3){if(symbol==EOF){throw new Error(errStr||'Parsing halted.');} -yyleng=this.lexer.yyleng;yytext=this.lexer.yytext;yylineno=this.lexer.yylineno;yyloc=this.lexer.yylloc;symbol=lex();} -while(1){if((TERROR.toString())in table[state]){break;} -if(state==0){throw new Error(errStr||'Parsing halted.');} -popStack(1);state=stack[stack.length-1];} -preErrorSymbol=symbol;symbol=TERROR;state=stack[stack.length-1];action=table[state]&&table[state][TERROR];recovering=3;} -if(action[0]instanceof Array&&action.length>1){throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);} -switch(action[0]){case 1:stack.push(symbol);vstack.push(this.lexer.yytext);lstack.push(this.lexer.yylloc);stack.push(action[1]);symbol=null;if(!preErrorSymbol){yyleng=this.lexer.yyleng;yytext=this.lexer.yytext;yylineno=this.lexer.yylineno;yyloc=this.lexer.yylloc;if(recovering>0) -recovering--;}else{symbol=preErrorSymbol;preErrorSymbol=null;} -break;case 2:len=this.productions_[action[1]][1];yyval.$=vstack[vstack.length-len];yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column};r=this.performAction.call(yyval,yytext,yyleng,yylineno,this.yy,action[1],vstack,lstack);if(typeof r!=='undefined'){return r;} -if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len);lstack=lstack.slice(0,-1*len);} -stack.push(this.productions_[action[1]][0]);vstack.push(yyval.$);lstack.push(yyval._$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:return true;}} -return true;}};var lexer=(function(){var lexer=({EOF:1,parseError:function parseError(str,hash){if(this.yy.parseError){this.yy.parseError(str,hash);}else{throw new Error(str);}},setInput:function(input){this._input=input;this._more=this._less=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match='';this.conditionStack=['INITIAL'];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};return this;},input:function(){var ch=this._input[0];this.yytext+=ch;this.yyleng++;this.match+=ch;this.matched+=ch;var lines=ch.match(/\n/);if(lines)this.yylineno++;this._input=this._input.slice(1);return ch;},unput:function(ch){this._input=ch+this._input;return this;},more:function(){this._more=true;return this;},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?'...':'')+past.substr(-20).replace(/\n/g,"");},upcomingInput:function(){var next=this.match;if(next.length<20){next+=this._input.substr(0,20-next.length);} -return(next.substr(0,20)+(next.length>20?'...':'')).replace(/\n/g,"");},showPosition:function(){var pre=this.pastInput();var c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^";},next:function(){if(this.done){return this.EOF;} -if(!this._input)this.done=true;var token,match,col,lines;if(!this._more){this.yytext='';this.match='';} -var rules=this._currentRules();for(var i=0;i=/,/^/,/^!=/,/^==/,/^%/,/^\(/,/^\)/,/^$/,/^./];lexer.conditions={"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],"inclusive":true}};return lexer;})() -parser.lexer=lexer;return parser;})();if(typeof exports!=='undefined'){if(typeof module!=='undefined'&&module.exports){exports=module.exports=Jed;} -exports.Jed=Jed;} -else{if(typeof define==='function'&&define.amd){define('jed',function(){return Jed;});} -root['Jed']=Jed;}})(this); \ No newline at end of file diff --git a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload-ui.js b/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload-ui.js deleted file mode 100644 index e330fe16a36..00000000000 --- a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload-ui.js +++ /dev/null @@ -1,702 +0,0 @@ -/* - * jQuery File Upload User Interface Plugin 6.9.1 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/*jslint nomen: true, unparam: true, regexp: true */ -/*global define, window, document, URL, webkitURL, FileReader */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'tmpl', - 'load-image', - './jquery.fileupload-fp' - ], factory); - } else { - // Browser globals: - factory( - window.jQuery, - window.tmpl, - window.loadImage - ); - } -}(function ($, tmpl, loadImage) { - 'use strict'; - - // The UI version extends the FP (file processing) version or the basic - // file upload widget and adds complete user interface interaction: - var parentWidget = ($.blueimpFP || $.blueimp).fileupload; - $.widget('blueimpUI.fileupload', parentWidget, { - - options: { - // By default, files added to the widget are uploaded as soon - // as the user clicks on the start buttons. To enable automatic - // uploads, set the following option to true: - autoUpload: false, - // The following option limits the number of files that are - // allowed to be uploaded using this widget: - maxNumberOfFiles: undefined, - // The maximum allowed file size: - maxFileSize: undefined, - // The minimum allowed file size: - minFileSize: undefined, - // The regular expression for allowed file types, matches - // against either file type or file name: - acceptFileTypes: /.+$/i, - // The regular expression to define for which files a preview - // image is shown, matched against the file type: - previewSourceFileTypes: /^image\/(gif|jpeg|png)$/, - // The maximum file size of images that are to be displayed as preview: - previewSourceMaxFileSize: 5000000, // 5MB - // The maximum width of the preview images: - previewMaxWidth: 80, - // The maximum height of the preview images: - previewMaxHeight: 80, - // By default, preview images are displayed as canvas elements - // if supported by the browser. Set the following option to false - // to always display preview images as img elements: - previewAsCanvas: true, - // The ID of the upload template: - uploadTemplateId: 'template-upload', - // The ID of the download template: - downloadTemplateId: 'template-download', - // The container for the list of files. If undefined, it is set to - // an element with class "files" inside of the widget element: - filesContainer: undefined, - // By default, files are appended to the files container. - // Set the following option to true, to prepend files instead: - prependFiles: false, - // The expected data type of the upload response, sets the dataType - // option of the $.ajax upload requests: - dataType: 'json', - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop or add API call). - // See the basic file upload widget for more information: - add: function (e, data) { - var that = $(this).data('fileupload'), - options = that.options, - files = data.files; - $(this).fileupload('process', data).done(function () { - that._adjustMaxNumberOfFiles(-files.length); - data.isAdjusted = true; - data.files.valid = data.isValidated = that._validate(files); - data.context = that._renderUpload(files).data('data', data); - options.filesContainer[ - options.prependFiles ? 'prepend' : 'append' - ](data.context); - that._renderPreviews(files, data.context); - that._forceReflow(data.context); - that._transition(data.context).done( - function () { - if ((that._trigger('added', e, data) !== false) && - (options.autoUpload || data.autoUpload) && - data.autoUpload !== false && data.isValidated) { - data.submit(); - } - } - ); - }); - }, - // Callback for the start of each file upload request: - send: function (e, data) { - var that = $(this).data('fileupload'); - if (!data.isValidated) { - if (!data.isAdjusted) { - that._adjustMaxNumberOfFiles(-data.files.length); - } - if (!that._validate(data.files)) { - return false; - } - } - if (data.context && data.dataType && - data.dataType.substr(0, 6) === 'iframe') { - // Iframe Transport does not support progress events. - // In lack of an indeterminate progress bar, we set - // the progress to 100%, showing the full animated bar: - data.context - .find('.progress').addClass( - !$.support.transition && 'progress-animated' - ) - .attr('aria-valuenow', 100) - .find('.bar').css( - 'width', - '100%' - ); - } - return that._trigger('sent', e, data); - }, - // Callback for successful uploads: - done: function (e, data) { - var that = $(this).data('fileupload'), - template; - if (data.context) { - data.context.each(function (index) { - var file = ($.isArray(data.result) && - data.result[index]) || {error: 'emptyResult'}; - if (file.error) { - that._adjustMaxNumberOfFiles(1); - } - that._transition($(this)).done( - function () { - var node = $(this); - template = that._renderDownload([file]) - .css('height', node.height()) - .replaceAll(node); - that._forceReflow(template); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('completed', e, data); - } - ); - } - ); - }); - } else { - template = that._renderDownload(data.result) - .appendTo(that.options.filesContainer); - that._forceReflow(template); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('completed', e, data); - } - ); - } - }, - // Callback for failed (abort or error) uploads: - fail: function (e, data) { - var that = $(this).data('fileupload'), - template; - that._adjustMaxNumberOfFiles(data.files.length); - if (data.context) { - data.context.each(function (index) { - if (data.errorThrown !== 'abort') { - var file = data.files[index]; - file.error = file.error || data.errorThrown || - true; - that._transition($(this)).done( - function () { - var node = $(this); - template = that._renderDownload([file]) - .replaceAll(node); - that._forceReflow(template); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('failed', e, data); - } - ); - } - ); - } else { - that._transition($(this)).done( - function () { - $(this).remove(); - that._trigger('failed', e, data); - } - ); - } - }); - } else if (data.errorThrown !== 'abort') { - that._adjustMaxNumberOfFiles(-data.files.length); - data.context = that._renderUpload(data.files) - .appendTo(that.options.filesContainer) - .data('data', data); - that._forceReflow(data.context); - that._transition(data.context).done( - function () { - data.context = $(this); - that._trigger('failed', e, data); - } - ); - } else { - that._trigger('failed', e, data); - } - }, - // Callback for upload progress events: - progress: function (e, data) { - if (data.context) { - var progress = parseInt(data.loaded / data.total * 100, 10); - data.context.find('.progress') - .attr('aria-valuenow', progress) - .find('.bar').css( - 'width', - progress + '%' - ); - } - }, - // Callback for global upload progress events: - progressall: function (e, data) { - var $this = $(this), - progress = parseInt(data.loaded / data.total * 100, 10), - globalProgressNode = $this.find('.fileupload-progress'), - extendedProgressNode = globalProgressNode - .find('.progress-extended'); - if (extendedProgressNode.length) { - extendedProgressNode.html( - $this.data('fileupload')._renderExtendedProgress(data) - ); - } - globalProgressNode - .find('.progress') - .attr('aria-valuenow', progress) - .find('.bar').css( - 'width', - progress + '%' - ); - }, - // Callback for uploads start, equivalent to the global ajaxStart event: - start: function (e) { - var that = $(this).data('fileupload'); - that._transition($(this).find('.fileupload-progress')).done( - function () { - that._trigger('started', e); - } - ); - }, - // Callback for uploads stop, equivalent to the global ajaxStop event: - stop: function (e) { - var that = $(this).data('fileupload'); - that._transition($(this).find('.fileupload-progress')).done( - function () { - $(this).find('.progress') - .attr('aria-valuenow', '0') - .find('.bar').css('width', '0%'); - $(this).find('.progress-extended').html(' '); - that._trigger('stopped', e); - } - ); - }, - // Callback for file deletion: - destroy: function (e, data) { - var that = $(this).data('fileupload'); - if (data.url) { - $.ajax(data); - that._adjustMaxNumberOfFiles(1); - } - that._transition(data.context).done( - function () { - $(this).remove(); - that._trigger('destroyed', e, data); - } - ); - } - }, - - // Link handler, that allows to download files - // by drag & drop of the links to the desktop: - _enableDragToDesktop: function () { - var link = $(this), - url = link.prop('href'), - name = link.prop('download'), - type = 'application/octet-stream'; - link.bind('dragstart', function (e) { - try { - e.originalEvent.dataTransfer.setData( - 'DownloadURL', - [type, name, url].join(':') - ); - } catch (err) {} - }); - }, - - _adjustMaxNumberOfFiles: function (operand) { - if (typeof this.options.maxNumberOfFiles === 'number') { - this.options.maxNumberOfFiles += operand; - if (this.options.maxNumberOfFiles < 1) { - this._disableFileInputButton(); - } else { - this._enableFileInputButton(); - } - } - }, - - _formatFileSize: function (bytes) { - if (typeof bytes !== 'number') { - return ''; - } - if (bytes >= 1000000000) { - return (bytes / 1000000000).toFixed(2) + ' GB'; - } - if (bytes >= 1000000) { - return (bytes / 1000000).toFixed(2) + ' MB'; - } - return (bytes / 1000).toFixed(2) + ' KB'; - }, - - _formatBitrate: function (bits) { - if (typeof bits !== 'number') { - return ''; - } - if (bits >= 1000000000) { - return (bits / 1000000000).toFixed(2) + ' Gbit/s'; - } - if (bits >= 1000000) { - return (bits / 1000000).toFixed(2) + ' Mbit/s'; - } - if (bits >= 1000) { - return (bits / 1000).toFixed(2) + ' kbit/s'; - } - return bits + ' bit/s'; - }, - - _formatTime: function (seconds) { - var date = new Date(seconds * 1000), - days = parseInt(seconds / 86400, 10); - days = days ? days + 'd ' : ''; - return days + - ('0' + date.getUTCHours()).slice(-2) + ':' + - ('0' + date.getUTCMinutes()).slice(-2) + ':' + - ('0' + date.getUTCSeconds()).slice(-2); - }, - - _formatPercentage: function (floatValue) { - return (floatValue * 100).toFixed(2) + ' %'; - }, - - _renderExtendedProgress: function (data) { - return this._formatBitrate(data.bitrate) + ' | ' + - this._formatTime( - (data.total - data.loaded) * 8 / data.bitrate - ) + ' | ' + - this._formatPercentage( - data.loaded / data.total - ) + ' | ' + - this._formatFileSize(data.loaded) + ' / ' + - this._formatFileSize(data.total); - }, - - _hasError: function (file) { - if (file.error) { - return file.error; - } - // The number of added files is subtracted from - // maxNumberOfFiles before validation, so we check if - // maxNumberOfFiles is below 0 (instead of below 1): - if (this.options.maxNumberOfFiles < 0) { - return 'maxNumberOfFiles'; - } - // Files are accepted if either the file type or the file name - // matches against the acceptFileTypes regular expression, as - // only browsers with support for the File API report the type: - if (!(this.options.acceptFileTypes.test(file.type) || - this.options.acceptFileTypes.test(file.name))) { - return 'acceptFileTypes'; - } - if (this.options.maxFileSize && - file.size > this.options.maxFileSize) { - return 'maxFileSize'; - } - if (typeof file.size === 'number' && - file.size < this.options.minFileSize) { - return 'minFileSize'; - } - return null; - }, - - _validate: function (files) { - var that = this, - valid = !!files.length; - $.each(files, function (index, file) { - file.error = that._hasError(file); - if (file.error) { - valid = false; - } - }); - return valid; - }, - - _renderTemplate: function (func, files) { - if (!func) { - return $(); - } - var result = func({ - files: files, - formatFileSize: this._formatFileSize, - options: this.options - }); - if (result instanceof $) { - return result; - } - return $(this.options.templatesContainer).html(result).children(); - }, - - _renderPreview: function (file, node) { - var that = this, - options = this.options, - dfd = $.Deferred(); - return ((loadImage && loadImage( - file, - function (img) { - node.append(img); - that._forceReflow(node); - that._transition(node).done(function () { - dfd.resolveWith(node); - }); - if (!$.contains(document.body, node[0])) { - // If the element is not part of the DOM, - // transition events are not triggered, - // so we have to resolve manually: - dfd.resolveWith(node); - } - }, - { - maxWidth: options.previewMaxWidth, - maxHeight: options.previewMaxHeight, - canvas: options.previewAsCanvas - } - )) || dfd.resolveWith(node)) && dfd; - }, - - _renderPreviews: function (files, nodes) { - var that = this, - options = this.options; - nodes.find('.preview span').each(function (index, element) { - var file = files[index]; - if (options.previewSourceFileTypes.test(file.type) && - ($.type(options.previewSourceMaxFileSize) !== 'number' || - file.size < options.previewSourceMaxFileSize)) { - that._processingQueue = that._processingQueue.pipe(function () { - var dfd = $.Deferred(); - that._renderPreview(file, $(element)).done( - function () { - dfd.resolveWith(that); - } - ); - return dfd.promise(); - }); - } - }); - return this._processingQueue; - }, - - _renderUpload: function (files) { - return this._renderTemplate( - this.options.uploadTemplate, - files - ); - }, - - _renderDownload: function (files) { - return this._renderTemplate( - this.options.downloadTemplate, - files - ).find('a[download]').each(this._enableDragToDesktop).end(); - }, - - _startHandler: function (e) { - e.preventDefault(); - var button = $(this), - template = button.closest('.template-upload'), - data = template.data('data'); - if (data && data.submit && !data.jqXHR && data.submit()) { - button.prop('disabled', true); - } - }, - - _cancelHandler: function (e) { - e.preventDefault(); - var template = $(this).closest('.template-upload'), - data = template.data('data') || {}; - if (!data.jqXHR) { - data.errorThrown = 'abort'; - e.data.fileupload._trigger('fail', e, data); - } else { - data.jqXHR.abort(); - } - }, - - _deleteHandler: function (e) { - e.preventDefault(); - var button = $(this); - e.data.fileupload._trigger('destroy', e, { - context: button.closest('.template-download'), - url: button.attr('data-url'), - type: button.attr('data-type') || 'DELETE', - dataType: e.data.fileupload.options.dataType - }); - }, - - _forceReflow: function (node) { - return $.support.transition && node.length && - node[0].offsetWidth; - }, - - _transition: function (node) { - var dfd = $.Deferred(); - if ($.support.transition && node.hasClass('fade')) { - node.bind( - $.support.transition.end, - function (e) { - // Make sure we don't respond to other transitions events - // in the container element, e.g. from button elements: - if (e.target === node[0]) { - node.unbind($.support.transition.end); - dfd.resolveWith(node); - } - } - ).toggleClass('in'); - } else { - node.toggleClass('in'); - dfd.resolveWith(node); - } - return dfd; - }, - - _initButtonBarEventHandlers: function () { - var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'), - filesList = this.options.filesContainer, - ns = this.options.namespace; - fileUploadButtonBar.find('.start') - .bind('click.' + ns, function (e) { - e.preventDefault(); - filesList.find('.start button').click(); - }); - fileUploadButtonBar.find('.cancel') - .bind('click.' + ns, function (e) { - e.preventDefault(); - filesList.find('.cancel button').click(); - }); - fileUploadButtonBar.find('.delete') - .bind('click.' + ns, function (e) { - e.preventDefault(); - filesList.find('.delete input:checked') - .siblings('button').click(); - fileUploadButtonBar.find('.toggle') - .prop('checked', false); - }); - fileUploadButtonBar.find('.toggle') - .bind('change.' + ns, function (e) { - filesList.find('.delete input').prop( - 'checked', - $(this).is(':checked') - ); - }); - }, - - _destroyButtonBarEventHandlers: function () { - this.element.find('.fileupload-buttonbar button') - .unbind('click.' + this.options.namespace); - this.element.find('.fileupload-buttonbar .toggle') - .unbind('change.' + this.options.namespace); - }, - - _initEventHandlers: function () { - parentWidget.prototype._initEventHandlers.call(this); - var eventData = {fileupload: this}; - this.options.filesContainer - .delegate( - '.start button', - 'click.' + this.options.namespace, - eventData, - this._startHandler - ) - .delegate( - '.cancel button', - 'click.' + this.options.namespace, - eventData, - this._cancelHandler - ) - .delegate( - '.delete button', - 'click.' + this.options.namespace, - eventData, - this._deleteHandler - ); - this._initButtonBarEventHandlers(); - }, - - _destroyEventHandlers: function () { - var options = this.options; - this._destroyButtonBarEventHandlers(); - options.filesContainer - .undelegate('.start button', 'click.' + options.namespace) - .undelegate('.cancel button', 'click.' + options.namespace) - .undelegate('.delete button', 'click.' + options.namespace); - parentWidget.prototype._destroyEventHandlers.call(this); - }, - - _enableFileInputButton: function () { - this.element.find('.fileinput-button input') - .prop('disabled', false) - .parent().removeClass('disabled'); - }, - - _disableFileInputButton: function () { - this.element.find('.fileinput-button input') - .prop('disabled', true) - .parent().addClass('disabled'); - }, - - _initTemplates: function () { - var options = this.options; - options.templatesContainer = document.createElement( - options.filesContainer.prop('nodeName') - ); - if (tmpl) { - if (options.uploadTemplateId) { - options.uploadTemplate = tmpl(options.uploadTemplateId); - } - if (options.downloadTemplateId) { - options.downloadTemplate = tmpl(options.downloadTemplateId); - } - } - }, - - _initFilesContainer: function () { - var options = this.options; - if (options.filesContainer === undefined) { - options.filesContainer = this.element.find('.files'); - } else if (!(options.filesContainer instanceof $)) { - options.filesContainer = $(options.filesContainer); - } - }, - - _initSpecialOptions: function () { - parentWidget.prototype._initSpecialOptions.call(this); - this._initFilesContainer(); - this._initTemplates(); - }, - - _create: function () { - parentWidget.prototype._create.call(this); - this._refreshOptionsList.push( - 'filesContainer', - 'uploadTemplateId', - 'downloadTemplateId' - ); - if (!$.blueimpFP) { - this._processingQueue = $.Deferred().resolveWith(this).promise(); - this.process = function () { - return this._processingQueue; - }; - } - }, - - enable: function () { - parentWidget.prototype.enable.call(this); - this.element.find('input, button').prop('disabled', false); - this._enableFileInputButton(); - }, - - disable: function () { - this.element.find('input, button').prop('disabled', true); - this._disableFileInputButton(); - parentWidget.prototype.disable.call(this); - } - - }); - -})); diff --git a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload-ui.min.js b/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload-ui.min.js deleted file mode 100644 index 72406a0081d..00000000000 --- a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload-ui.min.js +++ /dev/null @@ -1,30 +0,0 @@ -(function(factory){'use strict';if(typeof define==='function'&&define.amd){define(['jquery','tmpl','load-image','./jquery.fileupload-fp'],factory);}else{factory(window.jQuery,window.tmpl,window.loadImage);}}(function($,tmpl,loadImage){'use strict';var parentWidget=($.blueimpFP||$.blueimp).fileupload;$.widget('blueimpUI.fileupload',parentWidget,{options:{autoUpload:false,maxNumberOfFiles:undefined,maxFileSize:undefined,minFileSize:undefined,acceptFileTypes:/.+$/i,previewSourceFileTypes:/^image\/(gif|jpeg|png)$/,previewSourceMaxFileSize:5000000,previewMaxWidth:80,previewMaxHeight:80,previewAsCanvas:true,uploadTemplateId:'template-upload',downloadTemplateId:'template-download',filesContainer:undefined,prependFiles:false,dataType:'json',add:function(e,data){var that=$(this).data('fileupload'),options=that.options,files=data.files;$(this).fileupload('process',data).done(function(){that._adjustMaxNumberOfFiles(-files.length);data.isAdjusted=true;data.files.valid=data.isValidated=that._validate(files);data.context=that._renderUpload(files).data('data',data);options.filesContainer[options.prependFiles?'prepend':'append'](data.context);that._renderPreviews(files,data.context);that._forceReflow(data.context);that._transition(data.context).done(function(){if((that._trigger('added',e,data)!==false)&&(options.autoUpload||data.autoUpload)&&data.autoUpload!==false&&data.isValidated){data.submit();}});});},send:function(e,data){var that=$(this).data('fileupload');if(!data.isValidated){if(!data.isAdjusted){that._adjustMaxNumberOfFiles(-data.files.length);} -if(!that._validate(data.files)){return false;}} -if(data.context&&data.dataType&&data.dataType.substr(0,6)==='iframe'){data.context.find('.progress').addClass(!$.support.transition&&'progress-animated').attr('aria-valuenow',100).find('.bar').css('width','100%');} -return that._trigger('sent',e,data);},done:function(e,data){var that=$(this).data('fileupload'),template;if(data.context){data.context.each(function(index){var file=($.isArray(data.result)&&data.result[index])||{error:'emptyResult'};if(file.error){that._adjustMaxNumberOfFiles(1);} -that._transition($(this)).done(function(){var node=$(this);template=that._renderDownload([file]).css('height',node.height()).replaceAll(node);that._forceReflow(template);that._transition(template).done(function(){data.context=$(this);that._trigger('completed',e,data);});});});}else{template=that._renderDownload(data.result).appendTo(that.options.filesContainer);that._forceReflow(template);that._transition(template).done(function(){data.context=$(this);that._trigger('completed',e,data);});}},fail:function(e,data){var that=$(this).data('fileupload'),template;that._adjustMaxNumberOfFiles(data.files.length);if(data.context){data.context.each(function(index){if(data.errorThrown!=='abort'){var file=data.files[index];file.error=file.error||data.errorThrown||true;that._transition($(this)).done(function(){var node=$(this);template=that._renderDownload([file]).replaceAll(node);that._forceReflow(template);that._transition(template).done(function(){data.context=$(this);that._trigger('failed',e,data);});});}else{that._transition($(this)).done(function(){$(this).remove();that._trigger('failed',e,data);});}});}else if(data.errorThrown!=='abort'){that._adjustMaxNumberOfFiles(-data.files.length);data.context=that._renderUpload(data.files).appendTo(that.options.filesContainer).data('data',data);that._forceReflow(data.context);that._transition(data.context).done(function(){data.context=$(this);that._trigger('failed',e,data);});}else{that._trigger('failed',e,data);}},progress:function(e,data){if(data.context){var progress=parseInt(data.loaded/data.total*100,10);data.context.find('.progress').attr('aria-valuenow',progress).find('.bar').css('width',progress+'%');}},progressall:function(e,data){var $this=$(this),progress=parseInt(data.loaded/data.total*100,10),globalProgressNode=$this.find('.fileupload-progress'),extendedProgressNode=globalProgressNode.find('.progress-extended');if(extendedProgressNode.length){extendedProgressNode.html($this.data('fileupload')._renderExtendedProgress(data));} -globalProgressNode.find('.progress').attr('aria-valuenow',progress).find('.bar').css('width',progress+'%');},start:function(e){var that=$(this).data('fileupload');that._transition($(this).find('.fileupload-progress')).done(function(){that._trigger('started',e);});},stop:function(e){var that=$(this).data('fileupload');that._transition($(this).find('.fileupload-progress')).done(function(){$(this).find('.progress').attr('aria-valuenow','0').find('.bar').css('width','0%');$(this).find('.progress-extended').html(' ');that._trigger('stopped',e);});},destroy:function(e,data){var that=$(this).data('fileupload');if(data.url){$.ajax(data);that._adjustMaxNumberOfFiles(1);} -that._transition(data.context).done(function(){$(this).remove();that._trigger('destroyed',e,data);});}},_enableDragToDesktop:function(){var link=$(this),url=link.prop('href'),name=link.prop('download'),type='application/octet-stream';link.bind('dragstart',function(e){try{e.originalEvent.dataTransfer.setData('DownloadURL',[type,name,url].join(':'));}catch(err){}});},_adjustMaxNumberOfFiles:function(operand){if(typeof this.options.maxNumberOfFiles==='number'){this.options.maxNumberOfFiles+=operand;if(this.options.maxNumberOfFiles<1){this._disableFileInputButton();}else{this._enableFileInputButton();}}},_formatFileSize:function(bytes){if(typeof bytes!=='number'){return'';} -if(bytes>=1000000000){return(bytes/1000000000).toFixed(2)+' GB';} -if(bytes>=1000000){return(bytes/1000000).toFixed(2)+' MB';} -return(bytes/1000).toFixed(2)+' KB';},_formatBitrate:function(bits){if(typeof bits!=='number'){return'';} -if(bits>=1000000000){return(bits/1000000000).toFixed(2)+' Gbit/s';} -if(bits>=1000000){return(bits/1000000).toFixed(2)+' Mbit/s';} -if(bits>=1000){return(bits/1000).toFixed(2)+' kbit/s';} -return bits+' bit/s';},_formatTime:function(seconds){var date=new Date(seconds*1000),days=parseInt(seconds/86400,10);days=days?days+'d ':'';return days+ -('0'+date.getUTCHours()).slice(-2)+':'+ -('0'+date.getUTCMinutes()).slice(-2)+':'+ -('0'+date.getUTCSeconds()).slice(-2);},_formatPercentage:function(floatValue){return(floatValue*100).toFixed(2)+' %';},_renderExtendedProgress:function(data){return this._formatBitrate(data.bitrate)+' | '+ -this._formatTime((data.total-data.loaded)*8/data.bitrate)+' | '+ -this._formatPercentage(data.loaded/data.total)+' | '+ -this._formatFileSize(data.loaded)+' / '+ -this._formatFileSize(data.total);},_hasError:function(file){if(file.error){return file.error;} -if(this.options.maxNumberOfFiles<0){return'maxNumberOfFiles';} -if(!(this.options.acceptFileTypes.test(file.type)||this.options.acceptFileTypes.test(file.name))){return'acceptFileTypes';} -if(this.options.maxFileSize&&file.size>this.options.maxFileSize){return'maxFileSize';} -if(typeof file.size==='number'&&file.size interval) { - this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; - this.loaded = loaded; - this.timestamp = now; - } - return this.bitrate; - }; - }, - - _isXHRUpload: function (options) { - return !options.forceIframeTransport && - ((!options.multipart && $.support.xhrFileUpload) || - $.support.xhrFormDataFileUpload); - }, - - _getFormData: function (options) { - var formData; - if (typeof options.formData === 'function') { - return options.formData(options.form); - } - if ($.isArray(options.formData)) { - return options.formData; - } - if (options.formData) { - formData = []; - $.each(options.formData, function (name, value) { - formData.push({name: name, value: value}); - }); - return formData; - } - return []; - }, - - _getTotal: function (files) { - var total = 0; - $.each(files, function (index, file) { - total += file.size || 1; - }); - return total; - }, - - _onProgress: function (e, data) { - if (e.lengthComputable) { - var now = +(new Date()), - total, - loaded; - if (data._time && data.progressInterval && - (now - data._time < data.progressInterval) && - e.loaded !== e.total) { - return; - } - data._time = now; - total = data.total || this._getTotal(data.files); - loaded = parseInt( - e.loaded / e.total * (data.chunkSize || total), - 10 - ) + (data.uploadedBytes || 0); - this._loaded += loaded - (data.loaded || data.uploadedBytes || 0); - data.lengthComputable = true; - data.loaded = loaded; - data.total = total; - data.bitrate = data._bitrateTimer.getBitrate( - now, - loaded, - data.bitrateInterval - ); - // Trigger a custom progress event with a total data property set - // to the file size(s) of the current upload and a loaded data - // property calculated accordingly: - this._trigger('progress', e, data); - // Trigger a global progress event for all current file uploads, - // including ajax calls queued for sequential file uploads: - this._trigger('progressall', e, { - lengthComputable: true, - loaded: this._loaded, - total: this._total, - bitrate: this._bitrateTimer.getBitrate( - now, - this._loaded, - data.bitrateInterval - ) - }); - } - }, - - _initProgressListener: function (options) { - var that = this, - xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); - // Accesss to the native XHR object is required to add event listeners - // for the upload progress event: - if (xhr.upload) { - $(xhr.upload).bind('progress', function (e) { - var oe = e.originalEvent; - // Make sure the progress event properties get copied over: - e.lengthComputable = oe.lengthComputable; - e.loaded = oe.loaded; - e.total = oe.total; - that._onProgress(e, options); - }); - options.xhr = function () { - return xhr; - }; - } - }, - - _initXHRData: function (options) { - var formData, - file = options.files[0], - // Ignore non-multipart setting if not supported: - multipart = options.multipart || !$.support.xhrFileUpload, - paramName = options.paramName[0]; - if (!multipart || options.blob) { - // For non-multipart uploads and chunked uploads, - // file meta data is not part of the request body, - // so we transmit this data as part of the HTTP headers. - // For cross domain requests, these headers must be allowed - // via Access-Control-Allow-Headers or removed using - // the beforeSend callback: - options.headers = $.extend(options.headers, { - 'X-File-Name': file.name, - 'X-File-Type': file.type, - 'X-File-Size': file.size - }); - if (!options.blob) { - // Non-chunked non-multipart upload: - options.contentType = file.type; - options.data = file; - } else if (!multipart) { - // Chunked non-multipart upload: - options.contentType = 'application/octet-stream'; - options.data = options.blob; - } - } - if (multipart && $.support.xhrFormDataFileUpload) { - if (options.postMessage) { - // window.postMessage does not allow sending FormData - // objects, so we just add the File/Blob objects to - // the formData array and let the postMessage window - // create the FormData object out of this array: - formData = this._getFormData(options); - if (options.blob) { - formData.push({ - name: paramName, - value: options.blob - }); - } else { - $.each(options.files, function (index, file) { - formData.push({ - name: options.paramName[index] || paramName, - value: file - }); - }); - } - } else { - if (options.formData instanceof FormData) { - formData = options.formData; - } else { - formData = new FormData(); - $.each(this._getFormData(options), function (index, field) { - formData.append(field.name, field.value); - }); - } - if (options.blob) { - formData.append(paramName, options.blob, file.name); - } else { - $.each(options.files, function (index, file) { - // File objects are also Blob instances. - // This check allows the tests to run with - // dummy objects: - if (file instanceof Blob) { - formData.append( - options.paramName[index] || paramName, - file, - file.name - ); - } - }); - } - } - options.data = formData; - } - // Blob reference is not needed anymore, free memory: - options.blob = null; - }, - - _initIframeSettings: function (options) { - // Setting the dataType to iframe enables the iframe transport: - options.dataType = 'iframe ' + (options.dataType || ''); - // The iframe transport accepts a serialized array as form data: - options.formData = this._getFormData(options); - // Add redirect url to form data on cross-domain uploads: - if (options.redirect && $('').prop('href', options.url) - .prop('host') !== location.host) { - options.formData.push({ - name: options.redirectParamName || 'redirect', - value: options.redirect - }); - } - }, - - _initDataSettings: function (options) { - if (this._isXHRUpload(options)) { - if (!this._chunkedUpload(options, true)) { - if (!options.data) { - this._initXHRData(options); - } - this._initProgressListener(options); - } - if (options.postMessage) { - // Setting the dataType to postmessage enables the - // postMessage transport: - options.dataType = 'postmessage ' + (options.dataType || ''); - } - } else { - this._initIframeSettings(options, 'iframe'); - } - }, - - _getParamName: function (options) { - var fileInput = $(options.fileInput), - paramName = options.paramName; - if (!paramName) { - paramName = []; - fileInput.each(function () { - var input = $(this), - name = input.prop('name') || 'files[]', - i = (input.prop('files') || [1]).length; - while (i) { - paramName.push(name); - i -= 1; - } - }); - if (!paramName.length) { - paramName = [fileInput.prop('name') || 'files[]']; - } - } else if (!$.isArray(paramName)) { - paramName = [paramName]; - } - return paramName; - }, - - _initFormSettings: function (options) { - // Retrieve missing options from the input field and the - // associated form, if available: - if (!options.form || !options.form.length) { - options.form = $(options.fileInput.prop('form')); - } - options.paramName = this._getParamName(options); - if (!options.url) { - options.url = options.form.prop('action') || location.href; - } - // The HTTP request method must be "POST" or "PUT": - options.type = (options.type || options.form.prop('method') || '') - .toUpperCase(); - if (options.type !== 'POST' && options.type !== 'PUT') { - options.type = 'POST'; - } - }, - - _getAJAXSettings: function (data) { - var options = $.extend({}, this.options, data); - this._initFormSettings(options); - this._initDataSettings(options); - return options; - }, - - // Maps jqXHR callbacks to the equivalent - // methods of the given Promise object: - _enhancePromise: function (promise) { - promise.success = promise.done; - promise.error = promise.fail; - promise.complete = promise.always; - return promise; - }, - - // Creates and returns a Promise object enhanced with - // the jqXHR methods abort, success, error and complete: - _getXHRPromise: function (resolveOrReject, context, args) { - var dfd = $.Deferred(), - promise = dfd.promise(); - context = context || this.options.context || promise; - if (resolveOrReject === true) { - dfd.resolveWith(context, args); - } else if (resolveOrReject === false) { - dfd.rejectWith(context, args); - } - promise.abort = dfd.promise; - return this._enhancePromise(promise); - }, - - // Uploads a file in multiple, sequential requests - // by splitting the file up in multiple blob chunks. - // If the second parameter is true, only tests if the file - // should be uploaded in chunks, but does not invoke any - // upload requests: - _chunkedUpload: function (options, testOnly) { - var that = this, - file = options.files[0], - fs = file.size, - ub = options.uploadedBytes = options.uploadedBytes || 0, - mcs = options.maxChunkSize || fs, - // Use the Blob methods with the slice implementation - // according to the W3C Blob API specification: - slice = file.webkitSlice || file.mozSlice || file.slice, - upload, - n, - jqXHR, - pipe; - if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || - options.data) { - return false; - } - if (testOnly) { - return true; - } - if (ub >= fs) { - file.error = 'uploadedBytes'; - return this._getXHRPromise( - false, - options.context, - [null, 'error', file.error] - ); - } - // n is the number of blobs to upload, - // calculated via filesize, uploaded bytes and max chunk size: - n = Math.ceil((fs - ub) / mcs); - // The chunk upload method accepting the chunk number as parameter: - upload = function (i) { - if (!i) { - return that._getXHRPromise(true, options.context); - } - // Upload the blobs in sequential order: - return upload(i -= 1).pipe(function () { - // Clone the options object for each chunk upload: - var o = $.extend({}, options); - o.blob = slice.call( - file, - ub + i * mcs, - ub + (i + 1) * mcs - ); - // Store the current chunk size, as the blob itself - // will be dereferenced after data processing: - o.chunkSize = o.blob.size; - // Process the upload data (the blob and potential form data): - that._initXHRData(o); - // Add progress listeners for this chunk upload: - that._initProgressListener(o); - jqXHR = ($.ajax(o) || that._getXHRPromise(false, o.context)) - .done(function () { - // Create a progress event if upload is done and - // no progress event has been invoked for this chunk: - if (!o.loaded) { - that._onProgress($.Event('progress', { - lengthComputable: true, - loaded: o.chunkSize, - total: o.chunkSize - }), o); - } - options.uploadedBytes = o.uploadedBytes += - o.chunkSize; - }); - return jqXHR; - }); - }; - // Return the piped Promise object, enhanced with an abort method, - // which is delegated to the jqXHR object of the current upload, - // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe = upload(n); - pipe.abort = function () { - return jqXHR.abort(); - }; - return this._enhancePromise(pipe); - }, - - _beforeSend: function (e, data) { - if (this._active === 0) { - // the start callback is triggered when an upload starts - // and no other uploads are currently running, - // equivalent to the global ajaxStart event: - this._trigger('start'); - // Set timer for global bitrate progress calculation: - this._bitrateTimer = new this._BitrateTimer(); - } - this._active += 1; - // Initialize the global progress values: - this._loaded += data.uploadedBytes || 0; - this._total += this._getTotal(data.files); - }, - - _onDone: function (result, textStatus, jqXHR, options) { - if (!this._isXHRUpload(options)) { - // Create a progress event for each iframe load: - this._onProgress($.Event('progress', { - lengthComputable: true, - loaded: 1, - total: 1 - }), options); - } - options.result = result; - options.textStatus = textStatus; - options.jqXHR = jqXHR; - this._trigger('done', null, options); - }, - - _onFail: function (jqXHR, textStatus, errorThrown, options) { - options.jqXHR = jqXHR; - options.textStatus = textStatus; - options.errorThrown = errorThrown; - this._trigger('fail', null, options); - if (options.recalculateProgress) { - // Remove the failed (error or abort) file upload from - // the global progress calculation: - this._loaded -= options.loaded || options.uploadedBytes || 0; - this._total -= options.total || this._getTotal(options.files); - } - }, - - _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { - this._active -= 1; - options.textStatus = textStatus; - if (jqXHRorError && jqXHRorError.always) { - options.jqXHR = jqXHRorError; - options.result = jqXHRorResult; - } else { - options.jqXHR = jqXHRorResult; - options.errorThrown = jqXHRorError; - } - this._trigger('always', null, options); - if (this._active === 0) { - // The stop callback is triggered when all uploads have - // been completed, equivalent to the global ajaxStop event: - this._trigger('stop'); - // Reset the global progress values: - this._loaded = this._total = 0; - this._bitrateTimer = null; - } - }, - - _onSend: function (e, data) { - var that = this, - jqXHR, - slot, - pipe, - options = that._getAJAXSettings(data), - send = function (resolve, args) { - that._sending += 1; - // Set timer for bitrate progress calculation: - options._bitrateTimer = new that._BitrateTimer(); - jqXHR = jqXHR || ( - (resolve !== false && - that._trigger('send', e, options) !== false && - (that._chunkedUpload(options) || $.ajax(options))) || - that._getXHRPromise(false, options.context, args) - ).done(function (result, textStatus, jqXHR) { - that._onDone(result, textStatus, jqXHR, options); - }).fail(function (jqXHR, textStatus, errorThrown) { - that._onFail(jqXHR, textStatus, errorThrown, options); - }).always(function (jqXHRorResult, textStatus, jqXHRorError) { - that._sending -= 1; - that._onAlways( - jqXHRorResult, - textStatus, - jqXHRorError, - options - ); - if (options.limitConcurrentUploads && - options.limitConcurrentUploads > that._sending) { - // Start the next queued upload, - // that has not been aborted: - var nextSlot = that._slots.shift(); - while (nextSlot) { - if (!nextSlot.isRejected()) { - nextSlot.resolve(); - break; - } - nextSlot = that._slots.shift(); - } - } - }); - return jqXHR; - }; - this._beforeSend(e, options); - if (this.options.sequentialUploads || - (this.options.limitConcurrentUploads && - this.options.limitConcurrentUploads <= this._sending)) { - if (this.options.limitConcurrentUploads > 1) { - slot = $.Deferred(); - this._slots.push(slot); - pipe = slot.pipe(send); - } else { - pipe = (this._sequence = this._sequence.pipe(send, send)); - } - // Return the piped Promise object, enhanced with an abort method, - // which is delegated to the jqXHR object of the current upload, - // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe.abort = function () { - var args = [undefined, 'abort', 'abort']; - if (!jqXHR) { - if (slot) { - slot.rejectWith(args); - } - return send(false, args); - } - return jqXHR.abort(); - }; - return this._enhancePromise(pipe); - } - return send(); - }, - - _onAdd: function (e, data) { - var that = this, - result = true, - options = $.extend({}, this.options, data), - limit = options.limitMultiFileUploads, - paramName = this._getParamName(options), - paramNameSet, - paramNameSlice, - fileSet, - i; - if (!(options.singleFileUploads || limit) || - !this._isXHRUpload(options)) { - fileSet = [data.files]; - paramNameSet = [paramName]; - } else if (!options.singleFileUploads && limit) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < data.files.length; i += limit) { - fileSet.push(data.files.slice(i, i + limit)); - paramNameSlice = paramName.slice(i, i + limit); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - } - } else { - paramNameSet = paramName; - } - data.originalFiles = data.files; - $.each(fileSet || data.files, function (index, element) { - var newData = $.extend({}, data); - newData.files = fileSet ? element : [element]; - newData.paramName = paramNameSet[index]; - newData.submit = function () { - newData.jqXHR = this.jqXHR = - (that._trigger('submit', e, this) !== false) && - that._onSend(e, this); - return this.jqXHR; - }; - return (result = that._trigger('add', e, newData)); - }); - return result; - }, - - // File Normalization for Gecko 1.9.1 (Firefox 3.5) support: - _normalizeFile: function (index, file) { - if (file.name === undefined && file.size === undefined) { - file.name = file.fileName; - file.size = file.fileSize; - } - }, - - _replaceFileInput: function (input) { - var inputClone = input.clone(true); - $('
').append(inputClone)[0].reset(); - // Detaching allows to insert the fileInput on another form - // without loosing the file input value: - input.after(inputClone).detach(); - // Avoid memory leaks with the detached file input: - $.cleanData(input.unbind('remove')); - // Replace the original file input element in the fileInput - // collection with the clone, which has been copied including - // event handlers: - this.options.fileInput = this.options.fileInput.map(function (i, el) { - if (el === input[0]) { - return inputClone[0]; - } - return el; - }); - // If the widget has been initialized on the file input itself, - // override this.element with the file input clone: - if (input[0] === this.element[0]) { - this.element = inputClone; - } - }, - - _getFileInputFiles: function (fileInput) { - fileInput = $(fileInput); - var files = $.each($.makeArray(fileInput.prop('files')), this._normalizeFile), - value; - if (!files.length) { - value = fileInput.prop('value'); - if (!value) { - return []; - } - // If the files property is not available, the browser does not - // support the File API and we add a pseudo File object with - // the input value as name with path information removed: - files = [{name: value.replace(/^.*\\/, '')}]; - } - return files; - }, - - _onChange: function (e) { - var that = e.data.fileupload, - data = { - fileInput: $(e.target), - form: $(e.target.form) - }; - data.files = that._getFileInputFiles(data.fileInput); - if (that.options.replaceFileInput) { - that._replaceFileInput(data.fileInput); - } - if (that._trigger('change', e, data) === false || - that._onAdd(e, data) === false) { - return false; - } - }, - - _onPaste: function (e) { - var that = e.data.fileupload, - cbd = e.originalEvent.clipboardData, - items = (cbd && cbd.items) || [], - data = {files: []}; - $.each(items, function (index, item) { - var file = item.getAsFile && item.getAsFile(); - if (file) { - data.files.push(file); - } - }); - if (that._trigger('paste', e, data) === false || - that._onAdd(e, data) === false) { - return false; - } - }, - - _onDrop: function (e) { - var that = e.data.fileupload, - dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer, - data = { - files: $.each( - $.makeArray(dataTransfer && dataTransfer.files), - that._normalizeFile - ) - }; - if (that._trigger('drop', e, data) === false || - that._onAdd(e, data) === false) { - return false; - } - e.preventDefault(); - }, - - _onDragOver: function (e) { - var that = e.data.fileupload, - dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer; - if (that._trigger('dragover', e) === false) { - return false; - } - if (dataTransfer) { - dataTransfer.dropEffect = 'copy'; - } - e.preventDefault(); - }, - - _initEventHandlers: function () { - var ns = this.options.namespace; - if (this._isXHRUpload(this.options)) { - this.options.dropZone - .bind('dragover.' + ns, {fileupload: this}, this._onDragOver) - .bind('drop.' + ns, {fileupload: this}, this._onDrop) - .bind('paste.' + ns, {fileupload: this}, this._onPaste); - } - this.options.fileInput - .bind('change.' + ns, {fileupload: this}, this._onChange); - }, - - _destroyEventHandlers: function () { - var ns = this.options.namespace; - this.options.dropZone - .unbind('dragover.' + ns, this._onDragOver) - .unbind('drop.' + ns, this._onDrop) - .unbind('paste.' + ns, this._onPaste); - this.options.fileInput - .unbind('change.' + ns, this._onChange); - }, - - _setOption: function (key, value) { - var refresh = $.inArray(key, this._refreshOptionsList) !== -1; - if (refresh) { - this._destroyEventHandlers(); - } - $.Widget.prototype._setOption.call(this, key, value); - if (refresh) { - this._initSpecialOptions(); - this._initEventHandlers(); - } - }, - - _initSpecialOptions: function () { - var options = this.options; - if (options.fileInput === undefined) { - options.fileInput = this.element.is('input:file') ? - this.element : this.element.find('input:file'); - } else if (!(options.fileInput instanceof $)) { - options.fileInput = $(options.fileInput); - } - if (!(options.dropZone instanceof $)) { - options.dropZone = $(options.dropZone); - } - }, - - _create: function () { - var options = this.options; - // Initialize options set via HTML5 data-attributes: - $.extend(options, $(this.element[0].cloneNode(false)).data()); - options.namespace = options.namespace || this.widgetName; - this._initSpecialOptions(); - this._slots = []; - this._sequence = this._getXHRPromise(true); - this._sending = this._active = this._loaded = this._total = 0; - this._initEventHandlers(); - }, - - destroy: function () { - this._destroyEventHandlers(); - $.Widget.prototype.destroy.call(this); - }, - - enable: function () { - $.Widget.prototype.enable.call(this); - this._initEventHandlers(); - }, - - disable: function () { - this._destroyEventHandlers(); - $.Widget.prototype.disable.call(this); - }, - - // This method is exposed to the widget API and allows adding files - // using the fileupload API. The data parameter accepts an object which - // must have a files property and can contain additional options: - // .fileupload('add', {files: filesList}); - add: function (data) { - if (!data || this.options.disabled) { - return; - } - if (data.fileInput && !data.files) { - data.files = this._getFileInputFiles(data.fileInput); - } else { - data.files = $.each($.makeArray(data.files), this._normalizeFile); - } - this._onAdd(null, data); - }, - - // This method is exposed to the widget API and allows sending files - // using the fileupload API. The data parameter accepts an object which - // must have a files property and can contain additional options: - // .fileupload('send', {files: filesList}); - // The method returns a Promise object for the file upload call. - send: function (data) { - if (data && !this.options.disabled) { - if (data.fileInput && !data.files) { - data.files = this._getFileInputFiles(data.fileInput); - } else { - data.files = $.each($.makeArray(data.files), this._normalizeFile); - } - if (data.files.length) { - return this._onSend(null, data); - } - } - return this._getXHRPromise(false, data && data.context); - } - - }); - -})); diff --git a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload.min.js b/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload.min.js deleted file mode 100644 index b8666ad7e8c..00000000000 --- a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.fileupload.min.js +++ /dev/null @@ -1,45 +0,0 @@ -(function(factory){'use strict';if(typeof define==='function'&&define.amd){define(['jquery','jquery.ui.widget'],factory);}else{factory(window.jQuery);}}(function($){'use strict';$.support.xhrFileUpload=!!(window.XMLHttpRequestUpload&&window.FileReader);$.support.xhrFormDataFileUpload=!!window.FormData;$.widget('blueimp.fileupload',{options:{namespace:undefined,dropZone:$(document),fileInput:undefined,replaceFileInput:true,paramName:undefined,singleFileUploads:true,limitMultiFileUploads:undefined,sequentialUploads:false,limitConcurrentUploads:undefined,forceIframeTransport:false,redirect:undefined,redirectParamName:undefined,postMessage:undefined,multipart:true,maxChunkSize:undefined,uploadedBytes:undefined,recalculateProgress:true,progressInterval:100,bitrateInterval:500,formData:function(form){return form.serializeArray();},add:function(e,data){data.submit();},processData:false,contentType:false,cache:false},_refreshOptionsList:['namespace','dropZone','fileInput','multipart','forceIframeTransport'],_BitrateTimer:function(){this.timestamp=+(new Date());this.loaded=0;this.bitrate=0;this.getBitrate=function(now,loaded,interval){var timeDiff=now-this.timestamp;if(!this.bitrate||!interval||timeDiff>interval){this.bitrate=(loaded-this.loaded)*(1000/timeDiff)*8;this.loaded=loaded;this.timestamp=now;} -return this.bitrate;};},_isXHRUpload:function(options){return!options.forceIframeTransport&&((!options.multipart&&$.support.xhrFileUpload)||$.support.xhrFormDataFileUpload);},_getFormData:function(options){var formData;if(typeof options.formData==='function'){return options.formData(options.form);} -if($.isArray(options.formData)){return options.formData;} -if(options.formData){formData=[];$.each(options.formData,function(name,value){formData.push({name:name,value:value});});return formData;} -return[];},_getTotal:function(files){var total=0;$.each(files,function(index,file){total+=file.size||1;});return total;},_onProgress:function(e,data){if(e.lengthComputable){var now=+(new Date()),total,loaded;if(data._time&&data.progressInterval&&(now-data._time').prop('href',options.url).prop('host')!==location.host){options.formData.push({name:options.redirectParamName||'redirect',value:options.redirect});}},_initDataSettings:function(options){if(this._isXHRUpload(options)){if(!this._chunkedUpload(options,true)){if(!options.data){this._initXHRData(options);} -this._initProgressListener(options);} -if(options.postMessage){options.dataType='postmessage '+(options.dataType||'');}}else{this._initIframeSettings(options,'iframe');}},_getParamName:function(options){var fileInput=$(options.fileInput),paramName=options.paramName;if(!paramName){paramName=[];fileInput.each(function(){var input=$(this),name=input.prop('name')||'files[]',i=(input.prop('files')||[1]).length;while(i){paramName.push(name);i-=1;}});if(!paramName.length){paramName=[fileInput.prop('name')||'files[]'];}}else if(!$.isArray(paramName)){paramName=[paramName];} -return paramName;},_initFormSettings:function(options){if(!options.form||!options.form.length){options.form=$(options.fileInput.prop('form'));} -options.paramName=this._getParamName(options);if(!options.url){options.url=options.form.prop('action')||location.href;} -options.type=(options.type||options.form.prop('method')||'').toUpperCase();if(options.type!=='POST'&&options.type!=='PUT'){options.type='POST';}},_getAJAXSettings:function(data){var options=$.extend({},this.options,data);this._initFormSettings(options);this._initDataSettings(options);return options;},_enhancePromise:function(promise){promise.success=promise.done;promise.error=promise.fail;promise.complete=promise.always;return promise;},_getXHRPromise:function(resolveOrReject,context,args){var dfd=$.Deferred(),promise=dfd.promise();context=context||this.options.context||promise;if(resolveOrReject===true){dfd.resolveWith(context,args);}else if(resolveOrReject===false){dfd.rejectWith(context,args);} -promise.abort=dfd.promise;return this._enhancePromise(promise);},_chunkedUpload:function(options,testOnly){var that=this,file=options.files[0],fs=file.size,ub=options.uploadedBytes=options.uploadedBytes||0,mcs=options.maxChunkSize||fs,slice=file.webkitSlice||file.mozSlice||file.slice,upload,n,jqXHR,pipe;if(!(this._isXHRUpload(options)&&slice&&(ub||mcs=fs){file.error='uploadedBytes';return this._getXHRPromise(false,options.context,[null,'error',file.error]);} -n=Math.ceil((fs-ub)/mcs);upload=function(i){if(!i){return that._getXHRPromise(true,options.context);} -return upload(i-=1).pipe(function(){var o=$.extend({},options);o.blob=slice.call(file,ub+i*mcs,ub+(i+1)*mcs);o.chunkSize=o.blob.size;that._initXHRData(o);that._initProgressListener(o);jqXHR=($.ajax(o)||that._getXHRPromise(false,o.context)).done(function(){if(!o.loaded){that._onProgress($.Event('progress',{lengthComputable:true,loaded:o.chunkSize,total:o.chunkSize}),o);} -options.uploadedBytes=o.uploadedBytes+=o.chunkSize;});return jqXHR;});};pipe=upload(n);pipe.abort=function(){return jqXHR.abort();};return this._enhancePromise(pipe);},_beforeSend:function(e,data){if(this._active===0){this._trigger('start');this._bitrateTimer=new this._BitrateTimer();} -this._active+=1;this._loaded+=data.uploadedBytes||0;this._total+=this._getTotal(data.files);},_onDone:function(result,textStatus,jqXHR,options){if(!this._isXHRUpload(options)){this._onProgress($.Event('progress',{lengthComputable:true,loaded:1,total:1}),options);} -options.result=result;options.textStatus=textStatus;options.jqXHR=jqXHR;this._trigger('done',null,options);},_onFail:function(jqXHR,textStatus,errorThrown,options){options.jqXHR=jqXHR;options.textStatus=textStatus;options.errorThrown=errorThrown;this._trigger('fail',null,options);if(options.recalculateProgress){this._loaded-=options.loaded||options.uploadedBytes||0;this._total-=options.total||this._getTotal(options.files);}},_onAlways:function(jqXHRorResult,textStatus,jqXHRorError,options){this._active-=1;options.textStatus=textStatus;if(jqXHRorError&&jqXHRorError.always){options.jqXHR=jqXHRorError;options.result=jqXHRorResult;}else{options.jqXHR=jqXHRorResult;options.errorThrown=jqXHRorError;} -this._trigger('always',null,options);if(this._active===0){this._trigger('stop');this._loaded=this._total=0;this._bitrateTimer=null;}},_onSend:function(e,data){var that=this,jqXHR,slot,pipe,options=that._getAJAXSettings(data),send=function(resolve,args){that._sending+=1;options._bitrateTimer=new that._BitrateTimer();jqXHR=jqXHR||((resolve!==false&&that._trigger('send',e,options)!==false&&(that._chunkedUpload(options)||$.ajax(options)))||that._getXHRPromise(false,options.context,args)).done(function(result,textStatus,jqXHR){that._onDone(result,textStatus,jqXHR,options);}).fail(function(jqXHR,textStatus,errorThrown){that._onFail(jqXHR,textStatus,errorThrown,options);}).always(function(jqXHRorResult,textStatus,jqXHRorError){that._sending-=1;that._onAlways(jqXHRorResult,textStatus,jqXHRorError,options);if(options.limitConcurrentUploads&&options.limitConcurrentUploads>that._sending){var nextSlot=that._slots.shift();while(nextSlot){if(!nextSlot.isRejected()){nextSlot.resolve();break;} -nextSlot=that._slots.shift();}}});return jqXHR;};this._beforeSend(e,options);if(this.options.sequentialUploads||(this.options.limitConcurrentUploads&&this.options.limitConcurrentUploads<=this._sending)){if(this.options.limitConcurrentUploads>1){slot=$.Deferred();this._slots.push(slot);pipe=slot.pipe(send);}else{pipe=(this._sequence=this._sequence.pipe(send,send));} -pipe.abort=function(){var args=[undefined,'abort','abort'];if(!jqXHR){if(slot){slot.rejectWith(args);} -return send(false,args);} -return jqXHR.abort();};return this._enhancePromise(pipe);} -return send();},_onAdd:function(e,data){var that=this,result=true,options=$.extend({},this.options,data),limit=options.limitMultiFileUploads,paramName=this._getParamName(options),paramNameSet,paramNameSlice,fileSet,i;if(!(options.singleFileUploads||limit)||!this._isXHRUpload(options)){fileSet=[data.files];paramNameSet=[paramName];}else if(!options.singleFileUploads&&limit){fileSet=[];paramNameSet=[];for(i=0;i').append(inputClone)[0].reset();input.after(inputClone).detach();$.cleanData(input.unbind('remove'));this.options.fileInput=this.options.fileInput.map(function(i,el){if(el===input[0]){return inputClone[0];} -return el;});if(input[0]===this.element[0]){this.element=inputClone;}},_getFileInputFiles:function(fileInput){fileInput=$(fileInput);var files=$.each($.makeArray(fileInput.prop('files')),this._normalizeFile),value;if(!files.length){value=fileInput.prop('value');if(!value){return[];} -files=[{name:value.replace(/^.*\\/,'')}];} -return files;},_onChange:function(e){var that=e.data.fileupload,data={fileInput:$(e.target),form:$(e.target.form)};data.files=that._getFileInputFiles(data.fileInput);if(that.options.replaceFileInput){that._replaceFileInput(data.fileInput);} -if(that._trigger('change',e,data)===false||that._onAdd(e,data)===false){return false;}},_onPaste:function(e){var that=e.data.fileupload,cbd=e.originalEvent.clipboardData,items=(cbd&&cbd.items)||[],data={files:[]};$.each(items,function(index,item){var file=item.getAsFile&&item.getAsFile();if(file){data.files.push(file);}});if(that._trigger('paste',e,data)===false||that._onAdd(e,data)===false){return false;}},_onDrop:function(e){var that=e.data.fileupload,dataTransfer=e.dataTransfer=e.originalEvent.dataTransfer,data={files:$.each($.makeArray(dataTransfer&&dataTransfer.files),that._normalizeFile)};if(that._trigger('drop',e,data)===false||that._onAdd(e,data)===false){return false;} -e.preventDefault();},_onDragOver:function(e){var that=e.data.fileupload,dataTransfer=e.dataTransfer=e.originalEvent.dataTransfer;if(that._trigger('dragover',e)===false){return false;} -if(dataTransfer){dataTransfer.dropEffect='copy';} -e.preventDefault();},_initEventHandlers:function(){var ns=this.options.namespace;if(this._isXHRUpload(this.options)){this.options.dropZone.bind('dragover.'+ns,{fileupload:this},this._onDragOver).bind('drop.'+ns,{fileupload:this},this._onDrop).bind('paste.'+ns,{fileupload:this},this._onPaste);} -this.options.fileInput.bind('change.'+ns,{fileupload:this},this._onChange);},_destroyEventHandlers:function(){var ns=this.options.namespace;this.options.dropZone.unbind('dragover.'+ns,this._onDragOver).unbind('drop.'+ns,this._onDrop).unbind('paste.'+ns,this._onPaste);this.options.fileInput.unbind('change.'+ns,this._onChange);},_setOption:function(key,value){var refresh=$.inArray(key,this._refreshOptionsList)!==-1;if(refresh){this._destroyEventHandlers();} -$.Widget.prototype._setOption.call(this,key,value);if(refresh){this._initSpecialOptions();this._initEventHandlers();}},_initSpecialOptions:function(){var options=this.options;if(options.fileInput===undefined){options.fileInput=this.element.is('input:file')?this.element:this.element.find('input:file');}else if(!(options.fileInput instanceof $)){options.fileInput=$(options.fileInput);} -if(!(options.dropZone instanceof $)){options.dropZone=$(options.dropZone);}},_create:function(){var options=this.options;$.extend(options,$(this.element[0].cloneNode(false)).data());options.namespace=options.namespace||this.widgetName;this._initSpecialOptions();this._slots=[];this._sequence=this._getXHRPromise(true);this._sending=this._active=this._loaded=this._total=0;this._initEventHandlers();},destroy:function(){this._destroyEventHandlers();$.Widget.prototype.destroy.call(this);},enable:function(){$.Widget.prototype.enable.call(this);this._initEventHandlers();},disable:function(){this._destroyEventHandlers();$.Widget.prototype.disable.call(this);},add:function(data){if(!data||this.options.disabled){return;} -if(data.fileInput&&!data.files){data.files=this._getFileInputFiles(data.fileInput);}else{data.files=$.each($.makeArray(data.files),this._normalizeFile);} -this._onAdd(null,data);},send:function(data){if(data&&!this.options.disabled){if(data.fileInput&&!data.files){data.files=this._getFileInputFiles(data.fileInput);}else{data.files=$.each($.makeArray(data.files),this._normalizeFile);} -if(data.files.length){return this._onSend(null,data);}} -return this._getXHRPromise(false,data&&data.context);}});})); \ No newline at end of file diff --git a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.iframe-transport.js b/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.iframe-transport.js deleted file mode 100644 index 04a56623085..00000000000 --- a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.iframe-transport.js +++ /dev/null @@ -1,171 +0,0 @@ -/* - * jQuery Iframe Transport Plugin 1.4 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/*jslint unparam: true, nomen: true */ -/*global define, window, document */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - // Helper variable to create unique names for the transport iframes: - var counter = 0; - - // The iframe transport accepts three additional options: - // options.fileInput: a jQuery collection of file input fields - // options.paramName: the parameter name for the file form data, - // overrides the name property of the file input field(s), - // can be a string or an array of strings. - // options.formData: an array of objects with name and value properties, - // equivalent to the return data of .serializeArray(), e.g.: - // [{name: 'a', value: 1}, {name: 'b', value: 2}] - $.ajaxTransport('iframe', function (options) { - if (options.async && (options.type === 'POST' || options.type === 'GET')) { - var form, - iframe; - return { - send: function (_, completeCallback) { - form = $('
'); - // javascript:false as initial iframe src - // prevents warning popups on HTTPS in IE6. - // IE versions below IE8 cannot set the name property of - // elements that have already been added to the DOM, - // so we set the name along with the iframe HTML markup: - iframe = $( - '' - ).bind('load', function () { - var fileInputClones, - paramNames = $.isArray(options.paramName) ? - options.paramName : [options.paramName]; - iframe - .unbind('load') - .bind('load', function () { - var response; - // Wrap in a try/catch block to catch exceptions thrown - // when trying to access cross-domain iframe contents: - try { - response = iframe.contents(); - // Google Chrome and Firefox do not throw an - // exception when calling iframe.contents() on - // cross-domain requests, so we unify the response: - if (!response.length || !response[0].firstChild) { - throw new Error(); - } - } catch (e) { - response = undefined; - } - // The complete callback returns the - // iframe content document as response object: - completeCallback( - 200, - 'success', - {'iframe': response} - ); - // Fix for IE endless progress bar activity bug - // (happens on form submits to iframe targets): - $('') - .appendTo(form); - form.remove(); - }); - form - .prop('target', iframe.prop('name')) - .prop('action', options.url) - .prop('method', options.type); - if (options.formData) { - $.each(options.formData, function (index, field) { - $('') - .prop('name', field.name) - .val(field.value) - .appendTo(form); - }); - } - if (options.fileInput && options.fileInput.length && - options.type === 'POST') { - fileInputClones = options.fileInput.clone(); - // Insert a clone for each file input field: - options.fileInput.after(function (index) { - return fileInputClones[index]; - }); - if (options.paramName) { - options.fileInput.each(function (index) { - $(this).prop( - 'name', - paramNames[index] || options.paramName - ); - }); - } - // Appending the file input fields to the hidden form - // removes them from their original location: - form - .append(options.fileInput) - .prop('enctype', 'multipart/form-data') - // enctype must be set as encoding for IE: - .prop('encoding', 'multipart/form-data'); - } - form.submit(); - // Insert the file input fields at their original location - // by replacing the clones with the originals: - if (fileInputClones && fileInputClones.length) { - options.fileInput.each(function (index, input) { - var clone = $(fileInputClones[index]); - $(input).prop('name', clone.prop('name')); - clone.replaceWith(input); - }); - } - }); - form.append(iframe).appendTo(document.body); - }, - abort: function () { - if (iframe) { - // javascript:false as iframe src aborts the request - // and prevents warning popups on HTTPS in IE6. - // concat is used to avoid the "Script URL" JSLint error: - iframe - .unbind('load') - .prop('src', 'javascript'.concat(':false;')); - } - if (form) { - form.remove(); - } - } - }; - } - }); - - // The iframe transport returns the iframe content document as response. - // The following adds converters from iframe to text, json, html, and script: - $.ajaxSetup({ - converters: { - 'iframe text': function (iframe) { - return $(iframe[0].body).text(); - }, - 'iframe json': function (iframe) { - return $.parseJSON($(iframe[0].body).text()); - }, - 'iframe html': function (iframe) { - return $(iframe[0].body).html(); - }, - 'iframe script': function (iframe) { - return $.globalEval($(iframe[0].body).text()); - } - } - }); - -})); diff --git a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.iframe-transport.min.js b/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.iframe-transport.min.js deleted file mode 100644 index a6a9c6cd5c8..00000000000 --- a/ckan/public-bs2/base/vendor/jquery-fileupload/jquery.iframe-transport.min.js +++ /dev/null @@ -1,7 +0,0 @@ -(function(factory){'use strict';if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else{factory(window.jQuery);}}(function($){'use strict';var counter=0;$.ajaxTransport('iframe',function(options){if(options.async&&(options.type==='POST'||options.type==='GET')){var form,iframe;return{send:function(_,completeCallback){form=$('
');iframe=$('').bind('load',function(){var fileInputClones,paramNames=$.isArray(options.paramName)?options.paramName:[options.paramName];iframe.unbind('load').bind('load',function(){var response;try{response=iframe.contents();if(!response.length||!response[0].firstChild){throw new Error();}}catch(e){response=undefined;} -completeCallback(200,'success',{'iframe':response});$('').appendTo(form);form.remove();});form.prop('target',iframe.prop('name')).prop('action',options.url).prop('method',options.type);if(options.formData){$.each(options.formData,function(index,field){$('').prop('name',field.name).val(field.value).appendTo(form);});} -if(options.fileInput&&options.fileInput.length&&options.type==='POST'){fileInputClones=options.fileInput.clone();options.fileInput.after(function(index){return fileInputClones[index];});if(options.paramName){options.fileInput.each(function(index){$(this).prop('name',paramNames[index]||options.paramName);});} -form.append(options.fileInput).prop('enctype','multipart/form-data').prop('encoding','multipart/form-data');} -form.submit();if(fileInputClones&&fileInputClones.length){options.fileInput.each(function(index,input){var clone=$(fileInputClones[index]);$(input).prop('name',clone.prop('name'));clone.replaceWith(input);});}});form.append(iframe).appendTo(document.body);},abort:function(){if(iframe){iframe.unbind('load').prop('src','javascript'.concat(':false;'));} -if(form){form.remove();}}};}});$.ajaxSetup({converters:{'iframe text':function(iframe){return $(iframe[0].body).text();},'iframe json':function(iframe){return $.parseJSON($(iframe[0].body).text());},'iframe html':function(iframe){return $(iframe[0].body).html();},'iframe script':function(iframe){return $.globalEval($(iframe[0].body).text());}}});})); \ No newline at end of file diff --git a/ckan/public-bs2/base/vendor/jquery.js b/ckan/public-bs2/base/vendor/jquery.js deleted file mode 100644 index 4cdf2c83944..00000000000 --- a/ckan/public-bs2/base/vendor/jquery.js +++ /dev/null @@ -1,10253 +0,0 @@ -/*! - * jQuery JavaScript Library v3.2.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2017-03-20T18:59Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - - // Pass this if window is not defined yet - } )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - - // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 - // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode - // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common - // enough that all such attempts are guarded in a try block. - "use strict"; - - var arr = []; - - var document = window.document; - - var getProto = Object.getPrototypeOf; - - var slice = arr.slice; - - var concat = arr.concat; - - var push = arr.push; - - var indexOf = arr.indexOf; - - var class2type = {}; - - var toString = class2type.toString; - - var hasOwn = class2type.hasOwnProperty; - - var fnToString = hasOwn.toString; - - var ObjectFunctionString = fnToString.call( Object ); - - var support = {}; - - - - function DOMEval( code, doc ) { - doc = doc || document; - - var script = doc.createElement( "script" ); - - script.text = code; - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - /* global Symbol */ - // Defining this global in .eslintrc.json would create a danger of using the global - // unguarded in another place, it seems safer to define global only for this module - - - - var - version = "3.2.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - - jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice - }; - - jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && Array.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; - }; - - jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // As of jQuery 3.0, isNumeric is limited to - // strings and numbers (primitives or objects) - // that can be coerced to finite numbers (gh-2662) - var type = jQuery.type( obj ); - return ( type === "number" || type === "string" ) && - - // parseFloat NaNs numeric-cast false positives ("") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - !isNaN( obj - parseFloat( obj ) ); - }, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - - /* eslint-disable no-unused-vars */ - // See https://github.com/eslint/eslint/issues/6125 - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - DOMEval( code ); - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE <=9 - 11, Edge 12 - 13 - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support - } ); - - if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; - } - - // Populate the class2type map - jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), - function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); - } ); - - function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; - } - var Sizzle = - /*! - * Sizzle CSS Selector Engine v2.3.3 - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-08-08 - */ - (function( window ) { - - var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - disabledAncestor = addCombinator( - function( elem ) { - return elem.disabled === true && ("form" in elem || "label" in elem); - }, - { dir: "parentNode", next: "legend" } - ); - - // Optimize for push.apply( _, NodeList ) - try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; - } catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; - } - - function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); - } - - /** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ - function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; - } - - /** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ - function markFunction( fn ) { - fn[ expando ] = true; - return fn; - } - - /** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ - function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } - } - - /** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ - function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } - } - - /** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ - function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; - } - - /** - * Returns a function to use in pseudos for input types - * @param {String} type - */ - function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; - } - - /** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ - function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; - } - - /** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ - function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - disabledAncestor( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; - } - - /** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ - function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); - } - - /** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ - function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; - } - - // Expose support vars for convenience - support = Sizzle.support = {}; - - /** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ - isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; - }; - - /** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ - setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( el ) { - el.className = "i"; - return !el.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID filter and find - if ( support.getById ) { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( el ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( el ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; - }; - - Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); - }; - - Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; - }; - - Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); - }; - - Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; - }; - - Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); - }; - - Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); - }; - - /** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ - Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; - }; - - /** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ - getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; - }; - - Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } - }; - - Expr.pseudos["nth"] = Expr.pseudos["eq"]; - - // Add button/input type pseudos - for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); - } - for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); - } - - // Easy API for creating new setFilters - function setFilters() {} - setFilters.prototype = Expr.filters = Expr.pseudos; - Expr.setFilters = new setFilters(); - - tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); - }; - - function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; - } - - function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - return false; - }; - } - - function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; - } - - function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; - } - - function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; - } - - function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); - } - - function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); - } - - function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; - } - - compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; - }; - - /** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ - select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; - }; - - // One-time assignments - - // Sort stability - support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - - // Support: Chrome 14-35+ - // Always assume duplicates if they aren't passed to the comparison function - support.detectDuplicates = !!hasDuplicate; - - // Initialize against the default document - setDocument(); - - // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) - // Detached nodes confoundingly follow *each other* - support.sortDetached = assert(function( el ) { - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; - }); - - // Support: IE<8 - // Prevent attribute/property "interpolation" - // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx - if ( !assert(function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; - }) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); - } - - // Support: IE<9 - // Use defaultValue in place of getAttribute("value") - if ( !support.attributes || !assert(function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; - }) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); - } - - // Support: IE<9 - // Use getAttributeNode to fetch booleans when getAttribute lies - if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; - }) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); - } - - return Sizzle; - - })( window ); - - - - jQuery.find = Sizzle; - jQuery.expr = Sizzle.selectors; - - // Deprecated - jQuery.expr[ ":" ] = jQuery.expr.pseudos; - jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; - jQuery.text = Sizzle.getText; - jQuery.isXMLDoc = Sizzle.isXML; - jQuery.contains = Sizzle.contains; - jQuery.escapeSelector = Sizzle.escape; - - - - - var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }; - - - var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - }; - - - var rneedsContext = jQuery.expr.match.needsContext; - - - - function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - - }; - var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - - var risSimple = /^.[^:#\[\.,]*$/; - - // Implement the identical functionality for filter and not - function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Simple selector that can be filtered directly, removing non-Elements - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - // Complex selector, compare the two sets, removing non-Elements - qualifier = jQuery.filter( qualifier, elements ); - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; - } ); - } - - jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); - }; - - jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } - } ); - - - // Initialize a jQuery object - - - // A central reference to the root jQuery(document) - var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - - // Give the init function the jQuery prototype for later instantiation - init.prototype = jQuery.fn; - - // Initialize central reference - rootjQuery = jQuery( document ); - - - var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - - jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } - } ); - - function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; - } - - jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( nodeName( elem, "iframe" ) ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } - }, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; - } ); - var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - - // Convert String-formatted options into Object-formatted ones - function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; - } - - /* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ - jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; - }; - - - function Identity( v ) { - return v; - } - function Thrower( ex ) { - throw ex; - } - - function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } - } - - jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( jQuery.isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - jQuery.isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - jQuery.isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - jQuery.isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } - } ); - - - // These usually indicate a programmer mistake during development, - // warn about them ASAP rather than swallowing them by default. - var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - - jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } - }; - - - - - jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); - }; - - - - - // The deferred used on DOM ready - var readyList = jQuery.Deferred(); - - jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; - }; - - jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } - } ); - - jQuery.ready.then = readyList.then; - - // The ready event handler and self cleanup method - function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); - } - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE <=9 - 10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - - - - - // Multifunctional method to get and set values of a collection - // The value/s can optionally be executed if it's a function - var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; - }; - var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); - }; - - - - - function Data() { - this.expando = jQuery.expando + Data.uid++; - } - - Data.uid = 1; - - Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ jQuery.camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ jQuery.camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( jQuery.camelCase ); - } else { - key = jQuery.camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } - }; - var dataPriv = new Data(); - - var dataUser = new Data(); - - - - // Implementation Summary - // - // 1. Enforce API surface and semantic compatibility with 1.9.x branch - // 2. Improve the module's maintainability by reducing the storage - // paths to a single mechanism. - // 3. Use the same single mechanism to support "private" and "user" data. - // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) - // 5. Avoid exposing implementation details on user objects (eg. expando properties) - // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - - var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - - function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; - } - - function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; - } - - jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } - } ); - - jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } - } ); - - - jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } - } ); - - jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } - } ); - var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - - var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - - var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - - var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - jQuery.contains( elem.ownerDocument, elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; - }; - - - - - function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; - } - - - var defaultDisplayMap = {}; - - function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; - } - - function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; - } - - jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } - } ); - var rcheckableType = ( /^(?:checkbox|radio)$/i ); - - var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); - - var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - - // We have to close these tags to support XHTML (#13200) - var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] - }; - - // Support: IE <=9 only - wrapMap.optgroup = wrapMap.option; - - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; - wrapMap.th = wrapMap.td; - - - function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; - } - - - // Mark scripts as having already been evaluated - function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } - } - - - var rhtml = /<|&#?\w+;/; - - function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - } - - - ( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - } )(); - var documentElement = document.documentElement; - - - - var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - - function returnTrue() { - return true; - } - - function returnFalse() { - return false; - } - - // Support: IE <=9 only - // See #13393 for more info - function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } - } - - function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); - } - - /* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ - jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: jQuery.isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } - }; - - jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } - }; - - jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; - }; - - // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding - // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html - jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } - }; - - // Includes all common event props including KeyEvent and MouseEvent specific props - jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } - }, jQuery.event.addProp ); - - // Create mouseenter/leave events using mouseover/out and event-time checks - // so that event delegation works in jQuery. - // Do the same for pointerenter/pointerleave and pointerover/pointerout - // - // Support: Safari 7 only - // Safari sends mouseenter too often; see: - // https://bugs.chromium.org/p/chromium/issues/detail?id=470258 - // for the description of the bug (it existed in older Chrome versions as well). - jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" - }, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; - } ); - - jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } - } ); - - - var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - - // Prefer a tbody over its parent table for containing new rows - function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( ">tbody", elem )[ 0 ] || elem; - } - - return elem; - } - - // Replace/restore the type attribute of script elements for safe DOM manipulation - function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; - } - function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; - } - - function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } - } - - // Fix IE bugs, see support tests - function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } - } - - function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); - } - } - } - } - } - } - - return collection; - } - - function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; - } - - jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } - } ); - - jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } - } ); - - jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" - }, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; - } ); - var rmargin = ( /^margin/ ); - - var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - - var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - - - - ( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - div.style.cssText = - "box-sizing:border-box;" + - "position:relative;display:block;" + - "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - div.innerHTML = ""; - documentElement.appendChild( container ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = divStyle.marginLeft === "2px"; - boxSizingReliableVal = divStyle.width === "4px"; - - // Support: Android 4.0 - 4.3 only - // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = divStyle.marginRight === "4px"; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - container.appendChild( div ); - - jQuery.extend( support, { - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelMarginRight: function() { - computeStyleTests(); - return pixelMarginRightVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - } - } ); - } )(); - - - function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; - } - - - function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; - } - - - var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - - // Return a css property mapped to a potentially vendor prefixed property - function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } - } - - // Return a property mapped along what jQuery.cssProps suggests or to - // a vendor prefixed property. - function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; - } - - function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; - } - - function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i, - val = 0; - - // If we already have the right measurement, avoid augmentation - if ( extra === ( isBorderBox ? "border" : "content" ) ) { - i = 4; - - // Otherwise initialize for horizontal or vertical properties - } else { - i = name === "width" ? 1 : 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; - } - - function getWidthOrHeight( elem, name, extra ) { - - // Start with computed style - var valueIsBorderBox, - styles = getStyles( elem ), - val = curCSS( elem, name, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test( val ) ) { - return val; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Fall back to offsetWidth/Height when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - if ( val === "auto" ) { - val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; - } - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - - // Use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; - } - - jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } - } ); - - jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - } ) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = extra && getStyles( elem ), - subtract = extra && augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ); - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ name ] = value; - value = jQuery.css( elem, name ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; - } ); - - jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } - ); - - // These hooks are used by animate to expand properties - jQuery.each( { - margin: "", - padding: "", - border: "Width" - }, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } - } ); - - jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } - } ); - - - function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); - } - jQuery.Tween = Tween; - - Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } - }; - - Tween.prototype.init.prototype = Tween.prototype; - - Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } - }; - - // Support: IE <=9 only - // Panic based approach to setting things on disconnected nodes - Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } - }; - - jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" - }; - - jQuery.fx = Tween.prototype.init; - - // Back compat <1.8 extension point - jQuery.fx.step = {}; - - - - - var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - - function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } - } - - // Animations created synchronously will run synchronously - function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = jQuery.now() ); - } - - // Generate parameters to create a standard animation - function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; - } - - function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } - } - - function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 13 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } - } - - function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } - } - - function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; - } - - jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } - } ); - - jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; - }; - - jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } - } ); - - jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; - } ); - - // Generate shortcuts for custom animations - jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } - }, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; - } ); - - jQuery.timers = []; - jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; - }; - - jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); - }; - - jQuery.fx.interval = 13; - jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); - }; - - jQuery.fx.stop = function() { - inProgress = null; - }; - - jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 - }; - - - // Based off of the plugin by Clint Helfers, with permission. - // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ - jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); - }; - - - ( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; - } )(); - - - var boolHook, - attrHandle = jQuery.expr.attrHandle; - - jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } - } ); - - jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } - } ); - - // Hooks for boolean attributes - boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } - }; - - jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; - } ); - - - - - var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - - jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } - } ); - - jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } - } ); - - // Support: IE <=11 only - // Accessing the selectedIndex property - // forces the browser to respect setting selected - // on the option - // The getter ensures a default option is selected - // when in an optgroup - // eslint rule "no-unused-expressions" is disabled for this code - // since it considers such accessions noop - if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; - } - - jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" - ], function() { - jQuery.propFix[ this.toLowerCase() ] = this; - } ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - - function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; - } - - jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( type === "string" ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = value.match( rnothtmlwhite ) || []; - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } - } ); - - - - - var rreturn = /\r/g; - - jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, isFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } - } ); - - jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } - } ); - - // Radios and checkboxes getter/setter - jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } - } ); - - - - - // Return jQuery for attributes-only inclusion - - - var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; - - jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - - } ); - - jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } - } ); - - - jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; - } ); - - jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } - } ); - - - - - support.focusin = "onfocusin" in window; - - - // Support: Firefox <=44 - // Firefox doesn't have focus(in | out) events - // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 - // - // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 - // focus(in | out) events fire after focus & blur events, - // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order - // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 - if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); - } - var location = window.location; - - var nonce = jQuery.now(); - - var rquery = ( /\?/ ); - - - - // Cross-browser xml parsing - jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }; - - - var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - - function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } - } - - // Serialize an array of form elements or a set of - // key/values into a query string - jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = jQuery.isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); - }; - - jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } - } ); - - - var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - - // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport - function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; - } - - // Base inspection function for prefilters and transports - function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); - } - - // A special extend for ajax options - // that takes "flat" options (not to be deep extended) - // Fixes #9887 - function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; - } - - /* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ - function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } - } - - /* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ - function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; - } - - jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 13 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available, append data to url - if ( s.data ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } - } ); - - jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; - } ); - - - jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); - }; - - - jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( jQuery.isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } - } ); - - - jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); - }; - jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); - }; - - - - - jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} - }; - - var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - - support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); - support.ajax = xhrSupported = !!xhrSupported; - - jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } - } ); - - - - - // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) - jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } - } ); - - // Install script dataType - jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } - } ); - - // Handle cache's special case and crossDomain - jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } - } ); - - // Bind script tag hack transport - jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " -{% endblock %} - -{# remove any ckan styles #} -{% block styles %}{% endblock %} - -{% block custom_styles %}{% endblock %} diff --git a/ckan/templates-bs2/dataviewer/snippets/data_preview.html b/ckan/templates-bs2/dataviewer/snippets/data_preview.html deleted file mode 100644 index d33a6fd8f94..00000000000 --- a/ckan/templates-bs2/dataviewer/snippets/data_preview.html +++ /dev/null @@ -1,26 +0,0 @@ -
- {% if embed %} - {# images can be embedded directly #} - - {% else %} -
-

- - {{ _('This resource can not be previewed at the moment.') }} - - {{ _('Click here for more information.') }} - -

-

-

- - - {{ _('Download resource') }} - -

-
- - {% endif %} -
diff --git a/ckan/templates-bs2/dataviewer/snippets/no_preview.html b/ckan/templates-bs2/dataviewer/snippets/no_preview.html deleted file mode 100644 index 0a0e46975fc..00000000000 --- a/ckan/templates-bs2/dataviewer/snippets/no_preview.html +++ /dev/null @@ -1,16 +0,0 @@ -
-
- {{ _('No preview available.') }} - -
- {% if reason %} - {{ reason }} - {% else %} - {% set t = ''|safe + resource_type + ''|safe %} - {{ gettext('No handler defined for data type: %(type)s.', type=t) }} - {% endif %} -
-
-
diff --git a/ckan/templates-bs2/development/primer.html b/ckan/templates-bs2/development/primer.html deleted file mode 100644 index 9ae39586ca0..00000000000 --- a/ckan/templates-bs2/development/primer.html +++ /dev/null @@ -1,95 +0,0 @@ -{% extends "page.html" %} - -{% block toolbar %} - {% snippet 'development/snippets/breadcrumb.html', stage=1 %} - {% snippet 'development/snippets/breadcrumb.html', stage=2 %} - {% snippet 'development/snippets/breadcrumb.html', stage=3 %} -{% endblock %} - -{% block actions_content %} - {% snippet 'development/snippets/actions.html' %} -{% endblock %} - -{% block secondary_content %} - {% snippet 'development/snippets/context.html' %} - -
-

Helper text

-
{{ lipsum(1) }}
-
- - {% snippet 'development/snippets/nav.html', heading='Navigation' %} - {% snippet 'development/snippets/nav.html', heading='Active Navigation', show_active=true %} - {% snippet 'development/snippets/nav.html', heading='Icon Navigation', show_icons=true %} - {% snippet 'development/snippets/facet.html', heading='Facet List', show_icons=true %} -{% endblock %} - -{% block primary_content %} - {% snippet 'development/snippets/page_header.html' %} - -
- - - - -
- -
-

Top level heading (h1)

-

Some Rendered Markdown (h2)

-
-

Heading 1

- {{ lipsum(1) }} -

Heading 2

- {{ lipsum(1) }} -

Heading 3

- {{ lipsum(1) }} -
-
- -
-
-

Forms

-
- {% snippet 'development/snippets/form.html' %} - {% snippet 'development/snippets/form.html', error=['This field has an error'] %} - -
-
-

Form stages

-
- {% snippet 'development/snippets/form_stages.html' %} - - -
-

Datasets

-
- {% snippet 'snippets/package_list.html', packages=[ - {'name': "test", 'title': 'Dataset #1', 'notes': lipsum(1), 'tracking_summary':{'recent': 10}}, - {'name': "test", 'title': 'Dataset #2', 'notes': lipsum(0), 'tracking_summary':{'recent': 5}}, - {'name': "test", 'title': 'Dataset #3', 'notes': lipsum(1), 'tracking_summary':{'recent': 10}}, - {'name': "test", 'title': 'Dataset #4', 'notes': lipsum(1), 'tracking_summary':{'recent': 10}} - ] %} -
- -
-
-

Media Grid

-
- {% snippet 'development/snippets/media_grid.html', groups=[ - {'name': "test", 'display_name': 'Group #1', 'type': 'group', 'description': lipsum(0), 'packages': 0}, - {'name': "test", 'display_name': 'Group #2', 'type': 'group', 'description': lipsum(1), 'packages': 1}, - {'name': "test", 'display_name': 'Group #3', 'type': 'group', 'description': lipsum(1), 'packages': 10}, - {'name': "test", 'display_name': 'Group #4', 'type': 'group', 'description': lipsum(1), 'packages': 200}, - {'name': "test", 'display_name': 'Group #5', 'type': 'group', 'description': lipsum(1), 'packages': 10}, - {'name': "test", 'display_name': 'Group #6', 'type': 'group', 'description': lipsum(0), 'packages': 5} - ] %} - -
-

Pagination

-
- {% snippet 'development/snippets/pagination.html', total=5, current=1 %} - {% snippet 'development/snippets/pagination.html', total=5, current=3 %} - {% snippet 'development/snippets/pagination.html', total=5, current=5 %} - -{% endblock %} diff --git a/ckan/templates-bs2/development/snippets/actions.html b/ckan/templates-bs2/development/snippets/actions.html deleted file mode 100644 index 20a6962f7bb..00000000000 --- a/ckan/templates-bs2/development/snippets/actions.html +++ /dev/null @@ -1,2 +0,0 @@ -
  • Button
  • -
  • Primary Button
  • diff --git a/ckan/templates-bs2/development/snippets/breadcrumb.html b/ckan/templates-bs2/development/snippets/breadcrumb.html deleted file mode 100644 index 9a1e371bb83..00000000000 --- a/ckan/templates-bs2/development/snippets/breadcrumb.html +++ /dev/null @@ -1,7 +0,0 @@ -
    - -
    diff --git a/ckan/templates-bs2/development/snippets/context.html b/ckan/templates-bs2/development/snippets/context.html deleted file mode 100644 index bc0dfefad09..00000000000 --- a/ckan/templates-bs2/development/snippets/context.html +++ /dev/null @@ -1,24 +0,0 @@ -
    -
    -
    - - - -
    -

    {{ title }}

    -

    - {{ h.markdown_extract(lipsum(1), 160) }} - read more -

    -
    -
    -
    Stat #1
    -
    {{ h.SI_number_span(11111) }}
    -
    -
    -
    Stat #2
    -
    {{ h.SI_number_span(111) }}
    -
    -
    -
    -
    diff --git a/ckan/templates-bs2/development/snippets/facet.html b/ckan/templates-bs2/development/snippets/facet.html deleted file mode 100644 index 188d0269cd4..00000000000 --- a/ckan/templates-bs2/development/snippets/facet.html +++ /dev/null @@ -1,15 +0,0 @@ -
    - {% with items=(("First", true), ("Second", false), ("Third", true), ("Fourth", false), ("Last", false)) %} -

    Facet List

    - - - {% endwith %} -
    diff --git a/ckan/templates-bs2/development/snippets/form.html b/ckan/templates-bs2/development/snippets/form.html deleted file mode 100644 index c3e6fb7baf6..00000000000 --- a/ckan/templates-bs2/development/snippets/form.html +++ /dev/null @@ -1,27 +0,0 @@ -{% import 'macros/form.html' as form %} - -
    -
    - {{ form.input('standard', label=_('Standard'), placeholder=_('Standard Input'), value='', error=error, classes=[]) }} - {{ form.input('standard', label=_('Medium'), placeholder=_('Medium Width Input'), value='', error=error, classes=['control-medium']) }} - {{ form.input('standard', label=_('Full'), placeholder=_('Full Width Input'), value='', error=error, classes=['control-full']) }} - {{ form.input('standard', label=_('Large'), placeholder=_('Large Input'), value='', error=error, classes=['control-full', 'control-large']) }} - {{ form.prepend('slug', label=_('Prepend'), prepend='prefix', placeholder=_('Prepend Input'), value='', error=error, classes=[]) }} - {{ form.custom( - names=('custom_key', 'custom_value', 'custom_deleted'), - id='field-custom', - label=_('Custom Field (empty)'), - values=(), - error=error ) }} - {{ form.custom( - names=('custom_key', 'custom_value', 'custom_deleted'), - id='field-custom', - label=_('Custom Field'), - values=('key', 'value', true), - error=error ) }} - {{ form.markdown('desc', id='field-description', label=_('Markdown'), placeholder='Some nice placeholder text', error=error) }} - {{ form.textarea('desc', id='field-description', label=_('Textarea'), placeholder='Some nice placeholder text', error=error) }} - {{ form.select('year', label=_('Select'), options=[{'value': 2010}, {'value': 2011}], selected=2011, error=error) }} - {{ form.checkbox('remember', label="This is my checkbox", checked=true, error=error) }} -
    -
    diff --git a/ckan/templates-bs2/development/snippets/form_stages.html b/ckan/templates-bs2/development/snippets/form_stages.html deleted file mode 100644 index 409f0f5f4b9..00000000000 --- a/ckan/templates-bs2/development/snippets/form_stages.html +++ /dev/null @@ -1,30 +0,0 @@ -
    -
    - {% snippet 'package/snippets/stages.html', stages=['active'] %} -
    -
    -
    -
    - {% snippet 'package/snippets/stages.html', stages=['complete', 'active'] %} -
    -
    -
    -
    - {% snippet 'package/snippets/stages.html', stages=['complete', 'complete', 'active'] %} -
    -
    -
    -
    - {% snippet 'package/snippets/stages.html', stages=['complete', 'active', 'complete'] %} -
    -
    -
    -
    - {% snippet 'package/snippets/stages.html', stages=['active', 'complete', 'complete'] %} -
    -
    -
    -
    - {% snippet 'package/snippets/stages.html', stages=['active', 'complete'] %} -
    -
    diff --git a/ckan/templates-bs2/development/snippets/list.html b/ckan/templates-bs2/development/snippets/list.html deleted file mode 100644 index 5b2f6ace326..00000000000 --- a/ckan/templates-bs2/development/snippets/list.html +++ /dev/null @@ -1,14 +0,0 @@ -
    - {% with items=(("First", false), ("Second", true), ("Third", true), ("Fourth", false), ("Last", false)) %} -

    {{ heading }}

    - - {% endwith %} -
    diff --git a/ckan/templates-bs2/development/snippets/media_grid.html b/ckan/templates-bs2/development/snippets/media_grid.html deleted file mode 100644 index 0ef561fd7f6..00000000000 --- a/ckan/templates-bs2/development/snippets/media_grid.html +++ /dev/null @@ -1,5 +0,0 @@ -
    -
    - {% snippet 'group/snippets/group_list.html', groups=groups %} -
    -
    diff --git a/ckan/templates-bs2/development/snippets/module.html b/ckan/templates-bs2/development/snippets/module.html deleted file mode 100644 index 5e6ce8a18e1..00000000000 --- a/ckan/templates-bs2/development/snippets/module.html +++ /dev/null @@ -1,21 +0,0 @@ -{% with classes = classes or [], hn = heading_level or 1 %} -
    - {% if heading_link %} - {{ heading }} - {% elif heading_action %} - {{ heading }} - {% elif heading_icon %} - {{ heading }} - {% else %} - {{ heading }} - {% endif %} -
    - {{ lipsum(1) }} -
    - {% if footer %} - - {% endif %} -
    -{% endwith %} diff --git a/ckan/templates-bs2/development/snippets/nav.html b/ckan/templates-bs2/development/snippets/nav.html deleted file mode 100644 index 26731b7a3e5..00000000000 --- a/ckan/templates-bs2/development/snippets/nav.html +++ /dev/null @@ -1,14 +0,0 @@ -
    - {% with items=(("First", true), ("Second", false), ("Third", true), ("Fourth", false), ("Last", false)) %} -

    {{ heading }}

    - - {% endwith %} -
    diff --git a/ckan/templates-bs2/development/snippets/page_header.html b/ckan/templates-bs2/development/snippets/page_header.html deleted file mode 100644 index cfc49c9c800..00000000000 --- a/ckan/templates-bs2/development/snippets/page_header.html +++ /dev/null @@ -1,11 +0,0 @@ -{% with items=(("First", true), ("Second", false), ("Third", false)) %} - -{% endwith %} diff --git a/ckan/templates-bs2/development/snippets/pagination.html b/ckan/templates-bs2/development/snippets/pagination.html deleted file mode 100644 index 652857462f3..00000000000 --- a/ckan/templates-bs2/development/snippets/pagination.html +++ /dev/null @@ -1,11 +0,0 @@ -
    - -
    diff --git a/ckan/templates-bs2/development/snippets/simple-input.html b/ckan/templates-bs2/development/snippets/simple-input.html deleted file mode 100644 index 6ca1087dcb6..00000000000 --- a/ckan/templates-bs2/development/snippets/simple-input.html +++ /dev/null @@ -1,4 +0,0 @@ -
    -

    Module Narrow Input

    -
    -
    diff --git a/ckan/templates-bs2/emails/invite_user.txt b/ckan/templates-bs2/emails/invite_user.txt deleted file mode 100644 index 7fefc0c8c1a..00000000000 --- a/ckan/templates-bs2/emails/invite_user.txt +++ /dev/null @@ -1,17 +0,0 @@ -Dear {{ user_name }}, - -You have been invited to {{ site_title }}. - -A user has already been created for you with the username {{ user_name }}. You can change it later. - -You have been added to the {{ group_type }} {{ group_title }} with the following role: {{ role_name }}. - -To accept this invite, please reset your password at: - - {{ reset_link }} - - -Have a nice day. - --- -Message sent by {{ site_title }} ({{ site_url }}) diff --git a/ckan/templates-bs2/emails/invite_user_subject.txt b/ckan/templates-bs2/emails/invite_user_subject.txt deleted file mode 100644 index 6aa3184abf6..00000000000 --- a/ckan/templates-bs2/emails/invite_user_subject.txt +++ /dev/null @@ -1 +0,0 @@ -Invite for {{ site_title }} diff --git a/ckan/templates-bs2/emails/reset_password.txt b/ckan/templates-bs2/emails/reset_password.txt deleted file mode 100644 index 803913e2ad6..00000000000 --- a/ckan/templates-bs2/emails/reset_password.txt +++ /dev/null @@ -1,12 +0,0 @@ -Dear {{ user_name }}, - -You have requested your password on {{ site_title }} to be reset. - -Please click the following link to confirm this request: - - {{ reset_link }} - -Have a nice day. - --- -Message sent by {{ site_title }} ({{ site_url }}) diff --git a/ckan/templates-bs2/emails/reset_password_subject.txt b/ckan/templates-bs2/emails/reset_password_subject.txt deleted file mode 100644 index 828b8dc7c93..00000000000 --- a/ckan/templates-bs2/emails/reset_password_subject.txt +++ /dev/null @@ -1 +0,0 @@ -Reset your password - {{ site_title }} diff --git a/ckan/templates-bs2/error_document_template.html b/ckan/templates-bs2/error_document_template.html deleted file mode 100644 index 0baecba15bf..00000000000 --- a/ckan/templates-bs2/error_document_template.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "page.html" %} - -{% block subtitle %}{{ gettext('Error %(error_code)s', error_code=code[0]) }}{% endblock %} - -{% block primary %} -
    -
    - {{ content}} -
    -
    -{% endblock %} - -{% block breadcrumb %} -{% endblock %} - -{% block flash %} - {# eat the flash messages caused by the 404 #} - {% set flash_messages = h.flash.pop_messages() %} -{% endblock %} - -{% block secondary %}{% endblock %} diff --git a/ckan/templates-bs2/footer.html b/ckan/templates-bs2/footer.html deleted file mode 100644 index cb66585c54e..00000000000 --- a/ckan/templates-bs2/footer.html +++ /dev/null @@ -1,39 +0,0 @@ -
    -
    - {% block footer_content %} -
    - -
    - {% block footer_attribution %} -

    {% trans %}Powered by {% endtrans %}

    - {% endblock %} - {% block footer_lang %} - {% snippet "snippets/language_selector.html" %} - {% endblock %} -
    -
    - {% endblock %} -
    - - {% block footer_debug %} - {% if g.debug %} - {% include 'snippets/debug.html' %} - {% endif %} - {% endblock %} -
    diff --git a/ckan/templates-bs2/group/about.html b/ckan/templates-bs2/group/about.html deleted file mode 100644 index 905a922a24f..00000000000 --- a/ckan/templates-bs2/group/about.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "group/read_base.html" %} - -{% block subtitle %}{{ _('About') }} {{ g.template_title_delimiter }} {{ super() }}{% endblock %} - -{% block primary_content_inner %} -

    - {% block page_heading %} - {{ h.get_translated(group_dict, 'title') or group_dict.display_name }} - {% endblock %} -

    - {% block group_description %} - {% if h.get_translated(group_dict, 'description') %} - {{ h.render_markdown(h.get_translated(group_dict, 'description')) }} - {% endif %} - {% endblock %} - - {% block group_extras %} - {% snippet 'snippets/additional_info.html', extras = h.sorted_extras(group_dict.extras) %} - {% endblock %} -{% endblock %} diff --git a/ckan/templates-bs2/group/activity_stream.html b/ckan/templates-bs2/group/activity_stream.html deleted file mode 100644 index 051d0654573..00000000000 --- a/ckan/templates-bs2/group/activity_stream.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "group/read_base.html" %} - -{% block subtitle %}{{ _('Activity Stream') }} {{ g.template_title_delimiter }} {{ super() }}{% endblock %} - -{% block primary_content_inner %} -

    - {% block page_heading -%} - {{ _('Activity Stream') }} - {%- endblock %} -

    - {% snippet 'snippets/activity_stream.html', activity_stream=activity_stream, id=id, object_type='group' %} -{% endblock %} diff --git a/ckan/templates-bs2/group/admins.html b/ckan/templates-bs2/group/admins.html deleted file mode 100644 index ee98a8a5f55..00000000000 --- a/ckan/templates-bs2/group/admins.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "group/read_base.html" %} - -{% block subtitle %}{{ _('Administrators') }} {{ g.template_title_delimiter }} {{ group_dict.title or group_dict.name }}{% endblock %} - -{% block primary_content_inner %} -

    {% block page_heading %}{{ _('Administrators') }}{% endblock %}

    - {% block admins_list %} - {% snippet "user/snippets/followers.html", followers=admins %} - {% endblock %} -{% endblock %} diff --git a/ckan/templates-bs2/group/base_form_page.html b/ckan/templates-bs2/group/base_form_page.html deleted file mode 100644 index 17571fc2a81..00000000000 --- a/ckan/templates-bs2/group/base_form_page.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "group/edit_base.html" %} - -{% block page_primary_action %}{% endblock %} - -{% block breadcrumb_content %} -
  • {{ h.nav_link(_('Groups'), named_route=group_type+'.index') }}
  • -
  • {% block breadcrumb_link %}{{ h.nav_link(_('Add a Group'), named_route=group_type+'.new') }}{% endblock %}
  • -{% endblock %} - -{% block primary_content_inner %} -

    {% block page_heading %}{{ _('Group Form') }}{% endblock %}

    - {% block form %} - {{ form | safe }} - {% endblock %} -{% endblock %} diff --git a/ckan/templates-bs2/group/confirm_delete.html b/ckan/templates-bs2/group/confirm_delete.html deleted file mode 100644 index 155f5790690..00000000000 --- a/ckan/templates-bs2/group/confirm_delete.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "page.html" %} - -{% block subtitle %}{{ _("Confirm Delete") }}{% endblock %} - -{% block maintag %}
    {% endblock %} - -{% block main_content %} -
    -
    - {% block form %} -

    {{ _('Are you sure you want to delete group - {name}?').format(name=group_dict.name) }}

    -

    -

    - - -
    -

    - {% endblock %} -
    -
    -{% endblock %} diff --git a/ckan/templates-bs2/group/confirm_delete_member.html b/ckan/templates-bs2/group/confirm_delete_member.html deleted file mode 100644 index 7bfaf369d6d..00000000000 --- a/ckan/templates-bs2/group/confirm_delete_member.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "page.html" %} - -{% block subtitle %}{{ _("Confirm Delete") }}{% endblock %} - -{% block maintag %}
    {% endblock %} - -{% block main_content %} -
    -
    - {% block form %} -

    {{ _('Are you sure you want to delete member - {name}?').format(name=user_dict.name) }}

    -

    -

    - - - -
    -

    - {% endblock %} -
    -
    -{% endblock %} diff --git a/ckan/templates-bs2/group/edit.html b/ckan/templates-bs2/group/edit.html deleted file mode 100644 index 3bcf125b683..00000000000 --- a/ckan/templates-bs2/group/edit.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "group/base_form_page.html" %} - -{% block breadcrumb_content %} -
  • {% link_for _('Groups'), named_route=group_type+'.index' %}
  • - {% block breadcrumb_content_inner %} -
  • {% link_for h.get_translated(group, 'title') or group.display_name |truncate(35), named_route=group_type+'.read', id=group.name %}
  • -
  • {% link_for _('Manage'), named_route=group_type+'.edit', id=group.name %}
  • - {% endblock %} -{% endblock %} - -{% block page_heading_class %}hide-heading{% endblock %} -{% block page_heading %}{{ _('Edit Group') }}{% endblock %} diff --git a/ckan/templates-bs2/group/edit_base.html b/ckan/templates-bs2/group/edit_base.html deleted file mode 100644 index a53adf17a00..00000000000 --- a/ckan/templates-bs2/group/edit_base.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "page.html" %} - -{% block subtitle %} - {{ _('Manage') }} - {{ h.get_translated(group_dict, 'title') or group_dict.display_name }} - {{ _('Groups') }} -{% endblock %} - -{% set group = group_dict %} - -{% block breadcrumb_content %} -
  • {% link_for _('Groups'), named_route=group_type+'.index' %}
  • - {% block breadcrumb_content_inner %} -
  • {% link_for h.get_translated(group, 'title') or group.display_name |truncate(35), named_route=group_type+'.read', id=group.name %}
  • -
  • {% link_for _('Manage'), named_route=group_type+'.edit', id=group.name, named_route=group_type + '_edit' %}
  • - {% endblock %} -{% endblock %} - -{% block content_action %} - {% link_for _('View'), named_route=group_type+'.read', id=group_dict.name, class_='btn', icon='eye' %} -{% endblock %} - -{% block content_primary_nav %} - {{ h.build_nav_icon(group_type + '.edit', _('Edit'), id=group_dict.name) }} - {{ h.build_nav_icon(group_type + '.members', _('Members'), id=group_dict.name) }} -{% endblock %} - -{% block secondary_content %} - {% snippet "group/snippets/info.html", group=group_dict, show_nums=false %} -{% endblock %} diff --git a/ckan/templates-bs2/group/followers.html b/ckan/templates-bs2/group/followers.html deleted file mode 100644 index c51255c2550..00000000000 --- a/ckan/templates-bs2/group/followers.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "group/read_base.html" %} - -{% block subtitle %}{{ _('Followers') }} {{ g.template_title_delimiter }} {{ group_dict.title or group_dict.name }}{% endblock %} - -{% block primary_content_inner %} -

    {% block page_heading %}{{ _('Followers') }}{% endblock %}

    - {% block followers_list %} - {% snippet "user/snippets/followers.html", followers=followers %} - {% endblock %} -{% endblock %} diff --git a/ckan/templates-bs2/group/index.html b/ckan/templates-bs2/group/index.html deleted file mode 100644 index 3c20e9d50c4..00000000000 --- a/ckan/templates-bs2/group/index.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "page.html" %} - -{% block subtitle %}{{ _('Groups') }}{% endblock %} - -{% block breadcrumb_content %} -
  • {% link_for _('Groups'), named_route=group_type+'.index' %}
  • -{% endblock %} - -{% block page_header %}{% endblock %} - -{% block page_primary_action %} - {% if h.check_access('group_create') %} - {% link_for _('Add Group'), named_route=group_type+'.new', class_='btn btn-primary', icon='plus-square' %} - {% endif %} -{% endblock %} - -{% block primary_content_inner %} -

    {{ _('Groups') }}

    - {% block groups_search_form %} - {% snippet 'snippets/search_form.html', form_id='group-search-form', type='group', query=q, sorting_selected=sort_by_selected, count=page.item_count, placeholder=_('Search groups...'), show_empty=request.params, no_bottom_border=true if page.items, sorting = [(_('Name Ascending'), 'title asc'), (_('Name Descending'), 'title desc')] %} - {% endblock %} - {% block groups_list %} - {% if page.items or request.params %} - {% if page.items %} - {% snippet "group/snippets/group_list.html", groups=page.items %} - {% endif %} - {% else %} -

    - {{ _('There are currently no groups for this site') }}. - {% if h.check_access('group_create') %} - {% link_for _('How about creating one?'), named_route=group_type+'.new' %}. - {% endif %} -

    - {% endif %} - {% endblock %} - {% block page_pagination %} - {{ page.pager(q=q or '', sort=sort_by_selected or '') }} - {% endblock %} -{% endblock %} - -{% block secondary_content %} - {% snippet "group/snippets/helper.html" %} -{% endblock %} diff --git a/ckan/templates-bs2/group/member_new.html b/ckan/templates-bs2/group/member_new.html deleted file mode 100644 index 28e303546ec..00000000000 --- a/ckan/templates-bs2/group/member_new.html +++ /dev/null @@ -1,87 +0,0 @@ -{% extends "group/edit_base.html" %} - -{% import 'macros/form.html' as form %} - -{% set user = user_dict %} - -{% block primary_content_inner %} - {% link_for _('Back to all members'), named_route=group_type+'.members', id=group.name, class_='btn pull-right', icon='arrow-left' %} -

    - {% block page_heading %}{{ _('Edit Member') if user else _('Add Member') }}{% endblock %} -

    - {% block form %} -
    -
    -
    - {% if not user %} - - - {{ _('If you wish to add an existing user, search for their username below.') }} - - {% endif %} -
    - {% if user %} - - - {% else %} - - {% endif %} -
    -
    - {% if not user %} -
    - {{ _('or') }} -
    -
    - - - {{ _('If you wish to invite a new user, enter their email address.') }} - -
    - -
    -
    - {% endif %} -
    - - {% set format_attrs = {'data-module': 'autocomplete'} %} - {{ form.select('role', label=_('Role'), options=roles, selected=user_role, error='', attrs=format_attrs) }} -
    - {% if user %} - {{ _('Delete') }} - - {% else %} - - {% endif %} -
    -
    - {% endblock %} -{% endblock %} - -{% block secondary_content %} - {{ super() }} -
    -

    - - {{ _('What are roles?') }} -

    -
    - {% trans %} -

    Admin: Can edit group information, as well as - manage organization members.

    -

    Member: Can add/remove datasets from groups

    - {% endtrans %} -
    -
    -{% endblock %} diff --git a/ckan/templates-bs2/group/members.html b/ckan/templates-bs2/group/members.html deleted file mode 100644 index 12bc60487aa..00000000000 --- a/ckan/templates-bs2/group/members.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "group/edit_base.html" %} - -{% block subtitle %}{{ _('Members') }} {{ g.template_title_delimiter }} {{ group_dict.display_name }} {{ g.template_title_delimiter }} {{ _('Groups') }}{% endblock %} - -{% block page_primary_action %} - {% link_for _('Add Member'), named_route=group_type+'.member_new', id=group_dict.id, class_='btn btn-primary', icon='plus-square' %} -{% endblock %} - -{% block primary_content_inner %} -

    {{ _('{0} members'.format(members|length)) }}

    - - - - - - - - - - {% for user_id, user, role in members %} - - - - - - {% endfor %} - -
    {{ _('User') }}{{ _('Role') }}
    - {{ h.linked_user(user_id, maxlength=20) }} - {{ role }} - -
    -{% endblock %} diff --git a/ckan/templates-bs2/group/new.html b/ckan/templates-bs2/group/new.html deleted file mode 100644 index 75fad5ef460..00000000000 --- a/ckan/templates-bs2/group/new.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "group/base_form_page.html" %} - -{% block subtitle %}{{ _('Create a Group') }}{% endblock %} - -{% block breadcrumb_link %}{{ h.nav_link(_('Create a Group'), named_route=group_type+'.new') }}{% endblock %} - -{% block page_heading %}{{ _('Create a Group') }}{% endblock %} - -{% block page_header %}{% endblock %} - -{% block secondary_content %} - {% snippet "group/snippets/helper.html" %} -{% endblock %} diff --git a/ckan/templates-bs2/group/new_group_form.html b/ckan/templates-bs2/group/new_group_form.html deleted file mode 100644 index a330c973967..00000000000 --- a/ckan/templates-bs2/group/new_group_form.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "group/snippets/group_form.html" %} - -{# -As the form is rendered as a seperate page we take advantage of this by -overriding the form blocks depending on the current context -#} -{% block dataset_fields %} - {% if action == "edit" %}{{ super() }}{% endif %} -{% endblock %} - -{% block custom_fields %} - {% if action == "edit" %}{{ super() }}{% endif %} -{% endblock %} - -{% block save_text %} - {%- if action == "edit" -%} - {{ _('Update Group') }} - {%- else -%} - {{ _('Create Group') }} - {%- endif -%} -{% endblock %} - -{% block delete_button %} - {% if action == "edit" %}{{ super() }}{% endif %} -{% endblock %} diff --git a/ckan/templates-bs2/group/read.html b/ckan/templates-bs2/group/read.html deleted file mode 100644 index db9f3744009..00000000000 --- a/ckan/templates-bs2/group/read.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "group/read_base.html" %} - -{% block subtitle %}{{ h.get_translated(group_dict, 'title') or group_dict.display_name }}{% endblock %} - -{% block primary_content_inner %} - {% block groups_search_form %} - {% set facets = { - 'fields': fields_grouped, - 'search': search_facets, - 'titles': facet_titles, - 'translated_fields': translated_fields, - 'remove_field': remove_field } - %} - {% set sorting = [ - (_('Relevance'), 'score desc, metadata_modified desc'), - (_('Name Ascending'), 'title_string asc'), - (_('Name Descending'), 'title_string desc'), - (_('Last Modified'), 'metadata_modified desc'), - (_('Popular'), 'views_recent desc') if g.tracking_enabled else (false, false) ] - %} - {% snippet 'snippets/search_form.html', form_id='group-datasets-search-form', type='dataset', query=q, sorting=sorting, sorting_selected=sort_by_selected, count=page.item_count, facets=facets, placeholder=_('Search datasets...'), show_empty=request.params, fields=fields %} - {% endblock %} - {% block packages_list %} - {% if page.items %} - {{ h.snippet('snippets/package_list.html', packages=page.items) }} - {% endif %} - {% endblock %} - {% block page_pagination %} - {{ page.pager(q=q) }} - {% endblock %} -{% endblock %} - -{% block secondary_content %} - {{ super() }} -
    -
    - {% for facet in facet_titles %} - {{ h.snippet('snippets/facet_list.html', title=facet_titles[facet], name=facet, extras={'id':group_dict.id}) }} - {% endfor %} -
    - close -
    -{% endblock %} diff --git a/ckan/templates-bs2/group/read_base.html b/ckan/templates-bs2/group/read_base.html deleted file mode 100644 index 368b7b0d291..00000000000 --- a/ckan/templates-bs2/group/read_base.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends "page.html" %} - -{% block subtitle %}{{ h.get_translated(group_dict, 'title') or group_dict.display_name }} {{ g.template_title_delimiter }} {{ _('Groups') }}{% endblock %} - -{% block breadcrumb_content %} -
  • {% link_for _('Groups'), named_route=group_type+'.index' %}
  • -
  • {% link_for h.get_translated(group_dict, 'title') or group_dict.display_name |truncate(35), named_route=group_type+'.read', id=group_dict.name %}
  • -{% endblock %} - -{% block content_action %} - {% if h.check_access('group_update', {'id': group_dict.id}) %} - {% link_for _('Manage'), named_route=group_type+'.edit', id=group_dict.name, class_='btn', icon='wrench' %} - {% endif %} -{% endblock %} - -{% block content_primary_nav %} - {{ h.build_nav_icon(group_type + '.read', _('Datasets'), id=group_dict.name) }} - {{ h.build_nav_icon(group_type + '.activity', _('Activity Stream'), id=group_dict.name, offset=0) }} - {{ h.build_nav_icon(group_type + '.about', _('About'), id=group_dict.name) }} -{% endblock %} - -{% block secondary_content %} - {% snippet "group/snippets/info.html", group=group_dict, show_nums=true %} -{% endblock %} - -{% block links %} - {{ super() }} - {% include "group/snippets/feeds.html" %} -{% endblock %} diff --git a/ckan/templates-bs2/group/snippets/feeds.html b/ckan/templates-bs2/group/snippets/feeds.html deleted file mode 100644 index c60eadcd6c4..00000000000 --- a/ckan/templates-bs2/group/snippets/feeds.html +++ /dev/null @@ -1,4 +0,0 @@ -{%- set dataset_feed = h.url_for('feeds.group', id=group_dict.name) -%} -{%- set history_feed = h.url_for(controller='revision', action='list', format='atom', days=1) -%} - - diff --git a/ckan/templates-bs2/group/snippets/group_form.html b/ckan/templates-bs2/group/snippets/group_form.html deleted file mode 100644 index 058f4d2e50a..00000000000 --- a/ckan/templates-bs2/group/snippets/group_form.html +++ /dev/null @@ -1,43 +0,0 @@ -{% import 'macros/form.html' as form %} - -
    - {% block error_summary %} - {{ form.errors(error_summary) }} - {% endblock %} - - {% block basic_fields %} - {% set attrs = {'data-module': 'slug-preview-target'} %} - {{ form.input('title', label=_('Name'), id='field-name', placeholder=_('My Group'), value=data.title, error=errors.title, classes=['control-full'], attrs=attrs) }} - - {# Perhaps these should be moved into the controller? #} - {% set prefix = h.url_for(group_type + '.read', id='') %} - {% set domain = h.url_for(group_type + '.read', id='', qualified=true) %} - {% set domain = domain|replace("http://", "")|replace("https://", "") %} - {% set attrs = {'data-module': 'slug-preview-slug', 'data-module-prefix': domain, 'data-module-placeholder': '<' + group_type + '>'} %} - - {{ form.prepend('name', label=_('URL'), prepend=prefix, id='field-url', placeholder=_('my-' + group_type), value=data.name, error=errors.name, attrs=attrs, is_required=true) }} - - {{ form.markdown('description', label=_('Description'), id='field-description', placeholder=_('A little information about my group...'), value=data.description, error=errors.description) }} - - {% set is_upload = data.image_url and not data.image_url.startswith('http') %} - {% set is_url = data.image_url and data.image_url.startswith('http') %} - - {{ form.image_upload(data, errors, is_upload_enabled=h.uploads_enabled(), is_url=is_url, is_upload=is_upload) }} - - {% endblock %} - - {% block custom_fields %} - {% snippet 'snippets/custom_form_fields.html', extras=data.extras, errors=errors, limit=3 %} - {% endblock %} - - {{ form.required_message() }} - -
    - {% block delete_button %} - {% if h.check_access('group_delete', {'id': data.id}) %} - {% block delete_button_text %}{{ _('Delete') }}{% endblock %} - {% endif %} - {% endblock %} - -
    -
    diff --git a/ckan/templates-bs2/group/snippets/group_item.html b/ckan/templates-bs2/group/snippets/group_item.html deleted file mode 100644 index cc6021201ce..00000000000 --- a/ckan/templates-bs2/group/snippets/group_item.html +++ /dev/null @@ -1,50 +0,0 @@ -{# -Renders a media item for a group. This should be used in a list. - -group - A group dict. - -Example: - -
      - {% for group in groups %} - {% snippet "group/snippets/group_item.html", group=group %} - {% endfor %} -
    -#} -{% set type = group.type or 'group' %} -{% set url = h.url_for(type ~ '.read', id=group.name) %} -{% block item %} -
  • - {% block item_inner %} - {% block image %} - {{ group.name }} - {% endblock %} - {% block title %} -

    {{ h.get_translated(group, 'title') or group.display_name }}

    - {% endblock %} - {% block description %} - {% if h.get_translated(group, 'description') %} -

    {{ h.markdown_extract(h.get_translated(group, 'description'), extract_length=80) }}

    - {% endif %} - {% endblock %} - {% block datasets %} - {% if group.package_count %} - {{ ungettext('{num} Dataset', '{num} Datasets', group.package_count).format(num=group.package_count) }} - {% elif group.package_count == 0 %} - {{ _('0 Datasets') }} - {% endif %} - {% endblock %} - {% block link %} - - {{ _('View {name}').format(name=h.get_translated(group, 'title') or group.display_name) }} - - {% endblock %} - {% if group.user_member %} - - {% endif %} - {% endblock %} -
  • -{% endblock %} -{% if position is divisibleby 3 %} -
  • -{% endif %} diff --git a/ckan/templates-bs2/group/snippets/group_list.html b/ckan/templates-bs2/group/snippets/group_list.html deleted file mode 100644 index d171296d09d..00000000000 --- a/ckan/templates-bs2/group/snippets/group_list.html +++ /dev/null @@ -1,19 +0,0 @@ -{# -Display a grid of group items. - -groups - A list of groups. - -Example: - - {% snippet "group/snippets/group_list.html" %} - -#} -{% block group_list %} -
      - {% block group_list_inner %} - {% for group in groups %} - {% snippet "group/snippets/group_item.html", group=group, position=loop.index %} - {% endfor %} - {% endblock %} -
    -{% endblock %} diff --git a/ckan/templates-bs2/group/snippets/helper.html b/ckan/templates-bs2/group/snippets/helper.html deleted file mode 100644 index 08257bc135a..00000000000 --- a/ckan/templates-bs2/group/snippets/helper.html +++ /dev/null @@ -1,16 +0,0 @@ -
    -

    - - {{ _('What are Groups?') }} -

    -
    -

    - {% trans %} - You can use CKAN Groups to create and manage collections of datasets. - This could be to catalogue datasets for a particular project or team, - or on a particular theme, or as a very simple way to help people find - and search your own published datasets. - {% endtrans %} -

    -
    -
    \ No newline at end of file diff --git a/ckan/templates-bs2/group/snippets/info.html b/ckan/templates-bs2/group/snippets/info.html deleted file mode 100644 index a62ff8cce5c..00000000000 --- a/ckan/templates-bs2/group/snippets/info.html +++ /dev/null @@ -1,50 +0,0 @@ -{% block info %} -
    -
    - {% block inner %} - {% block image %} -
    - - {{ group.name }} - -
    - {% endblock %} - {% block heading %} -

    - {{ h.get_translated(group, 'title') or group.display_name }} - {% if group.state == 'deleted' %} - [{{ _('Deleted') }}] - {% endif %} -

    - {% endblock %} - {% block description %} - {% if h.get_translated(group, 'description') %} -

    - {{ h.markdown_extract(h.get_translated(group, 'description'), 180) }} - {% link_for _('read more'), named_route=group_type+'.about', id=group.name %} -

    - {% endif %} - {% endblock %} - {% if show_nums %} - {% block nums %} -
    -
    -
    {{ _('Followers') }}
    -
    {{ h.SI_number_span(group.num_followers) }}
    -
    -
    -
    {{ _('Datasets') }}
    -
    {{ h.SI_number_span(group.package_count) }}
    -
    -
    - {% endblock %} - {% block follow %} - - {% endblock %} - {% endif %} - {% endblock %} -
    -
    -{% endblock %} diff --git a/ckan/templates-bs2/header.html b/ckan/templates-bs2/header.html deleted file mode 100644 index f54463bb6e8..00000000000 --- a/ckan/templates-bs2/header.html +++ /dev/null @@ -1,124 +0,0 @@ -{% block header_wrapper %} -{% block header_account %} - -{% endblock %} - -{% endblock %} diff --git a/ckan/templates-bs2/home/about.html b/ckan/templates-bs2/home/about.html deleted file mode 100644 index 98a3c03e69b..00000000000 --- a/ckan/templates-bs2/home/about.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "page.html" %} - -{% block subtitle %}{{ _('About') }}{% endblock %} - -{% block breadcrumb_content %} -
  • {% link_for _('About'), controller='home', action='about' %}
  • -{% endblock %} - -{% block primary %} -
    -
    - {% block about %} - {% if g.site_about %} - {{ h.render_markdown(g.site_about) }} - {% else %} -

    {{ _('About') }}

    - {% snippet 'home/snippets/about_text.html' %} - {% endif %} - {% endblock %} -
    -
    -{% endblock %} - -{% block secondary %}{% endblock %} diff --git a/ckan/templates-bs2/home/index.html b/ckan/templates-bs2/home/index.html deleted file mode 100644 index b28ac82c05d..00000000000 --- a/ckan/templates-bs2/home/index.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends "page.html" %} -{% set homepage_style = ( g.homepage_style or '1' ) %} - -{% block subtitle %}{{ _("Welcome") }}{% endblock %} - -{% block maintag %}{% endblock %} -{% block toolbar %}{% endblock %} - -{% block content %} -
    -
    - {{ self.flash() }} -
    - {% block primary_content %} - {% snippet "home/layout{0}.html".format(homepage_style) %} - {% endblock %} -
    -{% endblock %} diff --git a/ckan/templates-bs2/home/layout1.html b/ckan/templates-bs2/home/layout1.html deleted file mode 100644 index 41e6c2024c9..00000000000 --- a/ckan/templates-bs2/home/layout1.html +++ /dev/null @@ -1,37 +0,0 @@ -
    -
    -
    -
    - {% block promoted %} - {% snippet 'home/snippets/promoted.html' %} - {% endblock %} -
    -
    - {% block search %} - {% snippet 'home/snippets/search.html' %} - {% endblock %} -
    -
    -
    -
    -
    -
    -
    -
    - {# Note: this featured_group block is used as an example in the theming - tutorial in the docs! If you change this code, be sure to check - whether you need to update the docs. #} - {# Start template block example. #} - {% block featured_group %} - {% snippet 'home/snippets/featured_group.html' %} - {% endblock %} - {# End template block example. #} -
    -
    - {% block featured_organization %} - {% snippet 'home/snippets/featured_organization.html' %} - {% endblock %} -
    -
    -
    -
    diff --git a/ckan/templates-bs2/home/layout2.html b/ckan/templates-bs2/home/layout2.html deleted file mode 100644 index bab42f388b1..00000000000 --- a/ckan/templates-bs2/home/layout2.html +++ /dev/null @@ -1,35 +0,0 @@ -
    -
    -
    -
    - {% block search %} - {% snippet 'home/snippets/search.html' %} - {% endblock %} - {% block stats %} - {% snippet 'home/snippets/stats.html' %} - {% endblock %} -
    -
    - {% block promoted %} - {% snippet 'home/snippets/promoted.html' %} - {% endblock %} -
    -
    -
    -
    -
    -
    -
    -
    - {% block featured_organization %} - {% snippet 'home/snippets/featured_organization.html' %} - {% endblock %} -
    -
    - {% block featured_group %} - {% snippet 'home/snippets/featured_group.html' %} - {% endblock %} -
    -
    -
    -
    diff --git a/ckan/templates-bs2/home/layout3.html b/ckan/templates-bs2/home/layout3.html deleted file mode 100644 index dc80b32581d..00000000000 --- a/ckan/templates-bs2/home/layout3.html +++ /dev/null @@ -1,23 +0,0 @@ -
    -
    - {% block search %} - {% snippet 'home/snippets/search.html' %} - {% endblock %} -
    -
    -
    -
    -
    -
    - {% block promoted %} - {% snippet 'home/snippets/promoted.html' %} - {% endblock %} -
    -
    - {% block stats %} - {% snippet 'home/snippets/stats.html' %} - {% endblock %} -
    -
    -
    -
    diff --git a/ckan/templates-bs2/home/snippets/about_text.html b/ckan/templates-bs2/home/snippets/about_text.html deleted file mode 100644 index dc096fa072f..00000000000 --- a/ckan/templates-bs2/home/snippets/about_text.html +++ /dev/null @@ -1,20 +0,0 @@ -{% trans %} -

    CKAN is the world’s leading open-source data portal platform.

    - -

    CKAN is a complete out-of-the-box software solution that makes data -accessible and usable – by providing tools to streamline publishing, sharing, -finding and using data (including storage of data and provision of robust data -APIs). CKAN is aimed at data publishers (national and regional governments, -companies and organizations) wanting to make their data open and available.

    - -

    CKAN is used by governments and user groups worldwide and powers a variety -of official and community data portals including portals for local, national -and international government, such as the UK’s data.gov.uk and the -European Union’s publicdata.eu, the Brazilian dados.gov.br, Dutch and -Netherland government portals, as well as city and municipal sites in the US, -UK, Argentina, Finland and elsewhere.

    - -

    CKAN: http://ckan.org/
    -CKAN Tour: http://ckan.org/tour/
    -Features overview: http://ckan.org/features/

    -{% endtrans %} diff --git a/ckan/templates-bs2/home/snippets/featured_group.html b/ckan/templates-bs2/home/snippets/featured_group.html deleted file mode 100644 index d4069faf618..00000000000 --- a/ckan/templates-bs2/home/snippets/featured_group.html +++ /dev/null @@ -1,7 +0,0 @@ -{% set groups = h.get_featured_groups() %} - -{% for group in groups %} -
    - {% snippet 'snippets/group_item.html', group=group, truncate=50, truncate_title=35 %} -
    -{% endfor %} diff --git a/ckan/templates-bs2/home/snippets/featured_organization.html b/ckan/templates-bs2/home/snippets/featured_organization.html deleted file mode 100644 index 7cf9ddb7482..00000000000 --- a/ckan/templates-bs2/home/snippets/featured_organization.html +++ /dev/null @@ -1,7 +0,0 @@ -{% set organizations = h.get_featured_organizations() %} - -{% for organization in organizations %} -
    - {% snippet 'snippets/organization_item.html', organization=organization, truncate=50, truncate_title=35 %} -
    -{% endfor %} diff --git a/ckan/templates-bs2/home/snippets/promoted.html b/ckan/templates-bs2/home/snippets/promoted.html deleted file mode 100644 index ff8a10c3cfa..00000000000 --- a/ckan/templates-bs2/home/snippets/promoted.html +++ /dev/null @@ -1,27 +0,0 @@ -{% set intro = g.site_intro_text %} - -
    -
    - {% if intro %} - {{ h.render_markdown(intro) }} - {% else %} -

    {{ _("Welcome to CKAN") }}

    -

    - {% trans %}This is a nice introductory paragraph about CKAN or the site - in general. We don't have any copy to go here yet but soon we will - {% endtrans %} -

    - {% endif %} -
    - - {% block home_image %} - - {% endblock %} -
    diff --git a/ckan/templates-bs2/home/snippets/search.html b/ckan/templates-bs2/home/snippets/search.html deleted file mode 100644 index 72b74d4cdcd..00000000000 --- a/ckan/templates-bs2/home/snippets/search.html +++ /dev/null @@ -1,22 +0,0 @@ -{% set tags = h.get_facet_items_dict('tags', c.search_facets, limit=3) %} -{% set placeholder = _('E.g. environment') %} - - diff --git a/ckan/templates-bs2/home/snippets/stats.html b/ckan/templates-bs2/home/snippets/stats.html deleted file mode 100644 index 4643456922a..00000000000 --- a/ckan/templates-bs2/home/snippets/stats.html +++ /dev/null @@ -1,29 +0,0 @@ -{% set stats = h.get_site_statistics() %} - - diff --git a/ckan/templates-bs2/macros/autoform.html b/ckan/templates-bs2/macros/autoform.html deleted file mode 100644 index 7a769508b64..00000000000 --- a/ckan/templates-bs2/macros/autoform.html +++ /dev/null @@ -1,70 +0,0 @@ -{# -Builds a form from the supplied form_info list/tuple. All form info dicts -can also contain an "extra_info" key which will add some help text after the -input element. - -form_info - A list of dicts describing the form field to build. -data - The form data object. -errors - The form errors object. -error_summary - A list of errors to display above the fields. - -Example - - {% set form_info = [ - {'name': 'ckan.site_title', 'control': 'input', 'label': _('Site Title'), 'placeholder': ''}, - {'name': 'ckan.main_css', 'control': 'select', 'options': styles, 'label': _('Style'), 'placeholder': ''}, - {'name': 'ckan.site_description', 'control': 'input', 'label': _('Site Tag Line'), 'placeholder': ''}, - {'name': 'ckan.site_logo', 'control': 'input', 'label': _('Site Tag Logo'), 'placeholder': ''}, - {'name': 'ckan.site_about', 'control': 'markdown', 'label': _('About'), 'placeholder': _('About page text')}, - {'name': 'ckan.site_intro_text', 'control': 'markdown', 'label': _('Intro Text'), 'placeholder': _('Text on home page')}, - {'name': 'ckan.site_custom_css', 'control': 'textarea', 'label': _('Custom CSS'), 'placeholder': _('Customisable css inserted into the page header')}, - ] %} - - {% import 'macros/autoform.html' as autoform %} - {{ autoform.generate(form_info, data, errors) }} - -#} -{% import 'macros/form.html' as form %} -{%- macro generate(form_info=[], data={}, errors={}, error_summary=[]) -%} - {{ form.errors(error_summary) if error_summary }} - - {% for item in form_info %} - {% set name = item.name %} - {% set value = data.get(name) %} - {% set error = errors.get(name) %} - {% set id = 'field-%s' % (name|lower|replace('_', '-')|replace('.', '-')) %} - - {% set control = item.control or 'input' %} - {% set label = item.label %} - {% set placeholder = item.placeholder %} - - {% set classes = item.classes or [] %} - {% set classes = ['control-medium'] if not classes and control == 'input' %} - - {% if control == 'select' %} - {% call form.select(name, id=id, label=label, options=item.options, selected=value, error=error) %} - {% if item.extra_info %}{{ form.info(item.extra_info) }}{% endif %} - {% endcall %} - {% elif control == 'html' %} -
    -
    - {{ item.html }} -
    -
    - {% elif control == 'image_upload' %} - {% set field_url = item.field_url or 'image_url' %} - {% set is_upload = data[field_url] and not data[field_url].startswith('http') %} - {% set is_url = data[field_url] and data[field_url].startswith('http') %} - - {% set field_upload = item.field_upload or 'image_upload' %} - {% set field_clear = item.field_clear or 'clear_upload' %} - - {{ form.image_upload(data, errors, is_upload_enabled=item.upload_enabled, is_url=is_url, is_upload=is_upload, upload_label = _('Site logo'), url_label=_('Site logo'), - field_url=field_url, field_upload=field_upload, field_clear=field_clear)}} - {% else %} - {% call form[control](name, id=id, label=label, placeholder=placeholder, value=value, error=error, classes=classes) %} - {% if item.extra_info %}{{ form.info(item.extra_info) }}{% endif %} - {% endcall %} - {% endif %} - {% endfor %} -{%- endmacro -%} diff --git a/ckan/templates-bs2/macros/form.html b/ckan/templates-bs2/macros/form.html deleted file mode 100644 index ba8d60c9532..00000000000 --- a/ckan/templates-bs2/macros/form.html +++ /dev/null @@ -1,430 +0,0 @@ -{# -Creates all the markup required for an input element. Handles matching labels to -inputs, error messages and other useful elements. - -name - The name of the form parameter. -id - The id to use on the input and label. Convention is to prefix with 'field-'. -label - The human readable label. -value - The value of the input. -placeholder - Some placeholder text. -type - The type of input eg. email, url, date (default: text). -error - A list of error strings for the field or just true to highlight the field. -classes - An array of classes to apply to the control-group. -is_required - Boolean of whether this input is requred for the form to validate - -Examples: - - {% import 'macros/form.html' as form %} - {{ form.input('title', label=_('Title'), value=data.title, error=errors.title) }} - -#} -{% macro input(name, id='', label='', value='', placeholder='', type='text', error="", classes=[], attrs={}, is_required=false) %} - {%- set extra_html = caller() if caller -%} - - {% call input_block(id or name, label or name, error, classes, extra_html=extra_html, is_required=is_required) %} - - {% endcall %} -{% endmacro %} - -{# -Builds a single checkbox input. - -name - The name of the form parameter. -id - The id to use on the input and label. Convention is to prefix with 'field-'. -label - The human readable label. -value - The value of the input. -checked - If true the checkbox will be checked -error - An error string for the field or just true to highlight the field. -classes - An array of classes to apply to the control-group. -is_required - Boolean of whether this input is requred for the form to validate - -Example: - - {% import 'macros/form.html' as form %} - {{ form.checkbox('remember', checked=true) }} - -#} -{% macro checkbox(name, id='', label='', value='', checked=false, placeholder='', error="", classes=[], attrs={}, is_required=false) %} - {%- set extra_html = caller() if caller -%} -
    -
    - - {{ extra_html }} -
    -
    -{% endmacro %} - -{# -Creates all the markup required for an select element. Handles matching labels to -inputs and error messages. - -A field should be a dict with a "value" key and an optional "text" key which -will be displayed to the user. We use a dict to easily allow extension in -future should extra options be required. - -name - The name of the form parameter. -id - The id to use on the input and label. Convention is to prefix with 'field-'. -label - The human readable label. -options - A list/tuple of fields to be used as . -selected - The value of the selected